From 7a902e3f7c3418a7d1fa65b46921a5a7eb93cb2b Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 30 八月 2021 23:34:57 +0800
Subject: [PATCH] 优化代码
---
service-oa/src/main/java/com/java110/oa/bmo/oaWorkflowForm/impl/GetOaWorkflowFormBMOImpl.java | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 284 insertions(+), 1 deletions(-)
diff --git a/service-oa/src/main/java/com/java110/oa/bmo/oaWorkflowForm/impl/GetOaWorkflowFormBMOImpl.java b/service-oa/src/main/java/com/java110/oa/bmo/oaWorkflowForm/impl/GetOaWorkflowFormBMOImpl.java
index d4aeb5d..638379f 100644
--- a/service-oa/src/main/java/com/java110/oa/bmo/oaWorkflowForm/impl/GetOaWorkflowFormBMOImpl.java
+++ b/service-oa/src/main/java/com/java110/oa/bmo/oaWorkflowForm/impl/GetOaWorkflowFormBMOImpl.java
@@ -3,14 +3,19 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.oaWorkflow.OaWorkflowDto;
+import com.java110.dto.oaWorkflowData.OaWorkflowDataDto;
import com.java110.dto.oaWorkflowForm.OaWorkflowFormDto;
import com.java110.dto.user.UserDto;
+import com.java110.entity.audit.AuditUser;
import com.java110.intf.common.IOaWorkflowUserInnerServiceSMO;
+import com.java110.intf.oa.IOaWorkflowDataInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowFormInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
import com.java110.intf.user.IUserInnerServiceSMO;
import com.java110.oa.bmo.oaWorkflowForm.IGetOaWorkflowFormBMO;
import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,7 +23,9 @@
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
+import java.text.ParseException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -36,6 +43,10 @@
@Autowired
private IOaWorkflowUserInnerServiceSMO oaWorkflowUserInnerServiceSMOImpl;
+
+ @Autowired
+ private IOaWorkflowDataInnerServiceSMO oaWorkflowDataInnerServiceSMOImpl;
+
/**
* @param oaWorkflowFormDto
@@ -97,7 +108,7 @@
datas = new ArrayList<>();
}
- ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) oaWorkflowFormDto.getRow()), count, datas);
+ ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (int) paramIn.get("row")), count, datas);
ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
@@ -157,7 +168,279 @@
reqJson.put("processDefinitionKey", oaWorkflowDtos.get(0).getProcessDefinitionKey());
oaWorkflowUserInnerServiceSMOImpl.startProcess(reqJson);
+
+
return ResultVo.success();
}
+ /**
+ * 鏌ヨ宸ヤ綔娴佸緟鍔�
+ *
+ * @param paramIn
+ * @return
+ */
+ @Override
+ public ResponseEntity<String> queryOaWorkflowUserTaskFormData(JSONObject paramIn) {
+
+ OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
+ oaWorkflowDto.setStoreId(paramIn.getString("storeId"));
+ oaWorkflowDto.setFlowId(paramIn.getString("flowId"));
+ List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
+ Assert.listOnlyOne(oaWorkflowDtos, "娴佺▼涓嶅瓨鍦�");
+
+ OaWorkflowFormDto oaWorkflowFormDto = new OaWorkflowFormDto();
+ oaWorkflowFormDto.setFlowId(paramIn.get("flowId").toString());
+ oaWorkflowFormDto.setStoreId(paramIn.get("storeId").toString());
+ oaWorkflowFormDto.setRow(1);
+ oaWorkflowFormDto.setPage(1);
+ List<OaWorkflowFormDto> oaWorkflowFormDtos = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowForms(oaWorkflowFormDto);
+ Assert.listOnlyOne(oaWorkflowFormDtos, "鏈寘鍚祦绋嬭〃鍗曪紝璇峰厛璁剧疆琛ㄥ崟");
+
+ AuditUser auditUser = new AuditUser();
+ auditUser.setProcessDefinitionKey(oaWorkflowDtos.get(0).getProcessDefinitionKey());
+ auditUser.setFlowId(paramIn.getString("flowId"));
+ auditUser.setUserId(paramIn.getString("userId"));
+ auditUser.setStoreId(paramIn.getString("storeId"));
+ auditUser.setPage(paramIn.getInteger("page"));
+ auditUser.setRow(paramIn.getInteger("row"));
+
+ long count = oaWorkflowUserInnerServiceSMOImpl.getUserTaskCount(auditUser);
+
+ List<JSONObject> datas = null;
+
+ if (count > 0) {
+ datas = oaWorkflowUserInnerServiceSMOImpl.getUserTasks(auditUser);
+ //鍒锋柊 琛ㄥ崟鏁版嵁
+ freshFormData(datas, paramIn, oaWorkflowFormDtos.get(0));
+ } else {
+ datas = new ArrayList<>();
+ }
+
+ ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) paramIn.getInteger("row")), count, datas);
+
+ ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+ return responseEntity;
+ }
+
+ /**
+ * 鏌ヨ宸ヤ綔娴佸緟鍔�
+ *
+ * @param paramIn
+ * @return
+ */
+ @Override
+ public ResponseEntity<String> queryOaWorkflowUserHisTaskFormData(JSONObject paramIn) {
+
+ OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
+ oaWorkflowDto.setStoreId(paramIn.getString("storeId"));
+ oaWorkflowDto.setFlowId(paramIn.getString("flowId"));
+ List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
+ Assert.listOnlyOne(oaWorkflowDtos, "娴佺▼涓嶅瓨鍦�");
+
+ OaWorkflowFormDto oaWorkflowFormDto = new OaWorkflowFormDto();
+ oaWorkflowFormDto.setFlowId(paramIn.get("flowId").toString());
+ oaWorkflowFormDto.setStoreId(paramIn.get("storeId").toString());
+ oaWorkflowFormDto.setRow(1);
+ oaWorkflowFormDto.setPage(1);
+ List<OaWorkflowFormDto> oaWorkflowFormDtos = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowForms(oaWorkflowFormDto);
+ Assert.listOnlyOne(oaWorkflowFormDtos, "鏈寘鍚祦绋嬭〃鍗曪紝璇峰厛璁剧疆琛ㄥ崟");
+
+ OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto();
+ oaWorkflowDataDto.setFlowId(paramIn.getString("flowId"));
+ oaWorkflowDataDto.setStaffId(paramIn.getString("userId"));
+ oaWorkflowDataDto.setStoreId(paramIn.getString("storeId"));
+ oaWorkflowDataDto.setPage(paramIn.getInteger("page"));
+ oaWorkflowDataDto.setRow(paramIn.getInteger("row"));
+ oaWorkflowDataDto.setHis("Y");
+
+ long count = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatasCount(oaWorkflowDataDto);
+
+ List<JSONObject> datas = null;
+
+ if (count > 0) {
+ datas = BeanConvertUtil.covertBeanList(oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto), JSONObject.class);
+ //鍒锋柊 琛ㄥ崟鏁版嵁
+ freshFormData(datas, paramIn, oaWorkflowFormDtos.get(0));
+ } else {
+ datas = new ArrayList<>();
+ }
+
+ ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) paramIn.getInteger("row")), count, datas);
+
+ ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+ return responseEntity;
+ }
+
+ @Override
+ public ResponseEntity<String> auditOaWorkflow(JSONObject reqJson) {
+ //鏌ヨ娴佺▼鏄惁瀛樺湪
+ OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
+ oaWorkflowDto.setStoreId(reqJson.getString("storeId"));
+ oaWorkflowDto.setFlowId(reqJson.getString("flowId"));
+ List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
+ Assert.listOnlyOne(oaWorkflowDtos, "娴佺▼涓嶅瓨鍦�");
+
+ //娴佺▼琛ㄥ崟鏄惁瀛樺湪
+ OaWorkflowFormDto oaWorkflowFormDto = new OaWorkflowFormDto();
+ oaWorkflowFormDto.setFlowId(reqJson.get("flowId").toString());
+ oaWorkflowFormDto.setStoreId(reqJson.get("storeId").toString());
+ oaWorkflowFormDto.setRow(1);
+ oaWorkflowFormDto.setPage(1);
+ List<OaWorkflowFormDto> oaWorkflowFormDtos = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowForms(oaWorkflowFormDto);
+ Assert.listOnlyOne(oaWorkflowFormDtos, "鏈寘鍚祦绋嬭〃鍗曪紝璇峰厛璁剧疆琛ㄥ崟");
+
+ //娴佺▼鏁版嵁鏄惁瀛樺湪
+ Map paramMap = new HashMap();
+ paramMap.put("storeId", reqJson.getString("storeId"));
+ paramMap.put("id", reqJson.getString("id"));
+ paramMap.put("tableName", oaWorkflowFormDtos.get(0).getTableName());
+ paramMap.put("page", 1);
+ paramMap.put("row", 1);
+ List<Map> formDatas = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowFormDatas(paramMap);
+
+ Assert.listOnlyOne(formDatas, "宸ュ崟鏁版嵁涓嶅瓨鍦�");
+
+ reqJson.put("startUserId", formDatas.get(0).get("create_user_id"));
+
+ //涓氬姟鍔炵悊
+ if ("1100".equals(reqJson.getString("auditCode"))) { //鍔炵悊鎿嶄綔
+ reqJson.put("nextUserId", reqJson.getString("staffId"));
+ boolean isLastTask = oaWorkflowUserInnerServiceSMOImpl.completeTask(reqJson);
+ if (isLastTask) {
+ reqJson.put("state", "1005"); //宸ュ崟缁撴潫
+ } else {
+ reqJson.put("state", "1002"); //宸ュ崟瀹℃牳
+ }
+ reqJson.put("tableName", oaWorkflowFormDtos.get(0).getTableName());
+ oaWorkflowFormInnerServiceSMOImpl.updateOaWorkflowFormData(reqJson);
+ //瀹屾垚褰撳墠娴佺▼ 鎻掑叆涓嬩竴澶勭悊浜�
+ } else if ("1300".equals(reqJson.getString("auditCode"))) { //杞崟鎿嶄綔
+ reqJson.put("nextUserId", reqJson.getString("staffId"));
+ oaWorkflowUserInnerServiceSMOImpl.changeTaskToOtherUser(reqJson);
+ reqJson.put("state", "1004"); //宸ュ崟杞崟
+ reqJson.put("tableName", oaWorkflowFormDtos.get(0).getTableName());
+ oaWorkflowFormInnerServiceSMOImpl.updateOaWorkflowFormData(reqJson);
+ } else if ("1200".equals(reqJson.getString("auditCode"))
+ || "1400".equals(reqJson.getString("auditCode"))
+ ) { //閫�鍥炴搷浣�
+ oaWorkflowUserInnerServiceSMOImpl.goBackTask(reqJson);
+ reqJson.put("state", "1003"); //宸ュ崟閫�鍗�
+ reqJson.put("tableName", oaWorkflowFormDtos.get(0).getTableName());
+ oaWorkflowFormInnerServiceSMOImpl.updateOaWorkflowFormData(reqJson);
+ } else {
+ throw new IllegalArgumentException("涓嶆敮鎸佺殑绫诲瀷");
+ }
+
+
+ return ResultVo.success();
+ }
+
+ @Override
+ public ResponseEntity<String> getNextTask(JSONObject reqJson) {
+ List<JSONObject> tasks = oaWorkflowUserInnerServiceSMOImpl.nextAllNodeTaskList(reqJson);
+ return ResultVo.createResponseEntity(tasks);
+ }
+
+ @Override
+ public ResponseEntity<String> queryOaWorkflowUser(JSONObject paramIn) {
+ OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
+ oaWorkflowDto.setStoreId(paramIn.getString("storeId"));
+ oaWorkflowDto.setFlowId(paramIn.getString("flowId"));
+ List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
+ Assert.listOnlyOne(oaWorkflowDtos, "娴佺▼涓嶅瓨鍦�");
+
+ OaWorkflowFormDto oaWorkflowFormDto = new OaWorkflowFormDto();
+ oaWorkflowFormDto.setFlowId(paramIn.get("flowId").toString());
+ oaWorkflowFormDto.setStoreId(paramIn.get("storeId").toString());
+ oaWorkflowFormDto.setRow(1);
+ oaWorkflowFormDto.setPage(1);
+ List<OaWorkflowFormDto> oaWorkflowFormDtos = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowForms(oaWorkflowFormDto);
+ Assert.listOnlyOne(oaWorkflowFormDtos, "鏈寘鍚祦绋嬭〃鍗曪紝璇峰厛璁剧疆琛ㄥ崟");
+
+ OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto();
+ oaWorkflowDataDto.setFlowId(paramIn.getString("flowId"));
+ oaWorkflowDataDto.setBusinessKey(paramIn.getString("id"));
+ oaWorkflowDataDto.setStoreId(paramIn.getString("storeId"));
+ oaWorkflowDataDto.setPage(paramIn.getInteger("page"));
+ oaWorkflowDataDto.setRow(paramIn.getInteger("row"));
+
+ long count = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatasCount(oaWorkflowDataDto);
+
+ List<JSONObject> datas = new ArrayList<>();
+
+ if (count > 0) {
+ List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto);
+ for(OaWorkflowDataDto oaWorkflowDataDto1 : oaWorkflowDataDtos){
+ datas.add(BeanConvertUtil.beanCovertJson(oaWorkflowDataDto1));
+ }
+ //鍒锋柊 琛ㄥ崟鏁版嵁
+ freshFormData(datas, paramIn, oaWorkflowFormDtos.get(0));
+ }
+
+ ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) paramIn.getInteger("row")), count, datas);
+
+ ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+ return responseEntity;
+ }
+
+ /**
+ * 鍒峰叆琛ㄥ崟鏁版嵁
+ *
+ * @param datas
+ */
+ private void freshFormData(List<JSONObject> datas, JSONObject paramIn, OaWorkflowFormDto oaWorkflowFormDto) {
+ List<String> ids = new ArrayList<>();
+ for (JSONObject data : datas) {
+ ids.add(data.getString("id"));
+ }
+ if (ids.size() < 1) {
+ return;
+ }
+
+ Map paramMap = new HashMap();
+ paramMap.put("storeId", paramIn.getString("storeId"));
+ paramMap.put("ids", ids.toArray(new String[ids.size()]));
+ paramMap.put("tableName", oaWorkflowFormDto.getTableName());
+ paramMap.put("page", 1);
+ paramMap.put("row", ids.size());
+ List<Map> formDatas = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowFormDatas(paramMap);
+ long duration = 0L;
+ for (JSONObject data : datas) {
+ for (Map form : formDatas) {
+ if (data.getString("id").equals(form.get("id"))) {
+ data.putAll(form);
+ }
+ }
+
+ if (data.containsKey("startTime") && data.containsKey("endTime")) {
+ try {
+ if (data.getString("endTime") == null) {
+ duration = DateUtil.getCurrentDate().getTime() - DateUtil.getDateFromString(data.getString("startTime"), DateUtil.DATE_FORMATE_STRING_A).getTime();
+ } else {
+ duration = DateUtil.getDateFromString(data.getString("endTime"), DateUtil.DATE_FORMATE_STRING_A).getTime()
+ - DateUtil.getDateFromString(data.getString("startTime"), DateUtil.DATE_FORMATE_STRING_A).getTime();
+ }
+ } catch (Exception e) {
+ duration = 0;
+ }
+ data.put("duration", getCostTime(duration));
+ }
+ }
+ }
+
+ public String getCostTime(Long time) {
+ if (time == null) {
+ return "00:00";
+ }
+ long hours = time / (1000 * 60 * 60);
+ long minutes = (time - hours * (1000 * 60 * 60)) / (1000 * 60);
+ String diffTime = "";
+ if (minutes < 10) {
+ diffTime = hours + ":0" + minutes;
+ } else {
+ diffTime = hours + ":" + minutes;
+ }
+ return diffTime;
+ }
+
}
--
Gitblit v1.8.0