From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能
---
service-common/src/main/java/com/java110/common/cmd/workflow/UpdateWorkflowCmd.java | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 210 insertions(+), 12 deletions(-)
diff --git a/service-common/src/main/java/com/java110/common/cmd/workflow/UpdateWorkflowCmd.java b/service-common/src/main/java/com/java110/common/cmd/workflow/UpdateWorkflowCmd.java
index 0db2ca2..755984e 100644
--- a/service-common/src/main/java/com/java110/common/cmd/workflow/UpdateWorkflowCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/workflow/UpdateWorkflowCmd.java
@@ -15,22 +15,32 @@
*/
package com.java110.common.cmd.workflow;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.context.ICmdDataFlowContext;
-import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.common.IWorkflowV1InnerServiceSMO;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.workflow.WorkflowDto;
+import com.java110.dto.workflow.WorkflowStepDto;
+import com.java110.dto.workflow.WorkflowStepStaffDto;
+import com.java110.intf.common.*;
import com.java110.po.workflow.WorkflowPo;
+import com.java110.po.workflow.WorkflowStepPo;
+import com.java110.po.workflow.WorkflowStepStaffPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
-import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
-import com.java110.core.log.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.ArrayList;
+import java.util.List;
/**
@@ -44,32 +54,220 @@
* // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
*/
@Java110Cmd(serviceCode = "workflow.updateWorkflow")
-public class UpdateWorkflowCmd extends AbstractServiceCmdListener {
+public class UpdateWorkflowCmd extends Cmd {
- private static Logger logger = LoggerFactory.getLogger(UpdateWorkflowCmd.class);
+ private static Logger logger = LoggerFactory.getLogger(UpdateWorkflowCmd.class);
@Autowired
private IWorkflowV1InnerServiceSMO workflowV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkflowStepStaffInnerServiceSMO workflowStepStaffInnerServiceSMOImpl;
+
+
+ @Autowired
+ private IWorkflowStepStaffV1InnerServiceSMO workflowStepStaffV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkflowStepV1InnerServiceSMO workflowStepV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkflowStepInnerServiceSMO workflowStepInnerServiceSMOImpl;
+
+ @Autowired
+ private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl;
+
+
@Override
public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
Assert.hasKeyAndValue(reqJson, "flowId", "flowId涓嶈兘涓虹┖");
-Assert.hasKeyAndValue(reqJson, "communityId", "communityId涓嶈兘涓虹┖");
+ Assert.hasKeyAndValue(reqJson, "flowName", "璇锋眰鎶ユ枃涓湭鍖呭惈flowName");
+ Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
+ Assert.hasKeyAndValue(reqJson, "storeId", "璇锋眰鎶ユ枃涓湭鍖呭惈鍟嗘埛ID");
+
+ JSONArray steps = reqJson.getJSONArray("steps");
+ if (steps == null || steps.size() < 1) {
+ //throw new IllegalArgumentException("鏈寘鍚楠�");
+ return;
+ }
+ JSONObject step = null;
+ JSONObject subStaff = null;
+ for (int stepIndex = 0; stepIndex < steps.size(); stepIndex++) {
+ step = steps.getJSONObject(stepIndex);
+
+ Assert.hasKeyAndValue(step, "staffId", "姝ラ涓湭鍖呭惈鍛樺伐");
+ Assert.hasKeyAndValue(step, "staffName", "姝ラ涓湭鍖呭惈鍛樺伐");
+ Assert.hasKeyAndValue(step, "type", "姝ラ涓被鍨嬩細绛捐繕鏄甯告祦绋�");
+
+ //姝e父娴佺▼
+ if (WorkflowStepDto.TYPE_NORMAL.equals(step.getString("type"))) {
+ continue;
+ }
+
+ //浼氱娴佺▼
+ if (!step.containsKey("subStaff")) {
+ throw new IllegalArgumentException("鏈寘鍚細绛惧憳宸ヤ俊鎭�");
+ }
+
+ JSONArray subStaffs = step.getJSONArray("subStaff");
+
+ if (subStaffs == null || subStaffs.size() < 1) {
+ throw new IllegalArgumentException("鏈寘鍚細绛惧憳宸ヤ俊鎭�");
+ }
+
+ for (int subStaffIndex = 0; subStaffIndex < subStaffs.size(); subStaffIndex++) {
+ subStaff = subStaffs.getJSONObject(subStaffIndex);
+ Assert.hasKeyAndValue(subStaff, "staffId", "浼氱涓湭鍖呭惈鍛樺伐");
+ Assert.hasKeyAndValue(subStaff, "staffName", "浼氱涓湭鍖呭惈鍛樺伐");
+ }
+ }
}
@Override
@Java110Transactional
public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+ logger.debug("杩涘叆淇敼宸ヤ綔娴乧md>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
- WorkflowPo workflowPo = BeanConvertUtil.covertBean(reqJson, WorkflowPo.class);
- int flag = workflowV1InnerServiceSMOImpl.updateWorkflow(workflowPo);
-
- if (flag < 1) {
- throw new CmdException("鏇存柊鏁版嵁澶辫触");
+ if (reqJson.containsKey("flowType")) {
+ String flowType = reqJson.getString("flowType");
+ if (WorkflowDto.FLOW_TYPE_PURCHASE.equals(flowType)
+ || WorkflowDto.FLOW_TYPE_CONTRACT_CHANGE.equals(flowType)
+ || WorkflowDto.FLOW_TYPE_ALLOCATION_STOREHOUSE.equals(flowType)
+ || WorkflowDto.FLOW_TYPE_CONTRACT_APPLY.equals(flowType)) {
+ reqJson.put("communityId", "9999");
+ }
}
+ WorkflowStepDto workflowStepDto = new WorkflowStepDto();
+ workflowStepDto.setFlowId(reqJson.getString("flowId"));
+ workflowStepDto.setCommunityId(reqJson.getString("communityId"));
+ List<WorkflowStepDto> workflowStepDtos = workflowStepInnerServiceSMOImpl.queryWorkflowSteps(workflowStepDto);
+ if (workflowStepDtos != null) {
+ for (WorkflowStepDto tmpWorkflowStepDto : workflowStepDtos) {
+ deleteWorkflowStepAndStaff(cmdDataFlowContext, reqJson, tmpWorkflowStepDto);
+ }
+ }
+
+ //淇敼 宸ヤ綔娴佺▼
+ WorkflowPo workflowPo = new WorkflowPo();
+ workflowPo.setFlowId(reqJson.getString("flowId"));
+ workflowPo.setFlowName(reqJson.getString("flowName"));
+ workflowPo.setCommunityId(reqJson.getString("communityId"));
+ workflowPo.setStartNodeFinish(reqJson.getString("startNodeFinish"));
+ workflowPo.setDescrible(reqJson.getString("describle"));
+
+
+ //淇濆瓨 宸ヤ綔娴佺▼姝ラ
+ JSONArray steps = reqJson.getJSONArray("steps");
+ String processDefinitionKey = "";
+ int flag = 0;
+ if (steps != null && steps.size() > 0) { // 鏈夋楠�
+ JSONObject step = null;
+ JSONObject subStaff = null;
+ WorkflowStepStaffPo workflowStepStaffPo = null;
+ List<WorkflowStepDto> tmpWorkflowStepDtos = new ArrayList<>();
+ for (int stepIndex = 0; stepIndex < steps.size(); stepIndex++) {
+ step = steps.getJSONObject(stepIndex);
+ WorkflowStepPo workflowStepPo = new WorkflowStepPo();
+ workflowStepPo.setStepId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_flowId));
+ workflowStepPo.setCommunityId(workflowPo.getCommunityId());
+ workflowStepPo.setFlowId(workflowPo.getFlowId());
+ workflowStepPo.setSeq((stepIndex + 1) + "");
+ workflowStepPo.setType(step.getString("type"));
+ workflowStepPo.setStoreId(reqJson.getString("storeId"));
+ flag = workflowStepV1InnerServiceSMOImpl.saveWorkflowStep(workflowStepPo);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨姝ラ澶辫触");
+ }
+ WorkflowStepDto tmpWorkflowStepDto = BeanConvertUtil.covertBean(workflowStepPo, WorkflowStepDto.class);
+ //姝e父娴佺▼
+ List<WorkflowStepStaffDto> workflowStepStaffDtos = new ArrayList<>();
+ workflowStepStaffPo = new WorkflowStepStaffPo();
+ workflowStepStaffPo.setWssId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_wssId));
+ workflowStepStaffPo.setCommunityId(workflowPo.getCommunityId());
+ workflowStepStaffPo.setStaffId(step.getString("staffId"));
+ workflowStepStaffPo.setStaffName(step.getString("staffName"));
+ workflowStepStaffPo.setStepId(workflowStepPo.getStepId());
+ workflowStepStaffPo.setFlowType(reqJson.getString("flowType"));
+ workflowStepStaffPo.setStaffRole(StringUtil.isEmpty(step.getString("staffRole")) ? "1001" : step.getString("staffRole"));
+
+ if (!"1001".equals(workflowStepStaffPo.getStaffRole()) && workflowStepStaffPo.getStaffRole().startsWith("${")) {
+ throw new IllegalArgumentException("閲囪喘浜哄憳鎴栬�呯墿鍝侀鐢ㄤ汉鍛樺繀椤绘寚瀹氫汉锛屼笉鑳芥槸鍔ㄦ�佹寚瀹�");
+ }
+ flag = workflowStepStaffV1InnerServiceSMOImpl.saveWorkflowStepStaff(workflowStepStaffPo);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨姝ラ澶辫触");
+ }
+ workflowStepStaffDtos.add(BeanConvertUtil.covertBean(workflowStepStaffPo, WorkflowStepStaffDto.class));
+ //浼氱娴佺▼
+ JSONArray subStaffs = step.getJSONArray("subStaff");
+ if (subStaffs != null && subStaffs.size() > 0) {
+ for (int subStaffIndex = 0; subStaffIndex < subStaffs.size(); subStaffIndex++) {
+ subStaff = subStaffs.getJSONObject(subStaffIndex);
+ workflowStepStaffPo = new WorkflowStepStaffPo();
+ workflowStepStaffPo.setWssId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_wssId));
+ workflowStepStaffPo.setCommunityId(workflowPo.getCommunityId());
+ workflowStepStaffPo.setStaffId(subStaff.getString("staffId"));
+ workflowStepStaffPo.setStaffName(subStaff.getString("staffName"));
+ workflowStepStaffPo.setStepId(workflowStepPo.getStepId());
+ workflowStepStaffPo.setStaffRole(StringUtil.isEmpty(subStaff.getString("staffRole")) ? "1001" : subStaff.getString("staffRole"));
+
+ flag = workflowStepStaffV1InnerServiceSMOImpl.saveWorkflowStepStaff(workflowStepStaffPo);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨姝ラ澶辫触");
+ }
+ workflowStepStaffDtos.add(BeanConvertUtil.covertBean(workflowStepStaffPo, WorkflowStepStaffDto.class));
+ }
+ }
+
+ tmpWorkflowStepDto.setWorkflowStepStaffs(workflowStepStaffDtos);
+
+ tmpWorkflowStepDtos.add(tmpWorkflowStepDto);
+ }
+
+ WorkflowDto workflowDto = BeanConvertUtil.covertBean(workflowPo, WorkflowDto.class);
+ workflowDto.setWorkflowSteps(tmpWorkflowStepDtos);
+ WorkflowDto tmpWorkflowDto = workflowInnerServiceSMOImpl.addFlowDeployment(workflowDto);
+ processDefinitionKey = tmpWorkflowDto.getProcessDefinitionKey();
+ } else {
+ processDefinitionKey = "-1";
+ }
+
+ workflowPo.setProcessDefinitionKey(processDefinitionKey);
+ flag = workflowV1InnerServiceSMOImpl.updateWorkflow(workflowPo);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨姝ラ澶辫触");
+ }
cmdDataFlowContext.setResponseEntity(ResultVo.success());
}
+
+ private void deleteWorkflowStepAndStaff(ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson, WorkflowStepDto workflowStepDto) {
+ WorkflowStepStaffDto workflowStepStaffDto = new WorkflowStepStaffDto();
+ workflowStepStaffDto.setStepId(workflowStepDto.getStepId());
+ workflowStepStaffDto.setCommunityId(workflowStepDto.getCommunityId());
+ List<WorkflowStepStaffDto> workflowStepStaffDtos = workflowStepStaffInnerServiceSMOImpl.queryWorkflowStepStaffs(workflowStepStaffDto);
+
+ WorkflowStepPo workflowStepPo = new WorkflowStepPo();
+ workflowStepPo.setCommunityId(workflowStepDto.getCommunityId());
+ workflowStepPo.setStepId(workflowStepDto.getStepId());
+ int flag = workflowStepV1InnerServiceSMOImpl.deleteWorkflowStep(workflowStepPo);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨姝ラ澶辫触");
+ }
+ if (workflowStepStaffDtos == null) {
+ return;
+ }
+ for (WorkflowStepStaffDto tmpWorkflowStepStaffDto : workflowStepStaffDtos) {
+ WorkflowStepStaffPo workflowStepStaffPo = new WorkflowStepStaffPo();
+ workflowStepStaffPo.setCommunityId(workflowStepDto.getCommunityId());
+ workflowStepStaffPo.setWssId(tmpWorkflowStepStaffDto.getWssId());
+ flag = workflowStepStaffV1InnerServiceSMOImpl.deleteWorkflowStepStaff(workflowStepStaffPo);
+ if (flag < 1) {
+ throw new CmdException("淇濆瓨姝ラ澶辫触");
+ }
+ }
+ }
}
--
Gitblit v1.8.0