From e8b11c6f789923ba0f9d21e85423231c567d92d2 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期三, 27 十一月 2024 18:37:49 +0800
Subject: [PATCH] 进度上报查询

---
 business/src/main/java/com/ycl/service/impl/ProgressPlanServiceImpl.java              |   75 ++++++++++++++++++
 business/src/main/java/com/ycl/domain/vo/ProgressReportResponseVO.java                |   32 ++++++++
 business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java                     |    3 
 business/src/main/java/com/ycl/controller/ProgressPlanController.java                 |    2 
 business/src/main/java/com/ycl/controller/ProjectPlanProgressReportController.java    |    2 
 business/src/main/java/com/ycl/mapper/ProjectPlanProgressReportMapper.java            |    2 
 business/src/main/resources/mapper/ProjectPlanProgressReportMapper.xml                |   28 +++++++
 business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoFlag.java                    |   17 ++++
 business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoResponseVO.java              |   19 ++++
 business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java |    4 
 10 files changed, 178 insertions(+), 6 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/ProgressPlanController.java b/business/src/main/java/com/ycl/controller/ProgressPlanController.java
index ace5749..ef2147b 100644
--- a/business/src/main/java/com/ycl/controller/ProgressPlanController.java
+++ b/business/src/main/java/com/ycl/controller/ProgressPlanController.java
@@ -69,7 +69,7 @@
 
     @GetMapping("/{id}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
-    @PreAuthorize("hasAuthority('progressPlan:detail')")
+//    @PreAuthorize("hasAuthority('progressPlan:detail')")
     public Result detail(@PathVariable("id") Integer id) {
         return progressPlanService.detail(id);
     }
diff --git a/business/src/main/java/com/ycl/controller/ProjectPlanProgressReportController.java b/business/src/main/java/com/ycl/controller/ProjectPlanProgressReportController.java
index 913fa2e..c19d78f 100644
--- a/business/src/main/java/com/ycl/controller/ProjectPlanProgressReportController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectPlanProgressReportController.java
@@ -69,7 +69,7 @@
 
     @GetMapping("/{id}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
-    @PreAuthorize("hasAuthority('projectPlanProgressReport:detail')")
+//    @PreAuthorize("hasAuthority('projectPlanProgressReport:detail')")
     public Result detail(@PathVariable("id") Integer id) {
         return projectPlanProgressReportService.detail(id);
     }
diff --git a/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java b/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
index a1933c7..02506a9 100644
--- a/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
+++ b/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.system.domain.base.AbsEntity;
 import lombok.Data;
 
@@ -34,10 +35,12 @@
     private Integer progressStatus;
 
     @TableField("start_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     /** 璁″垝寮�濮嬫椂闂� */
     private Date startTime;
 
     @TableField("end_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     /** 璁″垝瀹屾垚鏃堕棿 */
     private Date endTime;
 
diff --git a/business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoFlag.java b/business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoFlag.java
new file mode 100644
index 0000000..52bb59c
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoFlag.java
@@ -0,0 +1,17 @@
+package com.ycl.domain.vo;
+
+import com.ycl.domain.entity.ProjectPlanInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProgressPlanInfoFlag {
+    private Integer planTime;
+    private Integer planTimeFlag;
+    private List<ProjectPlanInfo> planInfoList;
+}
diff --git a/business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoResponseVO.java b/business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoResponseVO.java
new file mode 100644
index 0000000..121bbbc
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/ProgressPlanInfoResponseVO.java
@@ -0,0 +1,19 @@
+package com.ycl.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProgressPlanInfoResponseVO {
+    // 鏈堝害杩涘害
+    private List<ProgressPlanInfoFlag> monthProgress;
+    // 瀛e害杩涘害
+    private List<ProgressPlanInfoFlag> seasonProgress;
+    // 骞村害杩涘害
+    private List<ProgressPlanInfoFlag> yearProgress;
+}
diff --git a/business/src/main/java/com/ycl/domain/vo/ProgressReportResponseVO.java b/business/src/main/java/com/ycl/domain/vo/ProgressReportResponseVO.java
new file mode 100644
index 0000000..241086e
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/ProgressReportResponseVO.java
@@ -0,0 +1,32 @@
+package com.ycl.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProgressReportResponseVO {
+    // 璁″垝椤筰d
+    private Integer id;
+    private Integer planTime;
+    private Integer PlanTimeFlag;
+    private String title;
+    private Date startTime;
+    private Date endTime;
+    private Date actualStartTime;
+    private Date actualEndTime;
+    private String progressStatus;
+    private BigDecimal actualInvest;
+    private Integer departmentExamine;
+    private String departmentApproval;
+    private String departmentApprovalReply;
+    private Integer manageExamine;
+    private String manageApproval;
+    private String manageApprovalReply;
+
+}
diff --git a/business/src/main/java/com/ycl/mapper/ProjectPlanProgressReportMapper.java b/business/src/main/java/com/ycl/mapper/ProjectPlanProgressReportMapper.java
index 08f3ee4..e4f81c5 100644
--- a/business/src/main/java/com/ycl/mapper/ProjectPlanProgressReportMapper.java
+++ b/business/src/main/java/com/ycl/mapper/ProjectPlanProgressReportMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.domain.query.ProjectPlanProgressReportQuery;
+import com.ycl.domain.vo.ProgressReportResponseVO;
 import com.ycl.domain.vo.ProjectPlanProgressReportVO;
 import com.ycl.domain.form.ProjectPlanProgressReportForm;
 import java.util.List;
@@ -31,4 +32,5 @@
     */
     IPage getPage(IPage page, @Param("query") ProjectPlanProgressReportQuery query);
 
+    ProgressReportResponseVO getDetail(Integer id);
 }
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..e18139b 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,28 @@
 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.service.impl.ServiceImpl;
 import com.ycl.common.base.Result;
 import com.ycl.domain.entity.ProgressPlan;
+import com.ycl.domain.entity.ProjectPlanInfo;
+import com.ycl.domain.entity.ProjectPlanRecord;
 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.framework.utils.PageUtil;
 import com.ycl.mapper.ProgressPlanMapper;
+import com.ycl.mapper.ProjectPlanInfoMapper;
+import com.ycl.mapper.ProjectPlanRecordMapper;
 import com.ycl.service.ProgressPlanService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -29,6 +37,8 @@
 public class ProgressPlanServiceImpl extends ServiceImpl<ProgressPlanMapper, ProgressPlan> implements ProgressPlanService {
 
     private final ProgressPlanMapper progressPlanMapper;
+    private final ProjectPlanRecordMapper projectPlanRecordMapper;
+    private final ProjectPlanInfoMapper projectPlanInfoMapper;
 
     /**
      * 娣诲姞
@@ -99,12 +109,73 @@
      */
     @Override
     public Result detail(Integer id) {
-        ProgressPlanVO vo = baseMapper.getById(id);
-        Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+        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())
+                                    .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())
+                                    .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())
+                                    .list()
+                    );
+                    yearProgress.add(progressPlanInfoFlag);
+                });
+
+        vo.setMonthProgress(monthProgress);
+        vo.setSeasonProgress(seasonProgress);
+        vo.setYearProgress(yearProgress);
         return Result.ok().data(vo);
     }
 
     /**
+     *
+     */
+
+    /**
      * 鍒楄〃
      * @return
      */
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java
index fe9851a..79674ce 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.common.base.Result;
 import com.ycl.domain.entity.ProjectPlanProgressReport;
