From c4df5d2cfaa12a1c8a72ef25934fdc31d5be65a1 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期日, 29 九月 2024 11:21:21 +0800
Subject: [PATCH] 工单导出

---
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                    |   48 ++++++++++++++++
 ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java    |   16 +++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java   |   53 +++++++++++++++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java               |   15 ++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   24 +++++++
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java            |    1 
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java         |    1 
 ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java          |    3 +
 8 files changed, 158 insertions(+), 3 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
new file mode 100644
index 0000000..7f677da
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
@@ -0,0 +1,53 @@
+package com.ycl.platform.domain.query;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ycl.platform.base.AbsQuery;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 宸ュ崟鏌ヨ
+ *
+ * @author xp
+ * @since 2024-03-05
+ */
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WorkOrder瀵煎嚭", description = "宸ュ崟瀵煎嚭")
+public class WorkOrderExportQuery{
+
+    /**
+     * 宸ュ崟鍙�
+     */
+    private String keyword;
+
+    /**
+     * 杩愮淮澶勭悊鏃堕棿
+     */
+    private String start;
+
+    /**
+     * 杩愮淮澶勭悊鏃堕棿
+     */
+    private String end;
+
+    /**
+     * 鏁呴殰绫诲瀷
+     */
+    private List<String> errorTypeList;
+
+    /**
+     * 鐘舵��
+     */
+    private String status;
+
+    /**
+     * 鍗曚綅id
+     */
+    private Integer unitId;
+}
+
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
index 84855dc..88992c7 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.domain.query;
 
+import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.platform.base.AbsQuery;
 import enumeration.general.WorkOrderStatusEnum;
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
index dcc4579..95fbeb0 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.domain.vo;
 
+import annotation.Excel;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.platform.base.AbsVo;
 import com.ycl.platform.domain.entity.WorkOrder;
@@ -23,26 +24,35 @@
  * @since 2024-03-05
  */
 @Data
-public class WorkOrderVO extends AbsVo {
+public class WorkOrderVO{
 
     /** 宸ュ崟鍙� */
+    @Excel(name = "宸ュ崟鍙�",sort = 1)
     private String workOrderNo;
-
+    private Integer id;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鏁呴殰鏃堕棿",sort = 6,dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
     /** 鐘舵�� */
     private WorkOrderStatusEnum status;
 
     /** 杩愮淮鍗曚綅 */
     private Integer unitId;
+    @Excel(name = "杩愮淮鍗曚綅",sort = 4)
     private String unitName;
     private String unitContact;
     private String unitContactPhone;
 
     /** 宸ュ崟鏉ユ簮/璁惧鍚嶇О */
+    @Excel(name = "璁惧鍚嶇О",sort = 3)
     private String source;
 
     /**
      * 璁惧缂栧彿
      */
+    @Excel(name = "璁惧缂栧彿",sort = 2)
     private String serialNumber;
 
     private Boolean provinceTag;
@@ -60,6 +70,7 @@
     private List<String> errorTypeList;
 
     /** 鏁呴殰绫诲瀷 */
+    @Excel(name = "鏁呴殰绫诲瀷")
     private String errorType;
 
     /** 宸ュ崟妫�娴嬪浘鐗� */
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 2a21f9f..803340f 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
@@ -1,18 +1,25 @@
 package com.ycl.platform.controller;
 
+import annotation.Log;
 import com.ycl.platform.domain.entity.WorkOrderAuditingRecord;
 import com.ycl.platform.domain.form.*;
 import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
+import com.ycl.platform.domain.query.WorkOrderExportQuery;
 import com.ycl.platform.domain.query.WorkOrderQuery;
+import com.ycl.platform.domain.vo.ContractResultVO;
 import com.ycl.platform.domain.vo.DistributeWorkOrderVO;
+import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO;
 import com.ycl.platform.service.WorkOrderService;
 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 com.ycl.utils.poi.ExcelUtil;
+import enumeration.BusinessType;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.NotEmpty;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -111,6 +118,15 @@
         return workOrderService.page(query);
     }
 
+    @PostMapping("/export")
+    @ApiOperation(value = "瀵煎嚭", notes = "瀵煎嚭")
+    @Log(title = "瀵煎嚭宸ュ崟", businessType = BusinessType.EXPORT)
+    public void export(HttpServletResponse response, WorkOrderExportQuery query) {
+        List<WorkOrderVO> results = workOrderService.export(query);
+        ExcelUtil<WorkOrderVO> util = new ExcelUtil<>(WorkOrderVO.class);
+        util.exportExcel(response, results, "宸ュ崟");
+    }
+
     @PostMapping("/distribute/page")
     @ApiOperation(value = "涓嬪彂鍒嗛〉", notes = "涓嬪彂鍒嗛〉")
     @PreAuthorize("@ss.hasPermi('work:order:distribute:page')")
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 119e63e..378fd6c 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
@@ -29,6 +29,7 @@
 public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
 
     IPage<WorkOrderVO> page(IPage page, @Param("query") WorkOrderQuery query);
+    List<WorkOrderVO> export(@Param("query") WorkOrderExportQuery query);
 
     IPage<WorkOrderVO> distributePage(IPage page, @Param("query") DistributeWorkOrderQuery query);
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
index 881aa00..88fb056 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -7,6 +7,7 @@
 import com.ycl.platform.domain.query.*;
 import com.ycl.platform.domain.vo.DeviceInfoVO;
 import com.ycl.platform.domain.vo.DistributeWorkOrderVO;
+import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO;
 import com.ycl.platform.domain.vo.screen.WorkOrderRegionVO;
 import com.ycl.platform.domain.vo.screen.WorkOrderTotalVO;
@@ -233,4 +234,6 @@
      * @return
      */
     Result detailByNo(String workOrderNo);
+
+    List<WorkOrderVO> export(WorkOrderExportQuery query);
 }
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 6f47e90..32536ae 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
@@ -1,5 +1,6 @@
 package com.ycl.platform.service.impl;
 
