Explorar o código

优化采购流程

java110 %!s(int64=2) %!d(string=hai) anos
pai
achega
5c64323154

+ 94 - 33
service-common/src/main/java/com/java110/common/cmd/auditUser/ListAuditHistoryOrdersCmd.java

@@ -5,12 +5,19 @@ import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.itemRelease.ItemReleaseDto;
+import com.java110.dto.oaWorkflow.OaWorkflowDto;
+import com.java110.dto.oaWorkflow.WorkflowDto;
 import com.java110.dto.purchase.PurchaseApplyDto;
 import com.java110.dto.audit.AuditUser;
+import com.java110.intf.common.IOaWorkflowActivitiInnerServiceSMO;
 import com.java110.intf.common.IResourceEntryStoreInnerServiceSMO;
+import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
+import com.java110.intf.store.IPurchaseApplyInnerServiceSMO;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
 import com.java110.vo.api.resourceOrder.ApiResourceOrderDataVo;
 import com.java110.vo.api.resourceOrder.ApiResourceOrderVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +33,15 @@ public class ListAuditHistoryOrdersCmd extends Cmd {
     @Autowired
     private IResourceEntryStoreInnerServiceSMO resourceEntryStoreInnerServiceSMOImpl;
 
+
+    @Autowired
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowUserInnerServiceSMOImpl;
+
+    @Autowired
+    private IOaWorkflowInnerServiceSMO oaWorkflowInnerServiceSMOImpl;
+
+    @Autowired
+    private IPurchaseApplyInnerServiceSMO purchaseApplyInnerServiceSMOImpl;
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
@@ -38,50 +54,95 @@ public class ListAuditHistoryOrdersCmd extends Cmd {
 
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+
+        String userId = context.getReqHeaders().get("user-id");
+        String storeId = context.getReqHeaders().get("store-id");
+
+        OaWorkflowDto oaWorkflowDto = new OaWorkflowDto();
+        oaWorkflowDto.setState(OaWorkflowDto.STATE_COMPLAINT);
+        oaWorkflowDto.setFlowType(OaWorkflowDto.FLOW_TYPE_PURCHASE_APPLY);
+        List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto);
+
+        if (oaWorkflowDtos == null || oaWorkflowDtos.size() < 1) {
+            return;
+        }
+        List<String> flowIds = new ArrayList<>();
+        for (OaWorkflowDto tmpOaWorkflowDto : oaWorkflowDtos) {
+            flowIds.add(WorkflowDto.DEFAULT_PROCESS + tmpOaWorkflowDto.getFlowId());
+        }
+
         AuditUser auditUser = new AuditUser();
-        auditUser.setUserId(reqJson.getString("userId"));
+        auditUser.setProcessDefinitionKeys(flowIds);
+        auditUser.setUserId(userId);
+        auditUser.setStoreId(storeId);
         auditUser.setPage(reqJson.getInteger("page"));
         auditUser.setRow(reqJson.getInteger("row"));
-        auditUser.setStoreId(reqJson.getString("storeId"));
-        //采购已办(默认只查询和当前登录用户相关并且是参与流程审批或者自己提交已经结束的审批数据)
-        long count = resourceEntryStoreInnerServiceSMOImpl.getUserHistoryTaskCount(auditUser);
 
-        List<ApiResourceOrderDataVo> auditOrders = null;
+        long count = oaWorkflowUserInnerServiceSMOImpl.getDefinitionKeysUserHistoryTaskCount(auditUser);
 
-        if (count > 0) {
-            List<PurchaseApplyDto> purchaseApplyDtos = resourceEntryStoreInnerServiceSMOImpl.getUserHistoryTasks(auditUser);
-            auditOrders = BeanConvertUtil.covertBeanList(purchaseApplyDtos, ApiResourceOrderDataVo.class);
-            for (ApiResourceOrderDataVo apiResourceOrderDataVo : auditOrders) {
-                switch (apiResourceOrderDataVo.getState()) {
-                    case "1000":
-                        apiResourceOrderDataVo.setStateName("未审核");
-                        break;
-                    case "1001":
-                        apiResourceOrderDataVo.setStateName("审核中");
-                        break;
-                    case "1002":
-                        apiResourceOrderDataVo.setStateName("已审核");
-                        break;
-                }
-                if (apiResourceOrderDataVo.getResOrderType().equals("10000")) {
-                    apiResourceOrderDataVo.setResOrderTypeName("采购申请");
-                } else {
-                    apiResourceOrderDataVo.setResOrderTypeName("出库申请");
-                }
+        List<JSONObject> datas = null;
 
-            }
+        if (count > 0) {
+            datas = oaWorkflowUserInnerServiceSMOImpl.getDefinitionKeysUserHistoryTasks(auditUser);
+            //刷新 表单数据
+            refreshFormData(datas, reqJson,storeId);
         } else {
-            auditOrders = new ArrayList<>();
+            datas = new ArrayList<>();
         }
 
-        ApiResourceOrderVo apiResourceOrderVo = new ApiResourceOrderVo();
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, datas);
 
-        apiResourceOrderVo.setTotal((int) count);
-        apiResourceOrderVo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row")));
-        apiResourceOrderVo.setResourceOrders(auditOrders);
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+        context.setResponseEntity(responseEntity);
+    }
 
