@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; | |||||
import com.alibaba.fastjson.JSONArray; | import com.alibaba.fastjson.JSONArray; | ||||
import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.hz.pm.api.projectdeclared.model.vo.PurchaseFullInfoVO; | |||||
import com.ningdatech.basic.util.StrPool; | import com.ningdatech.basic.util.StrPool; | ||||
import com.ningdatech.file.entity.File; | import com.ningdatech.file.entity.File; | ||||
import com.ningdatech.file.service.FileService; | import com.ningdatech.file.service.FileService; | ||||
@@ -205,7 +206,6 @@ public class ProjectConvertUtil { | |||||
//转化审批信息 | //转化审批信息 | ||||
private static GovBizProjectApproveVO buildApprove(ProjectDetailVO project, FileService fileService) { | private static GovBizProjectApproveVO buildApprove(ProjectDetailVO project, FileService fileService) { | ||||
GovBizProjectApproveVO approve = new GovBizProjectApproveVO(); | GovBizProjectApproveVO approve = new GovBizProjectApproveVO(); | ||||
// approve.setBaseProjId(project.getProjectCode()); | |||||
approve.setBaseProjName(project.getProjectName()); | approve.setBaseProjName(project.getProjectName()); | ||||
File file = fileService.getById(project.getApprovedFile()); | File file = fileService.getById(project.getApprovedFile()); | ||||
if (Objects.nonNull(file)) { | if (Objects.nonNull(file)) { | ||||
@@ -230,18 +230,16 @@ public class ProjectConvertUtil { | |||||
} | } | ||||
} | } | ||||
approve.setPreliminaryDesignScheme(project.getPreliminaryPlanFile()); | approve.setPreliminaryDesignScheme(project.getPreliminaryPlanFile()); | ||||
approve.setPreliminaryDesignFile(project.getPreliminaryInspectionMaterials()); | |||||
approve.setBaseReviewOpinion(project.getProposeAttach()); | approve.setBaseReviewOpinion(project.getProposeAttach()); | ||||
if (Objects.nonNull(project.getBaseReviewResults())) { | if (Objects.nonNull(project.getBaseReviewResults())) { | ||||
approve.setBaseReviewResults(String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, | approve.setBaseReviewResults(String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, | ||||
project.getBaseReviewResults())); | project.getBaseReviewResults())); | ||||
} | } | ||||
List<PurchaseVO> purchases = project.getPurchases(); | |||||
List<PurchaseFullInfoVO> purchases = project.getPurchaseDetails(); | |||||
if (CollUtil.isNotEmpty(purchases)) { | if (CollUtil.isNotEmpty(purchases)) { | ||||
purchases.stream().map(PurchaseVO::getTransactionAmount) | |||||
purchases.stream().map(w -> w.getPurchase().getTransactionAmount()) | |||||
.filter(Objects::nonNull).reduce(BigDecimal::add) | .filter(Objects::nonNull).reduce(BigDecimal::add) | ||||
.ifPresent(approve::setReleaseYearMoney); | .ifPresent(approve::setReleaseYearMoney); | ||||
} | } | ||||
return approve; | return approve; | ||||
} | } | ||||
@@ -249,7 +247,6 @@ public class ProjectConvertUtil { | |||||
//转化建设 实施 | //转化建设 实施 | ||||
private static GovBizProjectCimplementVO buildCim(ProjectDetailVO project) { | private static GovBizProjectCimplementVO buildCim(ProjectDetailVO project) { | ||||
GovBizProjectCimplementVO cim = new GovBizProjectCimplementVO(); | GovBizProjectCimplementVO cim = new GovBizProjectCimplementVO(); | ||||
// cim.setBaseProjId(project.getProjectCode()); | |||||
cim.setBaseProjName(project.getProjectName()); | cim.setBaseProjName(project.getProjectName()); | ||||
cim.setBaseEngineerPostpoFile(project.getSupportingMaterialsFile()); | cim.setBaseEngineerPostpoFile(project.getSupportingMaterialsFile()); | ||||
cim.setAreaCode(RegionConst.RC_HZ); | cim.setAreaCode(RegionConst.RC_HZ); | ||||
@@ -306,10 +303,11 @@ public class ProjectConvertUtil { | |||||
//转化采购信息 | //转化采购信息 | ||||
private static List<GovBizProjectProcureVO> buildProcure(ProjectDetailVO project) { | private static List<GovBizProjectProcureVO> buildProcure(ProjectDetailVO project) { | ||||
List<PurchaseVO> purchases = project.getPurchases(); | |||||
List<PurchaseFullInfoVO> purchases = project.getPurchaseDetails(); | |||||
if (CollUtil.isNotEmpty(purchases)) { | if (CollUtil.isNotEmpty(purchases)) { | ||||
return purchases.stream().map(p -> { | |||||
return purchases.stream().map(w -> { | |||||
GovBizProjectProcureVO purchase = new GovBizProjectProcureVO(); | GovBizProjectProcureVO purchase = new GovBizProjectProcureVO(); | ||||
PurchaseVO p = w.getPurchase(); | |||||
purchase.setBaseProjName(project.getProjectName()); | purchase.setBaseProjName(project.getProjectName()); | ||||
purchase.setAreaCode(RegionConst.RC_HZ); | purchase.setAreaCode(RegionConst.RC_HZ); | ||||
purchase.setDeleted(Boolean.FALSE); | purchase.setDeleted(Boolean.FALSE); | ||||
@@ -339,14 +337,14 @@ public class ProjectConvertUtil { | |||||
* @return | * @return | ||||
*/ | */ | ||||
private static String searchReportFile(ProjectDetailVO project, Integer firstIndex, Integer secondIndex) { | private static String searchReportFile(ProjectDetailVO project, Integer firstIndex, Integer secondIndex) { | ||||
if (Objects.isNull(project)) { | |||||
/*if (Objects.isNull(project)) { | |||||
return null; | return null; | ||||
} | } | ||||
if (StringUtils.isNotBlank(project.getFinalAcceptanceMaterials())) { | if (StringUtils.isNotBlank(project.getFinalAcceptanceMaterials())) { | ||||
return searchReportFileInner(project.getFinalAcceptanceMaterials(), firstIndex, secondIndex); | return searchReportFileInner(project.getFinalAcceptanceMaterials(), firstIndex, secondIndex); | ||||
} else if (StringUtils.isNotBlank(project.getPreliminaryInspectionMaterials())) { | } else if (StringUtils.isNotBlank(project.getPreliminaryInspectionMaterials())) { | ||||
return searchReportFileInner(project.getFinalAcceptanceMaterials(), firstIndex, secondIndex); | return searchReportFileInner(project.getFinalAcceptanceMaterials(), firstIndex, secondIndex); | ||||
} | |||||
}*/ | |||||
return null; | return null; | ||||
} | } | ||||
@@ -270,6 +270,21 @@ public class ConstructionManage { | |||||
return BeanUtil.copyToList(contracts, ContractVO.class); | return BeanUtil.copyToList(contracts, ContractVO.class); | ||||
} | } | ||||
/** | |||||
* 获取合同备案详情 | |||||
* | |||||
* @param bidIds \ | |||||
* @return \ | |||||
*/ | |||||
public List<ContractVO> detailContractByBidIds(Collection<Long> bidIds) { | |||||
if (CollUtil.isEmpty(bidIds)) { | |||||
return Collections.emptyList(); | |||||
} | |||||
List<Contract> contracts = contractService.list(Wrappers.lambdaQuery(Contract.class) | |||||
.in(Contract::getBidId, bidIds)); | |||||
return BeanUtil.copyToList(contracts, ContractVO.class); | |||||
} | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public String submitPurchaseContract(SubmitConstructionReq req) { | public String submitPurchaseContract(SubmitConstructionReq req) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
@@ -75,8 +75,8 @@ public class PurchaseManage { | |||||
/** | /** | ||||
* 待采购的-项目列表 | * 待采购的-项目列表 | ||||
* | * | ||||
* @param req | |||||
* @return | |||||
* @param req \ | |||||
* @return \ | |||||
*/ | */ | ||||
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { | public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
@@ -86,7 +86,7 @@ public class PurchaseManage { | |||||
query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()); | query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()); | ||||
//待采购状态 | //待采购状态 | ||||
query.in(Project::getStatus, Lists.newArrayList(ProjectStatusEnum.TO_BE_PURCHASED.getCode(), | query.in(Project::getStatus, Lists.newArrayList(ProjectStatusEnum.TO_BE_PURCHASED.getCode(), | ||||
ProjectStatusEnum.OPERATION.getCode())); | |||||
ProjectStatusEnum.ON_PURCHASING.getCode())); | |||||
query.eq(Project::getStage, ProjectStatusEnum.PROJECT_APPROVED.getCode()); | query.eq(Project::getStage, ProjectStatusEnum.PROJECT_APPROVED.getCode()); | ||||
query.eq(Project::getNewest, Boolean.TRUE); | query.eq(Project::getNewest, Boolean.TRUE); | ||||
query.orderByAsc(Project::getApprovalDate); | query.orderByAsc(Project::getApprovalDate); | ||||
@@ -23,14 +23,6 @@ public class ContractVO { | |||||
@ApiModelProperty("主键") | @ApiModelProperty("主键") | ||||
private Long id; | private Long id; | ||||
@ApiModelProperty("创建人") | |||||
@TableField(fill = FieldFill.INSERT) | |||||
private String createBy; | |||||
@ApiModelProperty("修改人人") | |||||
@TableField(fill = FieldFill.INSERT_UPDATE) | |||||
private String updateBy; | |||||
@ApiModelProperty("创建时间") | @ApiModelProperty("创建时间") | ||||
private LocalDateTime createOn; | private LocalDateTime createOn; | ||||
@@ -7,32 +7,19 @@ import lombok.Data; | |||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
/** | /** | ||||
* @Classname PreInsAcceptancePerson | |||||
* @Description 初验人员 | |||||
* @Date 2023/5/30 15:35 | |||||
* @Author PoffyZhang | |||||
* <p> | |||||
* PreInsAcceptancePersonVO | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:34 2024/2/26 | |||||
*/ | */ | ||||
@Data | @Data | ||||
@ApiModel(value = "PreInsAcceptancePersonVO", description = "") | |||||
public class PreInsAcceptancePersonVO { | public class PreInsAcceptancePersonVO { | ||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | @ApiModelProperty("主键") | ||||
private Long id; | private Long id; | ||||
@ApiModelProperty("创建人") | |||||
private String createBy; | |||||
@ApiModelProperty("修改人人") | |||||
private String updateBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("项目ID") | @ApiModelProperty("项目ID") | ||||
private Long projectId; | private Long projectId; | ||||
@@ -41,4 +28,5 @@ public class PreInsAcceptancePersonVO { | |||||
@ApiModelProperty("单位") | @ApiModelProperty("单位") | ||||
private String unit; | private String unit; | ||||
} | } |
@@ -0,0 +1,35 @@ | |||||
package com.hz.pm.api.projectdeclared.model.vo; | |||||
import com.hz.pm.api.projectdeclared.model.req.XcfhxApplyReq; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* PurchaseFullInfoVO | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:35 2024/2/26 | |||||
*/ | |||||
@Data | |||||
public class PurchaseFullInfoVO { | |||||
@ApiModelProperty("招标登记") | |||||
private PurchaseVO purchase; | |||||
@ApiModelProperty("初验人员") | |||||
private List<PreInsAcceptancePersonVO> firstInspectedPersons; | |||||
@ApiModelProperty("实施计划") | |||||
private OperationVO operation; | |||||
@ApiModelProperty("合同信息") | |||||
private ContractVO construction; | |||||
@ApiModelProperty("信创符合性申请信息") | |||||
private XcfhxApplyReq xcfhxApplyInfo; | |||||
} |
@@ -14,8 +14,8 @@ import java.time.LocalDateTime; | |||||
* @Date 2023/5/29 10:00 | * @Date 2023/5/29 10:00 | ||||
* @Author PoffyZhang | * @Author PoffyZhang | ||||
*/ | */ | ||||
@ApiModel(value = "采购对象", description = "采购对象") | |||||
@Data | @Data | ||||
@ApiModel(value = "采购对象") | |||||
@AllArgsConstructor | @AllArgsConstructor | ||||
public class PurchaseVO { | public class PurchaseVO { | ||||
@@ -84,4 +84,17 @@ public class PurchaseVO { | |||||
@ApiModelProperty("预算执行确认书编号") | @ApiModelProperty("预算执行确认书编号") | ||||
private String budgetExecConfirmNo; | private String budgetExecConfirmNo; | ||||
@ApiModelProperty("是否符合信创符合性要求") | |||||
private Boolean matchXcfhx; | |||||
@ApiModelProperty("备注") | |||||
private String xcfhxApplyRemark; | |||||
@ApiModelProperty("其他附件") | |||||
private String xcfhxApplyFiles; | |||||
@ApiModelProperty("信创报告") | |||||
private String xcfhxReportFiles; | |||||
} | } |
@@ -687,28 +687,44 @@ public class ProjectLibManage { | |||||
vo.setProcess(todoService.getProcessDetail(req)); | vo.setProcess(todoService.getProcessDetail(req)); | ||||
List<Long> allVersionProjectId = projectService.getAllVersionProjectId(projectInfo); | List<Long> allVersionProjectId = projectService.getAllVersionProjectId(projectInfo); | ||||
//查询采购备案 | |||||
// 查询采购备案 | |||||
vo.setPurchaseDetails(new ArrayList<>()); | |||||
List<Purchase> purchases = purchaseService.listByProjectIds(allVersionProjectId); | List<Purchase> purchases = purchaseService.listByProjectIds(allVersionProjectId); | ||||
vo.setPurchases(CollUtils.fieldList(purchases,w -> { | |||||
PurchaseVO purchase = BeanUtil.copyProperties(w, PurchaseVO.class); | |||||
purchase.setStatusName(TenderStatusEnum.getDescByStatus(w.getStatus())); | |||||
return purchase; | |||||
})); | |||||
if (!purchases.isEmpty()) { | |||||
Map<Long, PurchaseVO> purchaseMap = CollUtils.listToMap(purchases, Purchase::getId, w -> { | |||||
PurchaseVO purchase = BeanUtil.copyProperties(w, PurchaseVO.class); | |||||
purchase.setStatusName(TenderStatusEnum.getDescByStatus(w.getStatus())); | |||||
return purchase; | |||||
}); | |||||
//查询合同备案 | |||||
List<ContractVO> contracts = constructionManage.detailContractByBidIds(purchaseMap.keySet()); | |||||
Map<Long, ContractVO> contractMap = CollUtils.listToMap(contracts, ContractVO::getBidId); | |||||
//查询实施信息 | |||||
List<Operation> operations = operationService.list(Wrappers.lambdaQuery(Operation.class) | |||||
.in(Operation::getBidId, purchaseMap.keySet())); | |||||
List<OperationVO> tmpOperations = BeanUtil.copyToList(operations, OperationVO.class); | |||||
Map<Long, OperationVO> operationMap = CollUtils.listToMap(tmpOperations, w -> w.getBidId()); | |||||
//查询初验信息 | |||||
Map<Long, List<PreInsAcceptancePerson>> acceptancePersonsMap = acceptancePersonService.listByBidIds(purchaseMap.keySet()); | |||||
purchaseMap.forEach((k, v) -> { | |||||
PurchaseFullInfoVO purchaseFullInfo = new PurchaseFullInfoVO(); | |||||
purchaseFullInfo.setPurchase(v); | |||||
purchaseFullInfo.setOperation(operationMap.get(k)); | |||||
purchaseFullInfo.setConstruction(contractMap.get(k)); | |||||
List<PreInsAcceptancePerson> tmpPersons = acceptancePersonsMap.get(k); | |||||
if (tmpPersons != null) { | |||||
purchaseFullInfo.setFirstInspectedPersons(convertPersons(tmpPersons)); | |||||
} | |||||
vo.getPurchaseDetails().add(purchaseFullInfo); | |||||
}); | |||||
} | |||||
//查询合同备案 | |||||
List<ContractVO> contracts = constructionManage.detailContractByProjectId(projectInfo.getId()); | |||||
vo.setContract(contracts); | |||||
List<ProjectAnnualPaymentPlan> paymentPlans = projectPaymentPlanService.listByProjectId(projectInfo.getId()); | List<ProjectAnnualPaymentPlan> paymentPlans = projectPaymentPlanService.listByProjectId(projectInfo.getId()); | ||||
vo.setAnnualPaymentPlans(BeanUtil.copyToList(paymentPlans, ProjectPaymentPlanDTO.class)); | vo.setAnnualPaymentPlans(BeanUtil.copyToList(paymentPlans, ProjectPaymentPlanDTO.class)); | ||||
//查询实施信息 | |||||
Operation operation = operationService.getOne(Wrappers.lambdaQuery(Operation.class) | |||||
.in(Operation::getProjectId, allVersionProjectId) | |||||
.orderByAsc(Operation::getCreateOn) | |||||
.last(BizConst.LIMIT_1)); | |||||
vo.setOperation(BeanUtil.copyProperties(operation, OperationVO.class)); | |||||
SafetyMonitorVO safetyVo = new SafetyMonitorVO(); | SafetyMonitorVO safetyVo = new SafetyMonitorVO(); | ||||
//查询风险监测 | //查询风险监测 | ||||
@@ -729,12 +745,6 @@ public class ProjectLibManage { | |||||
.collect(Collectors.toList())); | .collect(Collectors.toList())); | ||||
} | } | ||||
//查询初验信息 | |||||
List<PreInsAcceptancePerson> acceptancePersons = acceptancePersonService.list(Wrappers.lambdaQuery(PreInsAcceptancePerson.class) | |||||
.in(PreInsAcceptancePerson::getProjectId, allVersionProjectId) | |||||
.orderByAsc(PreInsAcceptancePerson::getCreateOn)); | |||||
vo.setAcceptancePersons(convertPersons(acceptancePersons)); | |||||
//查询终验信息 | //查询终验信息 | ||||
vo.setFinalIrsApps(applicationHandler.generateIrsApp(projectInfo.getProjectCode())); | vo.setFinalIrsApps(applicationHandler.generateIrsApp(projectInfo.getProjectCode())); | ||||
@@ -1,23 +1,18 @@ | |||||
package com.hz.pm.api.projectlib.model.vo; | package com.hz.pm.api.projectlib.model.vo; | ||||
import cn.hutool.json.JSONNull; | |||||
import cn.hutool.json.JSONUtil; | import cn.hutool.json.JSONUtil; | ||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.alibaba.fastjson.annotation.JSONField; | import com.alibaba.fastjson.annotation.JSONField; | ||||
import com.hz.pm.api.projectlib.model.dto.ProjectPaymentPlanDTO; | |||||
import com.ningdatech.basic.util.NdDateUtils; | |||||
import com.hz.pm.api.common.compare.Compare; | import com.hz.pm.api.common.compare.Compare; | ||||
import com.hz.pm.api.common.util.BizUtils; | |||||
import com.hz.pm.api.dashboard.model.vo.ProtraitProjectOutputVO; | import com.hz.pm.api.dashboard.model.vo.ProtraitProjectOutputVO; | ||||
import com.hz.pm.api.portrait.model.vo.TagVO; | import com.hz.pm.api.portrait.model.vo.TagVO; | ||||
import com.hz.pm.api.projectdeclared.model.vo.ContractVO; | |||||
import com.hz.pm.api.projectdeclared.model.vo.OperationVO; | |||||
import com.hz.pm.api.projectdeclared.model.vo.PreInsAcceptancePersonVO; | |||||
import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO; | |||||
import com.hz.pm.api.projectdeclared.model.vo.*; | |||||
import com.hz.pm.api.projectlib.model.dto.ProjectPaymentPlanDTO; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | ||||
import com.hz.pm.api.safety.model.vo.SafetyMonitorVO; | import com.hz.pm.api.safety.model.vo.SafetyMonitorVO; | ||||
import com.hz.pm.api.todocenter.model.vo.ProcessProgressDetailVO; | import com.hz.pm.api.todocenter.model.vo.ProcessProgressDetailVO; | ||||
import com.ningdatech.basic.util.NdDateUtils; | |||||
import io.swagger.annotations.ApiModel; | import io.swagger.annotations.ApiModel; | ||||
import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
import lombok.Data; | import lombok.Data; | ||||
@@ -380,6 +375,7 @@ public class ProjectDetailVO { | |||||
private Boolean newest; | private Boolean newest; | ||||
private LocalDateTime createOn; | private LocalDateTime createOn; | ||||
private LocalDateTime updateOn; | private LocalDateTime updateOn; | ||||
@ApiModelProperty("成交金额") | @ApiModelProperty("成交金额") | ||||
@@ -393,26 +389,11 @@ public class ProjectDetailVO { | |||||
@JSONField(format = "yyyy-MM-dd") | @JSONField(format = "yyyy-MM-dd") | ||||
private LocalDateTime deliveryTime; | private LocalDateTime deliveryTime; | ||||
@ApiModelProperty("初验材料") | |||||
private String preliminaryInspectionMaterials; | |||||
@ApiModelProperty("终验材料") | |||||
private String finalAcceptanceMaterials; | |||||
@ApiModelProperty("合同总金额") | @ApiModelProperty("合同总金额") | ||||
private BigDecimal contractAmount; | private BigDecimal contractAmount; | ||||
@ApiModelProperty("合同信息") | |||||
private List<ContractVO> contract; | |||||
@ApiModelProperty("采购信息") | |||||
private List<PurchaseVO> purchases; | |||||
@ApiModelProperty("初审人员") | |||||
private List<PreInsAcceptancePersonVO> acceptancePersons; | |||||
@ApiModelProperty("实施信息") | |||||
private OperationVO operation; | |||||
@ApiModelProperty("采购信息(标段)") | |||||
private List<PurchaseFullInfoVO> purchaseDetails; | |||||
@ApiModelProperty("版本号str") | @ApiModelProperty("版本号str") | ||||
private String versionStr; | private String versionStr; | ||||
@@ -457,7 +438,7 @@ public class ProjectDetailVO { | |||||
private LocalDateTime planAcceptanceTime; | private LocalDateTime planAcceptanceTime; | ||||
public String getVersionStr() { | public String getVersionStr() { | ||||
if (Objects.nonNull(this.newest) && this.newest) { | |||||
if (Objects.nonNull(this.newest) && Boolean.TRUE.equals(this.newest)) { | |||||
this.versionStr = "当前版本"; | this.versionStr = "当前版本"; | ||||
return this.versionStr; | return this.versionStr; | ||||
} | } | ||||