diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/InitProcessTask.java b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/InitProcessTask.java index e4538df..3ce7d96 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/InitProcessTask.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/InitProcessTask.java @@ -52,99 +52,54 @@ public class InitProcessTask { @Value("${hostname}") private String HOST_NAME; - @Scheduled(cron = "0 40 17 12 6 ?") + @Scheduled(cron = "0 30 18 12 6 ?") public void doTask() throws UnknownHostException { - //if (HOST_NAME.equals(InetAddress.getLocalHost().getHostName())) { - log.info("=========== 初始化丽水二期 系统表单和流程配置 ======== 任务开始"); - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - //1.查出丽水市下的 区县 分别去初始化 表单和流程配置数据 - List regions = regionCacheHelper.listChildren(RegionConst.RC_LS, RegionConst.RL_CITY); - - if(CollUtil.isEmpty(regions)){ - throw new BizException("丽水地区数据为空 任务结束!"); - } - - Map formsMap = Maps.newConcurrentMap(); - //2.首先插入表单默认配置 - for(RegionDTO region : regions){ - log.info("当前初始化的是 【{}】 表单信息",region.getRegionName()); - - //WflowForms existsForm = formsService.getOne(Wrappers.lambdaQuery(WflowForms.class) - // .eq(WflowForms::getRegionCode, region.getRegionCode()) - // .last("limit 1")); - //if(Objects.nonNull(existsForm)){ - // log.info("当前区域 【{}】 已经有表单数据 不需要初始化",region.getRegionName()); - // formsMap.put(existsForm.getRegionCode(),existsForm); - // continue; - //} - - WflowForms wflowForms = new WflowForms(); - wflowForms.setFormId("fm" + IdUtil.objectId()); - wflowForms.setCreateOn(LocalDateTime.now()); - wflowForms.setUpdateOn(LocalDateTime.now()); - wflowForms.setFormName(TaskContant.Wflow.DEFAULT_FORM_NAME); - wflowForms.setRegionCode(region.getRegionCode()); - wflowForms.setRegionName(region.getRegionName()); - if(formsService.save(wflowForms)){ - log.info("当前区域 【{}】 表单数据已经保存成功",region.getRegionName()); - formsMap.put(wflowForms.getRegionCode(),wflowForms); - }else{ - log.info("当前区域 【{}】 表单数据已经保存失败",region.getRegionName()); - } - } - - //3.接着插入流程默认配置 - for(RegionDTO region : regions){ - log.info("当前初始化的是 【{}】 流程配置",region.getRegionName()); - - //if(processModelService.count(Wrappers.lambdaQuery(WflowModels.class) - // .eq(WflowModels::getRegionCode,region.getRegionCode())) > 0){ - // log.info("当前区域 【{}】 已经有流程数据 不需要初始化",region.getRegionName()); - // continue; - //} - -// WflowForms form = formsMap.get(region.getRegionCode()); -// if(Objects.isNull(form)){ -// log.info("此区域 【{}】 没有对应form 不进行 流程配置初始化",region.getRegionName()); -// continue; -// } - - //Integer[] processTypeList = TaskContant.Wflow.DEFAULT_PROCESS_TYPE_LIST; - - Integer[] processTypeList = TaskContant.Wflow.APPLY_PROCESS_TYPE_LIST; - for(Integer processType : processTypeList){ - String formName = ProjectProcessStageEnum.getDesc(processType); - WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto(); -// models.setFormId("wf" + IdUtil.objectId()); -// models.setVersion(1); - models.setGroupId(1); - models.setProcessDefId("pd" + IdUtil.objectId()); - models.setFormName(formName); - models.setProcessType(processType); - models.setRegionCode(region.getRegionCode()); - String process = "{\"children\":{\"children\":{},\"id\":\"node_039152532706\",\"name\":\"审批人\",\"parentId\":\"root\",\"props\":{\"mode\":\"AND\",\"role\":[],\"refuse\":{\"type\":\"TO_END\",\"target\":\"\"},\"assignedOrg\":[{\"orgName\":\"数转办\",\"orgCode\":\"GO_3bc86256687a4884ae410af00682b762\",\"type\":\"DEFAULT\",\"processDefId\":\"\"}],\"sign\":false,\"assignedType\":\"ASSIGN_ORG\",\"assignedDept\":[]},\"type\":\"SUB\"},\"id\":\"root\",\"name\":\"发起人\",\"props\":{\"formPerms\":[],\"assignedUser\":[]},\"type\":\"ROOT\"}"; - ProcessNode processNode = JSON.parseObject(process,ProcessNode.class); - models.setProcess(processNode); - models.setSettings("{\"sign\":false,\"admin\":[],\"notify\":{},\"commiter\":[]}"); - models.setFormItems("[]"); - - String formId = processModelService.insertProcess(models); - if(StringUtils.isNotBlank(formId)){ - //初始的流程在部署表也存一份,用来查询 - if(StringUtils.isNotBlank(processModelService.deployProcess(formId,null))){ - log.info("当前区域 【{}】 流程名[{}] 流程数据已经保存成功",region.getRegionName(),formName); - }else{ - log.info("当前区域 【{}】 流程名[{}] 流程数据保存失败",region.getRegionName(),formName); - } + if (HOST_NAME.equals(InetAddress.getLocalHost().getHostName())) { + log.info("=========== 初始化丽水二期 系统表单和流程配置 ======== 任务开始"); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + //1.查出丽水市下的 区县 分别去初始化 表单和流程配置数据 + List regions = regionCacheHelper.listChildren(RegionConst.RC_LS, RegionConst.RL_CITY); + + if(CollUtil.isEmpty(regions)){ + throw new BizException("丽水地区数据为空 任务结束!"); + } + + for(RegionDTO region : regions){ + log.info("当前初始化的是 【{}】 流程配置",region.getRegionName()); + + Integer[] processTypeList = TaskContant.Wflow.APPLY_PROCESS_TYPE_LIST; + for(Integer processType : processTypeList){ + String formName = ProjectProcessStageEnum.getDesc(processType); + WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto(); + + models.setGroupId(1); + models.setProcessDefId("pd" + IdUtil.objectId()); + models.setFormName(formName); + models.setProcessType(processType); + models.setRegionCode(region.getRegionCode()); + String process = "{\"children\":{\"children\":{},\"id\":\"node_039152532706\",\"name\":\"审批人\",\"parentId\":\"root\",\"props\":{\"mode\":\"AND\",\"role\":[],\"refuse\":{\"type\":\"TO_END\",\"target\":\"\"},\"assignedOrg\":[{\"orgName\":\"数转办\",\"orgCode\":\"GO_3bc86256687a4884ae410af00682b762\",\"type\":\"DEFAULT\",\"processDefId\":\"\"}],\"sign\":false,\"assignedType\":\"ASSIGN_ORG\",\"assignedDept\":[]},\"type\":\"SUB\"},\"id\":\"root\",\"name\":\"发起人\",\"props\":{\"formPerms\":[],\"assignedUser\":[]},\"type\":\"ROOT\"}"; + ProcessNode processNode = JSON.parseObject(process,ProcessNode.class); + models.setProcess(processNode); + models.setSettings("{\"sign\":false,\"admin\":[],\"notify\":{},\"commiter\":[]}"); + models.setFormItems("[]"); + + String formId = processModelService.insertProcess(models); + if(StringUtils.isNotBlank(formId)){ + //初始的流程在部署表也存一份,用来查询 + if(StringUtils.isNotBlank(processModelService.deployProcess(formId,null))){ + log.info("当前区域 【{}】 流程名[{}] 流程数据已经保存成功",region.getRegionName(),formName); }else{ - log.info("当前区域 【{}】流程名[{}] 流程数据保存失败",region.getRegionName(),formName); + log.info("当前区域 【{}】 流程名[{}] 流程数据保存失败",region.getRegionName(),formName); } + }else{ + log.info("当前区域 【{}】流程名[{}] 流程数据保存失败",region.getRegionName(),formName); } } + } - stopWatch.stop(); - log.info("=========== 初始化丽水二期 系统表单和流程配置 ======== 任务结束 {}s",stopWatch.getTotalTimeSeconds()); - //} + stopWatch.stop(); + log.info("=========== 初始化丽水二期 系统表单和流程配置 ======== 任务结束 {}s",stopWatch.getTotalTimeSeconds()); + } } } diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/sys/processDef/ProcessDefTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/sys/processDef/ProcessDefTest.java index dce358e..22f7e09 100644 --- a/pmapi/src/test/java/com/ningdatech/pmapi/sys/processDef/ProcessDefTest.java +++ b/pmapi/src/test/java/com/ningdatech/pmapi/sys/processDef/ProcessDefTest.java @@ -1,12 +1,34 @@ package com.ningdatech.pmapi.sys.processDef; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.StopWatch; +import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; +import com.google.common.collect.Maps; +import com.ningdatech.basic.exception.BizException; +import com.ningdatech.pmapi.AppTests; +import com.ningdatech.pmapi.common.constant.RegionConst; +import com.ningdatech.pmapi.common.enumeration.ProjectProcessStageEnum; +import com.ningdatech.pmapi.common.helper.RegionCacheHelper; +import com.ningdatech.pmapi.scheduler.contants.TaskContant; +import com.ningdatech.pmapi.sys.model.dto.RegionDTO; +import com.ningdatech.pmapi.sys.service.IRegionService; +import com.wflow.bean.dto.WflowModelHistorysInsertDto; +import com.wflow.bean.entity.WflowForms; +import com.wflow.workflow.bean.process.ProcessNode; +import com.wflow.workflow.service.ProcessModelService; +import com.wflow.workflow.service.WflowFormsService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.junit.Test; +import javax.annotation.Resource; import java.io.Serializable; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.Map; /** * @Classname ProcessTest @@ -14,9 +36,14 @@ import java.util.List; * @Date 2023/2/4 9:54 * @Author PoffyZhang */ -public class ProcessDefTest { - - +@Slf4j +public class ProcessDefTest extends AppTests { + @Resource + private ProcessModelService processModelService; + @Resource + private WflowFormsService formsService; + @Resource + private RegionCacheHelper regionCacheHelper; @Test public void test() { String processStr = "{\"id\":\"node_039152532706\",\"name\":\"审批单位\",\"type\":\"ORG\",\"props\":{\"regionCode\":\"\",\"orgCode\":\"GO_3bc86256687a4884ae410af00682b762\",\"type\":\"DEFAULT\",\"processDefId\":\"\",\"subNode\":[]},\"children\":{},\"parentId\":\"root\"}"; @@ -32,6 +59,55 @@ public class ProcessDefTest { System.out.println(LocalDateTime.parse("2023-02-05 10:25", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))); } + @Test + public void apply() { + log.info("=========== 初始化丽水二期 系统表单和流程配置 ======== 任务开始"); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + //1.查出丽水市下的 区县 分别去初始化 表单和流程配置数据 + List regions = regionCacheHelper.listChildren(RegionConst.RC_LS, RegionConst.RL_CITY); + + if(CollUtil.isEmpty(regions)){ + throw new BizException("丽水地区数据为空 任务结束!"); + } + + for(RegionDTO region : regions){ + log.info("当前初始化的是 【{}】 流程配置",region.getRegionName()); + + Integer[] processTypeList = TaskContant.Wflow.APPLY_PROCESS_TYPE_LIST; + for(Integer processType : processTypeList){ + String formName = ProjectProcessStageEnum.getDesc(processType); + WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto(); + + models.setGroupId(1); + models.setProcessDefId("pd" + IdUtil.objectId()); + models.setFormName(formName); + models.setProcessType(processType); + models.setRegionCode(region.getRegionCode()); + String process = "{\"children\":{\"children\":{},\"id\":\"node_039152532706\",\"name\":\"审批人\",\"parentId\":\"root\",\"props\":{\"mode\":\"AND\",\"role\":[],\"refuse\":{\"type\":\"TO_END\",\"target\":\"\"},\"assignedOrg\":[{\"orgName\":\"数转办\",\"orgCode\":\"GO_3bc86256687a4884ae410af00682b762\",\"type\":\"DEFAULT\",\"processDefId\":\"\"}],\"sign\":false,\"assignedType\":\"ASSIGN_ORG\",\"assignedDept\":[]},\"type\":\"SUB\"},\"id\":\"root\",\"name\":\"发起人\",\"props\":{\"formPerms\":[],\"assignedUser\":[]},\"type\":\"ROOT\"}"; + ProcessNode processNode = JSON.parseObject(process,ProcessNode.class); + models.setProcess(processNode); + models.setSettings("{\"sign\":false,\"admin\":[],\"notify\":{},\"commiter\":[]}"); + models.setFormItems("[]"); + + String formId = processModelService.insertProcess(models); + if(StringUtils.isNotBlank(formId)){ + //初始的流程在部署表也存一份,用来查询 + if(StringUtils.isNotBlank(processModelService.deployProcess(formId,null))){ + log.info("当前区域 【{}】 流程名[{}] 流程数据已经保存成功",region.getRegionName(),formName); + }else{ + log.info("当前区域 【{}】 流程名[{}] 流程数据保存失败",region.getRegionName(),formName); + } + }else{ + log.info("当前区域 【{}】流程名[{}] 流程数据保存失败",region.getRegionName(),formName); + } + } + } + + stopWatch.stop(); + log.info("=========== 初始化丽水二期 系统表单和流程配置 ======== 任务结束 {}s",stopWatch.getTotalTimeSeconds()); + } + public static class OrgProps { private String regionCode;