From 36e5600e3497d97b42376c5f096d85891f1ad94b Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 30 四月 2024 16:50:12 +0800
Subject: [PATCH] 改为连表查询

---
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                    |   62 +++++++++++++--
 ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java               |    2 
 ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java    |    1 
 ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml                       |   25 ++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   56 +------------
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java            |    8 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java    |   44 ----------
 7 files changed, 97 insertions(+), 101 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
index 93cb878..29b973e 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -8,6 +8,7 @@
 import com.ycl.system.Result;
 import com.ycl.system.domain.group.Add;
 import com.ycl.system.domain.group.Update;
+import com.ycl.utils.PageUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import jakarta.validation.constraints.NotEmpty;
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
index 802abaf..46f7518 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
@@ -2,6 +2,7 @@
 
 import com.ycl.platform.domain.entity.Report;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.query.ReportQuery;
 import com.ycl.platform.domain.vo.ReportVO;
 import com.ycl.platform.domain.form.ReportForm;
 import java.util.List;
@@ -16,4 +17,5 @@
 @Mapper
 public interface ReportMapper extends BaseMapper<Report> {
 
+    List<ReportVO> page(ReportQuery query);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
index b9a996c..e44019b 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -1,11 +1,15 @@
 package com.ycl.platform.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.platform.domain.entity.WorkOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
+import com.ycl.platform.domain.query.WorkOrderQuery;
 import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.domain.form.WorkOrderForm;
 import java.util.List;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 宸ュ崟 Mapper 鎺ュ彛
@@ -16,4 +20,8 @@
 @Mapper
 public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
 
+    void page(IPage page, @Param("query") WorkOrderQuery query);
+
+    List<WorkOrderVO> distributePage(@Param("query") DistributeWorkOrderQuery query);
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
index f863d3f..46aee9b 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
@@ -116,48 +116,8 @@
      */
     @Override
     public Result page(ReportQuery query) {
-
-        if (StringUtils.isNotBlank(query.getPointId())) {
-            LambdaQueryWrapper<YwPoint> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.like(YwPoint::getPointName, query.getPointId());
-            query.setPointIdList(ywpointMapper.selectList(queryWrapper).stream().map(YwPoint::getId).collect(Collectors.toList()));
-            if(CollectionUtils.isEmpty(query.getPointIdList())) {
-                return Result.ok();
-            }
-        }
-        if (StringUtils.isNotBlank(query.getPeopleId())) {
-            LambdaQueryWrapper<YwPeople> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.like(YwPeople::getYwPersonName, query.getPeopleId());
-            query.setPeopleIdList(peopleMapper.selectList(queryWrapper).stream().map(YwPeople::getId).collect(Collectors.toList()));
-            if(CollectionUtils.isEmpty(query.getPeopleIdList())) {
-                return Result.ok();
-            }
-        }
-
-        IPage<Report> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(StringUtils.isNotBlank(query.getReportType()), Report::getReportType, query.getReportType())
-                .le(Objects.nonNull(query.getBeginCreateTime()), Report::getBeginCreateTime, query.getBeginCreateTime())
-                .ge(Objects.nonNull(query.getEndCreateTime()), Report::getEndCreateTime, query.getEndCreateTime())
-                .in(!CollectionUtils.isEmpty(query.getPointIdList()), Report::getPointId, query.getPointIdList())
-                .in(!CollectionUtils.isEmpty(query.getPeopleIdList()), Report::getPeopleId, query.getPeopleIdList())
-                .orderByDesc(Report::getCreateTime)
-                .page(PageUtil.getPage(query, Report.class));
-
-        List<ReportVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> {
-                            ReportVO vo = ReportVO.getVoByEntity(entity, null);
-                            YwUnit unit = unitMapper.selectById(vo.getUnitId());
-                            vo.setUnitName(unit.getUnitName());
-                            YwPeople ywPeople = peopleMapper.selectById(vo.getPeopleId());
-                            vo.setPeopleName(ywPeople.getYwPersonName());
-                            YwPoint ywPoint = ywpointMapper.selectById(vo.getPointId());
-                            vo.setPointName(ywPoint.getPointName());
-                            return vo;
-                        }
-                )
-                .collect(Collectors.toList());
-        return Result.ok().data(vos).total(page.getTotal());
+        List<ReportVO> page = baseMapper.page(query);
+        return Result.ok().data(page).total(page.size());
     }
 
     /**
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index 68d709a..abc41bd 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -130,6 +130,7 @@
         }
         // 宸ュ崟鐘舵��
         workOrder.setStatus(WorkOrderStatusEnum.YW_HANDLE);
+        workOrder.setYwHandleTime(LocalDateTime.now());
         baseMapper.updateById(workOrder);
         // 娣诲姞涓�鏉¤繍缁存儏鍐佃褰�
         WorkOrderYwConditionRecord workOrderYwConditionRecord = new WorkOrderYwConditionRecord();
@@ -212,60 +213,15 @@
      */
     @Override
     public Result page(WorkOrderQuery query) {
-        IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(StringUtils.hasText(query.getWorkOrderNo()), WorkOrder::getWorkOrderNo, query.getWorkOrderNo())
-                .eq(StringUtils.hasText(query.getStatus().getValue()), WorkOrder::getStatus, query.getStatus())
-                .eq(StringUtils.hasText(query.getErrorType()), WorkOrder::getErrorType, query.getErrorType())
-                .between(Objects.nonNull(query.getStart()) && Objects.nonNull(query.getEnd()),
-                        WorkOrder::getYwHandleTime,
-                        DateUtils.getDayStart(query.getStart()),
-                        DateUtils.getDayEnd(query.getEnd()))
-                .orderByDesc(WorkOrder::getCreateTime)
-                .page(PageUtil.getPage(query, WorkOrder.class));
-
-        List<WorkOrderVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> {
-                            WorkOrderVO vo = WorkOrderVO.getVoByEntity(entity, null);
-                            YwUnit unit = ywUnitMapper.selectById(vo.getUnitId());
-                            if (Objects.nonNull(unit)) {
-                                vo.setUnitName(unit.getUnitName());
-                            }
-                            YwPeople ywPeople = ywPeopleMapper.selectById(vo.getYwPeopleId());
-                            if (Objects.nonNull(ywPeople)) {
-                                vo.setYwPeopleName(ywPeople.getYwPersonName());
-                            }
-                            return vo;
-                        }
-                )
-                .collect(Collectors.toList());
-        return Result.ok().data(vos).total(page.getTotal());
+        IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
+        baseMapper.page(page, query);
+        return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
     @Override
     public Result distributePage(DistributeWorkOrderQuery query) {
-        IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId())
-                .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
-                .orderByDesc(WorkOrder::getCreateTime)
-                .page(PageUtil.getPage(query, WorkOrder.class));
-        List<WorkOrderVO> vos = page.getRecords().stream()
-                .map(
-                        entity -> {
-                            WorkOrderVO vo = WorkOrderVO.getVoByEntity(entity, null);
-                            YwUnit unit = ywUnitMapper.selectById(vo.getUnitId());
-                            if (Objects.nonNull(unit)) {
-                                vo.setUnitName(unit.getUnitName());
-                            }
-                            YwPeople ywPeople = ywPeopleMapper.selectById(vo.getYwPeopleId());
-                            if (Objects.nonNull(ywPeople)) {
-                                vo.setYwPeopleName(ywPeople.getYwPersonName());
-                            }
-                            return vo;
-                        }
-                )
-                .collect(Collectors.toList());
-        return Result.ok().data(vos).total(page.getTotal());
+        List<WorkOrderVO> page = baseMapper.distributePage(query);
+        return Result.ok().data(page).total(page.size());
     }
 
     @Override
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index 8e237d6..17b7c91 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -16,4 +16,29 @@
         <result column="error_type" property="errorType" />
     </resultMap>
 