-        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiResourceOrderVo), HttpStatus.OK);
+    private void refreshFormData(List<JSONObject> datas, JSONObject paramIn,String storeId) {
 
-        context.setResponseEntity(responseEntity);
+        List<String> ids = new ArrayList<>();
+        for (JSONObject data : datas) {
+            ids.add(data.getString("id"));
+        }
+        if (ids.size() < 1) {
+            return;
+        }
+
+        //查询 投诉信息
+        PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto();
+        purchaseApplyDto.setStoreId(storeId);
+        purchaseApplyDto.setApplyOrderIds(ids.toArray(new String[ids.size()]));
+        List<PurchaseApplyDto> tmpPurchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplyAndDetails(purchaseApplyDto);
+
+        if (tmpPurchaseApplyDtos == null || tmpPurchaseApplyDtos.size() < 1) {
+            return;
+        }
+
+        for (PurchaseApplyDto tmpPurchaseApplyDto : tmpPurchaseApplyDtos) {
+            switch (tmpPurchaseApplyDto.getState()) {
+                case "1000":
+                    tmpPurchaseApplyDto.setStateName("待审核");
+                    break;
+                case "1001":
+                    tmpPurchaseApplyDto.setStateName("审核中");
+                    break;
+                case "1002":
+                    tmpPurchaseApplyDto.setStateName("已审核");
+                    break;
+            }
+            if (tmpPurchaseApplyDto.getResOrderType().equals("10000")) {
+                tmpPurchaseApplyDto.setResOrderTypeName("采购申请");
+            } else {
+                tmpPurchaseApplyDto.setResOrderTypeName("出库申请");
+            }
+
+
+        }
+        for (JSONObject data : datas) {
+            for (PurchaseApplyDto form : tmpPurchaseApplyDtos) {
+                if (data.getString("id").equals(form.getApplyOrderId())) {
+                    data.putAll(BeanConvertUtil.beanCovertJson(form));
+                }
+            }
+        }
     }
 }

+ 51 - 80
service-store/src/main/java/com/java110/store/cmd/purchaseApply/AuditApplyOrderCmd.java

@@ -5,10 +5,13 @@ import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.purchaseApply.PurchaseApplyDto;
 import com.java110.dto.purchase.PurchaseApplyDto;
+import com.java110.intf.common.IOaWorkflowActivitiInnerServiceSMO;
 import com.java110.intf.common.IPurchaseApplyUserInnerServiceSMO;
 import com.java110.intf.store.IPurchaseApplyInnerServiceSMO;
 import com.java110.intf.store.IPurchaseApplyV1InnerServiceSMO;
+import com.java110.po.purchaseApply.PurchaseApplyPo;
 import com.java110.po.purchase.PurchaseApplyPo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
