liuyc před 2 roky
rodič
revize
8ff8686107

+ 3 - 2
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/LogHistoryServiceImpl.java

@@ -325,7 +325,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                         if (record != null) {
                             TaskProcessInfo task = jdbcTemplate.query("select status from c_task_process_info where id = " + record.getTaskId(), new BeanPropertyRowMapper<>(TaskProcessInfo.class)).stream().findAny().orElse(null);
                             if (task != null) {
-                                vos.setStatus(task.getStatus().equals(1) ? 1 : (task.getStatus().equals(2) ? 2 : (task.getStatus().equals(3) ? 3 : 0)));
+                                vos.setStatus(task.getStatus());
                                 vos.setStatusName(task.getStatus().equals(1) ? "待审批" : (task.getStatus().equals(2) ? "已审批" : (task.getStatus().equals(3) ? "已驳回" : "未提交审批")));
                             }
                         }
@@ -358,7 +358,8 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
 
                         resultList.add(vos);
                     }
-                    vo.setTaskList(resultList);
+                    List<TaskPlanInfoVO> collect = resultList.stream().sorted(Comparator.comparing(TaskPlanInfoVO::getStatus)).collect(Collectors.toList());
+                    vo.setTaskList(collect);
                 }
                 return vo;
             }

+ 53 - 18
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

