diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailProjectVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailProjectVo.java index cb94fad..cf4eb9e 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailProjectVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsMaintDetailProjectVo.java @@ -2,6 +2,8 @@ package org.dromara.dms.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; @@ -10,6 +12,7 @@ import org.dromara.dms.domain.DmsBillsMaintDetailProject; import java.io.Serial; import java.io.Serializable; +import java.util.Date; import java.util.List; @@ -73,4 +76,29 @@ public class DmsBillsMaintDetailProjectVo implements Serializable { /** 保养工单明细项目信息;检查每个项目的点巡检结果详情信息 */ /* private List dmsBillsMaintDetailProjectList;*/ + /** + * 创建部门 + */ + private Long createDept; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新者 + */ + private Long updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailProjectMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailProjectMapper.java index 1a5ab8c..bd54d62 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailProjectMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsMaintDetailProjectMapper.java @@ -4,6 +4,8 @@ import org.dromara.dms.domain.DmsBillsMaintDetailProject; import org.dromara.dms.domain.vo.DmsBillsMaintDetailProjectVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.List; + /** * 保养工单明细项目信息;检查每个项目的点巡检结果详情Mapper接口 * @@ -12,4 +14,12 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface DmsBillsMaintDetailProjectMapper extends BaseMapperPlus { + /** + * 查询保养工单明细项目列表,关联保养项目表获取项目名称 + * + * @param dmsBillsMaintDetailProject 保养工单明细项目 + * @return 保养工单明细项目集合 + */ + List selectDmsBillsMaintDetailProjectWithProjectName(DmsBillsMaintDetailProject dmsBillsMaintDetailProject); + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailProjectServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailProjectServiceImpl.java index d7d8cca..59a97d7 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailProjectServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailProjectServiceImpl.java @@ -65,6 +65,25 @@ public class DmsBillsMaintDetailProjectServiceImpl implements IDmsBillsMaintDeta */ @Override public List queryList(DmsBillsMaintDetailProjectBo bo) { + // 【修复保养项目名称为空问题】优先使用关联查询方法获取完整项目信息 + if (bo.getBillsMaintDetailId() != null) { + // 转换为实体对象用于查询 + DmsBillsMaintDetailProject queryEntity = MapstructUtils.convert(bo, DmsBillsMaintDetailProject.class); + queryEntity.setBillsMaintDetailId(bo.getBillsMaintDetailId()); + queryEntity.setMaintDetailProjectId(bo.getMaintDetailProjectId()); + queryEntity.setMaintProjectId(bo.getMaintProjectId()); + queryEntity.setMaintProjectStatus(bo.getMaintProjectStatus()); + + // 使用关联查询方法,确保获取到项目名称 + List result = baseMapper.selectDmsBillsMaintDetailProjectWithProjectName(queryEntity); + + // 如果关联查询有结果,直接返回 + if (result != null && !result.isEmpty()) { + return result; + } + } + + // 降级到默认查询方法 MPJLambdaWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } @@ -132,6 +151,6 @@ public class DmsBillsMaintDetailProjectServiceImpl implements IDmsBillsMaintDeta if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } - return baseMapper.deleteByIds(ids) > 0; + return baseMapper.deleteBatchIds(ids) > 0; } } 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 492f809..12f7e36 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 @@ -17,6 +17,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.dms.domain.*; import org.dromara.dms.domain.bo.DmsBillsMaintDetailBo; import org.dromara.dms.domain.bo.DmsBillsMaintDetailProjectBo; @@ -322,11 +323,11 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS dmsBillsMaintInstance.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_MAINTING); // 设置实际开始保养时间为当前时间 dmsBillsMaintInstance.setRealBeginTime(currentDate); - + // 【关键修复】检查工作流是否已经启动 - 先重新查询最新数据 // 重新查询保养实例,确保获取到最新的工作流ID(避免使用缓存中的旧数据) DmsBillsMaintInstance latestInstance = baseMapper.selectById(dmsBillsMaintInstance.getMaintInstanceId()); - + if (latestInstance != null && latestInstance.getWfDefinitionId() == null) { // 【工作流启动】创建远程启动流程对象 RemoteStartProcess startProcess = new RemoteStartProcess(); @@ -336,22 +337,22 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS String businessId = dmsBillsMaintInstance.getMaintInstanceId().toString(); // 设置业务ID startProcess.setBusinessId(businessId); - + try { // 启动工作流程 RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(startProcess); - + // 【关键修复】获取流程实例ID和任务ID Long processInstanceId = remoteStartProcessReturn.getProcessInstanceId(); Long taskId = remoteStartProcessReturn.getTaskId(); - + // 如果流程实例ID为空,抛出流程启动失败异常 if (processInstanceId == null) { throw new ServiceException("保养工作流启动失败"); } else { // 【关键修复】存储流程实例ID到wfDefinitionId dmsBillsMaintInstance.setWfDefinitionId(processInstanceId); - + // ** 异步线程上下文传递【核心问题】 ** // 1. 【捕获Token】: 在主线程里,我们先用 StpUtil.getTokenValue() 把Token拿出来,存好。 final String tokenValue = StpUtil.getTokenValue(); @@ -385,21 +386,22 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS } } } else if (latestInstance != null) { + // 【关键修复】工作流已启动,根据流程实例ID查询当前活跃任务 // 使用最新查询到的工作流ID Long processInstanceId = latestInstance.getWfDefinitionId(); dmsBillsMaintInstance.setWfDefinitionId(processInstanceId); // 同步更新到当前对象 - - log.info("保养工单 {} 工作流已启动,流程实例ID: {},查询当前活跃任务", + + log.info("保养工单 {} 工作流已启动,流程实例ID: {},查询当前活跃任务", dmsBillsMaintInstance.getMaintInstanceId(), processInstanceId); - + // 根据流程实例ID获取当前活跃任务ID Long currentActiveTaskId = remoteWorkflowService.getCurrentTaskIdByInstanceId(processInstanceId); - + if (currentActiveTaskId != null) { - log.info("保养工单 {} 找到当前活跃任务ID: {}", + log.info("保养工单 {} 找到当前活跃任务ID: {}", dmsBillsMaintInstance.getMaintInstanceId(), currentActiveTaskId); - + // 直接推进工作流 RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); remoteCompleteTask.setTaskId(currentActiveTaskId); @@ -408,7 +410,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS List messageTypes = new ArrayList<>(); messageTypes.add("user"); // 用户操作 remoteCompleteTask.setMessageType(messageTypes); - + boolean taskCompleted = remoteWorkflowService.completeTask(remoteCompleteTask); if (!taskCompleted) { log.error("保养工作流推进失败,任务ID: {}", currentActiveTaskId); @@ -429,13 +431,15 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS // 更新保养明细信息 dmsBillsMaintDetailMapper.updateById(dmsBillsMaintDetail); + // 更新保养工单信息 + baseMapper.updateById(dmsBillsMaintInstance); } -// else {//保养中 -// // 更新人不为空,则设置更新人为当前用户,更新时间为当前时间 -// dmsBillsMaintDetail.setUpdateBy(userName); -// dmsBillsMaintDetail.setUpdateTime(currentDate); -// dmsBillsMaintDetailMapper.updateDmsBillsMaintDetail(dmsBillsMaintDetail); -// } + else {//保养中 + // 更新人不为空,则设置更新人为当前用户,更新时间为当前时间 + dmsBillsMaintDetail.setUpdateBy(LoginHelper.getUserId()); + dmsBillsMaintDetail.setUpdateTime(currentDate); + dmsBillsMaintDetailMapper.updateById(dmsBillsMaintDetail); + } // 创建查询保养明细项目的对象 DmsBillsMaintDetailProjectBo queryBillsMaintDetailProject = new DmsBillsMaintDetailProjectBo(); @@ -445,13 +449,13 @@ 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); // 将关联查询到的字段赋值给返回对象 @@ -462,7 +466,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS dmsBillsMaintDetail.setMaintProtocol(detailVo.getMaintProtocol()); dmsBillsMaintDetail.setMaintOperationDescription(detailVo.getMaintOperationDescription()); } - + // 返回更新后的保养明细对象 return dmsBillsMaintDetail; } @@ -483,7 +487,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS log.error("保养工单工作流信息更新失败,maintInstanceId: {}", dmsBillsMaintInstance.getMaintInstanceId()); return false; } - + // 【自动推进工作流】完成第一步任务,推进到下一步 RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); // 设置任务ID @@ -500,7 +504,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS if (!b){ return false; }else{ - // 更新保养实例信息 + // 更新保养工单信息 int i = baseMapper.updateById(dmsBillsMaintInstance); return i > 0; } @@ -564,7 +568,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS // 而是根据业务ID动态获取当前活跃的任务ID String businessId = maintInstanceId.toString(); Long currentActiveTaskId = remoteWorkflowService.getCurrentActiveTaskId(businessId); - + if (currentActiveTaskId != null) { RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask(); remoteCompleteTask.setTaskId(currentActiveTaskId); // 使用当前活跃任务ID 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 cdfdc64..cd583f7 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 @@ -129,7 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dfia.repair_content repair_content, dfia.protected_method protected_method, dfia.repairer repairer, - dfia.repair_confirm repair_confirm, + dbfi.repair_confirm repair_confirm, dfia.confirm_time confirm_time,dfia.components_parts_id components_parts_id from dms_bills_fault_instance dbfi left join prod_base_machine_info dbdl on dbfi.machine_id=dbdl.machine_id diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailProjectMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailProjectMapper.xml index c0171cd..4964fd6 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailProjectMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailProjectMapper.xml @@ -4,4 +4,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + select + dbmdp.maint_detail_project_id, + dbmdp.bills_maint_detail_id, + dbmdp.maint_project_id, + COALESCE(dbmdp.maint_project_name, dbmp.maint_project_name) as maint_project_name, + COALESCE(dbmdp.maint_project_desc, dbmp.maint_project_desc) as maint_project_desc, + dbmdp.maint_project_status, + dbmdp.remark, + dbmdp.create_time + from + dms_bills_maint_detail_project dbmdp + left join dms_base_maint_project dbmp on dbmdp.maint_project_id = dbmp.maint_project_id + + + +