liuyc 2 лет назад
Родитель
Сommit
6a249e1064
15 измененных файлов с 92 добавлено и 47 удалено
  1. 4 1
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/LogHistoryInfoVO.java
  2. 3 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskPlanInfoVO.java
  3. 17 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskPlanOverdueStatusVO.java
  4. 0 17
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskProjectCostBudgetVO.java
  5. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/controller/TaskProcessController.java
  6. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AttendanceTripServiceImpl.java
  7. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMFinancialReimbursementServiceImpl.java
  8. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMInvoiceServiceImpl.java
  9. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMLoanServiceImpl.java
  10. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMOutsourcingPayServiceImpl.java
  11. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPayServiceImpl.java
  12. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPurchaseServiceImpl.java
  13. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMUseCarServiceImpl.java
  14. 51 11
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/LogHistoryServiceImpl.java
  15. 8 9
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

+ 4 - 1
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/LogHistoryInfoVO.java

@@ -18,7 +18,10 @@ public class LogHistoryInfoVO extends LogHistoryInfo {
     @ApiModelProperty(value = "已读状态 0=未读 1=已读")
     private Integer isRead;
 
-   @ApiModelProperty(value = "当前日志关联的任务信息List")
+    @ApiModelProperty(value = "已读状态 0=否 1=是")
+    private Integer isEdit;
+
+    @ApiModelProperty(value = "当前日志关联的任务信息List")
     private List<TaskPlanInfoVO> taskList;
 
     @ApiModelProperty(value = "当前日志所有已读人")

+ 3 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskPlanInfoVO.java

@@ -25,6 +25,9 @@ public class TaskPlanInfoVO implements Serializable {
     @ApiModelProperty(value = "计划状态")
     private Integer status;
 
+    @ApiModelProperty(value = "是否逾期 1=是")
+    private Integer isOverdue;
+
     @ApiModelProperty(value = "计划任务描述(任务内容)")
     private String taskDesc;
 

+ 17 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskPlanOverdueStatusVO.java

@@ -0,0 +1,17 @@
+package org.springblade.control.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@TableName(value = "c_task_plan_overdue_status")
+public class TaskPlanOverdueStatusVO implements Serializable {
+
+    private Long id;
+    private Long userId;
+    private Long planTaskId;
+    private Integer isOverdue;
+
+}

+ 0 - 17
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskProjectCostBudgetVO.java

@@ -1,17 +0,0 @@
-package org.springblade.control.vo;
-
-import lombok.Data;
-import org.springblade.control.entity.ProjectCostBudget;
-import org.springblade.control.entity.ProjectCostBudgetStats;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class TaskProjectCostBudgetVO implements Serializable {
-
-    private ProjectCostBudgetStats projectCostBudgetStats;
-
-    private List<ProjectCostBudget> projectCostBudgetList;
-
-}

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/controller/TaskProcessController.java

@@ -96,7 +96,7 @@ public class TaskProcessController extends BladeController {
     }
 
     @GetMapping("/cost/budget/submit")
-    @ApiOperationSupport(order = 9)
+    @ApiOperationSupport(order = 10)
     @ApiOperation(value = "项目成本测算审批提交", notes = "传入成本测算id")
     public R<Object> approveCostBudgetSubmit(@RequestParam String id) {
         return R.status(taskProcessService.approveCostBudgetSubmit(id));

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AttendanceTripServiceImpl.java

@@ -171,7 +171,7 @@ public class AttendanceTripServiceImpl extends BaseServiceImpl<AttendanceTripMap
                 }
 
                 //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",9)");
+                jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 9 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",9)");
 
                 //关联项目id,项目计划预算等,在任务闭环时计算推送
             }

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMFinancialReimbursementServiceImpl.java

@@ -187,7 +187,7 @@ public class EMFinancialReimbursementServiceImpl extends BaseServiceImpl<ExMFina
                 }
 
                 //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",2)");
+                jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 2 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",2)");
 
                 //关联项目预算budgetPlanIds目前只做存储,在审批完成后闭环时再进行计算推送
             }

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMInvoiceServiceImpl.java

