New file |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | * @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; |
| | |
| | | private List<String> errorTypeList; |
| | | |
| | | /** 故障类型 */ |
| | | @Excel(name = "故障类型") |
| | | private String errorType; |
| | | |
| | | /** 工单检测图片 */ |
| | |
| | | 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; |
| | |
| | | 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')") |
| | |
| | | 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); |
| | | |
| | |
| | | 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; |
| | |
| | | * @return |
| | | */ |
| | | Result detailByNo(String workOrderNo); |
| | | |
| | | List<WorkOrderVO> export(WorkOrderExportQuery query); |
| | | } |
| | |
| | | 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; |
| | |
| | | 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.*; |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | //TODO:清空Redis定时任务 |
| | | public synchronized Boolean innerAddWorkOrder(List<WorkOrder> workOrderList) { |
| | | int total = workOrderList.size(); |
| | | workOrderList.stream().filter(item -> { |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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, |