Преглед изворни кода

调整按序输出,调整sql联查导致的count值不准确问题

车车 пре 11 месеци
родитељ
комит
f2139241fc

+ 14 - 3
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsJobTicketServiceImpl.java

@@ -93,16 +93,27 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         if (!isJobTicketPoints.isEmpty()) {
             List<Long> pointIds = isJobTicketPoints.stream().map(IsJobTicketPoints::getPointId).collect(Collectors.toList());
             List<PointDetailVO> pointDetailList = iIsIsolationPointService.getPointDetailList(pointIds);
-            pointDetailList.forEach(o ->
+            ArrayList<PointDetailVO> pointDetailVOS = new ArrayList<>();
+            /*pointDetailList.forEach(o ->
                     isJobTicketPoints.stream()
                             .filter(o1 -> o1.getPointId().equals(o.getPointId()))
                             .findFirst()
                             .ifPresent(data -> {
                                 o.setLockId(data.getLockId());
                                 o.setPrePointId(data.getPrePointId());
-                            }));
+                            }));*/
+            // 需要按序输出
+            for (IsJobTicketPoints isJobTicketPoint : isJobTicketPoints) {
+                for (PointDetailVO pointDetailVO : pointDetailList) {
+                    if (isJobTicketPoint.getPointId().equals(pointDetailVO.getPointId())) {
+                        pointDetailVO.setLockId(isJobTicketPoint.getLockId());
+                        pointDetailVO.setPrePointId(isJobTicketPoint.getPrePointId());
+                        pointDetailVOS.add(pointDetailVO);
+                    }
+                }
+            }
             // 2.2组装隔离点数据
-            jobTicketDetailVO.setPointDetailVOList(pointDetailList);
+            jobTicketDetailVO.setPointDetailVOList(pointDetailVOS);
         }
         // 3.查询人员信息
         List<IsJobTicketUser> jobTicketUserList = iIsJobTicketUserService.list(Wrappers.<IsJobTicketUser>lambdaQuery()

+ 4 - 1
ktg-iscs/src/main/resources/mapper/IsJobTicketMapper.xml

@@ -129,6 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
+    <!-- 如果LEFT JOIN is_job_ticket_user需要正确的pointCount,需要改写成子查询,现在用不到正确的pointCount,效率优先 -->
     <select id="getIsJobTicketPage" resultType="com.ktg.iscs.domain.vo.ticket.PageTicketVO">
         SELECT
         j.*,
@@ -140,7 +141,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN md_workshop ws ON ws.workshop_id = j.workshop_id
         LEFT JOIN is_workarea wa ON wa.workarea_id = j.workarea_id
         LEFT JOIN is_job_ticket_points p ON p.ticket_id = j.ticket_id
-        LEFT JOIN is_job_ticket_user u ON u.ticket_id = j.ticket_id
+        <if test="dto.userId != null and dto.userId.trim != ''">
+            LEFT JOIN is_job_ticket_user u ON u.ticket_id = j.ticket_id
+        </if>
         <where>
             <if test="dto.ticketCode != null and dto.ticketCode.trim != ''">
                 and j.ticket_code like concat('%',#{dto.ticketCode},'%')