@@ -166,7 +166,7 @@ public class EMInvoiceServiceImpl extends BaseServiceImpl<ExMInvoiceMapper, EMIn
             }
 
             //新增审批任务关联信息
-            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",7)");
+            jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 7 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",7)");
 
             //存储关联项目id,审批闭环后处理项目相关业务
 

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMLoanServiceImpl.java

@@ -169,7 +169,7 @@ public class EMLoanServiceImpl extends BaseServiceImpl<ExMLoanMapper, EMLoanInfo
             }
 
             //新增审批任务关联信息
-            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",4)");
+            jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 4 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",4)");
 
             return true;
         }

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMOutsourcingPayServiceImpl.java

@@ -161,7 +161,7 @@ public class EMOutsourcingPayServiceImpl extends BaseServiceImpl<ExMOutsourcingP
             }
 
             //新增审批任务关联信息
-            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",8)");
+            jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 8 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",8)");
 
             //关联项目id只做存储,任务闭环时在进行业务计算
 

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPayServiceImpl.java

@@ -142,7 +142,7 @@ public class EMPayServiceImpl extends BaseServiceImpl<ExMPayMapper, EMPayInfo> i
             }
 
             //新增审批任务关联信息
-            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",3)");
+            jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 3 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",3)");
 
             //关联项目、合同项目提成等目前只做存储,在审批完成后闭环时再进行计算推送
 

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPurchaseServiceImpl.java

@@ -169,7 +169,7 @@ public class EMPurchaseServiceImpl extends BaseServiceImpl<ExMPurchaseMapper, EM
                 }
 
                 //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",5)");
+                jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 5 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",5)");
             }
         }
         return true;

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMUseCarServiceImpl.java

@@ -181,7 +181,7 @@ public class EMUseCarServiceImpl extends BaseServiceImpl<ExMUseCarMapper, EMUseC
                 }
 
                 //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",6)");
+                jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 6 and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",6)");
             }
         }
         return true;

+ 51 - 11
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/LogHistoryServiceImpl.java

@@ -1,6 +1,7 @@
 package org.springblade.control.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
@@ -12,10 +13,7 @@ import org.springblade.control.dto.LogHistoryInfoDTO;
 import org.springblade.control.entity.*;
 import org.springblade.control.mapper.LogHistoryMapper;
 import org.springblade.control.service.LogHistoryService;
-import org.springblade.control.vo.LogHistoryAndTaskVO;
-import org.springblade.control.vo.LogHistoryInfoReadVO;
-import org.springblade.control.vo.LogHistoryInfoVO;
-import org.springblade.control.vo.TaskPlanInfoVO;
+import org.springblade.control.vo.*;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.BladeUser;
@@ -90,12 +88,18 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
             Map<Long, List<LogHistoryInfoReadVO>> logRecords = infoReadVOS.stream().collect(Collectors.groupingBy(LogHistoryInfoReadVO::getLogId));
 
             for (LogHistoryInfoVO vo : voList) {
+                //用户基础信息
                 User user = userMap.get(vo.getUserId());
                 if (user != null) {
                     vo.setLogTitle(user.getRealName() + "的日志");
                     vo.setHeadPicture(StringUtils.isNotEmpty(user.getAvatar()) ? user.getAvatar() : "");
                 }
-
+                //是否可编辑
+                if (vo.getUserId().equals(SecureUtil.getUserId())) {
+                    vo.setIsEdit(1);
+                } else {
+                    vo.setIsEdit(0);
+                }
                 //当前用户是否已读
                 String readIndex = SecureUtil.getUserId() + vo.getId() + "";
                 LogHistoryInfoReadVO readVO = readMap.get(readIndex);
@@ -104,8 +108,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                 } else {
                     vo.setIsRead(0);
                 }
-
-                //所有已读人
+                //所有已读人集合
                 List<LogHistoryInfoReadVO> readVOList = logRecords.getOrDefault(vo.getId(), null);
                 if (readVOList != null && readVOList.size() > 0) {
                     List<LogHistoryInfoVO.ReadUser> readUserList = new LinkedList<>();
@@ -117,7 +120,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                 }
             }
 
