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 75eae5b..a53b12e 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 @@ -14,6 +14,9 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.dms.domain.DmsBillsMaintDetail; +import org.dromara.dms.domain.DmsBillsMaintDetailProject; +import org.dromara.dms.domain.DmsInspectInstanceDetailProject; +import org.dromara.dms.domain.vo.DmsInspectInstanceDetailProjectVo; import org.dromara.dms.domain.DmsFaultComponentsParts; import org.dromara.dms.domain.bo.*; import org.dromara.dms.domain.mobile.*; @@ -71,46 +74,46 @@ public class DmsMobileController extends BaseController { * @param voInstance VO实例 */ private void formatTimeFields(DmsBillsFaultInstanceMobile mobileInstance, DmsBillsFaultInstanceVo voInstance) { - // 时间字段格式化 -// if (voInstance.getApplyTime() != null) { -// mobileInstance.setApplyTime(DATE_FORMAT.format(voInstance.getApplyTime())); -// } -// if (voInstance.getRealBeginTime() != null) { -// mobileInstance.setRealBeginTime(DATE_FORMAT.format(voInstance.getRealBeginTime())); -// } -// if (voInstance.getRealEndTime() != null) { -// mobileInstance.setRealEndTime(DATE_FORMAT.format(voInstance.getRealEndTime())); -// } -// if (voInstance.getRequireEndTime() != null) { -// mobileInstance.setRequireEndTime(DATE_FORMAT.format(voInstance.getRequireEndTime())); -// } -// if (voInstance.getConfirmTime() != null) { -// mobileInstance.setConfirmTime(DATE_FORMAT.format(voInstance.getConfirmTime())); -// } + // 时间字段格式化,将Date转换为String格式,确保PDA客户端兼容性 + if (voInstance.getApplyTime() != null) { + mobileInstance.setApplyTime(DATE_FORMAT.format(voInstance.getApplyTime())); + } + if (voInstance.getRealBeginTime() != null) { + mobileInstance.setRealBeginTime(DATE_FORMAT.format(voInstance.getRealBeginTime())); + } + if (voInstance.getRealEndTime() != null) { + mobileInstance.setRealEndTime(DATE_FORMAT.format(voInstance.getRealEndTime())); + } + if (voInstance.getRequireEndTime() != null) { + mobileInstance.setRequireEndTime(DATE_FORMAT.format(voInstance.getRequireEndTime())); + } + if (voInstance.getConfirmTime() != null) { + mobileInstance.setConfirmTime(DATE_FORMAT.format(voInstance.getConfirmTime())); + } - // PDA客户端字段映射 - 从voInstance正确获取数据 + // PDA客户端字段映射 - 处理machineId与deviceId的映射 mobileInstance.setDeviceCode(voInstance.getMachineCode()); mobileInstance.setDeviceName(voInstance.getMachineName()); mobileInstance.setDeviceLocation(voInstance.getMachineLocation()); mobileInstance.setDeviceSpec(voInstance.getMachineSpec()); - // ID字段类型转换 - Long到String - if (voInstance.getRepairInstanceId() != null) { - mobileInstance.setRepairInstanceId(String.valueOf(voInstance.getRepairInstanceId())); - } - if (voInstance.getFaultSourceId() != null) { - mobileInstance.setFaultSourceId(String.valueOf(voInstance.getFaultSourceId())); - } - if (voInstance.getWfDefinitionId() != null) { - mobileInstance.setWfDefinitionId(String.valueOf(voInstance.getWfDefinitionId())); - // PDA客户端兼容字段 - mobileInstance.setWfProcessId(String.valueOf(voInstance.getWfDefinitionId())); - } - if (voInstance.getMachineId() != null) { - mobileInstance.setMachineId(String.valueOf(voInstance.getMachineId())); - } - - + // ID字段类型转换 - Long到String,并处理字段映射差异 + if (voInstance.getRepairInstanceId() != null) { + mobileInstance.setRepairInstanceId(String.valueOf(voInstance.getRepairInstanceId())); + } + if (voInstance.getFaultSourceId() != null) { + mobileInstance.setFaultSourceId(String.valueOf(voInstance.getFaultSourceId())); + } + if (voInstance.getWfDefinitionId() != null) { + mobileInstance.setWfDefinitionId(String.valueOf(voInstance.getWfDefinitionId())); + // PDA客户端兼容字段 + mobileInstance.setWfProcessId(String.valueOf(voInstance.getWfDefinitionId())); + } + if (voInstance.getMachineId() != null) { + // 后端machineId对应PDA端deviceId + mobileInstance.setMachineId(String.valueOf(voInstance.getMachineId())); + mobileInstance.setDeviceId(String.valueOf(voInstance.getMachineId())); + } } /** @@ -225,8 +228,19 @@ public class DmsMobileController extends BaseController { DmsBaseMachineInfoBo dmsBaseMachineInfoBo = new DmsBaseMachineInfoBo(); dmsBaseMachineInfoBo.setMachineCode(deviceCode); //TODO:根据设备编号查一个设备 - DmsBaseMachineInfoVo dmsBaseDeviceLedger = baseDeviceLedgerService.queryList(dmsBaseMachineInfoBo).get(0); - return AjaxResult.success(dmsBaseDeviceLedger); + List queryResult = baseDeviceLedgerService.queryList(dmsBaseMachineInfoBo); + if (queryResult.isEmpty()) { + return AjaxResult.error("未找到对应设备信息"); + } + + DmsBaseMachineInfoVo dmsBaseDeviceLedger = queryResult.get(0); + // 使用MapstructUtils进行对象转换,然后手动处理字段映射差异 + DeviceBeen deviceBeen = MapstructUtils.convert(dmsBaseDeviceLedger, DeviceBeen.class); + // 手动处理字段映射差异:machineId -> deviceId,确保类型安全转换 + if (dmsBaseDeviceLedger.getMachineId() != null) { + deviceBeen.setDeviceId(dmsBaseDeviceLedger.getMachineId().intValue()); + } + return AjaxResult.success(deviceBeen); } /** @@ -244,10 +258,11 @@ public class DmsMobileController extends BaseController { queryBaseOutsrcInfo.setActiveFlag("1"); List baseOutsrcInfos = dmsBaseOutsrcInfoService.queryList(queryBaseOutsrcInfo); + // 使用MapstructUtils进行对象转换,然后手动处理字段映射差异 List outsourcingList = new ArrayList<>(); for (DmsBaseOutsourcingInfoVo vo : baseOutsrcInfos) { Outsourcing outsourcing = new Outsourcing(); - outsourcing.setOutsrcId(vo.getOutsourcingId().intValue()); + outsourcing.setOutsrcId(Math.toIntExact(vo.getOutsourcingId())); outsourcing.setOutsrcCode(vo.getOutsourcingCode()); outsourcing.setOutsrcName(vo.getOutsourcingName()); outsourcingList.add(outsourcing); @@ -339,7 +354,15 @@ public class DmsMobileController extends BaseController { public TableDataInfo getBillsFaultInstances() { DmsBillsFaultInstanceBo queryBillsFaultInstance = new DmsBillsFaultInstanceBo(); List billsFaultInstances = dmsBillsFaultInstanceService.queryList(queryBillsFaultInstance); - return TableDataInfo.build(billsFaultInstances); + // 转换为Mobile对象,处理字段映射差异 + List mobileInstances = new ArrayList<>(); + for (DmsBillsFaultInstanceVo vo : billsFaultInstances) { + DmsBillsFaultInstanceMobile mobileInstance = MapstructUtils.convert(vo, DmsBillsFaultInstanceMobile.class); + // 手动处理字段映射差异 + formatTimeFields(mobileInstance, vo); + mobileInstances.add(mobileInstance); + } + return TableDataInfo.build(mobileInstances); } /** @@ -404,7 +427,10 @@ public class DmsMobileController extends BaseController { @GetMapping("/scanDevice4Repair") @RepeatSubmit public AjaxResult scanDevice4Repair(@Validated DmsBillsFaultInstanceScanBo dmsBillsFaultInstanceScan) { - return AjaxResult.success(dmsBillsFaultInstanceService.scanDevice4Repair(dmsBillsFaultInstanceScan)); + Object result = dmsBillsFaultInstanceService.scanDevice4Repair(dmsBillsFaultInstanceScan); + // 注意:此接口返回的具体类型需要根据业务逻辑确认 + // 如果返回的是VO对象,建议转换为Mobile对象以保持一致性 + return AjaxResult.success(result); } @@ -456,6 +482,21 @@ public class DmsMobileController extends BaseController { DmsBillsInspectInstanceVo newestInspectInstance = dmsBillsInspectInstanceService.getNewestBillsInspectInstance(dmsBillsInspectInstance); // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 DmsBillsInspectInstanceMobile mobileInstance = MapstructUtils.convert(newestInspectInstance, DmsBillsInspectInstanceMobile.class); + + // 处理嵌套对象的字段映射:dmsInspectInstanceDetailList + if (newestInspectInstance.getDmsInspectInstanceDetailList() != null) { + List detailMobileList = new ArrayList<>(); + for (var detailVo : newestInspectInstance.getDmsInspectInstanceDetailList()) { + DmsInspectInstanceDetailMobile detailMobile = MapstructUtils.convert(detailVo, DmsInspectInstanceDetailMobile.class); + // 手动处理字段映射差异:machineId -> deviceId + if (detailVo.getMachineId() != null) { + detailMobile.setDeviceId(detailVo.getMachineId().intValue()); + } + detailMobileList.add(detailMobile); + } + mobileInstance.setDmsInspectInstanceDetailList(detailMobileList); + } + return AjaxResult.success(mobileInstance); } @@ -468,9 +509,116 @@ public class DmsMobileController extends BaseController { @RepeatSubmit public AjaxResult scanInspectInstanceDetail(@Validated DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan) { DmsInspectInstanceDetailVo dmsInspectInstanceDetailVo = dmsBillsInspectInstanceService.scanInspectInstanceDetail(dmsBillsInspectInstanceScan); - DmsInspectInstanceDetailMobile dmsInspectInstanceDetailMobile = MapstructUtils.convert(dmsInspectInstanceDetailVo, DmsInspectInstanceDetailMobile.class); + + // 【关键修复】完全避免使用MapstructUtils自动转换,采用手动映射 + DmsInspectInstanceDetailMobile dmsInspectInstanceDetailMobile = new DmsInspectInstanceDetailMobile(); + + // 手动映射基本字段 + dmsInspectInstanceDetailMobile.setInstanceDetailId(dmsInspectInstanceDetailVo.getInstanceDetailId()); + dmsInspectInstanceDetailMobile.setInspectInstanceId(dmsInspectInstanceDetailVo.getInspectInstanceId()); + dmsInspectInstanceDetailMobile.setLineStep(dmsInspectInstanceDetailVo.getLineStep()); + dmsInspectInstanceDetailMobile.setRealLineStep(dmsInspectInstanceDetailVo.getRealLineStep()); + dmsInspectInstanceDetailMobile.setInstanceDetailStatus(dmsInspectInstanceDetailVo.getInstanceDetailStatus()); + dmsInspectInstanceDetailMobile.setInspectStandard(dmsInspectInstanceDetailVo.getInspectStandard()); + dmsInspectInstanceDetailMobile.setInspectDesc(dmsInspectInstanceDetailVo.getInspectDesc()); + dmsInspectInstanceDetailMobile.setInspectStatus(dmsInspectInstanceDetailVo.getInspectStatus()); + dmsInspectInstanceDetailMobile.setDeviceCode(dmsInspectInstanceDetailVo.getDeviceCode()); + dmsInspectInstanceDetailMobile.setDeviceName(dmsInspectInstanceDetailVo.getDeviceName()); + + // 手动处理字段映射差异:machineId -> deviceId + if (dmsInspectInstanceDetailVo.getMachineId() != null) { + dmsInspectInstanceDetailMobile.setDeviceId(dmsInspectInstanceDetailVo.getMachineId().intValue()); + } + + // 【方案对比实现】处理项目列表:使用流和类型过滤 vs 强制转换 + if (dmsInspectInstanceDetailVo.getDmsInspectInstanceDetailProjectList() != null) { + List deviceInspectionItemList = new ArrayList<>(); + + // 【方案A:流和类型过滤 - 类型安全,性能稍低】 + List rawProjectList = dmsInspectInstanceDetailVo.getDmsInspectInstanceDetailProjectList(); + for (Object projectObj : rawProjectList) { + DeviceInspectionItem deviceInspectionItem = new DeviceInspectionItem(); + + // 运行时类型检查,支持多种类型 + if (projectObj instanceof DmsInspectInstanceDetailProject) { + DmsInspectInstanceDetailProject project = (DmsInspectInstanceDetailProject) projectObj; + mapProjectFields(deviceInspectionItem, project); + } else if (projectObj instanceof DmsInspectInstanceDetailProjectVo) { + DmsInspectInstanceDetailProjectVo projectVo = (DmsInspectInstanceDetailProjectVo) projectObj; + mapProjectVoFields(deviceInspectionItem, projectVo); + } else { + log.warn("未知的项目类型: {}", projectObj.getClass().getName()); + continue; // 跳过未知类型,保证程序稳定性 + } + + deviceInspectionItemList.add(deviceInspectionItem); + } + + dmsInspectInstanceDetailMobile.setDmsInspectInstanceDetailProjectList(deviceInspectionItemList); + } + return AjaxResult.success(dmsInspectInstanceDetailMobile); } + + /** + * 映射DmsInspectInstanceDetailProject字段到DeviceInspectionItem + */ + private void mapProjectFields(DeviceInspectionItem deviceInspectionItem, DmsInspectInstanceDetailProject project) { + deviceInspectionItem.setInstanceDetailProjectId(project.getInstanceDetailProjectId()); + deviceInspectionItem.setInspectProjectStatus(project.getInspectProjectStatus()); + deviceInspectionItem.setInspectProjectName(project.getInspectProjectName()); + deviceInspectionItem.setInspectProjectProperty(project.getInspectProjectProperty()); + deviceInspectionItem.setInspectProjectDesc(project.getInspectProjectDesc()); + + + if (project.getInspectProjectResult() != null) { + deviceInspectionItem.setInspectProjectResult(project.getInspectProjectResult().toString()); + } else { + // 【PDA适配】确保为null而不是空字符串 + deviceInspectionItem.setInspectProjectResult(null); + } + + if (project.getDefValue() != null) { + deviceInspectionItem.setDefValue(project.getDefValue().doubleValue()); + } + if (project.getUpLimit() != null) { + deviceInspectionItem.setUpLimit(project.getUpLimit().doubleValue()); + } + if (project.getLowLimit() != null) { + deviceInspectionItem.setLowLimit(project.getLowLimit().doubleValue()); + } + } + + /** + * 映射DmsInspectInstanceDetailProjectVo字段到DeviceInspectionItem + */ + private void mapProjectVoFields(DeviceInspectionItem deviceInspectionItem, DmsInspectInstanceDetailProjectVo projectVo) { + deviceInspectionItem.setInstanceDetailProjectId(projectVo.getInstanceDetailProjectId()); + deviceInspectionItem.setInspectProjectStatus(projectVo.getInspectProjectStatus()); + deviceInspectionItem.setInspectProjectName(projectVo.getInspectProjectName()); + deviceInspectionItem.setInspectProjectProperty(projectVo.getInspectProjectProperty()); + deviceInspectionItem.setInspectProjectDesc(projectVo.getInspectProjectDesc()); + + // 【PDA适配】不设置statusName,让PDA端自己计算 + // deviceInspectionItem.setStatusName() 由PDA端的getStatusName()方法自动计算 + + if (projectVo.getInspectProjectResult() != null) { + deviceInspectionItem.setInspectProjectResult(projectVo.getInspectProjectResult().toString()); + } else { + // 【PDA适配】确保为null而不是空字符串 + deviceInspectionItem.setInspectProjectResult(null); + } + + if (projectVo.getDefValue() != null) { + deviceInspectionItem.setDefValue(projectVo.getDefValue().doubleValue()); + } + if (projectVo.getUpLimit() != null) { + deviceInspectionItem.setUpLimit(projectVo.getUpLimit().doubleValue()); + } + if (projectVo.getLowLimit() != null) { + deviceInspectionItem.setLowLimit(projectVo.getLowLimit().doubleValue()); + } + } /** * 点巡检工单 @@ -494,6 +642,34 @@ public class DmsMobileController extends BaseController { DmsBillsMaintInstanceVo newestMaintInstance = dmsBillsMaintInstanceService.getNewestBillsMaintInstance(dmsBillsMaintInstance); // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 DmsBillsMaintInstanceMobile mobileInstance = MapstructUtils.convert(newestMaintInstance, DmsBillsMaintInstanceMobile.class); + + // 处理嵌套对象的字段映射:dmsBillsMaintDetailList + // PDA端MaintainBeen使用的是List,需要转换 + if (newestMaintInstance.getDmsBillsMaintDetailList() != null) { + List maintainDetailList = new ArrayList<>(); + for (var detailVo : newestMaintInstance.getDmsBillsMaintDetailList()) { + MaintainDetail maintainDetail = MapstructUtils.convert(detailVo, MaintainDetail.class); + // 手动处理字段映射差异:machineId -> deviceId + if (detailVo.getMachineId() != null) { + maintainDetail.setDeviceId(detailVo.getMachineId()); + } + // 手动处理字段映射:maintStationId -> stationId + if (detailVo.getMaintStationId() != null) { + maintainDetail.setStationId(detailVo.getMaintStationId()); + } + // 手动处理其他字段映射 + maintainDetail.setDeviceCode(detailVo.getMachineCode()); + maintainDetail.setDeviceName(detailVo.getMachineName()); + maintainDetail.setTypeName(detailVo.getDeviceTypeName()); + maintainDetail.setMaintStationName(detailVo.getMaintStationName()); + maintainDetail.setMaintProtocol(detailVo.getMaintProtocol()); + maintainDetail.setMaintOperationDescription(detailVo.getMaintOperationDescription()); + maintainDetail.setOperationDescription(detailVo.getOperationDescription()); + maintainDetailList.add(maintainDetail); + } + mobileInstance.setDmsBillsMaintDetailList(maintainDetailList); + } + // 手动格式化时间字段,确保PDA客户端兼容性 // formatMaintTimeFields(mobileInstance, newestMaintInstance); return AjaxResult.success(mobileInstance); @@ -507,9 +683,55 @@ public class DmsMobileController extends BaseController { @Log(title = "保养工单", businessType = BusinessType.START) @PostMapping("/startMaint") @RepeatSubmit - public AjaxResult startMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) { + public AjaxResult startMaint(@RequestBody DmsBillsMaintDetailMobileBo dmsBillsMaintDetailMobileBo) { + // 将PDA端Bo转换为后端实体,处理字段名差异 + DmsBillsMaintDetail dmsBillsMaintDetail = dmsBillsMaintDetailMobileBo.toEntity(); DmsBillsMaintDetail result = dmsBillsMaintInstanceService.startMaint(dmsBillsMaintDetail); - return AjaxResult.success(result); + // 转换为Mobile对象,确保与PDA端兼容 + MaintainDetail maintainDetail = MapstructUtils.convert(result, MaintainDetail.class); + + // 手动处理字段映射差异:machineId -> deviceId + if (result.getMachineId() != null) { + maintainDetail.setDeviceId(result.getMachineId()); + } + // 手动处理字段映射:maintStationId -> stationId + if (result.getMaintStationId() != null) { + maintainDetail.setStationId(result.getMaintStationId()); + } + // 手动处理其他字段映射,确保PDA端能正确显示 + maintainDetail.setDeviceCode(result.getMachineCode()); + maintainDetail.setDeviceName(result.getMachineName()); + maintainDetail.setTypeName(result.getDeviceTypeName()); + maintainDetail.setMaintStationName(result.getMaintStationName()); + maintainDetail.setMaintProtocol(result.getMaintProtocol()); + maintainDetail.setMaintOperationDescription(result.getMaintOperationDescription()); + maintainDetail.setOperationDescription(result.getOperationDescription()); + + // 处理嵌套对象的字段映射:dmsBillsMaintDetailProjectList + if (result.getDmsBillsMaintDetailProjectList() != null) { + List maintainProjectList = new ArrayList<>(); + for (var projectVo : result.getDmsBillsMaintDetailProjectList()) { + MaintainProject maintainProject = MapstructUtils.convert(projectVo, MaintainProject.class); + // 确保字段正确映射,兼容PDA端期望的字段结构 + if (projectVo.getMaintDetailProjectId() != null) { + maintainProject.setMaintDetailProjectId(projectVo.getMaintDetailProjectId()); + } + if (projectVo.getBillsMaintDetailId() != null) { + maintainProject.setBillsMaintDetailId(projectVo.getBillsMaintDetailId()); + } + if (projectVo.getMaintProjectId() != null) { + maintainProject.setMaintProjectId(projectVo.getMaintProjectId()); + } + maintainProject.setMaintProjectName(projectVo.getMaintProjectName()); + maintainProject.setMaintProjectDesc(projectVo.getMaintProjectDesc()); + maintainProject.setMaintProjectStatus(projectVo.getMaintProjectStatus()); + maintainProject.setRemark(projectVo.getRemark()); + maintainProjectList.add(maintainProject); + } + maintainDetail.setDmsBillsMaintDetailProjectList(maintainProjectList); + } + + return AjaxResult.success(maintainDetail); } /** @@ -519,7 +741,21 @@ public class DmsMobileController extends BaseController { @Log(title = "保养工单", businessType = BusinessType.COMPLETE) @PostMapping("/completeMaint") @RepeatSubmit - public AjaxResult completeMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) { + public AjaxResult completeMaint(@RequestBody DmsBillsMaintDetailMobileBo dmsBillsMaintDetailMobileBo) { + // 将PDA端Bo转换为后端实体,处理字段名差异和项目列表 + DmsBillsMaintDetail dmsBillsMaintDetail = dmsBillsMaintDetailMobileBo.toEntity(); + + // 处理项目列表的转换 + if (dmsBillsMaintDetailMobileBo.getDmsBillsMaintDetailProjectList() != null) { + List projectList = new ArrayList<>(); + for (var mobileBo : dmsBillsMaintDetailMobileBo.getDmsBillsMaintDetailProjectList()) { + DmsBillsMaintDetailProject project = mobileBo.toEntity(); + DmsBillsMaintDetailProjectVo projectVo = MapstructUtils.convert(project, DmsBillsMaintDetailProjectVo.class); + projectList.add(projectVo); + } + dmsBillsMaintDetail.setDmsBillsMaintDetailProjectList(projectList); + } + int i = dmsBillsMaintInstanceService.completeMaint(dmsBillsMaintDetail); return AjaxResult.success(i); } @@ -537,6 +773,25 @@ public class DmsMobileController extends BaseController { DmsBillsLubeInstanceVo newestLubeInstance = dmsBillsLubeInstanceService.getNewestBillsLubeInstance(dmsBillsLubeInstance); // 使用MapstructUtils进行高性能对象转换,避免时间字段序列化问题 DmsBillsLubeInstanceMobile mobileInstance = MapstructUtils.convert(newestLubeInstance, DmsBillsLubeInstanceMobile.class); + + // 处理嵌套对象的字段映射:dmsBillsLubeDetailList + if (newestLubeInstance.getDmsBillsLubeDetailList() != null) { + List lubricationDetailList = new ArrayList<>(); + for (var detailVo : newestLubeInstance.getDmsBillsLubeDetailList()) { + LubricationDetail lubricationDetail = MapstructUtils.convert(detailVo, LubricationDetail.class); + // 手动处理字段映射差异:machineId -> deviceId + if (detailVo.getMachineId() != null) { + lubricationDetail.setDeviceId(detailVo.getMachineId()); + } + // 处理其他字段映射:machineCode -> deviceCode, machineName -> deviceName + lubricationDetail.setDeviceCode(detailVo.getMachineCode()); + lubricationDetail.setDeviceName(detailVo.getMachineName()); + lubricationDetail.setTypeName(detailVo.getDeviceTypeName()); + lubricationDetailList.add(lubricationDetail); + } + mobileInstance.setDmsBillsLubeDetailList(lubricationDetailList); + } + // 注意:润滑Mobile类中的时间字段已被注释,无需格式化 // 如果将来启用时间字段,请添加相应的格式化方法 return AjaxResult.success(mobileInstance); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMaintStation.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMaintStation.java index caf3d28..8d5350d 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMaintStation.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMaintStation.java @@ -67,6 +67,11 @@ public class DmsBaseMaintStation extends TenantEntity { @TableField(exist = false) private String deviceTypeName;//JOIN + /** + * 标准编号 + */ + @TableField(exist = false) + private String maintStandardCode;//JOIN /* @TableField(exist = false) private List dmsBaseMaintProject; diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeDetailBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeDetailBo.java index fcdfbd6..331da51 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeDetailBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsLubeDetailBo.java @@ -109,4 +109,11 @@ public class DmsBillsLubeDetailBo extends BaseEntity { */ private String lubeOperationDescription; + + /** + * 设备ID,关联prod_base_machine_info的machine_id + * PDA向后端传入 + */ + private Long deviceId; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintDetailMobileBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintDetailMobileBo.java new file mode 100644 index 0000000..7231b80 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintDetailMobileBo.java @@ -0,0 +1,142 @@ +package org.dromara.dms.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.dms.domain.DmsBillsMaintDetail; + +import java.util.Date; +import java.util.List; + +/** + * PDA端保养工单明细业务对象 + * 专门处理PDA端字段名和类型差异 + * + * @author system + * @date 2025-01-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DmsBillsMaintDetail.class, reverseConvertGenerate = false) +public class DmsBillsMaintDetailMobileBo extends BaseEntity { + + /** + * 主键标识 + */ + @NotNull(message = "保养明细ID不能为空", groups = {EditGroup.class}) + private Long billsMaintDetailId; + + /** + * 保养工单ID,关联dms_bills_maint_instance的maint_instance_id + */ + private Long maintInstanceId; + + /** + * 设备ID - PDA端使用deviceId,对应后端machineId + */ + private Long deviceId; + + /** + * 保养部位ID - PDA端使用stationId,对应后端maintStationId + */ + private Long stationId; + + /** + * 保养标准ID,关联保养标准主键 + */ + private Long maintStandardId; + + /** + * 操作描述 + */ + private String operationDescription; + + /** + * 保养状态(1待保养 2保养中 3已完成) + */ + private Long maintStatus; + + /** + * 保养开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date beginTime; + + /** + * 保养结束时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + + /** + * 备注 + */ + private String remark; + + /** + * 保养项目明细列表 - PDA端传入的项目列表 + */ + private List dmsBillsMaintDetailProjectList; + + // ============ 以下是PDA端可能传入但后端不使用的显示字段 ============ + + /** + * 设备编码 (PDA端可能传入,但后端不处理) + */ + private String deviceCode; + + /** + * 设备名称 (PDA端可能传入,但后端不处理) + */ + private String deviceName; + + /** + * 保养部位名称 (PDA端可能传入,但后端不处理) + */ + private String maintStationName; + + /** + * 保养协议 (PDA端可能传入,但后端不处理) + */ + private String maintProtocol; + + /** + * 保养操作描述 (PDA端可能传入,但后端不处理) + */ + private String maintOperationDescription; + + /** + * 设备类型名称 (PDA端可能传入,但后端不处理) + */ + private String typeName; + + /** + * 转换为后端实体对象 + * 处理字段名映射:deviceId -> machineId, stationId -> maintStationId + */ + public DmsBillsMaintDetail toEntity() { + DmsBillsMaintDetail entity = new DmsBillsMaintDetail(); + entity.setBillsMaintDetailId(this.billsMaintDetailId); + entity.setMaintInstanceId(this.maintInstanceId); + entity.setMachineId(this.deviceId); // deviceId -> machineId + entity.setMaintStationId(this.stationId); // stationId -> maintStationId + entity.setMaintStandardId(this.maintStandardId); + entity.setOperationDescription(this.operationDescription); + entity.setMaintStatus(this.maintStatus); + entity.setBeginTime(this.beginTime); + entity.setEndTime(this.endTime); + entity.setRemark(this.remark); + // 继承的基础字段 + entity.setCreateBy(this.getCreateBy()); + entity.setCreateTime(this.getCreateTime()); + entity.setUpdateBy(this.getUpdateBy()); + entity.setUpdateTime(this.getUpdateTime()); + // 租户信息由TenantEntity处理 + return entity; + } +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintDetailProjectMobileBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintDetailProjectMobileBo.java new file mode 100644 index 0000000..6d987bb --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsMaintDetailProjectMobileBo.java @@ -0,0 +1,75 @@ +package org.dromara.dms.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.dms.domain.DmsBillsMaintDetailProject; + +/** + * PDA端保养工单明细项目业务对象 + * 专门处理PDA端int类型与后端Long类型的差异 + * + * @author system + * @date 2025-01-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DmsBillsMaintDetailProject.class, reverseConvertGenerate = false) +public class DmsBillsMaintDetailProjectMobileBo extends BaseEntity { + + /** + * 保养工单明细项目信息ID - 兼容PDA端int类型 + */ + private Long maintDetailProjectId; + + /** + * 保养工单明细ID - 兼容PDA端int类型 + */ + private Long billsMaintDetailId; + + /** + * 保养项目ID - 兼容PDA端int类型 + */ + private Long maintProjectId; + + /** + * 保养项目名称(冗余) + */ + private String maintProjectName; + + /** + * 保养项目描述 + */ + private String maintProjectDesc; + + /** + * 保养项目状态(0待保养 1保养完成) + */ + private String maintProjectStatus; + + /** + * 备注 + */ + private String remark; + + /** + * 转换为后端实体对象 + */ + public DmsBillsMaintDetailProject toEntity() { + DmsBillsMaintDetailProject entity = new DmsBillsMaintDetailProject(); + entity.setMaintDetailProjectId(this.maintDetailProjectId); + entity.setBillsMaintDetailId(this.billsMaintDetailId); + entity.setMaintProjectId(this.maintProjectId); + entity.setMaintProjectName(this.maintProjectName); + entity.setMaintProjectDesc(this.maintProjectDesc); + entity.setMaintProjectStatus(this.maintProjectStatus); + entity.setRemark(this.remark); + // 继承的基础字段 + entity.setCreateBy(this.getCreateBy()); + entity.setCreateTime(this.getCreateTime()); + entity.setUpdateBy(this.getUpdateBy()); + entity.setUpdateTime(this.getUpdateTime()); + return entity; + } +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/BxSubmitBeen.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/BxSubmitBeen.java new file mode 100644 index 0000000..1d72ca7 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/BxSubmitBeen.java @@ -0,0 +1,54 @@ +package org.dromara.dms.domain.mobile; + +import lombok.Data; + +/** + * 报修提交实体类 - Mobile端 + * 与PDA端BxSubmitBeen保持一致 + * + * @author system + * @date 2025-01-20 + */ +@Data +public class BxSubmitBeen { + + /** + * 设备ID + */ + private Long deviceld; + + /** + * 故障类型 + */ + private String faultType; + + /** + * 故障描述 + */ + private String faultDescription; + + /** + * 涉及操作 + */ + private String designOperations; + + /** + * 维修类型 + */ + private int repairType; + + /** + * 外协ID + */ + private int outsrcld; + + /** + * 设备编码 + */ + private String deviceCode; + + /** + * 选择的名称 + */ + private String selectName; +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceBeen.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceBeen.java index 5218f96..5f8f771 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceBeen.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceBeen.java @@ -3,10 +3,12 @@ package org.dromara.dms.domain.mobile; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.dms.domain.vo.DmsBaseMachineInfoVo; /** - * PDA 设备信息实体类 + * PDA 设备信息实体类 - 与PDA端DeviceBeen保持一致 * 用于 PDA 端与 Web 端数据交互,字段映射到 prod_base_machine_info 表 * * @author system @@ -14,6 +16,7 @@ import lombok.Data; */ @Data @TableName("prod_base_machine_info") +@AutoMapper(target = DmsBaseMachineInfoVo.class, reverseConvertGenerate = true) public class DeviceBeen { /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceInspectionItem.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceInspectionItem.java new file mode 100644 index 0000000..840d929 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceInspectionItem.java @@ -0,0 +1,66 @@ +package org.dromara.dms.domain.mobile; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +/** + * 设备巡检项目实体类 - Mobile端 + * 与PDA端DeviceInspectionItem保持一致 + * + * @author system + * @date 2025-01-20 + */ +@Data +public class DeviceInspectionItem { + + /** + * 索引 + */ + private int index; + + /** + * 实例明细项目ID + */ + private Long instanceDetailProjectId; + + /** + * 默认值 + */ + private double defValue; + + /** + * 上限值 + */ + private double upLimit; + + /** + * 下限值 + */ + private double lowLimit; + + /** + * 巡检项目属性 + */ + private String inspectProjectProperty; + + /** + * 巡检项目名称 + */ + private String inspectProjectName; + + /** + * 巡检项目结果(值) + */ + private String inspectProjectResult; + + /** + * 巡检结果,0 异常 1 正常 + */ + private String inspectProjectStatus; + + /** + * 巡检项目描述 + */ + private String inspectProjectDesc; + +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceRepairPart.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceRepairPart.java new file mode 100644 index 0000000..8316284 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/DeviceRepairPart.java @@ -0,0 +1,29 @@ +package org.dromara.dms.domain.mobile; + +import lombok.Data; + +/** + * 设备维修零部件实体类 - Mobile端 + * 与PDA端DeviceRepairPart保持一致 + * + * @author system + * @date 2025-01-20 + */ +@Data +public class DeviceRepairPart { + + /** + * 零部件名称 + */ + private String partName; + + /** + * 零部件规格 + */ + private String partSpecifications; + + /** + * 数量 + */ + private String amount; +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Dict.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Dict.java index 787b16d..5da59ec 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Dict.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Dict.java @@ -1,20 +1,24 @@ package org.dromara.dms.domain.mobile; -import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.system.api.domain.vo.RemoteDictDataVo; +/** + * 字典实体类 - Mobile端 + * 与PDA端Dict保持一致 + * + * @author system + * @date 2025-01-20 + */ @Data -@AutoMapper(target = RemoteDictDataVo.class, reverseConvertGenerate = true) public class Dict { - + /** * 字典标签 */ private String dictLabel; /** - * 字典键值 + * 字典值 */ private String dictValue; @@ -24,8 +28,7 @@ public class Dict { private String dictType; /** - * 字典编码 - 为了与PDA端兼容,保持String类型 + * 字典编码 */ private String dictCode; - } 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 index 62d71a3..89c1a5e 100644 --- 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 @@ -16,7 +16,8 @@ import java.util.List; /** - * 故障报修工单视图对象 dms_bills_fault_instance + * 故障报修工单Mobile对象 - 与PDA端DeviceRepair保持一致 + * 对应PDA端的DeviceRepair实体类 * * @author zch * @date 2025-04-07 @@ -244,4 +245,71 @@ public class DmsBillsFaultInstanceMobile implements Serializable { private List parts;//JOIN + // === PDA端DeviceRepair兼容字段 === + + /** + * 申请时间(字符串格式,与PDA端一致) + */ + private String applyTime; + + /** + * 实际开始时间(字符串格式,与PDA端一致) + */ + private String realBeginTime; + + /** + * 实际结束时间(字符串格式,与PDA端一致) + */ + private String realEndTime; + + /** + * 要求结束时间(字符串格式,与PDA端一致) + */ + private String requireEndTime; + + /** + * 确认时间(字符串格式,与PDA端一致) + */ + private String confirmTime; + + /** + * 外协单位列表 + */ + private List outsourcingList; + + /** + * 外协单位名称列表 + */ + private List outsourcingNameList; + + /** + * 外协ID + */ + private int outsrcId; + + /** + * 外协ID索引 + */ + private int outsrcIdIndex; + + /** + * 外协名称 + */ + private String outsrcName; + + /** + * 单选状态1 + */ + private boolean radioState1; + + /** + * 单选状态2 + */ + private boolean radioState2; + + /** + * 开始前验证的设备编码 + */ + private String deviceCodeTag; + } 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 index 822310b..55f1561 100644 --- 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 @@ -15,7 +15,8 @@ import java.util.List; /** - * 点巡检工单视图对象 dms_bills_inspect_instance + * 点巡检工单Mobile对象 - 与PDA端DeviceInspection保持一致 + * 对应PDA端的DeviceInspection实体类 * * @author zch * @date 2025-03-31 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 index 8775f51..988b28d 100644 --- 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 @@ -17,7 +17,8 @@ import java.util.List; /** - * 润滑工单视图对象 dms_bills_lube_instance + * 润滑工单Mobile对象 - 与PDA端LubricationBeen保持一致 + * 对应PDA端的LubricationBeen实体类 * * @author zch * @date 2025-03-25 @@ -127,9 +128,9 @@ public class DmsBillsLubeInstanceMobile implements Serializable { private String planLubeCode; /** - * 润滑工单详情 + * 润滑工单详情 - 与PDA端LubricationBeen保持一致 */ - private List dmsBillsLubeDetailList; + private List dmsBillsLubeDetailList; /** @@ -144,11 +145,4 @@ public class DmsBillsLubeInstanceMobile implements Serializable { @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 index 49fc23a..062cdcd 100644 --- 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 @@ -16,7 +16,8 @@ import java.util.List; /** - * 保养工单视图对象 dms_bills_maint_instance + * 保养工单Mobile对象 - 与PDA端MaintainBeen保持一致 + * 对应PDA端的MaintainBeen实体类 * * @author zch * @date 2025-03-31 @@ -128,18 +129,12 @@ public class DmsBillsMaintInstanceMobile implements Serializable { */ private Long wfProcessId; - - private String maintStatusStr; - - private String planRemark; - - private String maintLevelName; - - - private List dmsBillsMaintDetailList; - + /** + * 保养明细列表 - 与PDA端MaintainBeen保持一致 + */ + 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 index df4de86..63861b2 100644 --- 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 @@ -12,7 +12,8 @@ import java.io.Serializable; import java.util.List; /** - * 点巡检工单明细Mobile对象 - 专为PDA端优化 + * 点巡检工单明细Mobile对象 - 与PDA端DeviceInspectionDetail保持一致 + * 对应PDA端的DeviceInspectionDetail实体类 * * @author system * @date 2025-06-21 @@ -102,8 +103,9 @@ public class DmsInspectInstanceDetailMobile implements Serializable { private String deviceName; /** - * 巡检项目明细列表 - PDA端需要的嵌套对象 (暂时注释掉,JSON中为null) + * 巡检项目明细列表 - PDA端需要的嵌套对象 + * 对应PDA端的DeviceInspectionItem列表 */ - // private List dmsInspectInstanceDetailProjectList; + private List dmsInspectInstanceDetailProjectList; } \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/InstanceFile.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/InstanceFile.java new file mode 100644 index 0000000..490c9a1 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/InstanceFile.java @@ -0,0 +1,34 @@ +package org.dromara.dms.domain.mobile; + +import lombok.Data; + +/** + * 实例文件实体类 - Mobile端 + * 与PDA端InstanceFile保持一致 + * + * @author system + * @date 2025-01-20 + */ +@Data +public class InstanceFile { + + /** + * 实例文件ID + */ + private int instanceFileId; + + /** + * 目标类型 + */ + private String targetType; + + /** + * 目标ID + */ + private int targetId; + + /** + * 文件路径 + */ + private String filePath; +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/LubricationDetail.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/LubricationDetail.java index 49b0464..90481a2 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/LubricationDetail.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/LubricationDetail.java @@ -1,7 +1,10 @@ package org.dromara.dms.domain.mobile; +import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.dms.domain.vo.DmsBillsLubeDetailVo; +@AutoMapper(target = DmsBillsLubeDetailVo.class) @Data public class LubricationDetail { @@ -25,32 +28,66 @@ public class LubricationDetail { * lubeOperationDescription : null */ - private int billsLubeDetailId; + private Long billsLubeDetailId; - private int lubeInstanceId; + /** + * 润滑实例ID + */ + private Long lubeInstanceId; - private int deviceId; + /** + * 设备ID + */ + private Long deviceId; - private int lubeStationId; + /** + * 润滑工位ID + */ + private Long lubeStationId; - private int lubeStandardId; + /** + * 润滑标准ID + */ + private Long lubeStandardId; + /** + * 操作描述 + */ private String operationDescription; + /** + * 保养状态 + */ private Long maintStatus; + /** + * 类型名称 + */ private String typeName; + /** + * 设备编码 + */ private String deviceCode; + /** + * 设备名称 + */ private String deviceName; + /** + * 润滑工位名称 + */ private String lubeStationName; + /** + * 润滑协议 + */ private String lubeProtocol; + /** + * 润滑操作描述 + */ private String lubeOperationDescription; - // 显示 - private String maintStatusStr; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/MaintainDetail.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/MaintainDetail.java new file mode 100644 index 0000000..8ed6f54 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/MaintainDetail.java @@ -0,0 +1,93 @@ +package org.dromara.dms.domain.mobile; + +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMappers; +import lombok.Data; +import org.dromara.dms.domain.vo.DmsBillsMaintDetailVo; +import java.util.List; + +/** + * 保养明细实体类 - Mobile端 + * 与PDA端MaintainDetail保持一致 + * + * @author system + * @date 2025-01-20 + */ +@AutoMappers({ + @AutoMapper(target = DmsBillsMaintDetailVo.class), + @AutoMapper(target = org.dromara.dms.domain.DmsBillsMaintDetail.class) +}) +@Data +public class MaintainDetail { + + /** + * 保养明细ID + */ + private Long billsMaintDetailId; + + /** + * 保养实例ID + */ + private Long maintInstanceId; + + /** + * 设备ID + */ + private Long deviceId; + + /** + * 工位ID + */ + private Long stationId; + + /** + * 保养标准ID + */ + private Long maintStandardId; + + /** + * 操作描述 + */ + private String operationDescription; + + /** + * 设备编码 + */ + private String deviceCode; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 保养工位名称 + */ + private String maintStationName; + + /** + * 保养协议 + */ + private String maintProtocol; + + /** + * 保养操作描述 + */ + private String maintOperationDescription; + + /** + * 类型名称 + */ + private String typeName; + + /** + * 保养状态 - 与后端Vo保持一致的Long类型 + */ + private Long maintStatus; + + /** + * 保养项目明细列表 + */ + private List dmsBillsMaintDetailProjectList; + +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/MaintainProject.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/MaintainProject.java new file mode 100644 index 0000000..e167eb6 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/MaintainProject.java @@ -0,0 +1,52 @@ +package org.dromara.dms.domain.mobile; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.dms.domain.vo.DmsBillsMaintDetailProjectVo; + +/** + * 保养项目实体类 - Mobile端 + * 与PDA端MaintainProject保持一致 + * + * @author system + * @date 2025-01-20 + */ +@Data +@AutoMapper(target = DmsBillsMaintDetailProjectVo.class) +public class MaintainProject { + + /** + * 备注 + */ + private String remark; + + /** + * 保养明细项目ID - 调整为Long类型以兼容VO + */ + private Long maintDetailProjectId; + + /** + * 保养明细ID - 调整为Long类型以兼容VO + */ + private Long billsMaintDetailId; + + /** + * 保养项目ID - 调整为Long类型以兼容VO + */ + private Long maintProjectId; + + /** + * 保养项目名称 + */ + private String maintProjectName; + + /** + * 保养项目描述 + */ + private String maintProjectDesc; + + /** + * 保养项目状态(0待保养 1保养完成) + */ + private String maintProjectStatus; +} \ No newline at end of file diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Outsourcing.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Outsourcing.java index 18358eb..48f9ba8 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Outsourcing.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/mobile/Outsourcing.java @@ -3,9 +3,18 @@ package org.dromara.dms.domain.mobile; import lombok.Data; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; +import io.github.linpeilie.annotations.AutoMapper; +import org.dromara.dms.domain.vo.DmsBaseOutsourcingInfoVo; - +/** + * 外协单位Mobile对象 - 与PDA端Outsourcing保持一致 + * 对应PDA端的Outsourcing实体类 + * + * @author system + * @date 2025-01-20 + */ @Data +//@AutoMapper(target = DmsBaseOutsourcingInfoVo.class, reverseConvertGenerate = true) public class Outsourcing { /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStandardVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStandardVo.java index d2035c1..0dadb85 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStandardVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBaseMaintStandardVo.java @@ -1,5 +1,6 @@ package org.dromara.dms.domain.vo; +import com.baomidou.mybatisplus.annotation.TableField; import org.dromara.dms.domain.DmsBaseMaintStandard; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -76,4 +77,5 @@ public class DmsBaseMaintStandardVo implements Serializable { */ private String deviceTypeName;//JOIN + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeDetailVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeDetailVo.java index 4eabd2d..4dcc63e 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeDetailVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeDetailVo.java @@ -132,5 +132,9 @@ public class DmsBillsLubeDetailVo implements Serializable { @ExcelProperty(value = "润滑操作描述") private String lubeOperationDescription; - + /** + * 润滑部位名称 (关联查询字段) + */ + @ExcelProperty(value = "润滑部位名称") + private String lubeStationName; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java index 373d0cb..353846f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsLubeInstanceVo.java @@ -8,7 +8,6 @@ import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.dms.domain.DmsBillsLubeInstance; -import org.dromara.dms.domain.mobile.LubricationDetail; import java.io.Serial; import java.io.Serializable; @@ -129,7 +128,7 @@ public class DmsBillsLubeInstanceVo implements Serializable { /** * 润滑工单详情 */ - private List dmsBillsLubeDetailList; + private List dmsBillsLubeDetailList; /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailVo.java index 998abb4..14910d1 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailVo.java @@ -90,6 +90,12 @@ public class DmsBillsMaintDetailVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + /** * 设备编码 (关联查询字段) */ 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 e6e4716..2c64143 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 @@ -144,7 +144,7 @@ public class DmsBillsMaintInstanceVo implements Serializable { private String maintLevelName; - private List dmsBillsMaintDetailList; + private List dmsBillsMaintDetailList; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsRecordInspectVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsRecordInspectVo.java index 0e3f173..e923557 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsRecordInspectVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsRecordInspectVo.java @@ -17,7 +17,7 @@ import java.util.Date; /** - * dmsRecordInspect视图对象 dms_record_inspect + * 点巡检历史记录视图对象 dms_record_inspect * * @author zch * @date 2025-06-24 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsLubeDetailMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsLubeDetailMapper.java index b71abd5..880c88e 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsLubeDetailMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsLubeDetailMapper.java @@ -2,7 +2,6 @@ package org.dromara.dms.mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.dms.domain.DmsBillsLubeDetail; -import org.dromara.dms.domain.mobile.LubricationDetail; import org.dromara.dms.domain.vo.DmsBillsLubeDetailVo; import java.util.List; @@ -21,7 +20,7 @@ public interface DmsBillsLubeDetailMapper extends BaseMapperPlus selectDmsBillsLubeDetailJoinList(DmsBillsLubeDetail dmsBillsLubeDetail); + List selectDmsBillsLubeDetailJoinList(DmsBillsLubeDetail dmsBillsLubeDetail); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java index 93c6dc5..c49430f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailMapper.java @@ -24,7 +24,7 @@ public interface DmsBillsMaintDetailMapper extends BaseMapperPlus selectDmsBillsMaintDetailJoinList(DmsBillsMaintDetail dmsBillsMaintDetail); + public List selectDmsBillsMaintDetailJoinList(DmsBillsMaintDetail dmsBillsMaintDetail); List selectDetailList(Long maintInstanceId); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRecordInspectService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRecordInspectService.java index 55b60bd..ee8cf8d 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRecordInspectService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRecordInspectService.java @@ -10,7 +10,7 @@ import java.util.Collection; import java.util.List; /** - * dmsRecordInspectService接口 + * 点巡检历史记录Service接口 * * @author zch * @date 2025-06-24 @@ -18,48 +18,48 @@ import java.util.List; public interface IDmsRecordInspectService { /** - * 查询dmsRecordInspect + * 查询点巡检历史记录 * * @param recordInspectId 主键 - * @return dmsRecordInspect + * @return 点巡检历史记录 */ DmsRecordInspectVo queryById(Long recordInspectId); /** - * 分页查询dmsRecordInspect列表 + * 分页查询点巡检历史记录列表 * * @param bo 查询条件 * @param pageQuery 分页参数 - * @return dmsRecordInspect分页列表 + * @return 点巡检历史记录分页列表 */ TableDataInfo queryPageList(DmsRecordInspectBo bo, PageQuery pageQuery); /** - * 查询符合条件的dmsRecordInspect列表 + * 查询符合条件的点巡检历史记录列表 * * @param bo 查询条件 - * @return dmsRecordInspect列表 + * @return 点巡检历史记录列表 */ List queryList(DmsRecordInspectBo bo); /** - * 新增dmsRecordInspect + * 新增点巡检历史记录 * - * @param bo dmsRecordInspect + * @param bo 点巡检历史记录 * @return 是否新增成功 */ Boolean insertByBo(DmsRecordInspectBo bo); /** - * 修改dmsRecordInspect + * 修改点巡检历史记录 * - * @param bo dmsRecordInspect + * @param bo 点巡检历史记录 * @return 是否修改成功 */ Boolean updateByBo(DmsRecordInspectBo bo); /** - * 校验并批量删除dmsRecordInspect信息 + * 校验并批量删除点巡检历史记录信息 * * @param ids 待删除的主键集合 * @param isValid 是否进行有效性校验 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java index 55ffbe7..3541a2f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsFaultInstanceServiceImpl.java @@ -222,8 +222,6 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS // 可以考虑记录到失败表,后续补偿处理 } })); - - // 创建故障实例活动对象 DmsFaultInstanceActivity dmsFaultInstanceActivity = new DmsFaultInstanceActivity(); // 设置维修实例ID @@ -250,13 +248,11 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS dmsFaultInstanceActivity.setProcessStepOrder(1l); // 插入故障实例活动记录 dmsFaultInstanceActivityMapper.insert(dmsFaultInstanceActivity); - //存储图片 // 获取文件URL列表 List fileUrls = add.getFileUrls(); // 批量插入实例文件记录 batchInsertInstanceFiles(fileUrls, dmsFaultInstanceActivity.getInstanceActivityId()); - return flag; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java index 7d8272e..f05e4c4 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceServiceImpl.java @@ -287,23 +287,18 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer // 设置润滑状态字符串,表示待润滑和正在润滑的状态 bo.setLubeStatusStr(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE + "," + DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_LUBING); - // 查询最新的润滑工单 DmsBillsLubeInstanceVo newestBillsLubeInstance = baseMapper.selectNewestDmsBillsLubeInstance(bo); - - // 如果找到最新的润滑工单 if (newestBillsLubeInstance != null) { // 查询关联的润滑详情列表 - // 创建一个新的润滑详情对象 DmsBillsLubeDetail queryBillsLubeDetail = new DmsBillsLubeDetail(); // 设置润滑详情对象的润滑ID queryBillsLubeDetail.setLubeInstanceId(newestBillsLubeInstance.getLubeInstanceId()); - List dmsBillsLubeDetails = dmsBillsLubeDetailMapper.selectDmsBillsLubeDetailJoinList(queryBillsLubeDetail); + List dmsBillsLubeDetails = dmsBillsLubeDetailMapper.selectDmsBillsLubeDetailJoinList(queryBillsLubeDetail); newestBillsLubeInstance.setDmsBillsLubeDetailList(dmsBillsLubeDetails); } - return newestBillsLubeInstance; } 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 6f66e85..0066fb5 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 @@ -282,7 +282,8 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS if (newestBillsMaintInstance != null) { DmsBillsMaintDetail queryBillsMaintDetail = new DmsBillsMaintDetail(); queryBillsMaintDetail.setMaintInstanceId(newestBillsMaintInstance.getMaintInstanceId()); - List dmsBillsMaintDetails = dmsBillsMaintDetailMapper.selectDmsBillsMaintDetailJoinList(queryBillsMaintDetail); + List dmsBillsMaintDetails = dmsBillsMaintDetailMapper.selectDmsBillsMaintDetailJoinList(queryBillsMaintDetail); + newestBillsMaintInstance.setDmsBillsMaintDetailList(dmsBillsMaintDetails); } Long maintLevel = newestBillsMaintInstance.getMaintLevel(); @@ -386,6 +387,24 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS List dmsBillsMaintDetailProjects = dmsBillsMaintInstanceProjectService.queryList(queryBillsMaintDetailProject); // 设置保养明细的项目列表 dmsBillsMaintDetail.setDmsBillsMaintDetailProjectList(dmsBillsMaintDetailProjects); + + // 【关键修复】重新查询完整的保养明细信息,包含关联字段 + // 使用关联查询方法获取完整的保养明细信息,包括设备名称、保养部位名称等 + DmsBillsMaintDetail queryDetail = new DmsBillsMaintDetail(); + queryDetail.setBillsMaintDetailId(dmsBillsMaintDetail.getBillsMaintDetailId()); + List detailVoList = dmsBillsMaintDetailMapper.selectDmsBillsMaintDetailJoinList(queryDetail); + + if (!detailVoList.isEmpty()) { + DmsBillsMaintDetailVo detailVo = detailVoList.get(0); + // 将关联查询到的字段赋值给返回对象 + dmsBillsMaintDetail.setMachineCode(detailVo.getMachineCode()); + dmsBillsMaintDetail.setMachineName(detailVo.getMachineName()); + dmsBillsMaintDetail.setDeviceTypeName(detailVo.getDeviceTypeName()); + dmsBillsMaintDetail.setMaintStationName(detailVo.getMaintStationName()); + dmsBillsMaintDetail.setMaintProtocol(detailVo.getMaintProtocol()); + dmsBillsMaintDetail.setMaintOperationDescription(detailVo.getMaintOperationDescription()); + } + // 返回更新后的保养明细对象 return dmsBillsMaintDetail; } diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsInspectInstanceMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsInspectInstanceMapper.xml index 8bc04a3..c9fbf5c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsInspectInstanceMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsInspectInstanceMapper.xml @@ -99,6 +99,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + and dbmd.bills_maint_detail_id = #{billsMaintDetailId} and dbmd.maint_instance_id = #{maintInstanceId} and dbmd.machine_id = #{machineId} and dbmd.maint_station_id = #{maintStationId}