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