Przeglądaj źródła

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/purchase

gao.qiang 2 lat temu
rodzic
commit
ff7f5a1ef3

+ 0 - 1
purchase-admin/src/main/java/com/ozs/web/controller/plan/PlanQuarterController.java

@@ -8,7 +8,6 @@ import com.ozs.common.utils.poi.ExcelUtil;
 import com.ozs.framework.web.service.TokenService;
 import com.ozs.plan.doman.PlanQuarter;
 import com.ozs.plan.doman.vo.requestVo.PlanQuarterStandardVo;
-import com.ozs.plan.doman.vo.requestVo.PlanYearsStandardVo;
 import com.ozs.plan.service.PlanQuarterService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;

+ 35 - 3
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmDemandController.java

@@ -3,6 +3,7 @@ package com.ozs.web.controller.pm;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ozs.common.core.domain.model.LoginUser;
+import com.ozs.common.utils.StringUtils;
 import com.ozs.framework.web.service.TokenService;
 import com.ozs.pm.doman.vo.requestVo.PmBookBuildingReqVo;
 import com.ozs.pm.doman.vo.requestVo.PmDemandReqVo;
@@ -10,6 +11,7 @@ import com.ozs.pm.doman.vo.responseVo.PmDemandResVo;
 import com.ozs.pm.service.IPmDemandService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -47,11 +49,14 @@ public class PmDemandController extends BaseController {
     }
 
     /**
-     * 获取采购需求详细信息
+     * 查看详情
      */
-    @ApiOperation(value = "获取采购需求详细信息", notes = "必传demandId,其他字段不传")
+    @ApiOperation(value = "查看详情", notes = "必传demandId,其他字段不传")
     @PostMapping("/view")
     public AjaxResult view(@RequestBody PmDemandReqVo pmDemandReqVo) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
         return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId()));
     }
 
