From 8485affcb0d4de05059d80cb1e844d6b18291654 Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: 星期五, 16 五月 2025 14:35:49 +0800
Subject: [PATCH] 修正

---
 src/main/java/com/gkhy/labRiskManage/domain/riskReport/service/impl/RiskAssessPlanServiceImpl.java     |   29 ++++++++++++--
 src/main/java/com/gkhy/labRiskManage/domain/riskReport/model/bo/AssessQueryBO.java                     |    8 ++++
 src/main/java/com/gkhy/labRiskManage/application/riskReport/service/impl/RiskAccessAppServiceImpl.java |    2 +
 src/main/resources/config/application-dev.yaml                                                         |   11 ++++-
 src/main/resources/config/application.yaml                                                             |    3 +
 src/main/resources/mapper/RiskPlanDataMapper.xml                                                       |   43 +++++++++++++++++++++
 src/main/java/com/gkhy/labRiskManage/domain/riskReport/repository/jpa/RiskAssessPlanRepository.java    |   16 ++++++++
 src/main/java/com/gkhy/labRiskManage/mapper/RiskPlanDataMapper.java                                    |    2 +
 src/main/resources/config/application-gslab.yaml                                                       |    5 ++
 9 files changed, 110 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/gkhy/labRiskManage/application/riskReport/service/impl/RiskAccessAppServiceImpl.java b/src/main/java/com/gkhy/labRiskManage/application/riskReport/service/impl/RiskAccessAppServiceImpl.java
index f5ceb5b..886e335 100644
--- a/src/main/java/com/gkhy/labRiskManage/application/riskReport/service/impl/RiskAccessAppServiceImpl.java
+++ b/src/main/java/com/gkhy/labRiskManage/application/riskReport/service/impl/RiskAccessAppServiceImpl.java
@@ -564,6 +564,8 @@
         if (currentUserId < 0){
             throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_NOT_ALLOWED.getCode(), "当前用户无效,请重新登录");
         }
+        //todo   需要评价人员都评价完成才可以
+
 
         //提交评价结果
         AssessPlanUpdateDTO evaluateSubmitResult= assessPlanService.evaluateSubmit(currentUserId, id);
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/model/bo/AssessQueryBO.java b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/model/bo/AssessQueryBO.java
index 802afcb..b7de5c6 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/model/bo/AssessQueryBO.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/model/bo/AssessQueryBO.java
@@ -3,6 +3,8 @@
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 风险辨识与评价
  * */
@@ -32,4 +34,10 @@
      * 评估计划执行状态:1-未开始;2-辨识阶段;3-评价阶段;4-评价完成
      */
     private Byte planExecStatus;
+
+    List<Long> planIds;
+
+    private Long userId;
+
+    private Byte userTag;
 }
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/repository/jpa/RiskAssessPlanRepository.java b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/repository/jpa/RiskAssessPlanRepository.java
index c6acd34..2aa424c 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/repository/jpa/RiskAssessPlanRepository.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/repository/jpa/RiskAssessPlanRepository.java
@@ -3,6 +3,7 @@
 import com.gkhy.labRiskManage.domain.riskReport.entity.RiskAssessPlan;
 import com.gkhy.labRiskManage.domain.riskReport.model.bo.ExecStatusSubmitBO;
 import com.gkhy.labRiskManage.domain.riskReport.model.dto.AssessPlanQueryDTO;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -63,5 +64,20 @@
 
     @Query(value = "select t from RiskAssessPlan t where t.deleteStatus = 0 and t.riskUnitId = :basicId and riskType = 1")
     List<RiskAssessPlan> getAssessPlanByInherentUnit(Long basicId);
