瀏覽代碼

优化采购代码

java110 2 年之前
父節點
當前提交
5ec5d7c9ee

+ 3 - 1
java110-bean/src/main/java/com/java110/dto/oaWorkflow/OaWorkflowDto.java

@@ -19,7 +19,9 @@ public class OaWorkflowDto extends PageDto implements Serializable {
     public static final String STATE_COMPLAINT = "C";//部署完成
 
     public static final String FLOW_TYPE_ITEM_RELEASE="2002";//物品放行
-    public static final String FLOW_TYPE_RESOURCE="5005";//采购
+    public static final String FLOW_TYPE_PURCHASE_APPLY="5005";//采购
+    public static final String FLOW_TYPE_RESOURCE_OUT="6006";//领用
+    public static final String FLOW_TYPE_ALLOCATION="7007";//调拨
     public static final String FLOW_TYPE_VISIT="3003";// 访客审核
     public static final String FLOW_TYPE_PUBLIC="1001";//物品放行
 

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/purchase/PurchaseApplyDto.java

@@ -82,6 +82,8 @@ public class PurchaseApplyDto extends PageDto implements Serializable {
 
     private String endTime;
 
+    private String resOrderTypeName;
+
     public String getResOrderType() {
         return resOrderType;
     }
@@ -425,4 +427,12 @@ public class PurchaseApplyDto extends PageDto implements Serializable {
     public void setEndTime(String endTime) {
         this.endTime = endTime;
     }
+
+    public String getResOrderTypeName() {
+        return resOrderTypeName;
+    }
+
+    public void setResOrderTypeName(String resOrderTypeName) {
+        this.resOrderTypeName = resOrderTypeName;
+    }
 }

+ 5 - 0
java110-bean/src/main/java/com/java110/dto/resource/ResourceAuditFlowDto.java

@@ -16,6 +16,11 @@ import java.util.Date;
  **/
 public class ResourceAuditFlowDto extends OaWorkflowDto implements Serializable {
 
+
+    public static final String AUDIT_TYPE_PURCHASE_APPLY="10001";//采购
+    public static final String AUDIT_TYPE_RESOURCE_OUT="10002";//领用
+    public static final String AUDIT_TYPE_ALLOCATION="10003";//调拨流程
+
     private String rafId;
     private String remark;
     private String storeId;

+ 11 - 0
java110-interface/src/main/java/com/java110/intf/common/IOaWorkflowActivitiInnerServiceSMO.java

@@ -220,6 +220,17 @@ public interface IOaWorkflowActivitiInnerServiceSMO {
     @RequestMapping(value = "/getTaskCurrentUser", method = RequestMethod.POST)
     JSONObject getTaskCurrentUser(@RequestBody JSONObject reqJson);
 
+
+    /**
+     *
+     * @param reqJson{
+     *               taskId:'',
+     *               startUserId:''
+     * }
+     * @return
+     */
+    @RequestMapping(value = "/getCurrentNodeTask", method = RequestMethod.POST)
+    JSONObject getCurrentNodeTask(@RequestBody JSONObject reqJson);
     /**
      *
      * @param reqJson{

+ 104 - 29
service-common/src/main/java/com/java110/common/cmd/auditUser/ListAuditOrdersCmd.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,10 +33,20 @@ public class ListAuditOrdersCmd extends Cmd {
     @Autowired
     private IResourceEntryStoreInnerServiceSMO resourceEntryStoreInnerServiceSMOImpl;
 
+    @Autowired
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowUserInnerServiceSMOImpl;
+
+    @Autowired
+    private IOaWorkflowInnerServiceSMO oaWorkflowInnerServiceSMOImpl;
+
+    @Autowired
+    private IPurchaseApplyInnerServiceSMO purchaseApplyInnerServiceSMOImpl;
+
+    @Autowired
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
-        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
-        Assert.hasKeyAndValue(reqJson, "userId", "必填,请填写用户ID");
         Assert.hasKeyAndValue(reqJson, "row", "必填,请填写每页显示数");
         Assert.hasKeyAndValue(reqJson, "page", "必填,请填写页数");
 
@@ -38,44 +55,102 @@ public class ListAuditOrdersCmd 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.getUserTaskCount(auditUser);
 
-        List<ApiResourceOrderDataVo> auditOrders = null;
+        long count = oaWorkflowUserInnerServiceSMOImpl.getDefinitionKeysUserTaskCount(auditUser);
 
-        if (count > 0) {
-            List<PurchaseApplyDto> purchaseApplyDtos = resourceEntryStoreInnerServiceSMOImpl.getUserTasks(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.getDefinitionKeysUserTasks(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("出库申请");
+            }
+
+
+        }
+        JSONObject curTaskNode = null;
+        for (JSONObject data : datas) {
+
+            //todo 计算 当前节点名称
+            curTaskNode = new JSONObject();
+            curTaskNode.put("taskId", data.getString("taskId"));
+            curTaskNode = oaWorkflowActivitiInnerServiceSMOImpl.getCurrentNodeTask(curTaskNode);
+            data.put("curTaskName", curTaskNode.getString("curTaskName"));
+
+            for (PurchaseApplyDto form : tmpPurchaseApplyDtos) {
+                if (data.getString("id").equals(form.getApplyOrderId())) {
+                    data.putAll(BeanConvertUtil.beanCovertJson(form));
+                }
+            }
+        }
     }
 }

+ 26 - 2
service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowActivitiInnerServiceSMOImpl.java

@@ -284,8 +284,8 @@ public class OaWorkflowActivitiInnerServiceSMOImpl extends BaseServiceSMO implem
      *
      * @param user 用户信息{
      *             processDefinitionKeys:[],
-     *
-     * }
+     *             <p>
+     *             }
      */
     public List<JSONObject> getDefinitionKeysUserTasks(@RequestBody AuditUser user) {
         TaskService taskService = processEngine.getTaskService();
@@ -714,6 +714,30 @@ public class OaWorkflowActivitiInnerServiceSMOImpl extends BaseServiceSMO implem
 
     }
 
+    /**
+     * 获取当前节点信息
+     *
+     * @param reqJson{ taskId:'',
+     *                 startUserId:''
+     *                 }
+     * @return
+     */
+    public JSONObject getCurrentNodeTask(@RequestBody JSONObject reqJson) {
+        JSONObject curNode = new JSONObject();
+        TaskService taskService = processEngine.getTaskService();
+        Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult();
+        if (task == null) {
+            throw new IllegalArgumentException("任务已处理");
+        }
+        BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
+
+        FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey());
+        flowNode.getName();
+
+        curNode.put("curTaskName",flowNode.getName());
+        return curNode;
+    }
+
     @Override
     public List<JSONObject> nextAllNodeTaskList(@RequestBody JSONObject reqJson) {
         List<JSONObject> tasks = new ArrayList<>();

+ 10 - 1
service-store/src/main/java/com/java110/store/cmd/resourceStore/SaveResourceAuditFlowCmd.java

@@ -25,6 +25,7 @@ import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.oaWorkflow.OaWorkflowDto;
 import com.java110.dto.oaWorkflow.WorkflowModelDto;
+import com.java110.dto.resource.ResourceAuditFlowDto;
 import com.java110.intf.common.IWorkflowInnerServiceSMO;
 import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
 import com.java110.intf.oa.IOaWorkflowXmlInnerServiceSMO;
@@ -86,7 +87,15 @@ public class SaveResourceAuditFlowCmd extends Cmd {
         oaWorkflowPo.setStoreId(storeId);
         oaWorkflowPo.setFlowId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_flowId));
         oaWorkflowPo.setFlowName(reqJson.getString("flowName"));
-        oaWorkflowPo.setFlowType(OaWorkflowDto.FLOW_TYPE_RESOURCE);
+
+        String auditType = reqJson.getString("auditType");
+        if(ResourceAuditFlowDto.AUDIT_TYPE_PURCHASE_APPLY.equals(auditType)) {
+            oaWorkflowPo.setFlowType(OaWorkflowDto.FLOW_TYPE_PURCHASE_APPLY);
+        }else if(ResourceAuditFlowDto.AUDIT_TYPE_RESOURCE_OUT.equals(auditType)) {
+            oaWorkflowPo.setFlowType(OaWorkflowDto.FLOW_TYPE_RESOURCE_OUT);
+        }else{
+            oaWorkflowPo.setFlowType(OaWorkflowDto.FLOW_TYPE_ALLOCATION);
+        }
 
         //创建model
         WorkflowModelDto workflowModelDto = new WorkflowModelDto();