@@ -61,6 +66,9 @@ public class PmDemandController extends BaseController {
     @ApiOperation(value = "需求建档", notes = "必传demandId,根据项目类型必传pmDemandEngineeringResponseVo、pmDemandEquipResponseVo、pmDemandMaterialsResponseVo、pmDemandServeResponseVo")
     @PostMapping("/bookBuilding")
     public AjaxResult bookBuilding(@RequestBody PmBookBuildingReqVo pmBookBuildingReqVo, HttpServletRequest request) {
+        if(pmBookBuildingReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
         LoginUser loginUser = tokenService.getLoginUser(request);
         pmBookBuildingReqVo.setUpdateBy(String.valueOf(loginUser.getUserId()));
         return toAjax(pmDemandService.bookBuilding(pmBookBuildingReqVo));
@@ -69,6 +77,9 @@ public class PmDemandController extends BaseController {
     @ApiOperation(value = "提交采购需求", notes = "必传demandId,其他字段不传")
     @PostMapping("/commit")
     public AjaxResult commit(@RequestBody PmDemandReqVo pmDemandReqVo, HttpServletRequest request) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
         LoginUser loginUser = tokenService.getLoginUser(request);
         pmDemandReqVo.setUpdateBy(String.valueOf(loginUser.getUserId()));
         return toAjax(pmDemandService.commit(pmDemandReqVo));
@@ -80,15 +91,24 @@ public class PmDemandController extends BaseController {
     @ApiOperation(value = "查看流程图,获取当前阶段名字", notes = "必传demandId,其他字段不传")
     @PostMapping("/viewFlowChart")
     public AjaxResult viewFlowChart(@RequestBody PmDemandReqVo pmRequestVo) {
+        if(pmRequestVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
         return success(pmDemandService.viewFlowChart(pmRequestVo.getDemandId()));
     }
 
     /**
      * 查看流程图,鼠标移到对应模块后,显示悬浮框提示
      */
-    @ApiOperation(value = "查看流程图,鼠标移到对应模块后,显示悬浮框提示", notes = "必传demandId,模块名称,其他字段不传")
+    @ApiOperation(value = "查看流程图,鼠标移到对应模块后,显示悬浮框提示", notes = "必传demandId模块名称,其他字段不传")
     @PostMapping("/getModuleInfo")
     public AjaxResult getModuleInfo(@RequestBody PmDemandReqVo pmRequestVo) {
+        if(pmRequestVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
+        if(pmRequestVo.getModuleName() == null){
+            return AjaxResult.error("模块名称不能为空");
+        }
         return success(pmDemandService.getModuleInfo(pmRequestVo.getDemandId(),pmRequestVo.getModuleName()));
     }
 
@@ -106,6 +126,12 @@ public class PmDemandController extends BaseController {
     @ApiOperation(value = "审核采购需求通过", notes = "必传demandId和上传附件,其他字段不传")
     @PostMapping("/reviewTo")
     public AjaxResult reviewTo(@RequestBody PmDemandReqVo pmDemandReqVo, HttpServletRequest request) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
+        if(pmDemandReqVo.getSysFileRefs() == null || pmDemandReqVo.getSysFileRefs().size() == 0){
+            return AjaxResult.error("上传附件不能为空");
+        }
         LoginUser loginUser = tokenService.getLoginUser(request);
         pmDemandReqVo.setUpdateBy(String.valueOf(loginUser.getUserId()));
         return toAjax(pmDemandService.reviewTo(pmDemandReqVo));
@@ -114,6 +140,12 @@ public class PmDemandController extends BaseController {
     @ApiOperation(value = "审核采购需求退回", notes = "必传demandId和退回原因,其他字段不传")
     @PostMapping("/reviewReturn")
     public AjaxResult reviewReturn(@RequestBody PmDemandReqVo pmDemandReqVo, HttpServletRequest request) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
+        if(StringUtils.isEmpty(pmDemandReqVo.getRefuseReason())){
+            return AjaxResult.error("退回原因不能为空");
+        }
         LoginUser loginUser = tokenService.getLoginUser(request);
         pmDemandReqVo.setUpdateBy(String.valueOf(loginUser.getUserId()));
         return toAjax(pmDemandService.reviewReturn(pmDemandReqVo));

+ 11 - 2
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmTaskReleaseController.java

@@ -48,17 +48,26 @@ public class PmTaskReleaseController extends BaseController {
     @ApiOperation(value = "下达任务", notes = "必传demandId和上传附件,其他字段不传")
     @PostMapping("/releaseTask")
     public AjaxResult releaseTask(@RequestBody PmDemandReqVo pmDemandReqVo, HttpServletRequest request) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
+        if(pmDemandReqVo.getSysFileRefs() == null || pmDemandReqVo.getSysFileRefs().size() == 0){
+            return AjaxResult.error("上传附件不能为空");
+        }
         LoginUser loginUser = tokenService.getLoginUser(request);
         pmDemandReqVo.setUpdateBy(String.valueOf(loginUser.getUserId()));
         return toAjax(pmDemandService.releaseTask(pmDemandReqVo));
     }
 
     /**
-     * 获取采购需求详细信息
+     * 查看详情
      */
-    @ApiOperation(value = "获取采购需求详细信息", notes = "必传demandId,其他字段不传")
+    @ApiOperation(value = "查看详情", notes = "必传demandId,其他字段不传")
     @PostMapping("/view")
     public AjaxResult view(@RequestBody PmDemandReqVo pmDemandReqVo) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
         return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId()));
     }
 }

+ 21 - 9
purchase-system/src/main/java/com/ozs/plan/service/impl/PlanQuarterServiceImpl.java

@@ -17,9 +17,9 @@ import com.ozs.common.utils.bean.BeanUtils;
 import com.ozs.plan.doman.PlanQuarter;
 import com.ozs.plan.doman.PlanYears;
 import com.ozs.plan.doman.vo.requestVo.PlanQuarterStandardVo;
-import com.ozs.plan.doman.vo.requestVo.PlanYearsStandardVo;
 import com.ozs.plan.doman.vo.responseVo.PlanQuarterResponseVo;
 import com.ozs.plan.mapper.PlanQuarterMapper;
+import com.ozs.plan.mapper.PlanYearsMapper;
 import com.ozs.plan.service.PlanQuarterService;
 import com.ozs.system.domain.SysFileInfo;
 import com.ozs.system.domain.SysFileRef;
@@ -54,6 +54,8 @@ public class PlanQuarterServiceImpl implements PlanQuarterService {
     @Autowired
     PlanQuarterMapper planQuarterMapper;
     @Autowired
+    PlanYearsMapper planYearsMapper;
+    @Autowired
     protected Validator validator;
     @Autowired
     private ISysDictTypeService dictTypeService;
@@ -315,18 +317,21 @@ public class PlanQuarterServiceImpl implements PlanQuarterService {
                 if (planQuarterMapper.countProjectName(ofYear.getProjectName()) == 0) {
                     //采购单位
                     SysDept info = deptMapper.checkDeptNameOnlyOne(ofYear.getPurchaseDeptName());
-                    if (StringUtils.isNotNull(info)) {
+                    if (!ObjectUtils.isEmpty(info)) {
                         ofYear.setPurchaseDeptId(info.getDeptId());
+                    } else {
+                        ++failureNum;
+                        failureMsg.append("*" + failureNum + "*采购单位“" + ofYear.getPurchaseDeptName() + "”不存在");
                     }
                     ofYear.setProjectType(projectTypesMap.get(ofYear.getProjectType()));
                     ofYear.setProjectStatus(ProjectStatus.PLANWAITCOMMIT.getCode());
                     ofYear.setPurchaseMode(planPurchaseModesMap.get(ofYear.getPurchaseMode()));
                     //项目属性是多选字段
                     StringBuilder builder = new StringBuilder();
-                    if (ofYear.getProjectAttr().contains("")) {
-                        String[] split = ofYear.getProjectAttr().split("");
+                    if (ofYear.getProjectAttr().contains(",")) {
+                        String[] split = ofYear.getProjectAttr().split(",");
                         for (String s : split) {
-                            builder.append(projectAttributes.get(s) + "");
+                            builder.append(projectAttributes.get(s) + ",");
                         }
                     } else {
                         builder.append(projectAttributes.get(ofYear.getProjectAttr()));
@@ -349,11 +354,11 @@ public class PlanQuarterServiceImpl implements PlanQuarterService {
                     //    successMsg.append("<br/>" + successNum + "、项目 " + ofYear.getProjectName() + " 更新成功");
                 } else {
                     failureNum++;
-                    failureMsg.append("*" + successNum + "、项目 " + ofYear.getProjectName() + " 已存在");
+                    failureMsg.append(failureNum + "*项目 " + ofYear.getProjectName() + " 已存在!/n");
                 }
             } catch (Exception exc) {
                 failureNum++;
-                String msg = "*" + successNum + "项目 " + ofYear.getProjectName() + " 导入失败";
+                String msg = "*" + successNum + "*项目 " + ofYear.getProjectName() + " 导入失败";
                 failureMsg.append(msg + exc.getMessage());
                 log.error(msg, exc);
             }
@@ -404,6 +409,13 @@ public class PlanQuarterServiceImpl implements PlanQuarterService {
     public AjaxResult reviewTo(PlanQuarterStandardVo vo) {
         PlanQuarter quarters = new PlanQuarter();
         BeanUtils.copyProperties(vo, quarters);
+        PlanQuarter byId = planQuarterMapper.getById(vo.getPlanPracticalId());
+        if (ObjectUtils.isEmpty(byId.getPlanYearId())) {
+            PlanYears ofYears = new PlanYears();
+            BeanUtils.copyProperties(vo, ofYears);
+            planYearsMapper.insertPlanYears(ofYears);
+            quarters.setPlanYearId(ofYears.getPlanYearId());
+        }
         quarters.setProjectStatus(ProjectStatus.PLANTOEXAMINE.getCode());
         return review(vo, quarters);
     }
@@ -532,11 +544,11 @@ public class PlanQuarterServiceImpl implements PlanQuarterService {
             //项目属性是拼接的
             if (planYear.getProjectAttr().length() > 1) {
                 StringBuilder builder = new StringBuilder();
-                String[] split = planYear.getProjectAttr().split("");
+                String[] split = planYear.getProjectAttr().split(",");
                 for (String s : split) {
                     for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
                         if (s.equals(entry.getValue())) {
-                            builder.append(entry.getKey() + "");
+                            builder.append(entry.getKey() + ",");
                             break;
                         }
                     }

+ 21 - 8
purchase-system/src/main/java/com/ozs/plan/service/impl/PlanYearsServiceImpl.java

@@ -27,9 +27,11 @@ import com.ozs.common.exception.ServiceException;
 import com.ozs.common.utils.SecurityUtils;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.bean.BeanUtils;
+import com.ozs.plan.doman.PlanQuarter;
 import com.ozs.plan.doman.PlanYears;
 import com.ozs.plan.doman.vo.requestVo.PlanYearsStandardVo;
 import com.ozs.plan.doman.vo.responseVo.PlanYearsResponseVo;
+import com.ozs.plan.mapper.PlanQuarterMapper;
 import com.ozs.plan.mapper.PlanYearsMapper;
 import com.ozs.plan.service.PlanYearsService;
 import com.ozs.pm.doman.PmDemand;
@@ -78,6 +80,8 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
     @Autowired
     PlanYearsMapper planYearsMapper;
     @Autowired
+    PlanQuarterMapper planQuarterMapper;
+    @Autowired
     protected Validator validator;
     @Autowired
     private ISysDictTypeService dictTypeService;
@@ -317,6 +321,7 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         return AjaxResult.success();
     }
 
+    @Transactional
     @Override
     public String importPlanYears(List<PlanYearsStandardVo> planYears, boolean isUpdateSupport, LoginUser loginUser) {
         if (StringUtils.isNull(planYears) || planYears.size() == 0) {
@@ -347,18 +352,21 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
                 if (planYearsMapper.countProjectName(ofYear.getProjectName()) == 0) {
                     //采购单位
                     SysDept info = deptMapper.checkDeptNameOnlyOne(ofYear.getPurchaseDeptName());
-                    if (StringUtils.isNotNull(info)) {
+                    if (!ObjectUtils.isEmpty(info)) {
                         ofYear.setPurchaseDeptId(info.getDeptId());
+                    } else {
+                        ++failureNum;
+                        failureMsg.append("*" + failureNum + "*采购单位“" + ofYear.getPurchaseDeptName() + "”不存在");
                     }
                     ofYear.setProjectType(projectTypesMap.get(ofYear.getProjectType()));
                     ofYear.setProjectStatus(ProjectStatus.PLANWAITCOMMIT.getCode());
                     ofYear.setPurchaseMode(planPurchaseModesMap.get(ofYear.getPurchaseMode()));
                     //项目属性是多选字段
                     StringBuilder builder = new StringBuilder();
-                    if (ofYear.getProjectAttr().contains("")) {
-                        String[] split = ofYear.getProjectAttr().split("");
+                    if (ofYear.getProjectAttr().contains(",")) {
+                        String[] split = ofYear.getProjectAttr().split(",");
                         for (String s : split) {
-                            builder.append(projectAttributes.get(s) + "");
+                            builder.append(projectAttributes.get(s) + ",");
                         }
                     } else {
                         builder.append(projectAttributes.get(ofYear.getProjectAttr()));
@@ -381,11 +389,11 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
                     //    successMsg.append("<br/>" + successNum + "、项目 " + ofYear.getProjectName() + " 更新成功");
                 } else {
                     failureNum++;
-                    failureMsg.append("*" + successNum + "、项目 " + ofYear.getProjectName() + " 已存在");
+                    failureMsg.append(failureNum + "*项目 " + ofYear.getProjectName() + " 已存在!/n");
                 }
             } catch (Exception exc) {
                 failureNum++;
-                String msg = "*" + successNum + "项目 " + ofYear.getProjectName() + " 导入失败";
+                String msg = "*" + successNum + "*项目 " + ofYear.getProjectName() + " 导入失败";
                 failureMsg.append(msg + exc.getMessage());
                 log.error(msg, exc);
             }
@@ -436,6 +444,11 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
     public AjaxResult reviewTo(PlanYearsStandardVo vo) {
         PlanYears ofYears = new PlanYears();
         BeanUtils.copyProperties(vo, ofYears);
+        //年度计划审核通过后同步到季度计划
+        PlanYears byId = planYearsMapper.getById(vo.getPlanYearId());
+        PlanQuarter quarters = new PlanQuarter();
+        BeanUtils.copyProperties(byId, quarters);
+        planQuarterMapper.insertPlanQuarter(quarters);
         ofYears.setPlanYearId(vo.getPlanYearId());
         ofYears.setProjectStatus(ProjectStatus.PLANTOEXAMINE.getCode());
         return review(vo, ofYears);
@@ -817,11 +830,11 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
             //项目属性是拼接的
             if (planYear.getProjectAttr().length() > 1) {
                 StringBuilder builder = new StringBuilder();
-                String[] split = planYear.getProjectAttr().split("");
+                String[] split = planYear.getProjectAttr().split(",");
                 for (String s : split) {
                     for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
                         if (s.equals(entry.getValue())) {
-                            builder.append(entry.getKey() + "");
+                            builder.append(entry.getKey() + ",");
                             break;
                         }
                     }

+ 1 - 1
purchase-system/src/main/java/com/ozs/pm/service/IPmDemandService.java

@@ -65,7 +65,7 @@ public interface IPmDemandService extends IService<PmDemand>
      * @param demandId 采购需求主键
      * @return 采购需求
      */
-    public String viewFlowChart(Long demandId);
+    public Object viewFlowChart(Long demandId);
 
     /**
      * 查看流程图

+ 97 - 1
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -3,6 +3,7 @@ package com.ozs.pm.service.impl;
 import java.util.*;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -24,6 +25,7 @@ import com.ozs.system.service.SysFileRefService;
 import com.ozs.system.service.SysFileService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 
 
@@ -414,17 +416,35 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
             List<PmDemandEquip> pmDemandEquipList = iPmDemandEquipService.selectPmDemandEquipList(pmDemandEquipReq);
             if(pmDemandEquipList != null && pmDemandEquipList.size() > 0){
                 pmDemandEquip = pmDemandEquipList.get(0);
+                pmDemandEquipReqVo.setDemandEquipId(pmDemandEquip.getDemandEquipId());
                 BeanUtils.copyProperties(pmDemandEquipReqVo,pmDemandEquip);
+                pmDemandEquip.setUpdateBy(vo.getUpdateBy());
+                pmDemandEquip.setUpdateTime(new Date());
                 iPmDemandEquipService.updatePmDemandEquip(pmDemandEquip);
             } else {
                 pmDemandEquip = new PmDemandEquip();
                 BeanUtils.copyProperties(pmDemandEquipReqVo,pmDemandEquip);
+                pmDemandEquip.setCreateBy(vo.getUpdateBy());
+                pmDemandEquip.setCreateTime(new Date());
+                pmDemandEquip.setUpdateBy(vo.getUpdateBy());
+                pmDemandEquip.setUpdateTime(new Date());
                 iPmDemandEquipService.insertPmDemandEquip(pmDemandEquip);
             }
 
             List<SysFileRef> sysFileRefs = pmDemandEquipReqVo.getSysFileRefs();
             if (!ObjectUtils.isEmpty(sysFileRefs)) {
                 for (SysFileRef ref : sysFileRefs) {
+                    if(ref.getFileId() == null){
+                        continue;
+                    }
+                    QueryWrapper<SysFileRef> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.lambda().eq(SysFileRef::getFileId,ref.getFileId())
+                            .eq(SysFileRef::getRedId,pmDemandEquip.getDemandEquipId())
+                            .eq(SysFileRef::getType,SysFileRefEnum.PM_DEMAND_EQUIP.getType());
+                    List<SysFileRef> sysFileRefList = sysFileRefService.list(queryWrapper);
+                    if(!CollectionUtils.isEmpty(sysFileRefList)){
+                        sysFileRefService.remove(queryWrapper);
+                    }
                     ref.setRedId(pmDemandEquip.getDemandEquipId());
                     ref.setType(SysFileRefEnum.PM_DEMAND_EQUIP.getType());
                     ref.setCreated(vo.getUpdateBy());
@@ -442,17 +462,35 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
             List<PmDemandMaterials> pmDemandMaterialsList = iPmDemandMaterialsService.selectPmDemandMaterialsList(pmDemandMaterialsReq);
             if(pmDemandMaterialsList != null && pmDemandMaterialsList.size() > 0){
                 pmDemandMaterials = pmDemandMaterialsList.get(0);
+                pmDemandMaterialsReqVo.setDemandMaterialsId(pmDemandMaterials.getDemandMaterialsId());
                 BeanUtils.copyProperties(pmDemandMaterialsReqVo,pmDemandMaterials);
+                pmDemandMaterials.setUpdateBy(vo.getUpdateBy());
+                pmDemandMaterials.setUpdateTime(new Date());
                 iPmDemandMaterialsService.updatePmDemandMaterials(pmDemandMaterials);
             } else {
                 pmDemandMaterials = new PmDemandMaterials();
                 BeanUtils.copyProperties(pmDemandMaterialsReqVo,pmDemandMaterials);
+                pmDemandMaterials.setCreateBy(vo.getUpdateBy());
+                pmDemandMaterials.setCreateTime(new Date());
+                pmDemandMaterials.setUpdateBy(vo.getUpdateBy());
+                pmDemandMaterials.setUpdateTime(new Date());
                 iPmDemandMaterialsService.insertPmDemandMaterials(pmDemandMaterials);
             }
 
             List<SysFileRef> sysFileRefs = pmDemandMaterialsReqVo.getSysFileRefs();
             if (!ObjectUtils.isEmpty(sysFileRefs)) {
                 for (SysFileRef ref : sysFileRefs) {
+                    if(ref.getFileId() == null){
+                        continue;
+                    }
+                    QueryWrapper<SysFileRef> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.lambda().eq(SysFileRef::getFileId,ref.getFileId())
+                            .eq(SysFileRef::getRedId,pmDemandMaterials.getDemandMaterialsId())
+                            .eq(SysFileRef::getType,SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
+                    List<SysFileRef> sysFileRefList = sysFileRefService.list(queryWrapper);
+                    if(!CollectionUtils.isEmpty(sysFileRefList)){
+                        sysFileRefService.remove(queryWrapper);
+                    }
                     ref.setRedId(pmDemandMaterials.getDemandMaterialsId());
                     ref.setType(SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
                     ref.setCreated(vo.getUpdateBy());
@@ -470,16 +508,34 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
             List<PmDemandServe> pmDemandServeList = iPmDemandServeService.selectPmDemandServeList(pmDemandServeReq);
             if(pmDemandServeList != null && pmDemandServeList.size() > 0){
                 pmDemandServe = pmDemandServeList.get(0);
+                pmDemandServeReqVo.setDemandServeId(pmDemandServe.getDemandServeId());
                 BeanUtils.copyProperties(pmDemandServeReqVo,pmDemandServe);
+                pmDemandServe.setUpdateBy(vo.getUpdateBy());
+                pmDemandServe.setUpdateTime(new Date());
                 iPmDemandServeService.updatePmDemandServe(pmDemandServe);
             } else {
                 pmDemandServe = new PmDemandServe();
                 BeanUtils.copyProperties(pmDemandServeReqVo,pmDemandServe);
+                pmDemandServe.setCreateBy(vo.getUpdateBy());
+                pmDemandServe.setCreateTime(new Date());
+                pmDemandServe.setUpdateBy(vo.getUpdateBy());
+                pmDemandServe.setUpdateTime(new Date());
                 iPmDemandServeService.insertPmDemandServe(pmDemandServe);
             }
             List<SysFileRef> sysFileRefs = pmDemandServeReqVo.getSysFileRefs();
             if (!ObjectUtils.isEmpty(sysFileRefs)) {
                 for (SysFileRef ref : sysFileRefs) {
+                    if(ref.getFileId() == null){
+                        continue;
+                    }
+                    QueryWrapper<SysFileRef> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.lambda().eq(SysFileRef::getFileId,ref.getFileId())
+                            .eq(SysFileRef::getRedId,pmDemandServe.getDemandServeId())
+                            .eq(SysFileRef::getType,SysFileRefEnum.PM_DEMAND_SERVE.getType());
+                    List<SysFileRef> sysFileRefList = sysFileRefService.list(queryWrapper);
+                    if(!CollectionUtils.isEmpty(sysFileRefList)){
+                        sysFileRefService.remove(queryWrapper);
+                    }
                     ref.setRedId(pmDemandServe.getDemandServeId());
                     ref.setType(SysFileRefEnum.PM_DEMAND_SERVE.getType());
                     ref.setCreated(vo.getUpdateBy());
@@ -497,16 +553,34 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
             List<PmDemandEngineering> pmDemandEngineeringList = iPmDemandEngineeringService.selectPmDemandEngineeringList(pmDemandEngineeringReq);
             if(pmDemandEngineeringList != null && pmDemandEngineeringList.size() > 0){
                 pmDemandEngineering = pmDemandEngineeringList.get(0);
+                pmDemandEngineeringReqVo.setDemandEngineeringId(pmDemandEngineering.getDemandEngineeringId());
                 BeanUtils.copyProperties(pmDemandEngineeringReqVo,pmDemandEngineering);
+                pmDemandEngineering.setUpdateBy(vo.getUpdateBy());
+                pmDemandEngineering.setUpdateTime(new Date());
                 iPmDemandEngineeringService.updatePmDemandEngineering(pmDemandEngineering);
             } else {
                 pmDemandEngineering = new PmDemandEngineering();
                 BeanUtils.copyProperties(pmDemandEngineeringReqVo,pmDemandEngineering);
+                pmDemandEngineering.setCreateBy(vo.getUpdateBy());
+                pmDemandEngineering.setCreateTime(new Date());
+                pmDemandEngineering.setUpdateBy(vo.getUpdateBy());
+                pmDemandEngineering.setUpdateTime(new Date());
                 iPmDemandEngineeringService.insertPmDemandEngineering(pmDemandEngineering);
             }
             List<SysFileRef> sysFileRefs = pmDemandEngineeringReqVo.getSysFileRefs();
             if (!ObjectUtils.isEmpty(sysFileRefs)) {
                 for (SysFileRef ref : sysFileRefs) {
+                    if(ref.getFileId() == null){
+                        continue;
+                    }
+                    QueryWrapper<SysFileRef> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.lambda().eq(SysFileRef::getFileId,ref.getFileId())
+                            .eq(SysFileRef::getRedId,pmDemandEngineering.getDemandEngineeringId())
+                            .eq(SysFileRef::getType,SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
+                    List<SysFileRef> sysFileRefList = sysFileRefService.list(queryWrapper);
+                    if(!CollectionUtils.isEmpty(sysFileRefList)){
+                        sysFileRefService.remove(queryWrapper);
+                    }
                     ref.setRedId(pmDemandEngineering.getDemandEngineeringId());
                     ref.setType(SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
                     ref.setCreated(vo.getUpdateBy());
@@ -549,7 +623,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
      * @return 采购需求
      */
     @Override
-    public String viewFlowChart(Long demandId) {
+    public Object viewFlowChart(Long demandId) {
         PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
         String projectStatus = String.valueOf(pmDemand.getProjectStatus());
         String moduleName = null;
@@ -677,6 +751,17 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         List<SysFileRef> sysFileRefs = pmDemandReqVo.getSysFileRefs();
         if (!ObjectUtils.isEmpty(sysFileRefs)) {
             for (SysFileRef ref : sysFileRefs) {
+                if(ref.getFileId() == null){
+                    continue;
+                }
+                QueryWrapper<SysFileRef> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(SysFileRef::getFileId,ref.getFileId())
+                        .eq(SysFileRef::getRedId,pmDemandReqVo.getDemandId())
+                        .eq(SysFileRef::getType,SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
+                List<SysFileRef> sysFileRefList = sysFileRefService.list(queryWrapper);
+                if(!CollectionUtils.isEmpty(sysFileRefList)){
+                    sysFileRefService.remove(queryWrapper);
+                }
                 ref.setRedId(pmDemandReqVo.getDemandId());
                 ref.setType(SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
                 ref.setCreated(pmDemandReqVo.getUpdateBy());
@@ -724,6 +809,17 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         List<SysFileRef> sysFileRefs = pmDemandReqVo.getSysFileRefs();
         if (!ObjectUtils.isEmpty(sysFileRefs)) {
             for (SysFileRef ref : sysFileRefs) {
+                if(ref.getFileId() == null){
+                    continue;
+                }
+                QueryWrapper<SysFileRef> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(SysFileRef::getFileId,ref.getFileId())
+                        .eq(SysFileRef::getRedId,pmDemandReqVo.getDemandId())
+                        .eq(SysFileRef::getType,SysFileRefEnum.PM_TAST_RELEASE.getType());
+                List<SysFileRef> sysFileRefList = sysFileRefService.list(queryWrapper);
+                if(!CollectionUtils.isEmpty(sysFileRefList)){
+                    sysFileRefService.remove(queryWrapper);
+                }
                 ref.setRedId(pmDemandReqVo.getDemandId());
                 ref.setType(SysFileRefEnum.PM_TAST_RELEASE.getType());
                 ref.setCreated(pmDemandReqVo.getUpdateBy());

+ 2 - 2
purchase-system/src/main/java/com/ozs/system/domain/SysFileRef.java

@@ -37,8 +37,8 @@ public class SysFileRef extends BaseDto
     @Excel(name = "附件主键")
     private Long fileId;
 
-    /** 来源类型:年度1;季度2;临时3,项目4 */
-    @Excel(name = "来源类型:年度1;季度2;临时3,项目4")
+    /** 来源类型:年度1;季度2;临时3,采购需求附件4 ... */
+    @Excel(name = "来源类型:年度1;季度2;临时3,采购需求附件4, ...")
     private Integer type;
 
 

+ 2 - 2
purchase-system/src/main/resources/mapper/plan/PlanQuarterMapper.xml

@@ -76,7 +76,7 @@
 			and plan_type=0
 			and del_flay=0
 		</where>
-		order by create_time desc
+		order by plan_demand_sub_time desc
 	</select>
 
 	<select id="selectPlanQuarterExamineList" parameterType="com.ozs.plan.doman.PlanQuarter"
@@ -107,7 +107,7 @@
 			and plan_type=0
 			and del_flay=0
 		</where>
-		order by create_time desc
+		order by plan_demand_sub_time desc
 	</select>
 
 	<select id="countProjectName" resultType="java.lang.Integer" parameterType="java.lang.String">