+
+
+    @Query("SELECT COUNT(DISTINCT p.id) FROM RiskAssessPlan p " +
+            "WHERE p.deleteStatus = 0 " +
+            "AND (:assessPlanName IS NULL OR p.assessPlanName LIKE %:assessPlanName%) " +
+            "AND (:experimentId IS NULL OR p.experimentId = :experimentId) " +
+            "AND (:planUserId IS NULL OR p.planUserId = :planUserId) " +
+            "and(coalesce(:riskUnitIds,null) is null  or p.riskUnitId in :riskUnitIds)")
+    Long countDynamic(
+            String assessPlanName,
+            Long experimentId,
+            Long planUserId,
+            List<Long> riskUnitIds);
+
+
 }
 
diff --git a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/service/impl/RiskAssessPlanServiceImpl.java b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/service/impl/RiskAssessPlanServiceImpl.java
index 1682fd9..c80ef41 100644
--- a/src/main/java/com/gkhy/labRiskManage/domain/riskReport/service/impl/RiskAssessPlanServiceImpl.java
+++ b/src/main/java/com/gkhy/labRiskManage/domain/riskReport/service/impl/RiskAssessPlanServiceImpl.java
@@ -369,8 +369,17 @@
                 if (queryParam.getExperimentId() != null) {
                     predicateList.add(criteriaBuilder.equal(root.get("experimentId"), queryParam.getExperimentId()));
                 }
-                Join<RiskAssessPlan, RiskAssessPlanIdentificationUser> identificationUserJoin = root.join("riskAssessPlanIdentificationUsers", JoinType.LEFT);
-                Join<RiskAssessPlan, RiskAssessPlanEvaluateUser> evaluateUserJoin = root.join("riskAssessPlanEvaluateUsers", JoinType.LEFT);
+//                Join<RiskAssessPlan, RiskAssessPlanIdentificationUser> identificationUserJoin = root.join("riskAssessPlanIdentificationUsers", JoinType.LEFT);
+//                Join<RiskAssessPlan, RiskAssessPlanEvaluateUser> evaluateUserJoin = root.join("riskAssessPlanEvaluateUsers", JoinType.LEFT);
+                Join<RiskAssessPlan, RiskAssessPlanIdentificationUser> identificationJoin =
+                        root.join("riskAssessPlanIdentificationUsers", JoinType.LEFT);
+                identificationJoin.on(criteriaBuilder.equal(identificationJoin.get("deleteStatus"), StatusEnum.DELETE_NOT.getCode()));
+
+                // LEFT JOIN riskAssessPlanEvaluateUsers
+                Join<RiskAssessPlan, RiskAssessPlanEvaluateUser> evaluateJoin =
+                        root.join("riskAssessPlanEvaluateUsers", JoinType.LEFT);
+                evaluateJoin.on(criteriaBuilder.equal(evaluateJoin.get("deleteStatus"), StatusEnum.DELETE_NOT.getCode()));
+
 
                 if (roleTag == UserTagEnum.USER_TAG_0.getCode()) {
                     predicateList.add(criteriaBuilder.equal(root.get("planUserId"), currentUserId));
@@ -382,6 +391,7 @@
 //                            )
 //                    );
                 }
+
                 query.groupBy(root.get("id"));
                 predicateList.add(criteriaBuilder.equal(root.get("deleteStatus"), StatusEnum.DELETE_NOT.getCode()));
                 return criteriaBuilder.and(predicateList.toArray(new Predicate[0]));
@@ -390,6 +400,11 @@
 
         PageRequest pageParam = PageRequest.of(queryParam.getPageIndex() - 1, queryParam.getPageSize(), Sort.Direction.DESC, "updateTime");
         Page<RiskAssessPlan> pageResult = assessPlanRepository.findAll(specification, pageParam);
+
+
+
+        Long countDynamic = assessPlanRepository.countDynamic(queryParam.getAssessPlanName(), queryParam.getExperimentId(), roleTag == UserTagEnum.USER_TAG_0.getCode() ? currentUserId : null, queryParam.getRiskUnitIds());
+
 
         List<RiskAssessPlanQueryDTO> assessPlanQueryDTOS = BeanCopyUtils.copyBeanList(pageResult.getContent(), RiskAssessPlanQueryDTO.class);
 