+    <select id="page" resultType="com.ycl.platform.domain.vo.ReportVO">
+        SELECT
+        r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name
+        FROM
+        t_report r
+        LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = '0'
+        LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = '0'
+        LEFT JOIN t_yw_point pt ON r.point_id = pt.id and pt.deleted = '0'
+        where
+        r.deleted = '0'
+        <if test="reportType != null and reportType != ''">
+            AND r.report_type = #{reportType}
+        </if>
+        <if test="beginCreateTime != null">
+            AND r.create_time between #{beginCreateTime} and #{endCreateTime}
+        </if>
+        <if test="pointId != null and pointId != ''">
+            AND pt.point_name like concat('%', #{pointId}, '%')
+        </if>
+        <if test="peopleId != null and peopleId != ''">
+            AND p.yw_person_name like concat('%', #{peopleId}, '%')
+        </if>
+        ORDER BY r.create_time DESC
+    </select>
+
 </mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 2c73866..0c5ab30 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -4,15 +4,59 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.WorkOrderVO">
-        <result column="id" property="id" />
-        <result column="create_time" property="createTime" />
-        <result column="work_order_no" property="workOrderNo" />
-        <result column="unit_id" property="unitId" />
-        <result column="yw_people_id" property="ywPeopleId" />
-        <result column="yw_handle_time" property="ywHandleTime" />
-        <result column="yw_result" property="ywResult" />
-        <result column="yw_condition" property="ywCondition" />
-        <result column="yw_check_result" property="ywCheckResult" />
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="work_order_no" property="workOrderNo"/>
+        <result column="unit_id" property="unitId"/>
+        <result column="yw_people_id" property="ywPeopleId"/>
+        <result column="yw_handle_time" property="ywHandleTime"/>
+        <result column="yw_result" property="ywResult"/>
+        <result column="yw_condition" property="ywCondition"/>
+        <result column="yw_check_result" property="ywCheckResult"/>
     </resultMap>
 
+    <select id="page" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
+        SELECT
+        wo.*,
+        u.unit_name,
+        p.yw_person_name
+        FROM
+        t_work_order wo
+        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = '0'
+        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = '0'
+        where
+            wo.deleted = '0'
+            <if test="query.workOrderNo != null and query.workOrderNo != ''">
+                AND wo.work_order_no = #{query.workOrderNo}
+            </if>
+            <if test="query.status != null">
+                AND wo.status = #{query.status}
+            </if>
+            <if test="query.errorType != null and query.errType != ''">
+                AND wo.error_type = #{query.errorType}
+            </if>
+            <if test="query.start != null">
+                AND wo.yw_handle_time BETWEEN #{query.start} AND #{query.end}
+            </if>
+        ORDER BY wo.create_time DESC
+    </select>
+
+    <select id="distributePage" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
+        SELECT
+        wo.*,
+        u.unit_name,
+        p.yw_person_name
+        FROM
+        t_work_order wo
+        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = '0'
+        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = '0'
+        where
+        wo.deleted = '0'
+        and wo.status = 'WAIT_DISTRIBUTE'
+        <if test="query.unitId != null">
+            AND wo.unit_id = #{query.unitId}
+        </if>
+        ORDER BY wo.create_time DESC
+    </select>
+
 </mapper>

--
Gitblit v1.8.0