From 79a95c8d79b62833770233c317821beee6a00fc0 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Sat, 14 Sep 2024 10:40:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=B9=E9=87=8F=E5=A4=8D=E5=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/prod/2024-3-18-变更.sql | 5 +- .../common/service/ActFlowCommonService.java | 4 +- .../service/ProcessEsRecheckService.java | 7 ++ .../impl/ProcessEsRecheckServiceImpl.java | 67 +++++++++++++++++++ .../impl/DocumentSplitServiceImpl.java | 14 ++-- ...terpriseStandardRecheckPlanController.java | 16 +++++ .../laws/enterprise/job/ESRecheckPlanJob.java | 63 +---------------- .../enterprise/job/ESTrialEndRecheckJob.java | 11 ++- .../EnterpriseStandardRecheckPlanService.java | 6 ++ ...erpriseStandardRecheckPlanServiceImpl.java | 34 +++++++++- .../main/resources/i18n/messages.properties | 2 +- .../resources/i18n/messages_en.properties | 2 +- .../resources/i18n/messages_zh.properties | 2 +- 13 files changed, 150 insertions(+), 83 deletions(-) diff --git a/db/prod/2024-3-18-变更.sql b/db/prod/2024-3-18-变更.sql index ad641c05..3727690d 100644 --- a/db/prod/2024-3-18-变更.sql +++ b/db/prod/2024-3-18-变更.sql @@ -238,4 +238,7 @@ INSERT INTO `laws_tag` (`id`, `table_name`, `db_field_name`, `db_field_en_name`, ALTER TABLE `laws_enterprise_standard` ADD COLUMN `standard_source` varchar(100) NULL DEFAULT '1' COMMENT '标准来源' AFTER `standard_split_status`; update laws_enterprise_standard set standard_source = '1'; -update laws_enterprise_standard set standard_source = '2' where name_code = 'WQ'; \ No newline at end of file +update laws_enterprise_standard set standard_source = '2' where name_code = 'WQ'; + +-- 2024-09-14 企标复审库批量添加复审 +INSERT INTO sys_permission (id, parent_id, name, perms, perms_type, sort_no, menu_type, is_leaf, is_route, keep_alive, create_by, del_flag, hidden, create_time, status, always_show, internal_or_external) VALUES ('8989f8bc91ee5bac0191ee5bace30000', '1701430695719411713', '批量添加复审', 'enterpriseStandardLibrary:recheckPlan:batchStart', '1', 3.0, 2, true, true, false, 'admin', 0, false, '2024-09-14 10:27:51', '1', false, false) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java index 72dc6c50..40839e35 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java @@ -476,8 +476,8 @@ public class ActFlowCommonService { String standardState = es.getStandardState(); if (StandardStateEnum.ABOLISH.getStateValue().equals(standardState) || StandardStateEnum.ARCHIVE.getStateValue().equals(standardState)) { - log.error("企标编号为{}的企标已经废止或者封存,无法进行复审或更改流程", es.getStandardNumber()); - throw new JeroBootException(ResultCommon.CAN_NOT_EDIT_ABOLISH_OR_ARCHIVE_ES); + log.error("企标编号为{}的企标已经废止或封存,无法进行复审或更改流程", es.getStandardNumber()); + throw new JeroBootException(ResultCommon.CAN_NOT_EDIT_ABOLISH_OR_ARCHIVE_ES, es.getStandardNumber()); } } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java index 01dc5e12..9fd5dd90 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java @@ -4,6 +4,8 @@ import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; /** * @author ThinkBook @@ -22,4 +24,9 @@ public interface ProcessEsRecheckService extends IService { void approval(ESRecheckDataVO recheckData, boolean pass); + void autoStartProcess(LawsEnterpriseStandard es, EnterpriseStandardRecheckPlan recheckPlan); + + ESRecheckDataVO getEsRecheckDataVO(LawsEnterpriseStandard es, String standardizationUser + , String standardEngineer, EnterpriseStandardRecheckPlan recheckPlan); + } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java index 26be70de..24f05326 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java @@ -23,6 +23,9 @@ import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; +import com.jero.modules.laws.enterprise.util.BeanCopyUtils; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; +import com.jero.modules.laws.system.service.ILawsContactManageService; import com.jero.modules.sys.utils.UserUtils; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RuntimeService; @@ -74,6 +77,12 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl map = new HashMap<>(); + map.put("standardizationUser", standardizationUser); + map.put("standardEngineer", standardEngineer); + esRecheckDataVO.setCommon(commonVO); + esRecheckDataVO.setData(recheck); + esRecheckDataVO.setFlowUser(map); + return esRecheckDataVO; + } + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index 316411c2..e4ca7456 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -1451,13 +1451,13 @@ public class DocumentSplitServiceImpl extends ServiceImpl> getListByStandardId(@RequestParam("standardId") @ApiParam("企标id") String id) { return Result.OK(recheckPlanService.getListByStandardId(id)); } + + /** + * 批量发起复审流程 + * + * @return + */ + @RequiresPermissions("enterpriseStandardLibrary:recheckPlan:batchStart") + @AutoLog(value = "企标复审计划-批量发起复审流程") + @ApiOperationSupport(order = 3) + @ApiOperation(value="企标复审计划-批量发起复审流程", notes="企标复审计划-批量发起复审流程") + @PostMapping(value = "/batchStartRecheckPlan") + public Result batchStartRecheckPlan(@RequestBody Map map) { + recheckPlanService.batchStartRecheckPlan(map.get("recheckPlanIds")); + return Result.OK(); + } } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java index cece06af..6dbb0d32 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java @@ -47,9 +47,6 @@ public class ESRecheckPlanJob implements Job { @Resource private ILawsEnterpriseStandardService esService; - @Resource - private ILawsContactManageService contactManageService; - @Resource private ProcessEsRecheckService recheckService; @@ -124,7 +121,7 @@ public class ESRecheckPlanJob implements Job { recheckPlan.setRecheckDate(recheckDate); esRecheckPlanService.save(recheckPlan); // 自动发起流程 - autoStartProcess(es, recheckPlan); + recheckService.autoStartProcess(es, recheckPlan); log.info("企标编号为{}的企标已经达到35个月,已经自动发起复审流程", es.getStandardNumber()); } else { // 如果已经有复审计划,则需要判断是否到达复审日期前一个月,如果到达则需要发起流程,已经发起过流程的不能重复发送 @@ -143,7 +140,7 @@ public class ESRecheckPlanJob implements Job { continue; } if (now.isAfter(minusMonths) && now.isBefore(recheckLocalDate)) { - autoStartProcess(es, recheckPlan); + recheckService.autoStartProcess(es, recheckPlan); log.info("企标编号为{}的企标已经达到复审日期前一个月,已经自动发起复审流程", es.getStandardNumber()); } } @@ -151,60 +148,4 @@ public class ESRecheckPlanJob implements Job { } log.info("企标复审计划定时任务执行完成"); } - - /** - * 自动发起流程 - * @param es 企标 - * @param recheckPlan 复审计划 - */ - private void autoStartProcess(LawsEnterpriseStandard es, EnterpriseStandardRecheckPlan recheckPlan) { - // 找到各自企标的联络人,如果找不到联络人则发给标准化工程师 - String deptId = es.getMainDraftingUnit(); - String standardNo = es.getStandardNumber(); - if (StrUtil.isBlank(deptId)) { - log.error("企标复审流程发起失败,企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo); - return; - } - String standardizationUser = contactManageService.findContactUserByDept(deptId); - String standardEngineer = null; - if (StrUtil.isBlank(standardizationUser)) { - standardEngineer = contactManageService.findStandardEngineerByDept(deptId); - } - if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) { - log.error("企标复审流程发起失败,无法找到企标编号为{}的联络人和标准化工程师", standardNo); - return; - } - // 构建发起流程数据 - ESRecheckDataVO esRecheckDataVO = getEsRecheckDataVO(es, standardizationUser, standardEngineer, recheckPlan); - // 发起流程 - recheckService.autoStartProcess(esRecheckDataVO); - // 更新标识 - recheckPlan.setInProcessFlag(YesOrNoEnum.YES.getValue()); - recheckPlan.setRecheckResult(null); - esRecheckPlanService.updateById(recheckPlan); - } - - public static ESRecheckDataVO getEsRecheckDataVO(LawsEnterpriseStandard es, String standardizationUser - , String standardEngineer, EnterpriseStandardRecheckPlan recheckPlan) { - ESRecheckDataVO esRecheckDataVO = new ESRecheckDataVO(); - ProcessEsRecheck recheck = BeanCopyUtils.copyBean(es, ProcessEsRecheck.class); - recheck.setId(null); - recheck.setStandardId(es.getId()); - recheck.setRecheckPlanId(recheckPlan.getId()); - recheck.setRecheckDate(recheckPlan.getRecheckDate()); - if (standardizationUser == null) { - recheck.setShowFirstNode(YesOrNoEnum.YES.getInteger()); - } else { - recheck.setShowFirstNode(YesOrNoEnum.NO.getInteger()); - } - CommonVO commonVO = new CommonVO(); - commonVO.setPrcName(es.getStandardNumber() + "-" + es.getStandardName() + "-复审"); - Map map = new HashMap<>(); - map.put("standardizationUser", standardizationUser); - map.put("standardEngineer", standardEngineer); - esRecheckDataVO.setCommon(commonVO); - esRecheckDataVO.setData(recheck); - esRecheckDataVO.setFlowUser(map); - return esRecheckDataVO; - } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESTrialEndRecheckJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESTrialEndRecheckJob.java index c6ada711..8d4c8981 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESTrialEndRecheckJob.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESTrialEndRecheckJob.java @@ -3,10 +3,8 @@ package com.jero.modules.laws.enterprise.job; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; -import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; @@ -19,9 +17,10 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import javax.annotation.Resource; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; import java.util.stream.Collectors; /** @@ -109,7 +108,7 @@ public class ESTrialEndRecheckJob implements Job { continue; } // 构建发起流程数据 - ESRecheckDataVO esRecheckDataVO = ESRecheckPlanJob.getEsRecheckDataVO(es, standardizationUser, standardEngineer, recheckPlan); + ESRecheckDataVO esRecheckDataVO = recheckService.getEsRecheckDataVO(es, standardizationUser, standardEngineer, recheckPlan); // 发起流程 recheckService.autoStartProcess(esRecheckDataVO); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardRecheckPlanService.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardRecheckPlanService.java index a554aa92..e2f1b803 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardRecheckPlanService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardRecheckPlanService.java @@ -28,4 +28,10 @@ public interface EnterpriseStandardRecheckPlanService extends IService getListByStandardId(String id); + + /** + * 批量发起复审流程 + * @param recheckPlanIds + */ + void batchStartRecheckPlan(String recheckPlanIds); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardRecheckPlanServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardRecheckPlanServiceImpl.java index 96f15d4a..3fb8d989 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardRecheckPlanServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardRecheckPlanServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.laws.enterprise.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -14,14 +15,14 @@ import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO; import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardRecheckPlanVo; import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardRecheckPlanMapper; import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; +import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * @author ThinkBook @@ -43,6 +44,9 @@ public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl queryPageList(ESQueryCommonDTO esRecheckPlan, Integer pageNo, Integer pageSize) { IPage page = new Page<>(pageNo, pageSize); @@ -88,6 +92,30 @@ public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl recheckPlanIdList = Arrays.asList(recheckPlanIds.split(",")); + // 找到所有复审计划 + List list = this.listByIds(recheckPlanIdList); + // 找到所有企标编号 + Map recheckPlanMap = list.stream() + .collect(Collectors.toMap(EnterpriseStandardRecheckPlan::getStandardId, e -> e)); + List errMsgList = new ArrayList<>(); + for (String standardId : recheckPlanMap.keySet()) { + try { + esRecheckService.autoStartProcess(esService.getById(standardId), recheckPlanMap.get(standardId)); + } catch (JeroBootException e) { + errMsgList.add(e.getMessage()); + } + } + if (!errMsgList.isEmpty()) { + throw new JeroBootException(String.join(",", errMsgList)); + } + } } diff --git a/laws-single-startup/src/main/resources/i18n/messages.properties b/laws-single-startup/src/main/resources/i18n/messages.properties index 124aba19..5983253b 100644 --- a/laws-single-startup/src/main/resources/i18n/messages.properties +++ b/laws-single-startup/src/main/resources/i18n/messages.properties @@ -69,7 +69,7 @@ en.standard.number.conflict=\u4F01\u6807\u7F16\u53F7\u5DF2\u5B58\u5728\uFF0C\u97 tag.add.error.2=\u6BCF\u5F20\u8868\u6700\u591A\u670950\u4E2A\u5B57\u6BB5\u3002 task.urging.error=\u53EA\u80FD\u50AC\u529E\u5F85\u529E\u4EFB\u52A1 invalid.esp=\u65E0\u6548\u7684\u4F01\u6807\u8BA1\u5212\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9 -can.not.edit.abolish.or.archive.es=\u5DF2\u5E9F\u6B62\u6216\u5DF2\u5F52\u6863\u7684\u4F01\u6807\u8BA1\u5212\u4E0D\u80FD\u7F16\u8F91,\u8BF7\u91CD\u65B0\u9009\u62E9 +can.not.edit.abolish.or.archive.es=\u7F16\u53F7\u4E3A{0}\u7684\u4F01\u6807\u5DF2\u7ECF\u5E9F\u6B62\u6216\u8005\u5C01\u5B58\uFF0C\u65E0\u6CD5\u8FDB\u884C\u590D\u5BA1\u6216\u66F4\u6539\u6D41\u7A0B task.urging.error.2=\u6682\u65E0\u8BE5\u6D41\u7A0B\u50AC\u529E\u6743\u9650 horizontal.transgression.select=\u6682\u65E0\u6743\u9650\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9 assess.delete.error=\u672A\u7B26\u5408\u9879\u4E2D\u6709\u6574\u6539\u4E2D\u3001\u5BA1\u6279\u4E2D\u7684\u6570\u636E\u65F6\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664 diff --git a/laws-single-startup/src/main/resources/i18n/messages_en.properties b/laws-single-startup/src/main/resources/i18n/messages_en.properties index 76f24847..c7cf556b 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_en.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_en.properties @@ -74,7 +74,7 @@ en.standard.number.conflict=standard number exists tag.add.error.2=each table can have a maximum of 50 fields. task.urging.error=Can only remind to do tasks invalid.esp=Invalid enterprise standard, please check -can.not.edit.abolish.or.archive.es=Can not edit abolished or archived enterprise standards, please check +can.not.edit.abolish.or.archive.es=Can not edit abolished or archived enterprise standards, please check{0} task.urging.error.2=I currently do not have the authority to urge this process horizontal.transgression.select=no permission at the moment please reselect assess.delete.error=When there is data under rectification or approval in the non compliant items, deletion is not allowed diff --git a/laws-single-startup/src/main/resources/i18n/messages_zh.properties b/laws-single-startup/src/main/resources/i18n/messages_zh.properties index 97242f7c..8fb84fc3 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_zh.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_zh.properties @@ -74,7 +74,7 @@ en.standard.number.conflict=\u4F01\u6807\u7F16\u53F7\u5DF2\u5B58\u5728\uFF0C\u97 tag.add.error.2=\u6BCF\u5F20\u8868\u6700\u591A\u670950\u4E2A\u5B57\u6BB5\u3002 task.urging.error=\u53EA\u80FD\u50AC\u529E\u5F85\u529E\u4EFB\u52A1 invalid.esp=\u65E0\u6548\u7684\u4F01\u6807\u8BA1\u5212\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9 -can.not.edit.abolish.or.archive.es=\u5DF2\u5E9F\u6B62\u6216\u5DF2\u5F52\u6863\u7684\u4F01\u6807\u8BA1\u5212\u4E0D\u80FD\u7F16\u8F91,\u8BF7\u91CD\u65B0\u9009\u62E9 +can.not.edit.abolish.or.archive.es=\u7F16\u53F7\u4E3A{0}\u7684\u4F01\u6807\u5DF2\u7ECF\u5E9F\u6B62\u6216\u8005\u5C01\u5B58\uFF0C\u65E0\u6CD5\u8FDB\u884C\u590D\u5BA1\u6216\u66F4\u6539\u6D41\u7A0B task.urging.error.2=\u6682\u65E0\u8BE5\u6D41\u7A0B\u50AC\u529E\u6743\u9650 horizontal.transgression.select=\u6682\u65E0\u6743\u9650\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9 assess.delete.error=\u672A\u7B26\u5408\u9879\u4E2D\u6709\u6574\u6539\u4E2D\u3001\u5BA1\u6279\u4E2D\u7684\u6570\u636E\u65F6\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664