@@ -32,97 +35,65 @@ public class AuditApplyOrderCmd extends Cmd {
     @Autowired
     private IPurchaseApplyV1InnerServiceSMO purchaseApplyV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowUserInnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
-        Assert.hasKeyAndValue(reqJson, "applyOrderId", "订单号不能为空");
-        Assert.hasKeyAndValue(reqJson, "taskId", "必填,请填写任务ID");
-        Assert.hasKeyAndValue(reqJson, "state", "必填,请填写审核状态");
-        Assert.hasKeyAndValue(reqJson, "remark", "必填,请填写批注");
+
+        Assert.hasKeyAndValue(reqJson, "taskId", "未包含任务");
+        Assert.hasKeyAndValue(reqJson, "id", "订单号不能为空");
+        Assert.hasKeyAndValue(reqJson, "auditCode", "未包含状态");
+        Assert.hasKeyAndValue(reqJson, "auditMessage", "未包含状态说明");
     }
 
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+
+        String storeId = context.getReqHeaders().get("store-id");
+
         PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto();
-        purchaseApplyDto.setTaskId(reqJson.getString("taskId"));
-        purchaseApplyDto.setApplyOrderId(reqJson.getString("applyOrderId"));
-        purchaseApplyDto.setStoreId(reqJson.getString("storeId"));
-        purchaseApplyDto.setAuditCode(reqJson.getString("state"));
-        purchaseApplyDto.setNoticeState(reqJson.getString("noticeState"));
-        purchaseApplyDto.setAuditMessage(reqJson.getString("remark"));
-        purchaseApplyDto.setCurrentUserId(reqJson.getString("userId"));
-        purchaseApplyDto.setCommunityId(reqJson.getString("communityId"));
-        purchaseApplyDto.setNextStaffId(reqJson.getString("nextUserId"));
-        PurchaseApplyDto tmpPurchaseApplyDto = new PurchaseApplyDto();
-        tmpPurchaseApplyDto.setApplyOrderId(reqJson.getString("applyOrderId"));
-        tmpPurchaseApplyDto.setStoreId(reqJson.getString("storeId"));
-        List<PurchaseApplyDto> purchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplys(tmpPurchaseApplyDto);
-        Assert.listOnlyOne(purchaseApplyDtos, "采购申请单存在多条");
-        purchaseApplyDto.setStartUserId(purchaseApplyDtos.get(0).getUserId());
-        purchaseApplyDto.setResOrderType(purchaseApplyDtos.get(0).getResOrderType());
-        purchaseApplyDto.setNextStaffId(reqJson.getString("nextUserId"));
-        if (purchaseApplyDtos.get(0).getState().equals(purchaseApplyDto.STATE_WAIT_DEAL) && reqJson.getString("state").equals("1100")) {  //如果状态是未审核 并且是审核通过,就变成审核中
-            PurchaseApplyPo purchaseApplyPo = new PurchaseApplyPo();
-            purchaseApplyPo.setApplyOrderId(purchaseApplyDtos.get(0).getApplyOrderId());
-            purchaseApplyPo.setState(purchaseApplyDto.STATE_DEALING);
-            int flag = purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
-
-            if (flag < 1) {
-                throw new CmdException("更新数据失败");
-            }
-        } else if ((purchaseApplyDtos.get(0).getState().equals(purchaseApplyDto.STATE_DEALING) || purchaseApplyDtos.get(0).getState().equals(purchaseApplyDto.STATE_AUDITED))
-                && reqJson.getString("state").equals("1100")) {  //如果状态是审核中 并且是审核通过,
-            PurchaseApplyPo purchaseApplyPo = new PurchaseApplyPo();
-            purchaseApplyPo.setApplyOrderId(purchaseApplyDtos.get(0).getApplyOrderId());
-            int flag = purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
-
-            if (flag < 1) {
-                throw new CmdException("更新数据失败");
-            }
-        } else if (purchaseApplyDtos.get(0).getState().equals(purchaseApplyDto.STATE_NOT_PASS) && reqJson.getString("state").equals("1200")) {  //如果状态未通过 并且是结束,
-            PurchaseApplyPo purchaseApplyPo = new PurchaseApplyPo();
-            purchaseApplyPo.setApplyOrderId(purchaseApplyDtos.get(0).getApplyOrderId());
-            int flag = purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
+        purchaseApplyDto.setApplyOrderId(reqJson.getString("id"));
+        List<PurchaseApplyDto> purchaseApplyDtos = purchaseApplyV1InnerServiceSMOImpl.queryPurchaseApplys(purchaseApplyDto);
 
-            if (flag < 1) {
-                throw new CmdException("更新数据失败");
-            }
-        }
+        Assert.listOnlyOne(purchaseApplyDtos, "采购申请不存在");
 