+import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -55,6 +56,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
@@ -93,7 +95,6 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    //TODO锛氭竻绌篟edis瀹氭椂浠诲姟
     public synchronized Boolean innerAddWorkOrder(List<WorkOrder> workOrderList) {
         int total = workOrderList.size();
         workOrderList.stream().filter(item -> {
@@ -942,4 +943,25 @@
         workOrder.setImgList(imgList);
         return Result.ok().data(workOrder);
     }
+
+    @Override
+    public List<WorkOrderVO> export(WorkOrderExportQuery query) {
+        query.setUnitId(SecurityUtils.getUnitId());
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if (query.getStart() == null) {
+            query.setStart(format.format(DateUtils.getDayStart(new Date())));
+        } else {
+            query.setStart(query.getStart() + " 00:00:00");
+        }
+        if (query.getEnd() == null) {
+            query.setStart(format.format(DateUtils.getDayEnd(new Date())));
+        } else {
+            query.setEnd(query.getEnd() + " 23:59:59");
+        }
+
+        List<WorkOrderVO> export = baseMapper.export(query);
+
+        System.out.println(export);
+        return export;
+    }
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 10b5140..b9d5398 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -78,6 +78,54 @@
         ORDER BY wo.work_order_no DESC
     </select>
 
+    <select id="export" resultMap="BaseResultMap">
+        SELECT
+        wo.id,wo.status,
+        wo.work_order_no,
+        wo.serial_number,
+        wo.create_time,
+        wo.unit_id,
+        wo.yw_people_id,
+        wo.yw_handle_time,
+        wo.yw_result,
+        wo.yw_check_result,
+        wo.overtime,
+        wo.deduct,
+        u.unit_name,
+        p.yw_person_name,
+        tm.name as source,
+        GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType,
+        GROUP_CONCAT(DISTINCT ci.img_url ORDER BY ci.create_time DESC SEPARATOR ',') AS imgListStr
+        FROM
+        t_work_order wo
+        INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
+        INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
+        INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
+        INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
+            collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if>
+        LEFT JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no
+        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0
+        WHERE
+        wo.deleted = 0
+        <if test="query.unitId != null">
+            AND wo.unit_id = #{query.unitId}
+        </if>
+        <if test="query.keyword != null and query.keyword != ''">
+            AND (wo.work_order_no like concat('%', #{query.keyword}, '%') or tm.name like concat('%', #{query.keyword}, '%'))
+        </if>
+        <if test="query.status != null and query.status != ''">
+            AND wo.status = #{query.status}
+        </if>
+        <if test="query.start != null and query.end != null">
+            AND wo.create_time BETWEEN #{query.start} AND #{query.end}
+        </if>
+        GROUP BY
+        wo.id, wo.status, wo.work_order_no, wo.serial_number,wo.create_time, wo.unit_id, wo.yw_people_id,tm.name, wo.yw_handle_time, wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct,
+        u.unit_name,
+        p.yw_person_name
+        ORDER BY wo.work_order_no DESC
+    </select>
+
     <select id="distributePage" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
         SELECT
         wo.id,wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, wo.yw_handle_time, wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct,

--
Gitblit v1.8.0