@@ -44,8 +44,10 @@ import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.LocalDate;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -418,7 +420,25 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
             queryWrapper.lambda().eq(ProjectCostBudget::getDeptId, dto.getDeptId());
         }
         if (ObjectUtil.isNotEmpty(dto.getTaskStatus())) {
-            queryWrapper.lambda().eq(ProjectCostBudget::getStatus, dto.getTaskStatus());
+            if (dto.getTaskStatus().equals("2")) {
+                //已完成任务
+                queryWrapper.lambda().eq(ProjectCostBudget::getStatus, 4);
+            } else if (dto.getTaskStatus().equals("1")) {
+                //未完成任务
+                queryWrapper.lambda().in(ProjectCostBudget::getStatus, 1, 2, 3);
+            } else if (dto.getTaskStatus().equals("3")) {
+                //逾期完成
+                List<TaskPlanOverdueStatusVO> query = jdbcTemplate.query("select * from c_task_plan_overdue_status where user_id = " + SecureUtil.getUserId(), new BeanPropertyRowMapper<>(TaskPlanOverdueStatusVO.class));
+                List<Long> taskIds = query.stream().map(TaskPlanOverdueStatusVO::getPlanTaskId).collect(Collectors.toList());
+                queryWrapper.lambda().in(ProjectCostBudget::getId, taskIds);
+            }
+            if (dto.getTaskStatus().equals("4")) {
+                //逾期未完成
+                Date now = DateUtil.now();
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                String format = simpleDateFormat.format(now);
+                queryWrapper.lambda().in(ProjectCostBudget::getStatus, 1, 2, 3).lt(ProjectCostBudget::getPlanEndTime, format);
+            }
         }
         if (ObjectUtil.isNotEmpty(dto.getStartTime()) && ObjectUtil.isNotEmpty(dto.getEndTime())) {
             queryWrapper.lambda().ge(ProjectCostBudget::getPlanStartTime, dto.getStartTime()).le(ProjectCostBudget::getPlanEndTime, dto.getEndTime());
@@ -435,6 +455,14 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
 
         //构造page参数
         List<ProjectCostBudget> records = pages.getRecords();
+        List<String> taskIds = records.stream().map(ProjectCostBudget::getId).map(String::valueOf).collect(Collectors.toList());
+        //获取所有审批任务与计划任务关系
+        Map<String, ExpenseTaskRecord> taskRecordMaps = new LinkedHashMap<>();
+        if (taskIds.size() > 0) {
+            List<ExpenseTaskRecord> expenseTaskRecords = jdbcTemplate.query("select task_id,expense_info_id from c_expense_task_record where expense_info_type = 1 and expense_info_id in(" + StringUtils.join(taskIds, ",") + ")", new BeanPropertyRowMapper<>(ExpenseTaskRecord.class));
+            taskRecordMaps = expenseTaskRecords.stream().collect(Collectors.toMap(ExpenseTaskRecord::getExpenseInfoId, Function.identity()));
+        }
+
         List<TaskPlanInfoVO> vos = new ArrayList<>();
         for (ProjectCostBudget obj : records) {
             TaskPlanInfoVO vo = new TaskPlanInfoVO();
@@ -443,7 +471,19 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
             vo.setTaskDesc(obj.getPlanTaskDesc());
             vo.setPlanTarget(obj.getPlanTarget());
 
-            vo.setStatusName(null); //TODO 任务状态 多种
+            //判断任务状态
+            ExpenseTaskRecord record = taskRecordMaps.getOrDefault(String.valueOf(vo.getId()), null);
+            if (record != null) {
+                TaskProcessInfo task = jdbcTemplate.query("select status from c_task_process_info where id = " + record.getTaskId(), new BeanPropertyRowMapper<>(TaskProcessInfo.class)).stream().findAny().orElse(null);
+                if (task != null) {
+                    vo.setStatus(task.getStatus());
+                    vo.setStatusName(task.getStatus().equals(1) ? "待审批" : (task.getStatus().equals(2) ? "已审批" : (task.getStatus().equals(3) ? "已驳回" : "未提交审批")));
+                }
+            }
+            if (StringUtils.isEmpty(vo.getStatusName())) {
+                vo.setStatus(0);
+                vo.setStatusName("未提交审批");
+            }
 
             for (ControlProjectInfo projectInfo : controlProjectInfos) {
                 if (projectInfo.getId().equals(obj.getProjectId())) {
@@ -672,6 +712,10 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
                 List<String> ids = projectCostBudgetList.stream().map(ProjectCostBudget::getId).map(String::valueOf).collect(Collectors.toList());
                 String budgetIds = StringUtils.join(ids, ",");
                 jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 10 and expense_info_id = '" + budgetIds + "' ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + ",'" + budgetIds + "',10)");
+
+                //修改projectCostBudgetList的approve=2(审批中)
+                projectCostBudgetService.update(Wrappers.<ProjectCostBudget>lambdaUpdate().set(ProjectCostBudget::getApprove, 2).in(ProjectCostBudget::getId, ids));
+
                 return true;
             }
         }
@@ -689,11 +733,11 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
         switch (businessDataType) {
             case 1: //计划任务
                 if (taskStatus == 2) {
-                    //已完成 = 已完成
-                    jdbcTemplate.execute("update c_project_cost_budget set status = 4 where id = " + dataId);
+                    //task_approve = 1 已审批 , status = 4 已完成
+                    jdbcTemplate.execute("update c_project_cost_budget set task_approve = 1,status = 4 where id = " + dataId);
                 } else if (taskStatus == 3) {
-                    //已驳回 = 未开始
-                    jdbcTemplate.execute("update c_project_cost_budget set status = 1 where id = " + dataId);
+                    //task_approve = 0 未开始 , status = 2 进行中
+                    jdbcTemplate.execute("update c_project_cost_budget set task_approve = 0,status = 2 where id = " + dataId);
                 }
                 break;
 
@@ -723,11 +767,12 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
                 break;
             case 10: //成本测算
                 if (taskStatus == 2) {
-                    //已完成 = 已完成(修改成本测算的数据状态)dataId = ids
+                    //已完成 = approve = 1
                     jdbcTemplate.execute("update c_project_cost_budget set approve = 1 where id in(" + dataId + ")");
 
                 } else if (taskStatus == 3) {
-                    //已驳回 = 不做处理,驳回后依然是未上报
+                    //已驳回 = approve = 0
+                    jdbcTemplate.execute("update c_project_cost_budget set approve = 0 where id in(" + dataId + ")");
                     break;
                 }
                 break;
@@ -784,16 +829,6 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
                         }
                     }
                 }
-
-                break;
-            case 3:
-                //支付 不做处理,只存储记录,关联项目合同段后,在项目处统计通过的任务的金额
-                break;
-            case 5:
-                //采购 不做处理,只存储记录,在经营预算处统计通过的任务的金额
-                break;
-            case 8:
-                //外包 不做处理,只存储记录,关联项目后,在项目处统计通过的任务的金额
                 break;
         }
     }