diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/RegionConst.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/RegionConst.java index 014a1d9..84f1c9b 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/RegionConst.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/constant/RegionConst.java @@ -24,6 +24,8 @@ public interface RegionConst { * 丽水行政区划编码 */ String RC_LS = "331100"; + //遂昌县 + String RC_SC = "331123"; /** * 中国行政区划编码 diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/PerformanceIndicatorTemplateController.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/PerformanceIndicatorTemplateController.java index 95161dc..d5951ed 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/PerformanceIndicatorTemplateController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/controller/PerformanceIndicatorTemplateController.java @@ -1,6 +1,7 @@ package com.ningdatech.pmapi.performance.controller; import com.ningdatech.basic.model.PageVo; +import com.ningdatech.log.annotation.WebLog; import com.ningdatech.pmapi.performance.manage.IndicatorTemplateManage; import com.ningdatech.pmapi.performance.model.dto.PerformanceIndicatorProjectTemplateSaveDTO; import com.ningdatech.pmapi.performance.model.req.PerformanceAppraisalListReq; @@ -32,8 +33,15 @@ public class PerformanceIndicatorTemplateController { return indicatorTemplateManage.projectList(req); } + @GetMapping("/project/detail/{id}") + @ApiOperation("项目指标配置模板详情") + public PerformanceIndicatorProjectTemplateVO projectDetail(@PathVariable Long id) { + return indicatorTemplateManage.projectDetail(id); + } + @PostMapping("/project/save") @ApiOperation("项目指标配置模板保存") + @WebLog("项目指标配置模板保存") public String projectTemplateSave(@Valid @RequestBody PerformanceIndicatorProjectTemplateSaveDTO dto) { return indicatorTemplateManage.projectTemplateSave(dto); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/enumration/PerformanceTemplateTypeEnum.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/enumration/PerformanceTemplateTypeEnum.java new file mode 100644 index 0000000..51f7bfc --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/enumration/PerformanceTemplateTypeEnum.java @@ -0,0 +1,44 @@ +package com.ningdatech.pmapi.performance.enumration; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; + +import java.util.Objects; + +/** + *

+ * PerformanceTemplateTypeEnum + *

+ * + * @author Poffy + * @since 16:56 2023/6/27 + */ +@Getter +@AllArgsConstructor +@NoArgsConstructor +public enum PerformanceTemplateTypeEnum { + /** + * 模板类型 + */ + STAGE(0, "阶段"), + FIRST_INDEX(1, "第一指标"), + SECOND_INDEX(2, "第二指标"), + THIRD_INDEX(3, "第三指标"); + + private Integer code; + private String desc; + + public static String getDesc(Integer code) { + if (Objects.isNull(code)) { + return StringUtils.EMPTY; + } + for (PerformanceTemplateTypeEnum t : PerformanceTemplateTypeEnum.values()) { + if (code.equals(t.getCode())) { + return t.desc; + } + } + return StringUtils.EMPTY; + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/IndicatorTemplateManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/IndicatorTemplateManage.java index a0465f6..8865874 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/IndicatorTemplateManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/IndicatorTemplateManage.java @@ -1,16 +1,23 @@ package com.ningdatech.pmapi.performance.manage; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Lists; import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.performance.enumration.PerformanceTemplateTypeEnum; import com.ningdatech.pmapi.performance.model.dto.PerformanceIndicatorProjectTemplateSaveDTO; +import com.ningdatech.pmapi.performance.model.dto.ProjectTemplateDetailDTO; import com.ningdatech.pmapi.performance.model.entity.PerformanceIndicatorProjectTemplate; +import com.ningdatech.pmapi.performance.model.entity.PerformanceIndicatorProjectTemplateDetail; import com.ningdatech.pmapi.performance.model.req.PerformanceAppraisalListReq; import com.ningdatech.pmapi.performance.model.vo.PerformanceIndicatorProjectTemplateVO; +import com.ningdatech.pmapi.performance.model.vo.ProjectTemplateDetailVO; +import com.ningdatech.pmapi.performance.service.IPerformanceIndicatorProjectTemplateDetailService; import com.ningdatech.pmapi.performance.service.IPerformanceIndicatorProjectTemplateService; import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; import com.ningdatech.pmapi.user.util.LoginUserUtil; @@ -20,6 +27,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.time.LocalDateTime; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -36,6 +44,8 @@ import java.util.stream.Collectors; public class IndicatorTemplateManage { private final IPerformanceIndicatorProjectTemplateService indicatorTemplateService; + private final IPerformanceIndicatorProjectTemplateDetailService indicatorProjectTemplateDetailService; + /** * 模板列表 * @param req @@ -60,6 +70,26 @@ public class IndicatorTemplateManage { } /** + * 查询项目模板详情 + * @param id + * @return + */ + public PerformanceIndicatorProjectTemplateVO projectDetail(Long id) { + PerformanceIndicatorProjectTemplate template = indicatorTemplateService.getById(id); + if(Objects.isNull(template)){ + return null; + } + PerformanceIndicatorProjectTemplateVO vo = BeanUtil.copyProperties(template, + PerformanceIndicatorProjectTemplateVO.class); + List templateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) + .eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, id)); + if(CollUtil.isNotEmpty(templateDetails)){ + vo.setTemplateDetails(buildTemplateDetail(templateDetails)); + } + return vo; + } + + /** * 项目指标 模板保存 * @param dto * @return @@ -67,7 +97,6 @@ public class IndicatorTemplateManage { public String projectTemplateSave(PerformanceIndicatorProjectTemplateSaveDTO dto) { UserInfoDetails user = LoginUserUtil.loginUserDetail(); PerformanceIndicatorProjectTemplate template = BeanUtil.copyProperties(dto, PerformanceIndicatorProjectTemplate.class); - if(Objects.nonNull(dto.getId())){ PerformanceIndicatorProjectTemplate old = indicatorTemplateService.getById(dto.getId()); VUtils.isTrue(Objects.isNull(old)).throwMessage("该模板不存在!"); @@ -77,14 +106,100 @@ public class IndicatorTemplateManage { template.setCreateOn(LocalDateTime.now()); template.setCreateBy(user.getUsername()); } - template.setUpdateOn(LocalDateTime.now()); template.setUpdateBy(user.getUsername()); if(indicatorTemplateService.saveOrUpdate(template)){ //保存 模板的详情 - return "保存成功"; + if(CollUtil.isNotEmpty(dto.getTemplateDetails())){ + //先删除 + indicatorProjectTemplateDetailService.remove(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) + .eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId,dto.getId())); + analysisTemplateDetails(dto.getTemplateDetails(),template.getId()); + } + return "保存成功"; } - throw new BizException("保存失败!"); } + + /** + * 解析 项目考核指标 + * @param templateDetails + * @return + */ + private void analysisTemplateDetails( + List templateDetails,Long templateId) { + List details = Lists.newArrayList(); + if(CollUtil.isEmpty(templateDetails)){ + return; + } + + analysisTemplateDetailsInner(templateDetails,templateId,null); + } + + private void analysisTemplateDetailsInner(List templateDetails, + Long templateId,Long parentId) { + if(CollUtil.isEmpty(templateDetails)){ + return; + } + UserInfoDetails user = LoginUserUtil.loginUserDetail(); + for(ProjectTemplateDetailDTO detail : templateDetails){ + PerformanceIndicatorProjectTemplateDetail templateDetail = BeanUtil.copyProperties(detail, PerformanceIndicatorProjectTemplateDetail.class); + templateDetail.setCreateBy(user.getUsername()); + templateDetail.setCreateOn(LocalDateTime.now()); + templateDetail.setUpdateBy(user.getUsername()); + templateDetail.setUpdateOn(LocalDateTime.now()); + templateDetail.setTemplateId(templateId); + templateDetail.setParentId(parentId); + indicatorProjectTemplateDetailService.save(templateDetail); + + if(CollUtil.isNotEmpty(detail.getChildren())){ + analysisTemplateDetailsInner(detail.getChildren(),templateId,templateDetail.getId()); + } + } + } + + /** + * 装配 模板详情 + * @param templateDetails + * @return + */ + private List buildTemplateDetail(List templateDetails) { + List res = Lists.newArrayList(); + //第一层是 一级的 + for(PerformanceIndicatorProjectTemplateDetail templateDetail : templateDetails){ + if(PerformanceTemplateTypeEnum.STAGE.getCode().equals(templateDetail.getType())){ + ProjectTemplateDetailVO detailVo = BeanUtil.copyProperties(templateDetail, ProjectTemplateDetailVO.class); + List secondList = Lists.newArrayList(); + for(PerformanceIndicatorProjectTemplateDetail templateDetailSecond : templateDetails) { + if (Objects.nonNull(templateDetailSecond.getParentId()) && + templateDetailSecond.getParentId().equals(templateDetail.getId())) { + ProjectTemplateDetailVO detailSecondVo = BeanUtil.copyProperties(templateDetailSecond, ProjectTemplateDetailVO.class); + List thirdList = Lists.newArrayList(); + for(PerformanceIndicatorProjectTemplateDetail templateDetailThird : templateDetails) { + if (Objects.nonNull(templateDetailThird.getParentId()) && + templateDetailThird.getParentId().equals(templateDetailSecond.getId())) { + ProjectTemplateDetailVO detailThirdVo = BeanUtil.copyProperties(templateDetailThird, ProjectTemplateDetailVO.class); + List fourList = Lists.newArrayList(); + for(PerformanceIndicatorProjectTemplateDetail templateDetailFour : templateDetails) { + if (Objects.nonNull(templateDetailFour.getParentId()) && + templateDetailFour.getParentId().equals(templateDetailThird.getId())) { + ProjectTemplateDetailVO detailFourVo = BeanUtil.copyProperties(templateDetailFour, ProjectTemplateDetailVO.class); + fourList.add(detailFourVo); + } + } + detailThirdVo.setChildren(fourList); + thirdList.add(detailThirdVo); + } + } + detailSecondVo.setChildren(thirdList); + secondList.add(detailSecondVo); + } + } + detailVo.setChildren(secondList); + res.add(detailVo); + } + } + + return res; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/mapper/PerformanceIndicatorProjectTemplateDetailMapper.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/mapper/PerformanceIndicatorProjectTemplateDetailMapper.java new file mode 100644 index 0000000..d0e9a73 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/mapper/PerformanceIndicatorProjectTemplateDetailMapper.java @@ -0,0 +1,16 @@ +package com.ningdatech.pmapi.performance.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ningdatech.pmapi.performance.model.entity.PerformanceIndicatorProjectTemplateDetail; + +/** + *

+ * Mapper 接口 + *

+ * + * @author Zpf + * @since 2023-06-03 + */ +public interface PerformanceIndicatorProjectTemplateDetailMapper extends BaseMapper { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/mapper/PerformanceIndicatorProjectTemplateDetailMapper.xml b/pmapi/src/main/java/com/ningdatech/pmapi/performance/mapper/PerformanceIndicatorProjectTemplateDetailMapper.xml new file mode 100644 index 0000000..16a746b --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/mapper/PerformanceIndicatorProjectTemplateDetailMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/PerformanceIndicatorProjectTemplateSaveDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/PerformanceIndicatorProjectTemplateSaveDTO.java index 36dcba5..56503b4 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/PerformanceIndicatorProjectTemplateSaveDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/PerformanceIndicatorProjectTemplateSaveDTO.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * @Classname PerformanceIndicatorProjectTemplateSaveDTO @@ -30,9 +31,12 @@ public class PerformanceIndicatorProjectTemplateSaveDTO implements Serializable @ApiModelProperty("项目年度") private Integer projectYear; + @ApiModelProperty("项目类型 ") + private Integer projectType; + @ApiModelProperty("项目资金范围 1.500万元以下、2.500-2000万元,3.2000万元及以上") private Integer amountRange; @ApiModelProperty("绩效指标详情") - private ProjectTemplateDetailDTO templateDetail; + private List templateDetails; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/ProjectTemplateDetailDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/ProjectTemplateDetailDTO.java index 843220a..2f0afab 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/ProjectTemplateDetailDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/dto/ProjectTemplateDetailDTO.java @@ -9,6 +9,7 @@ import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; /** * @Classname PerformanceIndicatorProjectTemplateDetail @@ -41,5 +42,5 @@ public class ProjectTemplateDetailDTO implements Serializable { private String scoreRubric; @ApiModelProperty("子指标") - private ProjectTemplateDetailDTO children; + private List children; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/entity/PerformanceIndicatorProjectTemplate.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/entity/PerformanceIndicatorProjectTemplate.java index dda9e60..338195e 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/entity/PerformanceIndicatorProjectTemplate.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/entity/PerformanceIndicatorProjectTemplate.java @@ -41,6 +41,9 @@ public class PerformanceIndicatorProjectTemplate implements Serializable { @ApiModelProperty("项目年度") private Integer projectYear; + @ApiModelProperty("项目类型") + private Integer projectType; + @ApiModelProperty("项目资金范围 1.500万元以下、2.500-2000万元,3.2000万元及以上") private Integer amountRange; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/vo/PerformanceIndicatorProjectTemplateVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/vo/PerformanceIndicatorProjectTemplateVO.java index d8c61f1..81b7416 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/vo/PerformanceIndicatorProjectTemplateVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/vo/PerformanceIndicatorProjectTemplateVO.java @@ -6,9 +6,10 @@ import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; /** - * @Classname PerformanceIndicatorTemplateVO + * @Classname PerformanceIndicatorProjectTemplateVO * @Description 绩效评价考核项目指标模板 * @Date 2023/6/19 14:02 * @Author PoffyZhang @@ -36,6 +37,12 @@ public class PerformanceIndicatorProjectTemplateVO implements Serializable { @ApiModelProperty("项目年度") private Integer projectYear; + @ApiModelProperty("项目类型") + private Integer projectType; + @ApiModelProperty("项目资金范围 1.500万元以下、2.500-2000万元,3.2000万元及以上") private Integer amountRange; + + @ApiModelProperty("绩效指标详情") + private List templateDetails; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/vo/ProjectTemplateDetailVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/vo/ProjectTemplateDetailVO.java new file mode 100644 index 0000000..7ee7ad6 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/model/vo/ProjectTemplateDetailVO.java @@ -0,0 +1,42 @@ +package com.ningdatech.pmapi.performance.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Classname PerformanceIndicatorProjectTemplateDetail + * @Description 绩效评价考核项目指标模板 + * @Date 2023/6/19 14:02 + * @Author PoffyZhang + */ +@Data +@ApiModel(value = "绩效评价考核项目指标模板详情保存树", description = "绩效评价考核项目指标模板详情保存树") +public class ProjectTemplateDetailVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("关联模板ID") + private Long templateId; + + @ApiModelProperty("指标名称") + private String name; + + @ApiModelProperty("指标类型 0阶段 1一级指标 2二级指标 3三级指标") + private Integer type; + + @ApiModelProperty("父级指标id") + private Long parentId; + + @ApiModelProperty("分数 3级指标才有") + private Integer score; + + @ApiModelProperty("分数细则 3级指标才有") + private String scoreRubric; + + @ApiModelProperty("子指标") + private List children; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/service/IPerformanceIndicatorProjectTemplateDetailService.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/service/IPerformanceIndicatorProjectTemplateDetailService.java new file mode 100644 index 0000000..ff9d7a1 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/service/IPerformanceIndicatorProjectTemplateDetailService.java @@ -0,0 +1,16 @@ +package com.ningdatech.pmapi.performance.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ningdatech.pmapi.performance.model.entity.PerformanceIndicatorProjectTemplateDetail; + +/** + *

+ * 服务类 + *

+ * + * @author PoffyZhang + * @since 2023-06-03 + */ +public interface IPerformanceIndicatorProjectTemplateDetailService extends IService { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/performance/service/impl/PerformanceIndicatorProjectTemplateDetailServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/performance/service/impl/PerformanceIndicatorProjectTemplateDetailServiceImpl.java new file mode 100644 index 0000000..660c459 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/performance/service/impl/PerformanceIndicatorProjectTemplateDetailServiceImpl.java @@ -0,0 +1,21 @@ +package com.ningdatech.pmapi.performance.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ningdatech.pmapi.performance.mapper.PerformanceIndicatorProjectTemplateDetailMapper; +import com.ningdatech.pmapi.performance.model.entity.PerformanceIndicatorProjectTemplateDetail; +import com.ningdatech.pmapi.performance.service.IPerformanceIndicatorProjectTemplateDetailService; +import org.springframework.stereotype.Service; + +/** + *

+ * 绩效评价详情 服务实现类 + *

+ * + * @author ZPF + * @since 2023-06-15 + */ +@Service +public class PerformanceIndicatorProjectTemplateDetailServiceImpl extends ServiceImpl + implements IPerformanceIndicatorProjectTemplateDetailService { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PurchaseManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PurchaseManage.java index e7b9583..21d3e78 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PurchaseManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PurchaseManage.java @@ -12,6 +12,7 @@ import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.pmapi.common.constant.BizConst; +import com.ningdatech.pmapi.common.constant.RegionConst; import com.ningdatech.pmapi.common.helper.UserInfoHelper; import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; import com.ningdatech.pmapi.common.util.ExcelDownUtil; @@ -191,15 +192,28 @@ public class PurchaseManage { purchaseEntity.setId(purchase.getId()); } purchaseEntity.setProjectId(projectId); - purchaseService.saveOrUpdate(purchaseEntity); - - //进入到下一状态 - stateMachineUtils.pass(project); - project.setUpdateOn(LocalDateTime.now()); - project.setTransactionAmount(dto.getTransactionAmount()); - project.setTransactionTime(dto.getTransactionTime()); - projectService.updateById(project); + if(purchaseService.saveOrUpdate(purchaseEntity)){ + //如果 需要推送项目和应用管理的话 只有遂昌县才有 +// String areaCode = project.getAreaCode(); +// String appCode = dto.getAppCode(); +// if(RegionConst.RC_SC.equals(areaCode) && StringUtils.isNotBlank(appCode)){ +// try{ +// +// }catch (Exception e){ +// log.info("绑定以及推送项目和应用关系 失败! {}" + e.getMessage()); +// } +// } + + //进入到下一状态 + stateMachineUtils.pass(project); + project.setUpdateOn(LocalDateTime.now()); + project.setTransactionAmount(dto.getTransactionAmount()); + project.setTransactionTime(dto.getTransactionTime()); + projectService.updateById(project); + + return "填写成功"; + } - return "填写成功"; + return "保存失败"; } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/model/dto/PurchaseSaveDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/model/dto/PurchaseSaveDTO.java index 784c639..9ea6aa3 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/model/dto/PurchaseSaveDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/model/dto/PurchaseSaveDTO.java @@ -56,4 +56,6 @@ public class PurchaseSaveDTO { @ApiModelProperty("中标通知书") private String acceptanceLetter; + @ApiModelProperty("应用编码") + private String appCode; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectApplicationController.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectApplicationController.java index edba6bf..4378fcf 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectApplicationController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectApplicationController.java @@ -24,10 +24,10 @@ public class ProjectApplicationController { private final ApplicationManage applicationManage; - @GetMapping("/get-report") + @GetMapping("/get-report/{appCode}") @ApiOperation("获取应用 试运行报告") @WebLog("获取应用 试运行报告") - public String getReport(@RequestParam(required = false) String appCode) { + public String getReport(@PathVariable String appCode) { return applicationManage.getReport(appCode); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ApplicationManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ApplicationManage.java index 1497136..b80a1e0 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ApplicationManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ApplicationManage.java @@ -1,7 +1,12 @@ package com.ningdatech.pmapi.projectlib.manage; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.function.VUtils; +import com.ningdatech.basic.model.ApiResponse; import com.ningdatech.pmapi.common.util.HmacAuthUtil; import com.ningdatech.pmapi.projectlib.model.dto.ApplicationAppCodeSaveDTO; import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; @@ -9,11 +14,9 @@ import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; import com.ningdatech.pmapi.user.util.LoginUserUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; +import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -85,11 +88,29 @@ public class ApplicationManage { HttpEntity> formEntity = new HttpEntity>(headers); RestTemplate restTemplate = new RestTemplate(); - ResponseEntity forEntity = restTemplate.exchange(url, HttpMethod.GET,formEntity, String.class); + ResponseEntity forEntity = restTemplate.exchange(appUrl, HttpMethod.GET,formEntity, ApiResponse.class); log.info("body:",forEntity.getBody()); - String body = forEntity.getBody(); + ApiResponse body = forEntity.getBody(); - return null; + if(!body.getCode().equals(HttpStatus.OK.value())){ + throw new BizException(body.getMessage()); + } + + Object data = body.getData(); + if(Objects.nonNull(data)){ + JSONObject dataJson = JSON.parseObject(JSON.toJSONString(data)); + JSONArray resourceList = dataJson.getJSONArray("resourceList"); + if(CollUtil.isNotEmpty(resourceList)){ + JSONObject resource = JSON.parseObject(JSON.toJSONString(resourceList.get(0))); + if(StringUtils.isBlank(resource.getString("reportOss"))){ + //暂时没有 appCode 所以先返回测试数据 + return "https://irs-yyyw.oss-cn-hangzhou-zwynet-d01-a.internet.cloud.zj.gov.cn/tmp/%E6%B8%A9%E5%B7%9E%E5%B8%82%E4%B9%90%E6%B8%85%E5%B8%82%E5%8C%BA%E5%9F%9F%E4%BD%93%E6%A3%80%E4%BF%A1%E6%81%AF%E7%B3%BB%E7%BB%9F_9cf0b901f2ca4fbf8ff274da359ad219.html?Expires=1687833685&OSSAccessKeyId=wMhEw2BhpIDc1xwO&Signature=UPAbMdDy23FI1sNemszg5WH%2BG40%3D"; + }else{ + return resource.getString("reportOss"); + } + } + } + throw new BizException("获取报告失败!"); } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java index 05999dc..a0c13a9 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java @@ -731,7 +731,7 @@ public class ProjectLibManage { if(StringUtils.isNotBlank(req.getApplicationName())){ wrapper.and(q1 -> q1.like(ProjectApplication::getApplicationName,req.getApplicationName()) - .or(q2 -> q2.like(ProjectApplication::getAccountAppName,req.getApplicationName()))); + .or(q2 -> q2.like(ProjectApplication::getRelatedExistsApplication,req.getApplicationName()))); } wrapper.orderByDesc(ProjectApplication::getUpdateOn); projectApplicationService.page(page,wrapper);