From e9719f559ccaa5ab0689df9331f4d016c0b8c9e6 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 24 二月 2025 20:44:47 +0800 Subject: [PATCH] 项目直接使用项目阶段 --- business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java | 280 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 180 insertions(+), 100 deletions(-) diff --git a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java index aa3c90f..ac53878 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.common.base.Result; import com.ycl.common.config.SysConfig; @@ -108,8 +109,6 @@ //娣诲姞鍩烘湰淇℃伅 ProjectInfo entity = ProjectInfoForm.getEntityByForm(form, null); Long userId = SecurityUtils.getUserId(); -// Long deptId = SecurityUtils.getDeptId(); -// entity.setProjectOwnerUnit(deptId); entity.setCreateBy(userId); entity.setUpdateBy(userId); //濡傛灉鏄偍澶囬」鐩�(鏈紑宸ラ」鐩�)涓嶉渶瑕佸鏍� @@ -121,18 +120,28 @@ } baseMapper.insert(entity); addPlan(entity.getId()); //娣诲姞璁″垝琛� - //娣诲姞鏂囦欢 - List<File> fileList = form.getFileList(); - fileList.forEach(item -> { - item.setBusId(entity.getId()); - item.setType(FileTypeEnum.PROJECT_INFO); - }); - fileService.saveBatch(fileList); - //娣诲姞椤圭洰涓爣鍗曚綅 - saveUnit(entity.getId(), form.getWinUnitList()); + List<ProjectInfoWinUnit> projectInfoWinUnits = new ArrayList<>(); + for (ProjectInfoWinUnitForm winUnitForm : form.getWinUnitList()) { + ProjectInfoWinUnit projectInfoWinUnit = ProjectInfoWinUnitForm.getEntityByForm(winUnitForm, null); + projectInfoWinUnit.setId(null); + projectInfoWinUnit.setProjectInfoId(entity.getId()); + projectInfoWinUnits.add(projectInfoWinUnit); + } + if (!CollectionUtils.isEmpty(projectInfoWinUnits)) { + projectInfoWinUnitService.saveBatch(projectInfoWinUnits); + } //娣诲姞骞村害鎶曡祫璁″垝 - saveYearPlan(entity.getId(), form.getYearPlanList()); + List<ProjectInfoYearPlan> projectInfoYearPlans = new ArrayList<>(); + for (ProjectInfoYearPlanForm yearPlanForm : form.getYearPlanList()) { + ProjectInfoYearPlan yearPlan = ProjectInfoYearPlanForm.getEntityByForm(yearPlanForm, null); + yearPlan.setId(null); + yearPlan.setProjectInfoId(entity.getId()); + projectInfoYearPlans.add(yearPlan); + } + if (!CollectionUtils.isEmpty(projectInfoYearPlans)) { + projectInfoYearPlanService.saveBatch(projectInfoYearPlans); + } return Result.ok("娣诲姞鎴愬姛").data(entity.getId()); } @@ -202,35 +211,39 @@ } //鏇存柊椤圭洰淇℃伅 baseMapper.updateById(entity); - List<File> fileList = form.getFileList(); - fileList.forEach(item -> { - item.setId(null); - item.setBusId(entity.getId()); - item.setType(FileTypeEnum.PROJECT_INFO); - }); - //鍒犻櫎鍘熸湁鏂囦欢 - QueryWrapper<File> fileQueryWrapper = new QueryWrapper<>(); - fileQueryWrapper.eq("type", FileTypeEnum.PROJECT_INFO.getType()); - fileQueryWrapper.eq("bus_id", entity.getId()); - fileMapper.delete(fileQueryWrapper); - //鏇挎崲鎴愮幇鏈� - fileService.saveBatch(fileList); - //淇敼椤圭洰涓爣鍗曚綅 //鍒犻櫎鍘熸暟鎹� - QueryWrapper<ProjectInfoWinUnit> unitWrapper = new QueryWrapper<>(); - unitWrapper.eq("project_info_id", form.getId()); - projectInfoWinUnitService.remove(unitWrapper); + new LambdaUpdateChainWrapper<>(projectInfoWinUnitService.getBaseMapper()) + .eq(ProjectInfoWinUnit::getProjectInfoId, entity.getId()) + .remove(); //娣诲姞椤圭洰涓爣鍗曚綅 - saveUnit(entity.getId(), form.getWinUnitList()); + List<ProjectInfoWinUnit> projectInfoWinUnits = new ArrayList<>(); + for (ProjectInfoWinUnitForm winUnitForm : form.getWinUnitList()) { + ProjectInfoWinUnit projectInfoWinUnit = ProjectInfoWinUnitForm.getEntityByForm(winUnitForm, null); + projectInfoWinUnit.setId(null); + projectInfoWinUnit.setProjectInfoId(entity.getId()); + projectInfoWinUnits.add(projectInfoWinUnit); + } + if (!CollectionUtils.isEmpty(projectInfoWinUnits)) { + projectInfoWinUnitService.saveBatch(projectInfoWinUnits); + } //淇敼骞村害鎶曡祫璁″垝 //鍒犻櫎鍘熸暟鎹� - QueryWrapper<ProjectInfoYearPlan> yearPlanWrapper = new QueryWrapper<>(); - unitWrapper.eq("project_info_id", form.getId()); - projectInfoYearPlanService.remove(yearPlanWrapper); + new LambdaUpdateChainWrapper<>(projectInfoYearPlanService.getBaseMapper()) + .eq(ProjectInfoYearPlan::getProjectInfoId, entity.getId()) + .remove(); //娣诲姞骞村害鎶曡祫璁″垝 - saveYearPlan(entity.getId(), form.getYearPlanList()); + List<ProjectInfoYearPlan> projectInfoYearPlans = new ArrayList<>(); + for (ProjectInfoYearPlanForm yearPlanForm : form.getYearPlanList()) { + ProjectInfoYearPlan yearPlan = ProjectInfoYearPlanForm.getEntityByForm(yearPlanForm, null); + yearPlan.setId(null); + yearPlan.setProjectInfoId(entity.getId()); + projectInfoYearPlans.add(yearPlan); + } + if (!CollectionUtils.isEmpty(projectInfoYearPlans)) { + projectInfoYearPlanService.saveBatch(projectInfoYearPlans); + } return Result.ok("淇敼鎴愬姛"); } @@ -311,25 +324,10 @@ if (query.getProjectEndTime() != null) { query.setProjectEndTime(DateUtils.getDayEnd(query.getProjectEndTime())); } - String projectCategory = query.getProjectCategory(); - //瀹炴柦闃舵鏈変袱涓�兼斁鍦╯ql澶勭悊 - if (ProjectCategoryEnum.RESERVE.getType().equals(projectCategory)) { - query.setProjectStatus(ProjectCategoryEnum.RESERVE.getStatus()); - query.setReserveOrPrevious(ProjectCategoryEnum.RESERVE.getCode()); - } else if (ProjectCategoryEnum.PREVIOUS.getType().equals(projectCategory)) { - query.setProjectStatus(ProjectCategoryEnum.PREVIOUS.getStatus()); - query.setReserveOrPrevious(ProjectCategoryEnum.PREVIOUS.getCode()); - } else if (ProjectCategoryEnum.FINISH.getType().equals(projectCategory)) { - query.setProjectStatus(ProjectCategoryEnum.FINISH.getStatus()); - } else if (ProjectCategoryEnum.EXCEPTION.getType().equals(projectCategory)) { - //TODO - //鍏堟煡鍑哄紓甯告祦绋嬫垨鑰呭紓甯歌繘搴︽垨鑰呭紓甯歌鍒掔殑projectId鍜屽紓甯哥绫� - //閫氳繃projectId鏌ュ嚭椤圭洰鏁版嵁 - //琛ュ厖鐩稿簲鐨勫紓甯告暟鎹紙寮傚父绉嶇被銆佸紓甯告祦绋嬭妭鐐圭瓑锛� - List<ProjectVO> list = new ArrayList<>(); - return Result.ok().data(list).total(0); + // 寮傚父椤圭洰鏆傛椂杩斿洖绌� + if (ProjectCategoryEnum.EXCEPTION.getType().equals(query.getProjectPhase())) { + return Result.ok().data(new ArrayList<>()).total(0); } - Long userId = SecurityUtils.getUserId(); String ancestors = sysDeptMapper.selectAncestors(userId); String[] ancestorArr = ancestors.split(","); @@ -339,10 +337,12 @@ query.setProjectOwnerUnit(SecurityUtils.getDeptId()); //涓氫富 query.setRole(0); - } else if (!CollectionUtils.isEmpty(ancestorList) && ancestorList.contains("102")) { + } else if ((!CollectionUtils.isEmpty(ancestorList) && ancestorList.contains("102"))) { query.setCompetentDepartment(SecurityUtils.getDeptId()); //瀹℃壒 瀵瑰簲涓荤閮ㄩ棬 query.setRole(1); + } else if (SecurityUtils.isAdmin(userId)) { + query.setRole(3); } IPage<ProjectInfoVO> page = PageUtil.getPage(query, ProjectInfoVO.class); @@ -399,9 +399,6 @@ QueryWrapper<File> fileQueryWrapper = new QueryWrapper<>(); fileQueryWrapper.eq("type", FileTypeEnum.PROJECT_INFO.getType()); fileQueryWrapper.eq("bus_id", vo.getId()); - - List<File> files = fileMapper.selectList(fileQueryWrapper); - vo.setFileList(files); //涓爣鍗曚綅 List<ProjectInfoWinUnitVO> unitVOS = new ArrayList<>(); @@ -815,53 +812,136 @@ if (ObjectUtil.isNotNull(form.getProjectInfoForm())) { if (ObjectUtil.isNull(form.getProjectInfoForm().getId())) { //鏂板 - projectId = (Long) ((ProjectInfoServiceImpl) AopContext.currentProxy()).add(form.getProjectInfoForm()).get("data"); + ProjectInfo entity = ProjectInfoForm.getEntityByForm(form.getProjectInfoForm(), null); + Long userId = SecurityUtils.getUserId(); + entity.setCreateBy(userId); + entity.setUpdateBy(userId); + //濡傛灉鏄偍澶囬」鐩�(鏈紑宸ラ」鐩�)涓嶉渶瑕佸鏍� + if (ProjectConstant.COMMIT.equals(entity.getUsedStatus()) && ProjectStatusEnum.PENDDING.getType().equals(entity.getProjectStatus())) { + entity.setUsedStatus(ProjectConstant.PASS); + } + // 绠$悊鍛樹慨鏀圭殑鐩存帴閫氳繃 + if (SecurityUtils.isAdmin(SecurityUtils.getUserId())) { + entity.setUsedStatus(ProjectConstant.PASS); + } + if(!checkProjectNameAndIdIsUnique(entity,null)){ + throw new RuntimeException("椤圭洰閲嶅锛岄」鐩悕绉般�侀」鐩爜宸插瓨鍦�"); + } + baseMapper.insert(entity); + addPlan(entity.getId()); //娣诲姞璁″垝琛� + //娣诲姞椤圭洰涓爣鍗曚綅 + List<ProjectInfoWinUnit> projectInfoWinUnits = new ArrayList<>(); + for (ProjectInfoWinUnitForm winUnitForm : form.getProjectInfoForm().getWinUnitList()) { + ProjectInfoWinUnit projectInfoWinUnit = ProjectInfoWinUnitForm.getEntityByForm(winUnitForm, null); + projectInfoWinUnit.setId(null); + projectInfoWinUnit.setProjectInfoId(entity.getId()); + projectInfoWinUnits.add(projectInfoWinUnit); + } + if (!CollectionUtils.isEmpty(projectInfoWinUnits)) { + projectInfoWinUnitService.saveBatch(projectInfoWinUnits); + } + //娣诲姞骞村害鎶曡祫璁″垝 + List<ProjectInfoYearPlan> projectInfoYearPlans = new ArrayList<>(); + for (ProjectInfoYearPlanForm yearPlanForm : form.getProjectInfoForm().getYearPlanList()) { + ProjectInfoYearPlan yearPlan = ProjectInfoYearPlanForm.getEntityByForm(yearPlanForm, null); + yearPlan.setId(null); + yearPlan.setProjectInfoId(entity.getId()); + projectInfoYearPlans.add(yearPlan); + } + if (!CollectionUtils.isEmpty(projectInfoYearPlans)) { + projectInfoYearPlanService.saveBatch(projectInfoYearPlans); + } + // 鏂板 + if (Objects.nonNull(form.getProjectInvestmentInfoForm())) { + form.getProjectInvestmentInfoForm().setProjectId(projectId); + projectInvestmentInfoServiceImpl.add(form.getProjectInvestmentInfoForm()); + } + + if (Objects.nonNull(form.getProjectInvestmentFundingForm())) { + form.getProjectInvestmentFundingForm().setProjectId(projectId); + projectInvestmentFundingServiceImpl.add(form.getProjectInvestmentFundingForm()); + } + + if (Objects.nonNull(form.getProjectInvestmentPolicyComplianceForm())) { + form.getProjectInvestmentPolicyComplianceForm().setProjectId(projectId); + projectInvestmentPolicyComplianceServiceImpl.add(form.getProjectInvestmentPolicyComplianceForm()); + } + + if (Objects.nonNull(form.getProjectUnitRegistrationInfoForm())) { + form.getProjectUnitRegistrationInfoForm().setProjectId(projectId); + projectUnitRegistrationInfoServiceImpl.add(form.getProjectUnitRegistrationInfoForm()); + } } else { //鏇存柊 - ((ProjectInfoServiceImpl) AopContext.currentProxy()).update(form.getProjectInfoForm()); - } - } - if (ObjectUtil.isNotNull(form.getProjectInvestmentInfoForm())) { - if (ObjectUtil.isNull(form.getProjectInvestmentInfoForm().getId())) { - form.getProjectInvestmentInfoForm().setProjectId(projectId); - projectInvestmentInfoServiceImpl.add(form.getProjectInvestmentInfoForm()); - } else { - projectInvestmentInfoServiceImpl.update(form.getProjectInvestmentInfoForm()); - } - } - if (ObjectUtil.isNotNull(form.getProjectInvestmentFundingForm())) { - if (ObjectUtil.isNull(form.getProjectInvestmentFundingForm().getId())) { - form.getProjectInvestmentFundingForm().setProjectId(projectId); - projectInvestmentFundingServiceImpl.add(form.getProjectInvestmentFundingForm()); - } else { - projectInvestmentFundingServiceImpl.update(form.getProjectInvestmentFundingForm()); - } - } - if (ObjectUtil.isNotNull(form.getProjectInvestmentPolicyComplianceForm())) { - if (ObjectUtil.isNull(form.getProjectInvestmentPolicyComplianceForm().getId())) { - form.getProjectInvestmentPolicyComplianceForm().setProjectId(projectId); - projectInvestmentPolicyComplianceServiceImpl.add(form.getProjectInvestmentPolicyComplianceForm()); - } else { - projectInvestmentPolicyComplianceServiceImpl.update(form.getProjectInvestmentPolicyComplianceForm()); - } - } - if (ObjectUtil.isNotNull(form.getProjectUnitRegistrationInfoForm())) { - if (ObjectUtil.isNull(form.getProjectUnitRegistrationInfoForm().getId())) { - form.getProjectUnitRegistrationInfoForm().setProjectId(projectId); - projectUnitRegistrationInfoServiceImpl.add(form.getProjectUnitRegistrationInfoForm()); - } else { - projectUnitRegistrationInfoServiceImpl.update(form.getProjectUnitRegistrationInfoForm()); - } - } - if (ObjectUtil.isNotNull(form.getDocumentInfoForm())) { - if (ObjectUtil.isNull(form.getDocumentInfoForm().getProjectId())) { - return Result.error("璇峰厛淇濆瓨鎶曡祫绠$悊鍩烘湰淇℃伅"); - } else { - addDoc(form.getDocumentInfoForm()); - } - } + ProjectInfo entity = baseMapper.selectById(form.getProjectInfoForm().getId()); - return Result.ok("鎻愪氦鎴愬姛"); + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + ProjectInfoForm.getEntityByForm(form.getProjectInfoForm(), entity); + Long userId = SecurityUtils.getUserId(); + entity.setUpdateBy(userId); + //濡傛灉鏄偍澶囬」鐩�(鏈紑宸ラ」鐩�)涓嶉渶瑕佸鏍� + if (ProjectConstant.COMMIT.equals(entity.getUsedStatus()) && ProjectStatusEnum.PENDDING.getType().equals(entity.getProjectStatus())) { + entity.setUsedStatus(ProjectConstant.PASS); + } + // 绠$悊鍛樹慨鏀圭殑鐩存帴閫氳繃 + if (SecurityUtils.isAdmin(SecurityUtils.getUserId())) { + entity.setUsedStatus(ProjectConstant.PASS); + } + if(!checkProjectNameAndIdIsUnique(entity, entity.getId())){ + throw new RuntimeException("椤圭洰閲嶅锛岄」鐩悕绉般�侀」鐩爜宸插瓨鍦�"); + } + //鏇存柊椤圭洰淇℃伅 + baseMapper.updateById(entity); + //淇敼椤圭洰涓爣鍗曚綅 + //鍒犻櫎鍘熸暟鎹� + new LambdaUpdateChainWrapper<>(projectInfoWinUnitService.getBaseMapper()) + .eq(ProjectInfoWinUnit::getProjectInfoId, entity.getId()) + .remove(); + //娣诲姞椤圭洰涓爣鍗曚綅 + List<ProjectInfoWinUnit> projectInfoWinUnits = new ArrayList<>(); + for (ProjectInfoWinUnitForm winUnitForm : form.getProjectInfoForm().getWinUnitList()) { + ProjectInfoWinUnit projectInfoWinUnit = ProjectInfoWinUnitForm.getEntityByForm(winUnitForm, null); + projectInfoWinUnit.setId(null); + projectInfoWinUnit.setProjectInfoId(entity.getId()); + projectInfoWinUnits.add(projectInfoWinUnit); + } + if (!CollectionUtils.isEmpty(projectInfoWinUnits)) { + projectInfoWinUnitService.saveBatch(projectInfoWinUnits); + } + + //淇敼骞村害鎶曡祫璁″垝 + //鍒犻櫎鍘熸暟鎹� + new LambdaUpdateChainWrapper<>(projectInfoYearPlanService.getBaseMapper()) + .eq(ProjectInfoYearPlan::getProjectInfoId, entity.getId()) + .remove(); + //娣诲姞骞村害鎶曡祫璁″垝 + List<ProjectInfoYearPlan> projectInfoYearPlans = new ArrayList<>(); + for (ProjectInfoYearPlanForm yearPlanForm : form.getProjectInfoForm().getYearPlanList()) { + ProjectInfoYearPlan yearPlan = ProjectInfoYearPlanForm.getEntityByForm(yearPlanForm, null); + yearPlan.setId(null); + yearPlan.setProjectInfoId(entity.getId()); + projectInfoYearPlans.add(yearPlan); + } + if (!CollectionUtils.isEmpty(projectInfoYearPlans)) { + projectInfoYearPlanService.saveBatch(projectInfoYearPlans); + } + // 鏇存柊 + if (Objects.nonNull(form.getProjectInvestmentInfoForm())) { + projectInvestmentInfoServiceImpl.update(form.getProjectInvestmentInfoForm()); + } + if (Objects.nonNull(form.getProjectInvestmentFundingForm())) { + projectInvestmentFundingServiceImpl.update(); + } + if (Objects.nonNull(form.getProjectInvestmentPolicyComplianceForm())) { + projectInvestmentPolicyComplianceServiceImpl.update(form.getProjectInvestmentPolicyComplianceForm()); + } + if (Objects.nonNull(form.getProjectUnitRegistrationInfoForm())) { + projectUnitRegistrationInfoServiceImpl.update(form.getProjectUnitRegistrationInfoForm()); + } + } + } + return Result.ok("淇濆瓨鎴愬姛"); } @Override -- Gitblit v1.8.0