|
@@ -50,6 +50,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -165,7 +166,6 @@ public class CostInfoController {
|
|
|
@PostMapping("/listRuntimeTask")
|
|
|
public ResMsg listRuntimeTask(
|
|
|
@RequestBody ListRuntimeTaskRequestVo listRuntimeTaskRequestVo) {
|
|
|
- Date queryStartTime = new Date();
|
|
|
String username = TokenData.takeFromRequest().getLoginName();
|
|
|
MyPageData<Task> pageData = flowApiService.getTaskListByUserName(
|
|
|
username, listRuntimeTaskRequestVo);
|
|
@@ -208,9 +208,6 @@ public class CostInfoController {
|
|
|
flowTaskVoListAd.add(taskVo);
|
|
|
}
|
|
|
}
|
|
|
- Date queryEndTime = new Date();
|
|
|
- System.err.println("本次查询结束时间:" + queryEndTime);
|
|
|
- System.err.println("本次查询耗时+++++:" + (queryEndTime.getTime() - queryStartTime.getTime()));
|
|
|
return ResMsg.newInstance(CodeEnum.OK, MyPageUtil.makeResponseData(flowTaskVoListAd, pageData.getTotalCount()));
|
|
|
}
|
|
|
|
|
@@ -516,6 +513,9 @@ public class CostInfoController {
|
|
|
if (pageNum == 1) {
|
|
|
for (int i = 0; i < 10; i++) {
|
|
|
flowTaskVoListByQueryTypeRsg.add(flowTaskVoListByQueryType.get(i));
|
|
|
+ if (i == flowTaskVoListByQueryType.size() - 1) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
for (int i = (pageNum - 1) * 10; i < pageNum * 10 - 1; i++) {
|
|
@@ -530,6 +530,87 @@ public class CostInfoController {
|
|
|
Set<String> processInstanceIds = new HashSet<>();
|
|
|
Date getIdBefore = new Date();
|
|
|
System.err.println("获取ID数据前:" + getIdBefore.getTime());
|
|
|
+ //查询的任务分类是新建项目时,需要筛选新建项目的表单数据
|
|
|
+ if (queryType.equals("新建项目")) {
|
|
|
+ Map<String, Object> byTaskAdd = flowTaskAssignmentByProjectAdd(flowTaskVoListByQueryTypeRsg, queryType);
|
|
|
+ projectIds = (Set<Integer>) byTaskAdd.get("projectIds");
|
|
|
+ processInstanceIds = (Set<String>) byTaskAdd.get("processInstanceIds");
|
|
|
+ flowTaskVoListByQueryTypeRsg = (List<FlowTaskVo>) byTaskAdd.get("flowTaskVoListByQueryTypeRsg");
|
|
|
+ }
|
|
|
+ //查询的任务分类是新建项目任务时,需要筛选新建任务的表单数据
|
|
|
+ if (queryType.equals("新建任务")) {
|
|
|
+ Map<String, Object> byTaskAdd = flowTaskAssignmentByTaskAdd(flowTaskVoListByQueryTypeRsg, queryType);
|
|
|
+ projectIds = (Set<Integer>) byTaskAdd.get("projectIds");
|
|
|
+ processInstanceIds = (Set<String>) byTaskAdd.get("processInstanceIds");
|
|
|
+ flowTaskVoListByQueryTypeRsg = (List<FlowTaskVo>) byTaskAdd.get("flowTaskVoListByQueryTypeRsg");
|
|
|
+ }
|
|
|
+ //查询的任务分类是人员工时时,需要筛选人员工时的表单数据
|
|
|
+ if (queryType.equals("人员工时")) {
|
|
|
+ Map<String, Object> byTaskAdd = flowTaskAssignmentByManhour(flowTaskVoListByQueryTypeRsg, queryType);
|
|
|
+ projectIds = (Set<Integer>) byTaskAdd.get("projectIds");
|
|
|
+ processInstanceIds = (Set<String>) byTaskAdd.get("processInstanceIds");
|
|
|
+ flowTaskVoListByQueryTypeRsg = (List<FlowTaskVo>) byTaskAdd.get("flowTaskVoListByQueryTypeRsg");
|
|
|
+ }
|
|
|
+ //查询的任务分类是费用报销时,需要筛选费用报销的表单数据
|
|
|
+ if (queryType.equals("费用报销")) {
|
|
|
+ Map<String, Object> byTaskAdd = flowTaskAssignmentByExpense(flowTaskVoListByQueryTypeRsg, queryType);
|
|
|
+ projectIds = (Set<Integer>) byTaskAdd.get("projectIds");
|
|
|
+ processInstanceIds = (Set<String>) byTaskAdd.get("processInstanceIds");
|
|
|
+ flowTaskVoListByQueryTypeRsg = (List<FlowTaskVo>) byTaskAdd.get("flowTaskVoListByQueryTypeRsg");
|
|
|
+ }
|
|
|
+
|
|
|
+ Date getIdAfter = new Date();
|
|
|
+ System.err.println("获取ID数据后:" + getIdAfter.getTime());
|
|
|
+ System.err.println("获取ID数据耗时+++++:" + (getIdAfter.getTime() - getIdBefore.getTime()));
|
|
|
+ //查询到任务信息中包含的全部项目和表单数据
|
|
|
+ List<ProjectInfoEntity> projectInfos = projectInfoMapper.findAllById(projectIds);
|
|
|
+ List<FlowWorkOrder> instanceIdIn = flowWorkOrderService.findAllByProcessInstanceIdIn(processInstanceIds);
|
|
|
+
|
|
|
+ for (FlowTaskVo taskVo : flowTaskVoListByQueryTypeRsg) {
|
|
|
+ for (ProjectInfoEntity info : projectInfos) {
|
|
|
+ if (info.getProjectId().equals(taskVo.getProjectId())) {
|
|
|
+ taskVo.setProjectName(info.getProjectName() == null ? "" : info.getProjectName());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (FlowWorkOrder order : instanceIdIn) {
|
|
|
+ if (order.getProcessInstanceId().equals(taskVo.getProcessInstanceId())) {
|
|
|
+ taskVo.setProcessInstanceInitiator(order.getSubmitUsername());
|
|
|
+ taskVo.setFlowTaskStatus(order.getFlowStatus() + "");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResMsg.newInstance(CodeEnum.OK, MyPageUtil.makeResponseData(flowTaskVoListByQueryTypeRsg, Long.valueOf(flowTaskVoListByQueryType.size())));
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询的任务分类是新建项目时,需要筛选项目流程记录的表单数据
|
|
|
+ private Map<String, Object> flowTaskAssignmentByProjectAdd(List<FlowTaskVo> flowTaskVoListByQueryTypeRsg, String queryType) {
|
|
|
+ Set<Integer> projectIds = new HashSet<>();
|
|
|
+ Set<String> processInstanceIds = new HashSet<>();
|
|
|
+ for (FlowTaskVo taskVo : flowTaskVoListByQueryTypeRsg) {
|
|
|
+ Integer projectId = null;
|
|
|
+ JSONObject jsonData = viewUserTaskDatasource(taskVo.getProcessInstanceId(), taskVo.getTaskId()).getData();
|
|
|
+ Map<String, Object> masterAndOneToOne = (Map<String, Object>) jsonData.get("masterAndOneToOne");
|
|
|
+ if (masterAndOneToOne.get("project_id") != null) {
|
|
|
+ projectId = Integer.parseInt(masterAndOneToOne.get("project_id").toString());
|
|
|
+ taskVo.setProjectId(projectId);
|
|
|
+ }
|
|
|
+ taskVo.setCostType(queryType);
|
|
|
+ projectIds.add(projectId);
|
|
|
+ processInstanceIds.add(taskVo.getProcessInstanceId());
|
|
|
+ }
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("projectIds", projectIds);
|
|
|
+ map.put("processInstanceIds", processInstanceIds);
|
|
|
+ map.put("flowTaskVoListByQueryTypeRsg", flowTaskVoListByQueryTypeRsg);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询的任务分类是新建项目任务时,需要筛选新建任务的表单数据
|
|
|
+ private Map<String, Object> flowTaskAssignmentByTaskAdd(List<FlowTaskVo> flowTaskVoListByQueryTypeRsg, String queryType) {
|
|
|
+ Set<Integer> projectIds = new HashSet<>();
|
|
|
+ Set<String> processInstanceIds = new HashSet<>();
|
|
|
for (FlowTaskVo taskVo : flowTaskVoListByQueryTypeRsg) {
|
|
|
Integer projectId = null;
|
|
|
JSONObject jsonData = viewUserTaskDatasource(taskVo.getProcessInstanceId(), taskVo.getTaskId()).getData();
|
|
@@ -542,6 +623,25 @@ public class CostInfoController {
|
|
|
if (masterAndOneToOne.get("task_id") != null) {
|
|
|
taskVo.setApplyDataId(Integer.parseInt(masterAndOneToOne.get("task_id").toString()));
|
|
|
}
|
|
|
+ taskVo.setCostType(queryType);
|
|
|
+ projectIds.add(projectId);
|
|
|
+ processInstanceIds.add(taskVo.getProcessInstanceId());
|
|
|
+ }
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("projectIds", projectIds);
|
|
|
+ map.put("processInstanceIds", processInstanceIds);
|
|
|
+ map.put("flowTaskVoListByQueryTypeRsg", flowTaskVoListByQueryTypeRsg);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询的任务分类是新建项目任务时,需要筛选新建任务的表单数据
|
|
|
+ private Map<String, Object> flowTaskAssignmentByManhour(List<FlowTaskVo> flowTaskVoListByQueryTypeRsg, String queryType) {
|
|
|
+ Set<Integer> projectIds = new HashSet<>();
|
|
|
+ Set<String> processInstanceIds = new HashSet<>();
|
|
|
+ for (FlowTaskVo taskVo : flowTaskVoListByQueryTypeRsg) {
|
|
|
+ Integer projectId = null;
|
|
|
+ JSONObject jsonData = viewUserTaskDatasource(taskVo.getProcessInstanceId(), taskVo.getTaskId()).getData();
|
|
|
+ Map<String, Object> masterAndOneToOne = (Map<String, Object>) jsonData.get("masterAndOneToOne");
|
|
|
//人员工时分类中,获取的项目id和工时流程表中保存的工时id
|
|
|
if (masterAndOneToOne.get("project_name") != null) {
|
|
|
projectId = Integer.parseInt(masterAndOneToOne.get("project_name").toString());
|
|
@@ -550,6 +650,30 @@ public class CostInfoController {
|
|
|
if (masterAndOneToOne.get("man_id") != null) {
|
|
|
taskVo.setApplyDataId(Integer.parseInt(masterAndOneToOne.get("man_id").toString()));
|
|
|
}
|
|
|
+ taskVo.setCostType(queryType);
|
|
|
+ projectIds.add(projectId);
|
|
|
+ processInstanceIds.add(taskVo.getProcessInstanceId());
|
|
|
+ }
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("projectIds", projectIds);
|
|
|
+ map.put("processInstanceIds", processInstanceIds);
|
|
|
+ map.put("flowTaskVoListByQueryTypeRsg", flowTaskVoListByQueryTypeRsg);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询的任务分类是费用报销时,需要筛选费用报销的表单数据
|
|
|
+ private Map<String, Object> flowTaskAssignmentByExpense(List<FlowTaskVo> flowTaskVoListByQueryTypeRsg, String queryType) {
|
|
|
+ Set<Integer> projectIds = new HashSet<>();
|
|
|
+ Set<String> processInstanceIds = new HashSet<>();
|
|
|
+ for (FlowTaskVo taskVo : flowTaskVoListByQueryTypeRsg) {
|
|
|
+ Integer projectId = null;
|
|
|
+ JSONObject jsonData = viewUserTaskDatasource(taskVo.getProcessInstanceId(), taskVo.getTaskId()).getData();
|
|
|
+ Map<String, Object> masterAndOneToOne = (Map<String, Object>) jsonData.get("masterAndOneToOne");
|
|
|
+ //获取的项目id
|
|
|
+ if (masterAndOneToOne.get("project_name") != null) {
|
|
|
+ projectId = Integer.parseInt(masterAndOneToOne.get("project_name").toString());
|
|
|
+ taskVo.setProjectId(projectId);
|
|
|
+ }
|
|
|
//费用报销分类中,获取费用申请记录流程表中的【申请费用,总价,住宿天数】
|
|
|
if (masterAndOneToOne.get("application_fee") != null) {
|
|
|
taskVo.setApplicationFee(masterAndOneToOne.get("application_fee").toString());
|
|
@@ -563,46 +687,22 @@ public class CostInfoController {
|
|
|
//费用报销分类中,每个审批项在各自记录表中的主键id
|
|
|
if (masterAndOneToOne.get("id") != null) {
|
|
|
taskVo.setApplyDataId(Integer.parseInt(masterAndOneToOne.get("id").toString()));
|
|
|
- }
|
|
|
- if (masterAndOneToOne.get("communication_id") != null) {
|
|
|
+ } else if (masterAndOneToOne.get("communication_id") != null) {
|
|
|
taskVo.setApplyDataId(Integer.parseInt(masterAndOneToOne.get("communication_id").toString()));
|
|
|
- }
|
|
|
- if (masterAndOneToOne.get("purchase_id") != null) {
|
|
|
+ } else if (masterAndOneToOne.get("purchase_id") != null) {
|
|
|
taskVo.setApplyDataId(Integer.parseInt(masterAndOneToOne.get("purchase_id").toString()));
|
|
|
}
|
|
|
//费用报销分类中,每个审批项的费用类别
|
|
|
if (masterAndOneToOne.get("cost_type") != null) {
|
|
|
taskVo.setCostType(masterAndOneToOne.get("cost_type").toString());
|
|
|
}
|
|
|
- taskVo.setCostType(queryType);
|
|
|
projectIds.add(projectId);
|
|
|
processInstanceIds.add(taskVo.getProcessInstanceId());
|
|
|
}
|
|
|
- Date getIdAfter = new Date();
|
|
|
- System.err.println("获取ID数据后:" + getIdAfter.getTime());
|
|
|
- System.err.println("获取ID数据耗时+++++:" + (getIdAfter.getTime() - getIdBefore.getTime()));
|
|
|
-
|
|
|
- //查询到任务信息中包含的全部项目和表单数据
|
|
|
- List<ProjectInfoEntity> projectInfos = projectInfoMapper.findAllById(projectIds);
|
|
|
- List<FlowWorkOrder> instanceIdIn = flowWorkOrderService.findAllByProcessInstanceIdIn(processInstanceIds);
|
|
|
-
|
|
|
- for (FlowTaskVo taskVo : flowTaskVoListByQueryTypeRsg) {
|
|
|
- for (ProjectInfoEntity info : projectInfos) {
|
|
|
- if (info.getProjectId().equals(taskVo.getProjectId())) {
|
|
|
- taskVo.setProjectName(info.getProjectName() == null ? "" : info.getProjectName());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- for (FlowWorkOrder order : instanceIdIn) {
|
|
|
- if (order.getProcessInstanceId().equals(taskVo.getProcessInstanceId())) {
|
|
|
- taskVo.setProcessInstanceInitiator(order.getSubmitUsername());
|
|
|
- taskVo.setFlowTaskStatus(order.getFlowStatus() + "");
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return ResMsg.newInstance(CodeEnum.OK, MyPageUtil.makeResponseData(flowTaskVoListByQueryTypeRsg, Long.valueOf(flowTaskVoListByQueryType.size())));
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("projectIds", projectIds);
|
|
|
+ map.put("processInstanceIds", processInstanceIds);
|
|
|
+ map.put("flowTaskVoListByQueryTypeRsg", flowTaskVoListByQueryTypeRsg);
|
|
|
+ return map;
|
|
|
}
|
|
|
-
|
|
|
}
|