-            return voList.stream()
+            LinkedHashMap<String, List<LogHistoryInfoVO>> collect = voList.stream()
                     .collect(Collectors.groupingBy(vo -> {
                         return formatDate(
                                 vo.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().toString(),
@@ -125,6 +128,18 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                                 "昨天",
                                 "前天");
                     }, LinkedHashMap::new, Collectors.toList()));
+            //把当前用户放在今日日志首位
+            for (Map.Entry<String, List<LogHistoryInfoVO>> stringListEntry : collect.entrySet()) {
+                if (stringListEntry.getKey().equals("今天")) {
+                    List<LogHistoryInfoVO> value = stringListEntry.getValue();
+                    List<LogHistoryInfoVO> filteredList = value.stream()
+                            .filter(vo -> vo.getUserId().equals(SecureUtil.getUserId()))
+                            .collect(Collectors.toList());
+                    value.removeAll(filteredList);
+                    value.addAll(0, filteredList);
+                }
+            }
+            return collect;
         }
         return null;
     }
@@ -285,6 +300,9 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                 List<ControlProjectInfo> controlProjectInfos = projectInfoServiceImpl.getBaseMapper().selectList(Wrappers.<ControlProjectInfo>lambdaQuery().select(ControlProjectInfo::getId, ControlProjectInfo::getName));
                 List<String> taskIds = taskVOList.stream().map(LogHistoryAndTaskVO::getTaskId).map(String::valueOf).collect(Collectors.toList());
                 if (taskIds.size() > 0) {
+                    //任务逾期关系信息
+                    List<TaskPlanOverdueStatusVO> overdueStatusVOS = jdbcTemplate.query("select * from c_task_plan_overdue_status where user_id = " + obj.getUserId(), new BeanPropertyRowMapper<>(TaskPlanOverdueStatusVO.class));
+
                     //获取所有审批任务与计划任务关系
                     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));
                     Map<String, ExpenseTaskRecord> taskRecordMaps = expenseTaskRecords.stream().collect(Collectors.toMap(ExpenseTaskRecord::getExpenseInfoId, Function.identity()));
@@ -302,6 +320,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                             }
                         }
 
+                        //判断任务状态
                         ExpenseTaskRecord record = taskRecordMaps.getOrDefault(String.valueOf(taskObj.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);
@@ -315,6 +334,16 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                             vos.setStatusName("未提交审批");
                         }
 
+                        //只有在当前任务是未提交、已驳回状态下才判断是否逾期
+                        if (!Arrays.asList(1, 2).contains(vos.getStatus())) {
+                            //是否已逾期
+                            for (TaskPlanOverdueStatusVO overdueVO : overdueStatusVOS) {
+                                if (overdueVO.getPlanTaskId().equals(taskObj.getId())) {
+                                    vos.setIsOverdue(1);
+                                }
+                            }
+                        }
+
                         vos.setTaskDesc(ObjectUtil.isNotEmpty(taskObj.getPlanTaskDesc()) ? taskObj.getPlanTaskDesc() : "");
                         if (ObjectUtil.isNotEmpty(taskObj.getPlanStartTime()) && ObjectUtil.isNotEmpty(taskObj.getPlanEndTime())) {
                             LocalDate planStartTime = taskObj.getPlanStartTime();
@@ -357,7 +386,7 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
 
     @Override
     public boolean logTaskComplete(Long logId, Long taskId) {
-        if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
             throw new ServiceException("获取当前用户信息失败,请联系管理员");
         }
 
@@ -375,6 +404,17 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
                 throw new ServiceException("该任务不属于当前用户,操作失败");
             }
 
