From 96a893bcc673085f7d6fe3bc5ca7dc34e7ca1db2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 12 二月 2025 17:44:25 +0800
Subject: [PATCH] flowable模块中的FlowTaskService及controller移动到business模块,完成任务和驳回任务添加日志

---
 business/src/main/java/com/ycl/service/impl/ProgressPlanServiceImpl.java |  134 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 129 insertions(+), 5 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/impl/ProgressPlanServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProgressPlanServiceImpl.java
index cb52f7d..f17a350 100644
--- a/business/src/main/java/com/ycl/service/impl/ProgressPlanServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProgressPlanServiceImpl.java
@@ -1,20 +1,29 @@
 package com.ycl.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.common.base.Result;
-import com.ycl.domain.entity.ProgressPlan;
+import com.ycl.common.enums.business.FileTypeEnum;
+import com.ycl.domain.entity.*;
 import com.ycl.domain.form.ProgressPlanForm;
 import com.ycl.domain.query.ProgressPlanQuery;
+import com.ycl.domain.vo.ProgressPlanInfoFlag;
+import com.ycl.domain.vo.ProgressPlanInfoResponseVO;
 import com.ycl.domain.vo.ProgressPlanVO;
+import com.ycl.domain.form.ProjectProgressFileListsForm;
 import com.ycl.framework.utils.PageUtil;
