Przeglądaj źródła

pms 保养工单导出

zhangcl 3 dni temu
rodzic
commit
44e342c5ff

+ 52 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorder/IotMainWorkOrderController.java

@@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -334,6 +337,14 @@ public class IotMainWorkOrderController {
         Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(orders,
         Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(orders,
                 order -> Stream.of(NumberUtils.parseLong(order.getResponsiblePerson()))));
                 order -> Stream.of(NumberUtils.parseLong(order.getResponsiblePerson()))));
         return BeanUtils.toBean(orders, IotMainWorkOrderRespVO.class, orderVO -> {
         return BeanUtils.toBean(orders, IotMainWorkOrderRespVO.class, orderVO -> {
+            // 创建时间 格式化 yyyy-MM-dd
+            if (ObjUtil.isNotEmpty(orderVO.getCreateTime())) {
+                orderVO.setCreateTimeStr(LocalDateTimeUtil.format(orderVO.getCreateTime(), DatePattern.NORM_DATE_PATTERN));
+            }
+            // 创建时间 格式化 yyyy-MM-dd
+            if (ObjUtil.isNotEmpty(orderVO.getUpdateTime())) {
+                orderVO.setUpdateTimeStr(LocalDateTimeUtil.format(orderVO.getUpdateTime(), DatePattern.NORM_DATE_PATTERN));
+            }
             // 2.1 拼接部门信息
             // 2.1 拼接部门信息
             findAndThen(deptMap, orderVO.getDeptId(), dept -> orderVO.setDeptName(dept.getName()));
             findAndThen(deptMap, orderVO.getDeptId(), dept -> orderVO.setDeptName(dept.getName()));
             // 设置创建人、负责人名称
             // 设置创建人、负责人名称
@@ -396,4 +407,45 @@ public class IotMainWorkOrderController {
                 deviceDistancesResult);
                 deviceDistancesResult);
     }
     }
 
 
+    @GetMapping("/exportMaintenanceOrders")
+    @Operation(summary = "导出保养查询列表 Excel")
+    @PreAuthorize("@ss.hasPermission('pms:iot-main-work-order:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaintenanceOrders(@Valid IotMainWorkOrderPageReqVO pageReqVO,
+                                   HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        // List<IotDeviceRespVO> maintenances = iotMainWorkOrderService.deviceMainDistances(pageReqVO).getList();
+        List<IotMainWorkOrderRespVO> orders = iotMainWorkOrderService.sortedMainWorkOrderPage(pageReqVO).getList();
+        // key设备状态数据字典value   value设备状态数据字典label
+        Map<String, String> deviceStatusPair = new HashMap<>();
+
+        // 施工状态 字典数据
+        List<DictDataDO> deviceStatusData = dictDataService.getDictDataListByDictType("pms_device_status");
+        if (CollUtil.isNotEmpty(deviceStatusData)) {
+            deviceStatusData.forEach(data -> {
+                deviceStatusPair.put(data.getValue(), data.getLabel());
+            });
+        }
+        List<IotMainWorkOrderRespVO> sortedOrders = buildSortedMainWorkOrders(orders);
+        if (CollUtil.isNotEmpty(sortedOrders)) {
+            sortedOrders.forEach(order -> {
+                // 工单类型 label
+                if (order.getType() == 1) {
+                    order.setTypeName("计划生成");
+                } else {
+                    order.setTypeName("临时新建");
+                }
+                // 工单状态  待执行 已执行
+                if (order.getResult() == 1) {
+                    order.setResultName("待执行");
+                } else {
+                    order.setResultName("已执行");
+                }
+            });
+        }
+        // 导出 Excel
+        ExcelUtils.write(response, "保养工单.xls", "保养工单", IotMainWorkOrderRespVO.class,
+                sortedOrders);
+    }
+
 }
 }

+ 25 - 23
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorder/vo/IotMainWorkOrderRespVO.java

