diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/define/ActivitDefineController.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/define/ActivitDefineController.java index 0ed8123c..7a367451 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_activiti/define/ActivitDefineController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/define/ActivitDefineController.java @@ -9,6 +9,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ydw.bat.wkflow.business_activiti.dto.ProcessRollBackEO; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage; @@ -25,6 +26,8 @@ import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.tmsps.fk.common.base.action.BaseAction; @@ -195,6 +198,55 @@ public class ActivitDefineController extends BaseAction { return WrapMapper.ok(task.getId()); } + @ApiOperation(value = "启动流程-以流程定义id") + @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "流程定义Id"), + @ApiImplicitParam(name = "userId", value = "流程发起人Id") }) + @PostMapping("/activiti_define_start_user_rollBack") + public Wrapper activiti_define_start_user_rollBack(@RequestBody ProcessRollBackEO processRollBackEO) { + // 创建查询对象 + ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); + // 使用流程定义的名称模糊查询 + processDefinitionQuery.processDefinitionCategory("e05707228fa5ed7b549198208ab19d97"); + long total = processDefinitionQuery.count(); + List list = processDefinitionQuery.orderByProcessDefinitionKey().asc().list(); + List> definitions = ActivitiTools.turnProcessDefinitions(list); + String pid = ""; + for(Map map:definitions){ + if(map.get("key").toString().equals(processRollBackEO.getId())){ + pid = map.get("id").toString(); + } + } + + ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(pid).singleResult(); + + ProcessInstance pi = runtimeService.startProcessInstanceById(pid); + Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult(); + task.setAssignee(processRollBackEO.getUserId()); + taskService.saveTask(task); + + if(processRollBackEO.getBpnId() == null) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + BusProcessName busProcessName = new BusProcessName(); + busProcessName.setPrcId(pi.getId()); + busProcessName.setCreatTime(sdf.format(new Date())); + busProcessName.setCreatUser(processRollBackEO.getUserId()); + ResponseMessage byId = lawsUserInfoService.getById(processRollBackEO.getUserId()); + busProcessName.setCreatUserName(byId.getData().getUname()); + busProcessName.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())); + busProcessName.setMes(processRollBackEO.getJson()); + ibusprocessnameService.save(busProcessName); + }else { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ID", processRollBackEO.getBpnId()); + BusProcessName one = ibusprocessnameService.getOne(queryWrapper); + one.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())); + one.setPrcId(pi.getId()); + ibusprocessnameService.saveOrUpdate(one); + } + logger.info("启动流程实例,获取id-->{},实例名称-->{}", pi.getId(), pd.getName()); + return WrapMapper.ok(task.getId()); + } + /** * 企标复审流程专用 * @param id diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/dto/ProcessRollBackEO.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/dto/ProcessRollBackEO.java new file mode 100644 index 00000000..970a20b2 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/dto/ProcessRollBackEO.java @@ -0,0 +1,17 @@ +package com.ydw.bat.wkflow.business_activiti.dto; + +import lombok.Data; + +@Data +public class ProcessRollBackEO { + + private String json; + + private String type; + + private String id; + + private String userId; + + private String bpnId; +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/BusProcessModelHisServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/BusProcessModelHisServiceImpl.java index 76e0b18f..ec92e801 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/BusProcessModelHisServiceImpl.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/BusProcessModelHisServiceImpl.java @@ -47,7 +47,7 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl strings=delegateTask.getVariable("zrList",List.class); - List middle=new ArrayList<>(); - nextUserList.forEach(s -> { - if (!strings.contains(s)){ - middle.add(s); - } - }); - strings.addAll(middle); - delegateTask.setVariable("zrList",strings); + List strings=delegateTask.getVariable("zrList"+object.getString("onlyKey"),List.class); + strings.addAll(nextUserList); + delegateTask.setVariable("zrList"+object.getString("onlyKey"),strings); } //截止时间 流程描述 创建人 String OVERTIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java index 86a1e123..8f6dbd5c 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java @@ -37,16 +37,16 @@ public class Step2After implements TaskListener { List nextUserList = new ArrayList(); //整备数据 - if (null==delegateTask.getVariable("count")){ - delegateTask.setVariable("count",1); + if (null==delegateTask.getVariable("count"+object.getString("onlyKey"))){ + delegateTask.setVariable("count"+object.getString("onlyKey"),1); }else { - delegateTask.setVariable("count",delegateTask.getVariable("count",Integer.class)+1); + delegateTask.setVariable("count"+object.getString("onlyKey"),delegateTask.getVariable("count"+object.getString("onlyKey"),Integer.class)+1); } - if (delegateTask.getVariable("count",Integer.class) == delegateTask.getVariable("zrIdList",List.class).size()){ + if (delegateTask.getVariable("count"+object.getString("onlyKey"),Integer.class) == delegateTask.getVariable("zrList"+object.getString("onlyKey"),List.class).size()){ //对数据进行合并归属 QueryWrapper wrapper=new QueryWrapper<>(); - wrapper.eq("TASK_ID","SCN"); + wrapper.eq("TASK_ID",object.getString("onlyKey")); wrapper.eq("P_ID",delegateTask.getProcessInstanceId()); List busProcessNews= busBean.list(wrapper); @@ -101,8 +101,8 @@ public class Step2After implements TaskListener { busProcessNewNext.setMesg(object.toJSONString()); busProcessNewNext.setTaskInfo(delegateTask.getTaskDefinitionKey()); busProcessNewNext.setFinishFlag("0"); - if (delegateTask.getVariable("count",Integer.class) < delegateTask.getVariable("zrIdList",List.class).size()){ - busProcessNewNext.setTaskId("SCN"); + if (delegateTask.getVariable("count"+object.getString("onlyKey"),Integer.class) < delegateTask.getVariable("zrList"+object.getString("onlyKey"),List.class).size()){ + busProcessNewNext.setTaskId(object.getString("onlyKey")); } busProcessNewNext.setTaskInfo(delegateTask.getName()); busProcessNewNext.setUserId(nextUser); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java index e187d473..271ec0c8 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java @@ -40,8 +40,8 @@ public class Step4After implements TaskListener { String prcName = ""; //整备数据 if ("0".equals(object.getString("spFlag"))) { - nextUserList.add(delegateTask.getVariable("user",String.class)); - delegateTask.setVariable("bzfgId", delegateTask.getVariable("user",String.class)); + nextUserList.add(object.getString("bzfgId")); + delegateTask.setVariable("bzfgId", object.getString("bzfgId")); prcName = delegateTask.getVariable("cid")+"-标准征求意见流程-标准法规工程师分线审核"; delegateTask.setVariable("spFlag","0"); }else { diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java index 368d905e..001b1375 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java @@ -51,20 +51,18 @@ public class BLApplicantAfter implements TaskListener{ String prcName = "企标制修订流程及企业标准库流程"; // 下个节点执行人处理逻辑 - List nextUserList = new ArrayList(); + List finalNextUserList = new ArrayList(); List busProcessModelHisList = new ArrayList<>(); if(StringUtils.isNotBlank(object.getString("modelData"))){ List valueArr = JSONArray.parseArray(object.getString("modelData"),JSONObject.class); Map> listMap = valueArr.stream().collect( - Collectors.groupingBy(a -> Utils.format("{0}", a.getString("userId")))); - List finalNextUserList = nextUserList; + Collectors.groupingBy(a -> Utils.format("{0}", a.getString("zrUserId")))); listMap.forEach((s, jsonObjects) -> { String json = JSONArray.toJSONString(jsonObjects); SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); BusProcessModelHis modelHis = new BusProcessModelHis(); modelHis.setPId(delegateTask.getProcessInstanceId()); modelHis.setMesg(json); - modelHis.setTaskInfo(delegateTask.getName()); modelHis.setUserId(s); modelHis.setPrcName(prcName); modelHis.setEditType("node"); @@ -73,15 +71,14 @@ public class BLApplicantAfter implements TaskListener{ busProcessModelHisList.add(modelHis); finalNextUserList.add(s); }); - nextUserList.addAll(finalNextUserList); // if(object.getString("qcUserId").contains(",")){ // nextUserList = Arrays.asList(object.getString("qcUserId").split(",")); // }else { // nextUserList.add(object.getString("qcUserId")); // } // 配置多实例 - delegateTask.setVariable("qcUserList",nextUserList); - delegateTask.addCandidateUsers(nextUserList); + delegateTask.setVariable("qcUserList",finalNextUserList); + delegateTask.addCandidateUsers(finalNextUserList); }else { throw new ActivitiException("1#2其他起草人参数不存在,请配置相关用户"); } @@ -110,8 +107,8 @@ public class BLApplicantAfter implements TaskListener{ busProcessNew.setTaskInfo(delegateTask.getName()); busBean.save(busProcessNew); - if(nextUserList != null && !nextUserList.isEmpty()){ - for(String nextUser : nextUserList){ + if(finalNextUserList != null && !finalNextUserList.isEmpty()){ + for(String nextUser : finalNextUserList){ BusProcessNew busProcessNewNext = new BusProcessNew(); busProcessNewNext.setMsgType("clause"); busProcessNewNext.setPId(delegateTask.getProcessInstanceId()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java index 360d76c6..b3970050 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java @@ -50,6 +50,7 @@ public class BussLibrary2Before implements TaskListener{ SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); BusProcessModelHis modelHis = hisList.get(0); modelHis.setTaskId(delegateTask.getId()); + modelHis.setTaskInfo(delegateTask.getName()); String filePath = hisService.saveBussModelFile(delegateTask.getProcessInstanceId(),delegateTask.getId()); modelHis.setEditFilePath(filePath); modelHis.setUpdateTime(sdf.format(new Date())); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/Utils/PoiWord.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/Utils/PoiWord.java index a599ed85..a4d2b681 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/Utils/PoiWord.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/Utils/PoiWord.java @@ -601,7 +601,7 @@ public class PoiWord { public static void main(String[] args) throws Exception { - wordRedDocument("E:\\Software\\rtpro\\Foton\\File\\doc\\create_toc-1.docx",null,"E:\\Software\\rtpro\\Foton\\File\\doc\\create_toc3.docx","E:\\Software\\rtpro\\Foton\\File\\doc\\create_toc-2.docx"); + wordRedDocument("E:\\Software\\rtpro\\Foton\\File\\doc\\create_toc-2.docx",null,"E:\\Software\\rtpro\\Foton\\File\\doc\\create_toc3.docx","E:\\Software\\rtpro\\Foton\\File\\doc\\create_toc-1.docx"); // writeWordBanch(); // writeToDocx(); // writeTOC();