@@ -438,7 +453,7 @@
         }
 
         searchResult.setData(assessPlanQueryDTOS);
-        searchResult.setTotal(pageResult.getTotalElements());
+        searchResult.setTotal(countDynamic);
         return searchResult;
     }
 
@@ -1184,6 +1199,7 @@
                 }
                 if (planIds.size() > 0) {
                     predicateList.add(criteriaBuilder.in(root.get("id")).value(planIds));
+                    queryParam.setPlanIds(planIds);
                 }
 
                 Join<RiskAssessPlan, RiskAssessPlanIdentificationUser> identificationUserJoin = root.join("riskAssessPlanIdentificationUsers", JoinType.LEFT);
@@ -1192,6 +1208,8 @@
 
 
                 if (roleTag == UserTagEnum.USER_TAG_0.getCode()) {
+                    queryParam.setUserTag(UserTagEnum.USER_TAG_0.getCode().byteValue());
+                    queryParam.setUserId(currentUserId);
                     //辨识
                     if (queryParam.getTag() == 1) {
                         predicateList.add(criteriaBuilder.equal(identificationUserJoin.get("identificationUserId"), currentUserId));
@@ -1217,6 +1235,9 @@
 
         PageRequest pageParam = PageRequest.of(queryParam.getPageIndex() - 1, queryParam.getPageSize(), Sort.Direction.DESC, "updateTime");
         Page<RiskAssessPlan> pageResult = assessPlanRepository.findAll(specification, pageParam);
+        long pageCount = riskPlanDataMapper.getPageCount(queryParam);
+        System.out.println("pageCountpageCountpageCountpageCountpageCountpageCount:"+pageCount);
+
 
         //循环遍历结果集,封装查询结果
         List<AssessQueryDTO> assessQueryDTOList = new ArrayList<>();
@@ -1866,7 +1887,7 @@
         }
 
         searchResult.setData(assessQueryDTOList);
-        searchResult.setTotal(pageResult.getTotalElements());
+        searchResult.setTotal(pageCount);
         searchResult.setCount(assessQueryDTOList.size());
         return searchResult;
     }
diff --git a/src/main/java/com/gkhy/labRiskManage/mapper/RiskPlanDataMapper.java b/src/main/java/com/gkhy/labRiskManage/mapper/RiskPlanDataMapper.java
index 496c3d0..755aa75 100644
--- a/src/main/java/com/gkhy/labRiskManage/mapper/RiskPlanDataMapper.java
+++ b/src/main/java/com/gkhy/labRiskManage/mapper/RiskPlanDataMapper.java
@@ -1,6 +1,7 @@
 package com.gkhy.labRiskManage.mapper;
 
 import com.gkhy.labRiskManage.domain.riskReport.entity.RiskAssessPlanIdentificationUser;
+import com.gkhy.labRiskManage.domain.riskReport.model.bo.AssessQueryBO;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -8,4 +9,5 @@
 @Mapper
 public interface RiskPlanDataMapper {
      List<RiskAssessPlanIdentificationUser> pageList();
+     long getPageCount(AssessQueryBO queryBO);
 }
diff --git a/src/main/resources/config/application-dev.yaml b/src/main/resources/config/application-dev.yaml
index e521946..7e098c1 100644
--- a/src/main/resources/config/application-dev.yaml
+++ b/src/main/resources/config/application-dev.yaml
@@ -6,12 +6,12 @@
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://192.168.2.6:7006/laboratory_risk_manage?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
+    url: jdbc:mysql://192.168.2.19:7006/laboratory_risk_manage?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
     username: root
     password: 2farwL3yPXfbH2AP
     master:
       driver-class-name: com.mysql.cj.jdbc.Driver
-      url: jdbc:mysql://192.168.2.6:7006/laboratory_risk_manage?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
+      url: jdbc:mysql://192.168.2.19:7006/laboratory_risk_manage?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
       username: root
       password: 2farwL3yPXfbH2AP
       type: com.alibaba.druid.pool.DruidDataSource