+            //判断计划任务是否逾期完成
+            if (obj != null && ObjectUtil.isNotEmpty(obj.getPlanEndTime())) {
+                Date now = DateUtil.now();
+                Date planEndDate = Date.from(obj.getPlanEndTime().atStartOfDay(ZoneId.systemDefault()).toInstant());
+                int comparison = now.compareTo(planEndDate);
+                if (comparison > 0) {
+                    //now在planEndDate之后表示逾期完成
+                    jdbcTemplate.execute("delete from c_task_plan_overdue_status where plan_task_id = " + taskId + " ; insert into c_task_plan_overdue_status(id,user_id,plan_task_id,is_overdue) values (" + SnowFlakeUtil.getId() + "," + SecureUtil.getUserId() + "," + taskId + ",1)");
+                }
+            }
+
             //获取当天,当前用户所有的计划任务信息,新增关联信息
             if (ObjectUtil.isNotEmpty(logId)) { //编辑时,点完成,那么重塑关系信息
                 List<TaskPlanInfoVO> taskPlanInfoVOS = this.logTaskList();
@@ -416,11 +456,11 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
             taskProcessService.save(taskProcessInfo);
 
             //新增审批任务关联信息
-            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + task.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + task.getId() + ",1)");
+            jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 1 and expense_info_id = " + task.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + task.getId() + ",1)");
             return true;
             //}
         } else {
-            throw new ServiceException("获取部门负责人失败,请联系管理员");
+            throw new ServiceException("获取部门负责人失败,无法提交任务完成,请联系管理员");
         }
     }
 

+ 8 - 9
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

@@ -239,15 +239,14 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
                                 }
                                 break;
                             case 10: //成本测算
-                                List<ProjectCostBudget> query = jdbcTemplate.query("select * from c_project_cost_budget where id in(" + record.getExpenseInfoId() + ")", new BeanPropertyRowMapper<>(ProjectCostBudget.class));
+                                List<ProjectCostBudget> query = jdbcTemplate.query("select project_id from c_project_cost_budget where id in(" + record.getExpenseInfoId() + ")", new BeanPropertyRowMapper<>(ProjectCostBudget.class));
                                 if (query.size() > 0) {
                                     Long projectId = query.stream().map(ProjectCostBudget::getProjectId).collect(Collectors.toList()).stream().findAny().orElse(null);
                                     if (projectId != null) {
-                                        ProjectCostBudgetStats projectCostBudgetStats = jdbcTemplate.query("select * from c_project_cost_budget_stats where project_id = " + projectId, new BeanPropertyRowMapper<>(ProjectCostBudgetStats.class)).stream().findAny().orElse(null);
-                                        TaskProjectCostBudgetVO voCbCs = new TaskProjectCostBudgetVO();
-                                        voCbCs.setProjectCostBudgetList(query);
-                                        voCbCs.setProjectCostBudgetStats(projectCostBudgetStats);
-                                        data = voCbCs;
+                                        ProjectCostBudgetStats stats = jdbcTemplate.query("select id from c_project_cost_budget_stats where project_id = " + projectId, new BeanPropertyRowMapper<>(ProjectCostBudgetStats.class)).stream().findAny().orElse(null);
+                                        if (stats != null) {
+                                            data = projectCostBudgetStatsService.getBudgetStatsById(stats.getId());
+                                        }
                                     }
                                 }
                                 break;
@@ -530,7 +529,7 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
                                 "values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1,'" + completionTimeStr + "',null,null,null)");
 
                         //新增审批任务关联信息
-                        jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + planTaskInfo.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1)");
+                        jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 1 and expense_info_id = " + planTaskInfo.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1)");
 
                     } else if (departmentHead != null && dto.getUpdateType().equals("2")) {
                         //任务转移
@@ -563,7 +562,7 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
                                 "values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",2,'" + completionTimeStr + "'," + SecureUtil.getUserId() + "," + dto.getTransferObject() + "," + dto.getTransferReason() + ")");
 
                         //新增审批任务关联信息
-                        jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + planTaskInfo.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1)");
+                        jdbcTemplate.execute("delete from c_expense_task_record where expense_info_type = 1 and expense_info_id = " + planTaskInfo.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1)");
                     }
                 }
             }
@@ -672,7 +671,7 @@ 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 task_id = " + taskProcessInfo.getId() + " 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)");
+                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)");
                 return true;
             }
         }