fuliqi
2024-09-29 c4df5d2cfaa12a1c8a72ef25934fdc31d5be65a1
工单导出
7个文件已修改
1个文件已添加
161 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
New file
@@ -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;
}
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;
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;
    /** 工单检测图片 */
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')")
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);
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);
}
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:清空Redis定时任务
    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;
    }
}
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,