@@ -20,10 +20,15 @@
       ddl-auto: none
 #      ddl-auto: update #自动更新
     show-sql: true  #日志中显示sql语句
+    properties:
+      hibernate:
+        format_sql: true
 mybatis:
   mapper-locations: classpath:mapper/*.xml
 #  type-aliases-package: com.gkhy.labRiskManage.domain.**
-
+logging:
+  level:
+    com.gkhy.labRiskManage: debug
   redis:
 #    host: 192.168.0.52
 #    port: 6371
diff --git a/src/main/resources/config/application-gslab.yaml b/src/main/resources/config/application-gslab.yaml
index 95809da..2107c8e 100644
--- a/src/main/resources/config/application-gslab.yaml
+++ b/src/main/resources/config/application-gslab.yaml
@@ -69,4 +69,7 @@
 
 mybatis:
   mapper-locations: classpath:mapper/*.xml
-  #  type-aliases-package: com.gkhy.labRiskManage.domain.**
\ No newline at end of file
+  #  type-aliases-package: com.gkhy.labRiskManage.domain.**
+logging:
+  level:
+    com.gkhy.labRiskManage: debug
\ No newline at end of file
diff --git a/src/main/resources/config/application.yaml b/src/main/resources/config/application.yaml
index bb2a5d3..5eadea2 100644
--- a/src/main/resources/config/application.yaml
+++ b/src/main/resources/config/application.yaml
@@ -3,4 +3,5 @@
     name: labRiskManage
   profiles:
     active: dev
-   # active: gslab
+    #active: gslab
+
diff --git a/src/main/resources/mapper/RiskPlanDataMapper.xml b/src/main/resources/mapper/RiskPlanDataMapper.xml
index c26ef96..b0aa752 100644
--- a/src/main/resources/mapper/RiskPlanDataMapper.xml
+++ b/src/main/resources/mapper/RiskPlanDataMapper.xml
@@ -8,4 +8,47 @@
         select id,identification_user identificationUser,identification_user_id identificationUserId from risk_assess_plan_identification_user
     </select>
 
+
+    <select id="getPageCount" resultType="Long" parameterType="com.gkhy.labRiskManage.domain.riskReport.model.bo.AssessQueryBO">
+        select count(a.id) from (
+        SELECT DISTINCT p.id as id FROM risk_assess_plan p
+        <if test="userTag != null and userTag == 0">
+            <if test="userId != null and tag != null and tag == 1">
+                INNER JOIN risk_assess_plan_identification_user q ON p.id = q.risk_assess_plan_id AND q.delete_status = 0
+                AND q.identification_user_id = #{userId}
+            </if>
+            <if test="userId != null and tag != null and tag == 2">
+                INNER JOIN risk_assess_plan_evaluate_user h ON p.id = h.risk_assess_plan_id AND h.delete_status = 0 AND
+                h.evaluate_user_id = #{userId}
+            </if>
+        </if>
+        WHERE p.delete_status = 0
+        <if test="experimentId != null">
+            AND p.experiment_id = #{experimentId}
+        </if>
+        <if test="assessPlanName != null and assessPlanName != ''">
+            AND p.assess_plan_name LIKE CONCAT('%',#{assessPlanName},'%')
+        </if>
+        <if test="tag != null and tag == 2">
+            AND p.identification_time IS NOT NULL
+        </if>
+        <if test="tag != null and tag == 3">
+            AND p.evaluate_time IS NOT NULL
+        </if>
+        <if test="planExecStatus != null and planExecStatus == 5">
+            AND p.plan_exec_status >= 3
+        </if>
+        <if test="planExecStatus != null and planExecStatus != 5">
+            AND p.plan_exec_status = #{planExecStatus}
+        </if>
+        <if test="planIds != null and !planIds.isEmpty()">
+            AND p.id IN
+            <foreach collection="planIds" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY p.id
+        ) a
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.2