@@ -16,19 +16,15 @@ import java.util.List;
 public class IotMainWorkOrderRespVO {
 public class IotMainWorkOrderRespVO {
 
 
     @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18795")
     @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "18795")
-    @ExcelProperty("主键id")
     private Long id;
     private Long id;
 
 
     @Schema(description = "保养计划id", example = "28145")
     @Schema(description = "保养计划id", example = "28145")
-    @ExcelProperty("保养计划id")
     private Long planId;
     private Long planId;
 
 
     @Schema(description = "保养计划编号")
     @Schema(description = "保养计划编号")
-    @ExcelProperty("保养计划编号")
     private String planSerialNumber;
     private String planSerialNumber;
 
 
     @Schema(description = "组织id", example = "8684")
     @Schema(description = "组织id", example = "8684")
-    @ExcelProperty("组织id")
     private Long deptId;
     private Long deptId;
 
 
     @Schema(description = "分组工单id  多个责任人操作相同设备内容的工单 关联关系 uuid")
     @Schema(description = "分组工单id  多个责任人操作相同设备内容的工单 关联关系 uuid")
@@ -39,47 +35,53 @@ public class IotMainWorkOrderRespVO {
     private String orderNumber;
     private String orderNumber;
 
 
     @Schema(description = "工单名称 (吐哈-C14-保养计划)", example = "张三")
     @Schema(description = "工单名称 (吐哈-C14-保养计划)", example = "张三")
-    @ExcelProperty("工单名称 (吐哈-C14-保养计划)")
+    @ExcelProperty("工单名称")
     private String name;
     private String name;
 
 
+    @Schema(description = "距离保养时间 单位可能是 H D KM")
+    @ExcelProperty("距离保养")
+    private String mainDistance;
+
     @Schema(description = "工单类型(1计划生成  2临时新建)", example = "1")
     @Schema(description = "工单类型(1计划生成  2临时新建)", example = "1")
-    @ExcelProperty("工单类型(1计划生成  2临时新建)")
     private Integer type;
     private Integer type;
 
 
+    @Schema(description = "工单类型(1计划生成  2临时新建)", example = "1")
+    @ExcelProperty("工单类型")
+    private String typeName;
+
     @Schema(description = "负责人id 多个以逗号分隔")
     @Schema(description = "负责人id 多个以逗号分隔")
-    @ExcelProperty("负责人id 多个以逗号分隔")
     private String responsiblePerson;
     private String responsiblePerson;
 
 
     @Schema(description = "负责人id 多个以逗号分隔", example = "王五")
     @Schema(description = "负责人id 多个以逗号分隔", example = "王五")
-    @ExcelProperty("负责人id 多个以逗号分隔")
+    @ExcelProperty("负责人")
     private String responsiblePersonName;
     private String responsiblePersonName;
 
 
     @Schema(description = "保养费用")
     @Schema(description = "保养费用")
-    @ExcelProperty("保养费用")
+    @ExcelProperty("保养费用(元)")
     private BigDecimal cost;
     private BigDecimal cost;
 
 
     @Schema(description = "保养结果(1待执行 2已执行)")
     @Schema(description = "保养结果(1待执行 2已执行)")
-    @ExcelProperty("保养结果(1待执行 2已执行)")
     private Integer result;
     private Integer result;
 
 
+    @Schema(description = "保养结果(1待执行 2已执行)")
+    @ExcelProperty("保养结果")
+    private String resultName;
+
     @Schema(description = "其他费用")
     @Schema(description = "其他费用")
-    @ExcelProperty("其他费用")
     private BigDecimal otherCost;
     private BigDecimal otherCost;
 
 
     @Schema(description = "人工费用")
     @Schema(description = "人工费用")
-    @ExcelProperty("人工费用")
     private BigDecimal laborCost;
     private BigDecimal laborCost;
 
 
     @Schema(description = "是否委外 0否  1是")
     @Schema(description = "是否委外 0否  1是")
-    @ExcelProperty("是否委外 0否  1是")
     private Integer outsourcingFlag;
     private Integer outsourcingFlag;
 
 
     @Schema(description = "实际保养开始时间")
     @Schema(description = "实际保养开始时间")
-    @ExcelProperty("实际保养开始时间")
+    @ExcelProperty("保养开始时间")
     private LocalDateTime actualStartTime;
     private LocalDateTime actualStartTime;
 
 
     @Schema(description = "实际保养结束时间")
     @Schema(description = "实际保养结束时间")
-    @ExcelProperty("实际保养结束时间")
+    @ExcelProperty("保养结束时间")
     private LocalDateTime actualEndTime;
     private LocalDateTime actualEndTime;
 
 
     @Schema(description = "备注", example = "你说的对")
     @Schema(description = "备注", example = "你说的对")
@@ -91,34 +93,34 @@ public class IotMainWorkOrderRespVO {
     private String delayReason;
     private String delayReason;
 
 
     @Schema(description = "状态 0启用  1停用", example = "2")
     @Schema(description = "状态 0启用  1停用", example = "2")
-    @ExcelProperty("状态 0启用  1停用")
     private Integer status;
     private Integer status;
 
 
     @Schema(description = "流程实例id", example = "12662")
     @Schema(description = "流程实例id", example = "12662")
-    @ExcelProperty("流程实例id")
     private String processInstanceId;
     private String processInstanceId;
 
 
     @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "1")
     @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "1")
-    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
     private Integer auditStatus;
     private Integer auditStatus;
 
 
     @Schema(description = "创建时间")
     @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
     private LocalDateTime createTime;
     private LocalDateTime createTime;
 
 
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private String createTimeStr;
+
     @Schema(description = "更新时间")
     @Schema(description = "更新时间")
-    @ExcelProperty("更新时间")
     private LocalDateTime updateTime;
     private LocalDateTime updateTime;
 
 
+    @Schema(description = "更新时间 格式化 yyyy-MM-dd")
+    @ExcelProperty("填写时间")
+    private String updateTimeStr;
+
     /**
     /**
      * 扩展字段
      * 扩展字段
      */
      */
     @Schema(description = "部门名称")
     @Schema(description = "部门名称")
     private String deptName;
     private String deptName;
 
 
-    @Schema(description = "距离保养时间 单位可能是 H D KM")
-    private String mainDistance;
-
     @Schema(description = "距离保养时间 单位 H D KM")
     @Schema(description = "距离保养时间 单位 H D KM")
     private String mainDistanceUnit;
     private String mainDistanceUnit;