diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java index e9e1dc4..d71fc84 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMobileController.java @@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -15,8 +16,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.dms.domain.DmsBillsMaintDetail; import org.dromara.dms.domain.DmsFaultComponentsParts; import org.dromara.dms.domain.bo.*; -import org.dromara.dms.domain.mobile.DeviceBeen; -import org.dromara.dms.domain.mobile.Outsourcing; +import org.dromara.dms.domain.mobile.*; import org.dromara.dms.domain.vo.*; import org.dromara.dms.service.*; import org.dromara.resource.api.RemoteFileService; @@ -254,10 +254,12 @@ public class DmsMobileController extends BaseController { // @RequiresPermissions("qms:checkrule:list") @GetMapping("/getBillsFaultInstanceByRepairInstanceId/{repairInstanceId}") @RepeatSubmit - public R getBillsFaultInstanceByRepairInstanceId(@PathVariable("repairInstanceId") Long repairInstanceId) { + public R getBillsFaultInstanceByRepairInstanceId(@PathVariable("repairInstanceId") Long repairInstanceId) { //fixme:图片地址完整路径(IP) DmsBillsFaultInstanceVo billsFaultInstance = dmsBillsFaultInstanceService.selectDmsBillsFaultInstanceByRepairInstanceId(repairInstanceId); - return R.ok(billsFaultInstance); + // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 + DmsBillsFaultInstanceMobile mobileInstance = MapstructUtils.convert(billsFaultInstance, DmsBillsFaultInstanceMobile.class); + return R.ok(mobileInstance); } @@ -283,9 +285,11 @@ public class DmsMobileController extends BaseController { // @RequiresPermissions("qms:checkrule:list") @GetMapping("/getBillsFaultInstance4Repair/{repairInstanceId}") @RepeatSubmit - public R getBillsFaultInstance4Repair(@PathVariable("repairInstanceId") Long repairInstanceId) { + public R getBillsFaultInstance4Repair(@PathVariable("repairInstanceId") Long repairInstanceId) { DmsBillsFaultInstanceVo billsFaultInstance = dmsBillsFaultInstanceService.queryById(repairInstanceId); - return R.ok(billsFaultInstance); + // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 + DmsBillsFaultInstanceMobile mobileInstance = MapstructUtils.convert(billsFaultInstance, DmsBillsFaultInstanceMobile.class); + return R.ok(mobileInstance); } @@ -345,9 +349,11 @@ public class DmsMobileController extends BaseController { // @RequiresPermissions("qms:checkrule:list") @GetMapping("/getNewestInspectInstance") @RepeatSubmit - public R getNewestInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstance) { + public R getNewestInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstance) { DmsBillsInspectInstanceVo newestInspectInstance = dmsBillsInspectInstanceService.getNewestBillsInspectInstance(dmsBillsInspectInstance); - return R.ok(newestInspectInstance); + // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 + DmsBillsInspectInstanceMobile mobileInstance = MapstructUtils.convert(newestInspectInstance, DmsBillsInspectInstanceMobile.class); + return R.ok(mobileInstance); } @@ -381,9 +387,11 @@ public class DmsMobileController extends BaseController { // @RequiresPermissions("qms:checkrule:list") @GetMapping("/getNewestMaintInstance") // @RepeatSubmit - public R getNewestMaintInstance(DmsBillsMaintInstanceBo dmsBillsMaintInstance) { + public R getNewestMaintInstance(DmsBillsMaintInstanceBo dmsBillsMaintInstance) { DmsBillsMaintInstanceVo newestMaintInstance = dmsBillsMaintInstanceService.getNewestBillsMaintInstance(dmsBillsMaintInstance); - return R.ok(newestMaintInstance); + // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 + DmsBillsMaintInstanceMobile mobileInstance = MapstructUtils.convert(newestMaintInstance, DmsBillsMaintInstanceMobile.class); + return R.ok(mobileInstance); } @@ -418,9 +426,11 @@ public class DmsMobileController extends BaseController { // @RequiresPermissions("qms:checkrule:list") @GetMapping("/getNewestLubeInstance") // @RepeatSubmit - public R getNewestLubeInstance(DmsBillsLubeInstanceBo dmsBillsLubeInstance) { + public R getNewestLubeInstance(DmsBillsLubeInstanceBo dmsBillsLubeInstance) { DmsBillsLubeInstanceVo newestLubeInstance = dmsBillsLubeInstanceService.getNewestBillsLubeInstance(dmsBillsLubeInstance); - return R.ok(newestLubeInstance); + // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 + DmsBillsLubeInstanceMobile mobileInstance = MapstructUtils.convert(newestLubeInstance, DmsBillsLubeInstanceMobile.class); + return R.ok(mobileInstance); } /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceScanBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceScanBo.java index 557d0a2..2ad8f45 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceScanBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceScanBo.java @@ -7,11 +7,11 @@ import lombok.Data; @Data public class DmsBillsInspectInstanceScanBo { - @NotNull(message="点巡检工单ID必须输入") + // @NotNull(message="点巡检工单ID必须输入") private Long inspectInstanceId; /** 设备编号 */ - @NotBlank(message="设备编号必须输入") + // @NotBlank(message="设备编号必须输入") private String deviceCode; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsFaultInstanceMobile.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsFaultInstanceMobile.java new file mode 100644 index 0000000..81dfbe7 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsFaultInstanceMobile.java @@ -0,0 +1,238 @@ +package org.dromara.dms.domain.mobile; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.dms.domain.DmsFaultComponentsParts; +import org.dromara.dms.domain.DmsInstanceFile; +import org.dromara.dms.domain.vo.DmsBillsFaultInstanceVo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 故障报修工单视图对象 dms_bills_fault_instance + * + * @author zch + * @date 2025-04-07 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsBillsFaultInstanceVo.class, reverseConvertGenerate = true) +public class DmsBillsFaultInstanceMobile implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识;此表不会长期保存 + */ + @ExcelProperty(value = "主键标识;此表不会长期保存") + private Long repairInstanceId; + + /** + * 工单编号 + */ + @ExcelProperty(value = "工单编号") + private String billsFaultCode; + + /** + * 工单类型(1手工创建 2自动创建) + */ + @ExcelProperty(value = "工单类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "instance_type") + private String instanceType; + + /** + * 报修来源类型(1检修 2点检 3巡检 9其他) + */ + @ExcelProperty(value = "报修来源类型(1检修 2点检 3巡检 9其他)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "fault_source_type") + private String faultSourceType; + + /** + * 报修来源ID(预留字段不显示) + */ + @ExcelProperty(value = "报修来源ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "预=留字段不显示") + private Long faultSourceId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + @ExcelProperty(value = "流程定义ID,关联wf_definition_config的id") + private Long wfDefinitionId; + + /** + * 设备ID,关联prod_base_machine_info的machine_id + */ + @ExcelProperty(value = "设备ID,关联prod_base_machine_info的machine_id") + private Long machineId; + + /** + * 申请人 + */ + @ExcelProperty(value = "申请人") + private String applyUser; + + /** + * 申请时间 + */ + @ExcelProperty(value = "申请时间") + private Date applyTime; + + /** + * 实际开始时间 + */ + @ExcelProperty(value = "实际开始时间") + private Date realBeginTime; + + /** + * 实际完成时间 + */ + @ExcelProperty(value = "实际完成时间") + private Date realEndTime; + + /** + * 要求完成时间 + */ + @ExcelProperty(value = "要求完成时间") + private Date requireEndTime; + + /** + * 工单状态(0待维修 1维修中 2维修完成) + */ + @ExcelProperty(value = "工单状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "bills_status") + private String billsStatus; + + /** + * 审批状态 + */ + @ExcelProperty(value = "审批状态") + private String approveStatus; + + /** + * 确认状态(0未确认 1确认完成) + */ + @ExcelProperty(value = "确认状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "repair_confirm") + private String repairConfirm; + + /** + * 确认人 + */ + @ExcelProperty(value = "确认人") + private String confirmUser; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 故障文件地址,一般是图片 + */ + private String filePath;//join + + + private String machineCode;//JOIN + + private String machineName;//JOIN + + private String machineLocation;//JOIN + + private String machineSpec;//JOIN + + /** + * 设备ID,映射到数据库的 machine_id 字段 + */ + private int deviceId; + + /** + * 设备编码,映射到数据库的 machine_code 字段 + */ + private String deviceCode; + + /** + * 设备名称,映射到数据库的 machine_name 字段 + */ + private String deviceName; + + /** + * 设备位置,映射到数据库的 machine_location 字段 + */ + private String deviceLocation; + + /** + * 设备类型ID,映射到数据库的 machine_type 字段 + * 注意:这里可能需要根据实际业务调整数据类型 + */ + private Long deviceTypeId; + + /** + * 设备规格,映射到数据库的 machine_spec 字段 + */ + private String deviceSpec; + + /** + * 设备状态,映射到数据库的 machine_status 字段 + * 注意:数据库中是 String 类型,这里是 int 类型,可能需要转换 + */ + private int deviceStatus; + + private String imgUrl;//JOIN + + private Long instanceActivityId;//JOIN + + private String faultType;//JOIN + + private String faultDescription;//JOIN + + private String designOperations;//JOIN + + + + private String repairType;//JOIN + + private Long outsourcingId;//JOIN + + private String processHandleResolution;//JOIN + + private List fileUrls;//JOIN + + // private List sysFiles; + + private List dmsInstanceFiles;//JOIN + + private List dmsInstanceFiles1;//JOIN + + private String checkedFault;//JOIN + + private String repairContent;//JOIN + + private String protectedMethod;//JOIN + + private String repairer;//JOIN + + private Date confirmTime;//JOIN + + private Long componentsPartsId;//JOIN + + private List parts;//JOIN + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsInspectInstanceMobile.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsInspectInstanceMobile.java new file mode 100644 index 0000000..822310b --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsInspectInstanceMobile.java @@ -0,0 +1,131 @@ +package org.dromara.dms.domain.mobile; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + + + +/** + * 点巡检工单视图对象 dms_bills_inspect_instance + * + * @author zch + * @date 2025-03-31 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsBillsInspectInstanceVo.class, reverseConvertGenerate = true) +public class DmsBillsInspectInstanceMobile implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long inspectInstanceId; + + /** + * 计划ID,关联dms_plan_inspect的plan_inspect_id + */ + @ExcelProperty(value = "计划ID,关联dms_plan_inspect的plan_inspect_id") + private Long planInspectId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + @ExcelProperty(value = "流程定义ID,关联wf_definition_config的id") + private Long wfDefinitionId; + + /** + * 检查类型(1巡检 2点检) + */ + @ExcelProperty(value = "检查类型(1巡检 2点检)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "inspect_type") + private String inspectType; + + /** + * 巡检线路ID,关联dms_base_inspect_route的inspect_route_id + */ + @ExcelProperty(value = "巡检线路ID,关联dms_base_inspect_route的inspect_route_id") + private Long inspectRouteId; + + /** + * 巡检编号 + */ + @ExcelProperty(value = "巡检编号") + private String billsInspectCode; + +// /** +// * 计划开始时间 +// */ +// @ExcelProperty(value = "计划开始时间") +// private Date planBeginTime; +// +// /** +// * 计划结束时间;超时报警 +// */ +// @ExcelProperty(value = "计划结束时间;超时报警") +// private Date planEndTime; +// +// /** +// * 实际开始时间 +// */ +// @ExcelProperty(value = "实际开始时间") +// private Date realBeginTime; +// +// /** +// * 实际结束时间 +// */ +// @ExcelProperty(value = "实际结束时间") +// private Date realEndTime; + + /** + * 巡检状态(1待巡检 2巡检中 3完成) + */ + @ExcelProperty(value = "巡检状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "dms_inspect_status") + private String inspectStatus; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 流程状态 + */ + private String status; + + + /** + * 线路名称 + */ + private String routeName; + + /** + * 执行人员 + */ + private String performer; + + /** + * 巡检工单明细列表 - 使用专门的Mobile对象确保类型匹配 + */ + private List dmsInspectInstanceDetailList; + + private String planInspectCode; + + private String inspectStatusStr; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsLubeInstanceMobile.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsLubeInstanceMobile.java new file mode 100644 index 0000000..8775f51 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsLubeInstanceMobile.java @@ -0,0 +1,154 @@ +package org.dromara.dms.domain.mobile; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.dms.domain.vo.DmsBillsLubeDetailVo; +import org.dromara.dms.domain.vo.DmsBillsLubeInstanceVo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 润滑工单视图对象 dms_bills_lube_instance + * + * @author zch + * @date 2025-03-25 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsBillsLubeInstanceVo.class, reverseConvertGenerate = true) +public class DmsBillsLubeInstanceMobile implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long lubeInstanceId; + + /** + * 计划ID,关联dms_plan_lube的plan_lube_id + */ + @ExcelProperty(value = "计划ID,关联dms_plan_lube的plan_lube_id") + private Long planLubeId; + + /** + * 润滑工单编号 + */ + @ExcelProperty(value = "润滑工单编号") + private String billsLubeCode; + + /** + * 润滑组别 + */ + @ExcelProperty(value = "润滑组别") + private String lubeGroup; + + /** + * 润滑负责人 + */ + @ExcelProperty(value = "润滑负责人") + private String lubeSupervisor; + + /** + * 润滑级别(1日常润滑 2月度润滑 3年度润滑) + */ + @ExcelProperty(value = "润滑级别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "lube_level") + private String lubeLevel; + +// /** +// * 计划润滑开始时间 +// */ +// @ExcelProperty(value = "计划润滑开始时间") +// private Date planBeginTime; +// +// /** +// * 计划润滑完成时间 +// */ +// @ExcelProperty(value = "计划润滑完成时间") +// private Date planEndTime; +// +// /** +// * 实际润滑开始时间 +// */ +// @ExcelProperty(value = "实际润滑开始时间") +// private Date realBeginTime; +// +// /** +// * 实际润滑完成时间;超期报警 +// */ +// @ExcelProperty(value = "实际润滑完成时间;超期报警") +// private Date realEndTime; + + /** + * 润滑状态(1待润滑 2润滑中 3已完成) + */ + @ExcelProperty(value = "润滑状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "lube_status") + private String lubeStatus; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 流程状态 + */ + private String status; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + private Long wfDefinitionId; + + /** + * 计划编号 + */ + private String planLubeCode; + + /** + * 润滑工单详情 + */ + private List dmsBillsLubeDetailList; + + + /** + * 创建者 + */ + @ExcelIgnore + private Long createBy; + + /** + * 创建时间 + */ + @ExcelIgnore + private Date createTime; + + /** + * + */ + private List dmsBillsLubeDetails; + + private String lubeStatusStr; + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsMaintInstanceMobile.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsMaintInstanceMobile.java new file mode 100644 index 0000000..b2fb26a --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsBillsMaintInstanceMobile.java @@ -0,0 +1,146 @@ +package org.dromara.dms.domain.mobile; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.dms.domain.DmsBillsMaintDetail; +import org.dromara.dms.domain.vo.DmsBillsMaintInstanceVo; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + + +/** + * 保养工单视图对象 dms_bills_maint_instance + * + * @author zch + * @date 2025-03-31 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsBillsMaintInstanceVo.class, reverseConvertGenerate = true) +public class DmsBillsMaintInstanceMobile implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long maintInstanceId; + + /** + * 保养计划ID,关联dms_plan_maint的plan_maint_id + */ + @ExcelProperty(value = "保养计划ID,关联dms_plan_maint的plan_maint_id") + private Long planMaintId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + @ExcelProperty(value = "流程定义ID,关联wf_definition_config的id") + private Long wfDefinitionId; + + /** + * 保养单号 + */ + @ExcelProperty(value = "保养单号") + private String billsMaintCode; + + /** + * 保养组别 + */ + @ExcelProperty(value = "保养组别") + private String maintGroup; + + /** + * 保养负责人 + */ + @ExcelProperty(value = "保养负责人") + private String maintSupervisor; + + /** + * 保养级别(1日常保养 2月度保养 3年度保养) + */ + @ExcelProperty(value = "保养级别(1日常保养 2月度保养 3年度保养)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "maint_level") + private Long maintLevel; + +// /** +// * 计划保养时间 +// */ +// @ExcelProperty(value = "计划保养时间") +// private Date planBeginTime; +// +// /** +// * 实际开始时间 +// */ +// @ExcelProperty(value = "实际开始时间") +// private Date realBeginTime; +// +// /** +// * 计划完成时间;根据计划的时限计算 +// */ +// @ExcelProperty(value = "计划完成时间;根据计划的时限计算") +// private Date planEndTime; +// +// /** +// * 实际完成时间 +// */ +// @ExcelProperty(value = "实际完成时间") +// private Date realEndTime; + + /** + * 保养状态(1待保养 2保养中 3已完成) + */ + @ExcelProperty(value = "保养状态(1待保养 2保养中 3已完成)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "maint_status") + /* private String maintStatus;*/ + private Long maintStatus; + + /** + * 保养完成率 + */ + @ExcelProperty(value = "保养完成率") + private BigDecimal maintCompRate; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 流程状态 + */ + private String status; + + /** + * 流程状态 - PDA端需要Long类型 + * selectNewestDmsBillsMaintInstance + * dbmi.wf_definition_id as wf_process_id + */ + private Long wfProcessId; + + + private String maintStatusStr; + + + private String planRemark; + + + private String maintLevelName; + + + private List dmsBillsMaintDetailList; + + + // private Date createTime; + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsInspectInstanceDetailMobile.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsInspectInstanceDetailMobile.java new file mode 100644 index 0000000..df4de86 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DmsInspectInstanceDetailMobile.java @@ -0,0 +1,109 @@ +package org.dromara.dms.domain.mobile; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.dms.domain.DmsInspectInstanceDetail; +import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 点巡检工单明细Mobile对象 - 专为PDA端优化 + * + * @author system + * @date 2025-06-21 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsInspectInstanceDetailVo.class, reverseConvertGenerate = true) +public class DmsInspectInstanceDetailMobile implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long instanceDetailId; + + /** + * 点巡检工单ID + */ + @ExcelProperty(value = "点巡检工单ID") + private Long inspectInstanceId; + + /** + * 巡检步骤 + */ + private Long lineStep; + + /** + * 实际巡检步骤 + */ + private Long realLineStep; + + /** + * 设备ID - 映射machineId字段,PDA端期望int类型 + */ + @ExcelProperty(value = "设备ID") + private int deviceId; + + /** + * 巡检状态(1待巡检 2巡检中 3已完成) + */ + @ExcelProperty(value = "巡检状态") + private String instanceDetailStatus; + + /** + * 巡检标准 + */ + private String inspectStandard; + + /** + * 巡检描述 + */ + @ExcelProperty(value = "巡检描述") + private String inspectDesc; + + /** + * 设备状态(1正常 0异常) + */ + @ExcelProperty(value = "设备状态") + private String inspectStatus; + + /** + * 巡检开始时间 - PDA端需要字符串格式 + */ + private String beginTime; + + /** + * 巡检结束时间 - PDA端需要字符串格式 + */ + private String endTime; + + /** + * 备注 + */ + private String remark; + + /** + * 设备编码 - PDA端需要的额外字段 + */ + private String deviceCode; + + /** + * 设备名称 - PDA端需要的额外字段 + */ + private String deviceName; + + /** + * 巡检项目明细列表 - PDA端需要的嵌套对象 (暂时注释掉,JSON中为null) + */ + // private List dmsInspectInstanceDetailProjectList; + +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java index 0cb380d..47c0543 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceVo.java @@ -7,7 +7,7 @@ import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.dms.domain.DmsBillsInspectInstance; -import org.dromara.dms.domain.DmsInspectInstanceDetail; +import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; import java.io.Serial; import java.io.Serializable; @@ -119,7 +119,7 @@ public class DmsBillsInspectInstanceVo implements Serializable { */ private String performer; - private List dmsInspectInstanceDetailList; + private List dmsInspectInstanceDetailList; private String planInspectCode; diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java index 8f7cc25..4f39166 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintInstanceVo.java @@ -141,6 +141,6 @@ public class DmsBillsMaintInstanceVo implements Serializable { private List dmsBillsMaintDetailList; - private String createTime; + private Date createTime; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectInstanceDetailMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectInstanceDetailMapper.java index 5254529..0b34b2f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectInstanceDetailMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInspectInstanceDetailMapper.java @@ -35,6 +35,6 @@ public interface DmsInspectInstanceDetailMapper extends BaseMapperPlus selectDmsInspectInstanceDetailJoinList(DmsInspectInstanceDetailBo dmsInspectInstanceDetail); + public List selectDmsInspectInstanceDetailJoinList(DmsInspectInstanceDetailBo dmsInspectInstanceDetail); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java index 9b880cc..da3d38a 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java @@ -281,7 +281,7 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta // 设置巡检实例ID queryInspectInstanceDetail.setInspectInstanceId(newestBillsInspectInstance.getInspectInstanceId()); // 查询巡检实例详情列表 - List inspectInstanceDetails = dmsInspectInstanceDetailMapper.selectDmsInspectInstanceDetailJoinList(queryInspectInstanceDetail); + List inspectInstanceDetails = dmsInspectInstanceDetailMapper.selectDmsInspectInstanceDetailJoinList(queryInspectInstanceDetail); // 设置巡检实例详情列表到newestBillsInspectInstance对象中 newestBillsInspectInstance.setDmsInspectInstanceDetailList(inspectInstanceDetails); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java index 725dbb6..f6b6176 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java @@ -37,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** @@ -292,62 +293,110 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS @Override @GlobalTransactional(rollbackFor = Exception.class) public DmsBillsMaintDetail startMaint(DmsBillsMaintDetail dmsBillsMaintDetail) { + // 根据保养实例ID查询保养实例信息 DmsBillsMaintInstance dmsBillsMaintInstance = baseMapper. selectDmsBillsMaintInstanceByMaintInstanceId(dmsBillsMaintDetail.getMaintInstanceId()); + // 获取当前保养状态,如果为空则设置为待保养状态 Long maintStatus = dmsBillsMaintInstance.getMaintStatus() == null ? DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT : dmsBillsMaintInstance.getMaintStatus(); + // 如果保养状态为已完成,抛出异常提示已经保养完成 if (maintStatus.equals(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE)) {//保养完成 throw new ServiceException("已经保养完成"); } + // 获取当前日期时间 Date currentDate = new Date(); + // 如果保养状态为待保养,进行以下操作 if (maintStatus.equals(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT)) {//待保养 + // 设置保养状态为保养中 dmsBillsMaintInstance.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_MAINTING); + // 设置实际开始保养时间为当前时间 dmsBillsMaintInstance.setRealBeginTime(currentDate); - //FIXME:工作流相关 + // FIXME:工作流相关 + // 创建远程启动流程对象 RemoteStartProcess startProcess = new RemoteStartProcess(); + // 设置流程代码 startProcess.setFlowCode(DmsConstants.DMS_BILLS_MAINT_INSTANCE_WF_CODE); + // 获取业务ID(保养实例ID) String businessId = dmsBillsMaintInstance.getMaintInstanceId().toString(); + // 设置业务ID startProcess.setBusinessId(businessId); + // 启动工作流程 RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(startProcess); + // 获取任务ID Long taskId = remoteStartProcessReturn.getTaskId(); + // 如果任务ID为空,抛出流程启动失败异常 if (StringUtils.isNull(taskId)) { throw new ServiceException("流程启动失败"); }else{ - dmsBillsMaintInstance.setWfDefinitionId(taskId); - dmsBillsMaintInstance.setRealBeginTime(new Date()); - //FIXME:完成第一步,待测试待完善 - RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); - remoteCompleteTask.setTaskId(taskId); - remoteCompleteTask.setMessage("同意"); - remoteWorkflowService.completeTask(remoteCompleteTask); + //TODO:异步线程内执行updateWrokFlow + CompletableFuture.runAsync(() -> { + try { + updateWorkFlow(dmsBillsMaintInstance, taskId); + } catch (Exception e) { + // 简单记录错误,不影响主流程 + System.err.println("异步更新工作流失败,getBillsMaintCode: " + dmsBillsMaintInstance.getBillsMaintCode() + ", 错误: " + e.getMessage()); + // 可以考虑记录到失败表,后续补偿处理 + } + }); } - - baseMapper.updateById(dmsBillsMaintInstance); - - + // 设置保养明细的实际开始时间为当前时间 dmsBillsMaintDetail.setBeginTime(currentDate); + // 设置保养明细的状态为保养中 dmsBillsMaintDetail.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_MAINTING); + // 更新保养明细信息 dmsBillsMaintDetailMapper.updateById(dmsBillsMaintDetail); } // else {//保养中 +// // 更新人不为空,则设置更新人为当前用户,更新时间为当前时间 // dmsBillsMaintDetail.setUpdateBy(userName); // dmsBillsMaintDetail.setUpdateTime(currentDate); // dmsBillsMaintDetailMapper.updateDmsBillsMaintDetail(dmsBillsMaintDetail); // } + // 创建查询保养明细项目的对象 DmsBillsMaintDetailProjectBo queryBillsMaintDetailProject = new DmsBillsMaintDetailProjectBo(); + // 设置保养明细ID queryBillsMaintDetailProject.setBillsMaintDetailId(dmsBillsMaintDetail.getBillsMaintDetailId()); - MPJLambdaWrapper queryBillsMaintDetailProjectWrapper = new MPJLambdaWrapper<>(); - + // 查询保养明细项目列表 List dmsBillsMaintDetailProjects = dmsBillsMaintInstanceProjectService.queryList(queryBillsMaintDetailProject); + // 设置保养明细的项目列表 dmsBillsMaintDetail.setDmsBillsMaintDetailProjectList(dmsBillsMaintDetailProjects); + // 返回更新后的保养明细对象 return dmsBillsMaintDetail; } + private Boolean updateWorkFlow(DmsBillsMaintInstance dmsBillsMaintInstance, Long taskId){ + // 设置工作流定义ID + dmsBillsMaintInstance.setWfDefinitionId(taskId); + // 重新设置实际开始时间为当前时间(可能已变化) + dmsBillsMaintInstance.setRealBeginTime(new Date()); + // FIXME:完成第一步,待测试待完善 + // 创建远程完成任务对象 + RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); + // 设置任务ID + remoteCompleteTask.setTaskId(taskId); + // 设置完成后的消息 + remoteCompleteTask.setMessage("自动推进"); + // 关键:设置messageType为非null的List(解决原始错误) + List messageTypes = new ArrayList<>(); + messageTypes.add("system"); // 系统消息 + remoteCompleteTask.setMessageType(messageTypes); + // 完成该任务 + boolean b = remoteWorkflowService.completeTask(remoteCompleteTask); + if (!b){ + return false; + }else{ + // 更新保养实例信息 + int i = baseMapper.updateById(dmsBillsMaintInstance); + return i > 0; + } + + } + /** * 完成保养 diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml index 9111a95..6e0ccd8 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml @@ -84,7 +84,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailMapper.xml index ead1147..2ea25c6 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailMapper.xml @@ -65,7 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join prod_base_machine_info dbdl on diid.machine_id = dbdl.machine_id left join dms_inspect_instance_detail_project a on diid.instance_detail_id = a.instance_detail_id - where diid.inspect_instance_id = #{inspectInstanceId} and dbdl.machine_code = #{machineCode} + where diid.inspect_instance_id = #{inspectInstanceId} and dbdl.machine_code = #{deviceCode}