-import com.ycl.mapper.ProgressPlanMapper;
+import com.ycl.mapper.*;
 import com.ycl.service.ProgressPlanService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -29,6 +38,10 @@
 public class ProgressPlanServiceImpl extends ServiceImpl<ProgressPlanMapper, ProgressPlan> implements ProgressPlanService {
 
     private final ProgressPlanMapper progressPlanMapper;
+    private final ProjectPlanRecordMapper projectPlanRecordMapper;
+    private final ProjectPlanInfoMapper projectPlanInfoMapper;
+    private final PlanMapper planMapper;
+    private final FileMapper fileMapper;
 
     /**
      * 娣诲姞
@@ -98,9 +111,72 @@
      * @return
      */
     @Override
-    public Result detail(Integer id) {
-        ProgressPlanVO vo = baseMapper.getById(id);
-        Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+    public Result detail(Long id) {
+        ProgressPlanInfoResponseVO vo = new ProgressPlanInfoResponseVO();
+        List<ProgressPlanInfoFlag> monthProgress = new ArrayList<>();
+        List<ProgressPlanInfoFlag> seasonProgress = new ArrayList<>();
+        List<ProgressPlanInfoFlag> yearProgress = new ArrayList<>();
+
+        // 鏌ヨ鏈堝害璁″垝椤�
+        new LambdaQueryChainWrapper<>(projectPlanRecordMapper)
+            .eq(ProjectPlanRecord::getProjectInfoId, id)
+            .eq(ProjectPlanRecord::getPlanTimeFlag, 0)
+            .list()
+            .stream().forEach(record -> {
+                ProgressPlanInfoFlag progressPlanInfoFlag = new ProgressPlanInfoFlag();
+                progressPlanInfoFlag.setPlanTime(record.getPlanTime());
+                progressPlanInfoFlag.setPlanTimeFlag(record.getPlanTimeFlag());
+                progressPlanInfoFlag.setPlanInfoList(
+                    new LambdaQueryChainWrapper<>(projectPlanInfoMapper)
+                        .eq(ProjectPlanInfo::getProjectPlanRecordId, record.getId())
+                        .eq(ProjectPlanInfo::getDeleted, 0) // 鏈垹闄�
+                        .eq(ProjectPlanInfo::getPlanStatus, 2) // 璁″垝椤瑰鎵归�氳繃
+                        .list()
+                );
+                monthProgress.add(progressPlanInfoFlag);
+            });
+
+        // 鏌ヨ瀛e害璁″垝椤�
+        new LambdaQueryChainWrapper<>(projectPlanRecordMapper)
+            .eq(ProjectPlanRecord::getProjectInfoId, id)
+            .eq(ProjectPlanRecord::getPlanTimeFlag, 1)
+            .list()
+            .stream().forEach(record -> {
+                ProgressPlanInfoFlag progressPlanInfoFlag = new ProgressPlanInfoFlag();
+                progressPlanInfoFlag.setPlanTime(record.getPlanTime());
+                progressPlanInfoFlag.setPlanTimeFlag(record.getPlanTimeFlag());
+                progressPlanInfoFlag.setPlanInfoList(
+                    new LambdaQueryChainWrapper<>(projectPlanInfoMapper)
+                        .eq(ProjectPlanInfo::getProjectPlanRecordId, record.getId())
+                        .eq(ProjectPlanInfo::getDeleted, 0) // 鏈垹闄�
+                        .eq(ProjectPlanInfo::getPlanStatus, 2) // 璁″垝椤瑰鎵归�氳繃
+                        .list()
+                );
+                seasonProgress.add(progressPlanInfoFlag);
+            });
+
+        // 鏌ヨ骞村害璁″垝椤�
+        new LambdaQueryChainWrapper<>(projectPlanRecordMapper)
+            .eq(ProjectPlanRecord::getProjectInfoId, id)
+            .eq(ProjectPlanRecord::getPlanTimeFlag, 2)
+            .list()
+            .stream().forEach(record -> {
+                ProgressPlanInfoFlag progressPlanInfoFlag = new ProgressPlanInfoFlag();
+                progressPlanInfoFlag.setPlanTime(record.getPlanTime());
+                progressPlanInfoFlag.setPlanTimeFlag(record.getPlanTimeFlag());
+                progressPlanInfoFlag.setPlanInfoList(
+                    new LambdaQueryChainWrapper<>(projectPlanInfoMapper)
+                        .eq(ProjectPlanInfo::getProjectPlanRecordId, record.getId())
+                        .eq(ProjectPlanInfo::getDeleted, 0) // 鏈垹闄�
+                        .eq(ProjectPlanInfo::getPlanStatus, 2) // 璁″垝椤瑰鎵归�氳繃
+                        .list()
+                );
+                yearProgress.add(progressPlanInfoFlag);
+            });
+
+        vo.setMonthProgress(monthProgress);
+        vo.setSeasonProgress(seasonProgress);
+        vo.setYearProgress(yearProgress);
         return Result.ok().data(vo);
     }
 
@@ -116,4 +192,52 @@
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result saveProjectProgressFileLists(ProjectProgressFileListsForm form) {
+            new LambdaUpdateChainWrapper<>(fileMapper)
+                    .eq(File::getBusId, form.getProjectReportId())
+                    .eq(File::getType, FileTypeEnum.PROJECT_SITUATION_DESCRIPTION.getType())
+                    .remove();
+
+        form.getSituationDescriptionFileList().stream()
+                    .forEach(file -> {
+                        file.setId(null);
+                        file.setBusId(form.getProjectReportId());
+                        file.setType(FileTypeEnum.PROJECT_SITUATION_DESCRIPTION);
+                        fileMapper.insert(file);
+                    });
+
+            new LambdaUpdateChainWrapper<>(fileMapper)
+                    .eq(File::getBusId, form.getProjectReportId())
+                    .eq(File::getType, FileTypeEnum.PROJECT_COMPLETE_REPORT.getType())
+                    .remove();
+
+        form.getCompletedReportFileList().stream()
+                    .forEach(file -> {
+                        file.setId(null);
+                        file.setBusId(form.getProjectReportId());
+                        file.setType(FileTypeEnum.PROJECT_COMPLETE_REPORT);
+                        fileMapper.insert(file);
+                    });
+        return Result.ok("淇濆瓨鎴愬姛");
+    }
+
+    @Override
+    public Result getProjectProgressForm(Long id) {
+        ProjectProgressFileListsForm result = new ProjectProgressFileListsForm();
+        result.setProjectReportId(id);
+        result.setCompletedReportFileList(new LambdaQueryChainWrapper<>(fileMapper)
+            .eq(File::getBusId, id)
+            .eq(File::getType, FileTypeEnum.PROJECT_COMPLETE_REPORT)
+            .eq(File::getDeleted, 0)
+            .list());
+        result.setSituationDescriptionFileList(new LambdaQueryChainWrapper<>(fileMapper)
+            .eq(File::getBusId, id)
+            .eq(File::getType, FileTypeEnum.PROJECT_SITUATION_DESCRIPTION)
+            .eq(File::getDeleted, 0)
+            .list());
+        return Result.ok().data(result);
+    }
 }

--
Gitblit v1.8.0