-        boolean isLastTask = purchaseApplyUserInnerServiceSMOImpl.completeTask(purchaseApplyDto);
-        ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK);
-        if (isLastTask && purchaseApplyDtos.get(0).getState().equals(purchaseApplyDto.STATE_AUDITED)) {//已经是已审核入库完成的状态进行更新状态
-            updatePurchaseApply(reqJson);
-        }
-        if (reqJson.getString("state").equals("1200") && !isLastTask) {//审核拒绝时,状态变为拒绝状态
-            PurchaseApplyPo purchaseApplyPo = new PurchaseApplyPo();
-            purchaseApplyPo.setApplyOrderId(purchaseApplyDtos.get(0).getApplyOrderId());
-            purchaseApplyPo.setState(purchaseApplyDto.STATE_NOT_PASS);
-            int flag = purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
-
-            if (flag < 1) {
-                throw new CmdException("更新数据失败");
+        //状态 W待审核 D 审核中 C 审核完成 D 审核失败
+        PurchaseApplyPo purchaseApplyPo = new PurchaseApplyPo();
+        purchaseApplyPo.setApplyOrderId(purchaseApplyDtos.get(0).getApplyOrderId());
+        reqJson.put("id", reqJson.getString("id"));
+        reqJson.put("storeId", storeId);
+
+
+        //业务办理
+        if ("1100".equals(reqJson.getString("auditCode"))
+                || "1500".equals(reqJson.getString("auditCode"))) { //办理操作
+            reqJson.put("nextUserId", reqJson.getString("staffId"));
+            boolean isLastTask = oaWorkflowUserInnerServiceSMOImpl.completeTask(reqJson);
+            if (isLastTask) {
+                purchaseApplyPo.setState(PurchaseApplyDto.STATE_END);
+            } else {
+                purchaseApplyPo.setState(PurchaseApplyDto.STATE_DEALING);
             }
+            purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
+            //完成当前流程 插入下一处理人
+        } else if ("1300".equals(reqJson.getString("auditCode"))) { //转单操作
+            reqJson.put("nextUserId", reqJson.getString("staffId"));
+            oaWorkflowUserInnerServiceSMOImpl.changeTaskToOtherUser(reqJson);
+            //reqJson.put("state", "1004"); //工单转单
+            purchaseApplyPo.setState(PurchaseApplyDto.STATE_DEALING);
+            purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
+        } else if ("1200".equals(reqJson.getString("auditCode"))
+                || "1400".equals(reqJson.getString("auditCode"))
+        ) { //退回操作
+            oaWorkflowUserInnerServiceSMOImpl.goBackTask(reqJson);
+            //reqJson.put("state", "1003"); //工单退单
+            purchaseApplyPo.setState(PurchaseApplyDto.STATE_NOT_PASS);
+            purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
+        } else {
+            throw new IllegalArgumentException("不支持的类型");
         }
     }
 
-    /**
-     * @param paramInJson 接口调用放传入入参
-     * @return 订单服务能够接受的报文
-     */
-    private void updatePurchaseApply(JSONObject paramInJson) {
-        PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto();
-        purchaseApplyDto.setStoreId(paramInJson.getString("storeId"));
-        purchaseApplyDto.setApplyOrderId(paramInJson.getString("applyOrderId"));
-        List<PurchaseApplyDto> purchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplys(purchaseApplyDto);
-        Assert.listOnlyOne(purchaseApplyDtos, "存在多条记录,或不存在数据" + purchaseApplyDto.getApplyOrderId());
-        JSONObject businessComplaint = new JSONObject();
-        businessComplaint.putAll(BeanConvertUtil.beanCovertMap(purchaseApplyDtos.get(0)));
-        PurchaseApplyPo purchaseApplyPo = BeanConvertUtil.covertBean(businessComplaint, PurchaseApplyPo.class);
-        purchaseApplyPo.setState(purchaseApplyDto.STATE_END);
-        int flag = purchaseApplyV1InnerServiceSMOImpl.updatePurchaseApply(purchaseApplyPo);
-
-        if (flag < 1) {
-            throw new CmdException("更新数据失败");
-        }
-    }
+
 }