+import com.ycl.domain.vo.ProgressReportResponseVO;
 import com.ycl.framework.utils.PageUtil;
 import com.ycl.mapper.ProjectPlanProgressReportMapper;
 import com.ycl.service.ProjectPlanProgressReportService;
@@ -100,8 +101,7 @@
      */
     @Override
     public Result detail(Integer id) {
-        ProjectPlanProgressReportVO vo = baseMapper.getById(id);
-        Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+        ProgressReportResponseVO vo = baseMapper.getDetail(id);
         return Result.ok().data(vo);
     }
 
diff --git a/business/src/main/resources/mapper/ProjectPlanProgressReportMapper.xml b/business/src/main/resources/mapper/ProjectPlanProgressReportMapper.xml
index 8a6d576..80f9304 100644
--- a/business/src/main/resources/mapper/ProjectPlanProgressReportMapper.xml
+++ b/business/src/main/resources/mapper/ProjectPlanProgressReportMapper.xml
@@ -17,6 +17,7 @@
 
 
 
+
     <select id="getById" resultMap="BaseResultMap">
         SELECT
             TPPPR.project_plan_info_id,
@@ -46,4 +47,31 @@
             TPPPR.deleted = 0
     </select>
 
+
+    <select id="getDetail" resultType="com.ycl.domain.vo.ProgressReportResponseVO">
+        SELECT
+            ppi.id,
+            ppr.plan_time,
+            ppr.plan_time_flag,
+            ppi.title,
+            ppi.start_time,
+            ppi.end_time,
+            pppr.start_time AS actual_start_time,
+            pppr.end_time AS actual_end_time,
+            pppr.progress_status,
+            pppr.actual_invest,
+            pper.department_examine,
+            pper.department_approval,
+            pper.department_approval_reply,
+            pper.manage_examine,
+            pper.manage_approval,
+            pper.manage_approval_reply
+        FROM t_project_plan_info AS ppi
+                 INNER JOIN t_project_plan_record AS ppr ON ppi.project_plan_record_id = ppr.id
+                 LEFT JOIN t_project_plan_progress_report AS pppr ON pppr.project_plan_info_id = ppi.id
+                 RIGHT JOIN t_project_plan_examine_record AS pper ON pper.project_plan_info_id = ppi.id
+        WHERE ppi.id = #{id}
+        ORDER BY pper.gmt_create DESC LIMIT 1
+    </select>
+
 </mapper>

--
Gitblit v1.8.0