diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DmsConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DmsConstants.java index 85b89cc6..25c40f91 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DmsConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DmsConstants.java @@ -87,4 +87,11 @@ public class DmsConstants { public static final String DMS_MAINT_PROJECT_STATUS_TO_MAINT="0";//0待保养 public static final String DMS_MAINT_PROJECT_STATUS_COMPLETE="1";//1保养完成 + + /** 工作流编码 */ + public static final String DMS_BILLS_LUBE_INSTANCE_WF_CODE="Lube01"; + public static final String DMS_BILLS_MAINT_INSTANCE_WF_CODE="Maint01"; + public static final String DMS_BILLS_FAULT_INSTANCE_WF_CODE="Fault01"; + public static final String DMS_BILLS_INSPECT_INSTANCE_WF_CODE="Inspect01"; + } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java index 35f65872..6a0b818e 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/uuid/Seq.java @@ -54,6 +54,19 @@ public class Seq { public static final String dmsLubeInstanceCode = "LI"; + + // 设备报修工单编号记录标识 + public static final String dmsBillsFaultInstanceSeqType = "DMSBILLSFAULTINSTANCE"; + + // 设备报修工单接口序列数 + private static AtomicInteger dmsBillsFaultInstanceSeq = new AtomicInteger(1); + + // 设备报修工单标识 + public static final String dmsBillsFaultInstanceSeqCode = "BF"; + + + + //检修计划序列类型 public static final String planRepairSeqType = "PLANREPAIR"; //检修计划接口序列数 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceActivityController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceActivityController.java new file mode 100644 index 00000000..cfa37b0b --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceActivityController.java @@ -0,0 +1,117 @@ +package org.dromara.dms.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceActivityVo; +import org.dromara.dms.domain.bo.DmsBillsInspectInstanceActivityBo; +import org.dromara.dms.service.IDmsBillsInspectInstanceActivityService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 点巡检工单实例节点;此暂时不用 + * 前端访问路由地址为:/dms/dmsBillsInspectInstanceActivity + * + * @author zch + * @date 2025-05-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/dmsBillsInspectInstanceActivity") +public class DmsBillsInspectInstanceActivityController extends BaseController { + + private final IDmsBillsInspectInstanceActivityService dmsBillsInspectInstanceActivityService; + + /** + * 查询点巡检工单实例节点;此暂时不用列表 + */ + @SaCheckPermission("dms:dmsBillsInspectInstanceActivity:list") + @GetMapping("/list") + public TableDataInfo list(DmsBillsInspectInstanceActivityBo bo, PageQuery pageQuery) { + return dmsBillsInspectInstanceActivityService.queryPageList(bo, pageQuery); + } + + /** + * 导出点巡检工单实例节点;此暂时不用列表 + */ + @SaCheckPermission("dms:dmsBillsInspectInstanceActivity:export") + @Log(title = "点巡检工单实例节点;此暂时不用", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DmsBillsInspectInstanceActivityBo bo, HttpServletResponse response) { + List list = dmsBillsInspectInstanceActivityService.queryList(bo); + ExcelUtil.exportExcel(list, "点巡检工单实例节点;此暂时不用", DmsBillsInspectInstanceActivityVo.class, response); + } + + /** + * 获取点巡检工单实例节点;此暂时不用详细信息 + * + * @param instanceActivityId 主键 + */ + @SaCheckPermission("dms:dmsBillsInspectInstanceActivity:query") + @GetMapping("/{instanceActivityId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long instanceActivityId) { + return R.ok(dmsBillsInspectInstanceActivityService.queryById(instanceActivityId)); + } + + /** + * 新增点巡检工单实例节点;此暂时不用 + */ + @SaCheckPermission("dms:dmsBillsInspectInstanceActivity:add") + @Log(title = "点巡检工单实例节点;此暂时不用", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DmsBillsInspectInstanceActivityBo bo) { + return R.ok(dmsBillsInspectInstanceActivityService.insertByBo(bo)); + } + + /** + * 修改点巡检工单实例节点;此暂时不用 + */ + @SaCheckPermission("dms:dmsBillsInspectInstanceActivity:edit") + @Log(title = "点巡检工单实例节点;此暂时不用", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DmsBillsInspectInstanceActivityBo bo) { + return R.ok(dmsBillsInspectInstanceActivityService.updateByBo(bo)); + } + + /** + * 删除点巡检工单实例节点;此暂时不用 + * + * @param instanceActivityIds 主键串 + */ + @SaCheckPermission("dms:dmsBillsInspectInstanceActivity:remove") + @Log(title = "点巡检工单实例节点;此暂时不用", businessType = BusinessType.DELETE) + @DeleteMapping("/{instanceActivityIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] instanceActivityIds) { + return toAjax(dmsBillsInspectInstanceActivityService.deleteWithValidByIds(List.of(instanceActivityIds), true)); + } + + + /** + * 下拉框查询点巡检工单实例节点;此暂时不用列表 + */ + + @GetMapping("/getDmsBillsInspectInstanceActivityList") + public R> getDmsBillsInspectInstanceActivityList(DmsBillsInspectInstanceActivityBo bo) { + List list = dmsBillsInspectInstanceActivityService.queryList(bo); + return R.ok(list); + } +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java index 8b7dff8f..acc74b76 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsInspectInstanceController.java @@ -114,4 +114,16 @@ public class DmsBillsInspectInstanceController extends BaseController { List list = dmsBillsInspectInstanceService.queryList(bo); return R.ok(list); } + + /** + * 更新点巡检实例的工作流定义ID + * @param inspectInstanceId 点巡检实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + @PostMapping("/updateWfDefinitionIdById") + public R updateWfDefinitionIdById(@RequestParam Long inspectInstanceId, @RequestParam Long wfDefinitionId) + { + return toAjax(dmsBillsInspectInstanceService.updateWfDefinitionIdById(inspectInstanceId, wfDefinitionId)); + } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java index 3dbdb8de..1644a17a 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintInstanceController.java @@ -121,4 +121,16 @@ public class DmsBillsMaintInstanceController extends BaseController { { return R.ok(dmsBillsMaintInstanceService.insertDmsBillsMaintInstance(planMaintCode)); } + + /** + * 更新保养实例的工作流定义ID + * @param maintInstanceId 保养实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + @PostMapping("/updateWfDefinitionIdById") + public R updateWfDefinitionIdById(@RequestParam Long maintInstanceId, @RequestParam Long wfDefinitionId) + { + return toAjax(dmsBillsMaintInstanceService.updateWfDefinitionIdById(maintInstanceId, wfDefinitionId)); + } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMaintInstanceActivityController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMaintInstanceActivityController.java new file mode 100644 index 00000000..25166110 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsMaintInstanceActivityController.java @@ -0,0 +1,117 @@ +package org.dromara.dms.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.dms.domain.vo.DmsMaintInstanceActivityVo; +import org.dromara.dms.domain.bo.DmsMaintInstanceActivityBo; +import org.dromara.dms.service.IDmsMaintInstanceActivityService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 保养工单实例节点;弃用 + * 前端访问路由地址为:/dms/dmsMaintInstanceActivity + * + * @author zch + * @date 2025-05-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/dmsMaintInstanceActivity") +public class DmsMaintInstanceActivityController extends BaseController { + + private final IDmsMaintInstanceActivityService dmsMaintInstanceActivityService; + + /** + * 查询保养工单实例节点;弃用列表 + */ + @SaCheckPermission("dms:dmsMaintInstanceActivity:list") + @GetMapping("/list") + public TableDataInfo list(DmsMaintInstanceActivityBo bo, PageQuery pageQuery) { + return dmsMaintInstanceActivityService.queryPageList(bo, pageQuery); + } + + /** + * 导出保养工单实例节点;弃用列表 + */ + @SaCheckPermission("dms:dmsMaintInstanceActivity:export") + @Log(title = "保养工单实例节点;弃用", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DmsMaintInstanceActivityBo bo, HttpServletResponse response) { + List list = dmsMaintInstanceActivityService.queryList(bo); + ExcelUtil.exportExcel(list, "保养工单实例节点;弃用", DmsMaintInstanceActivityVo.class, response); + } + + /** + * 获取保养工单实例节点;弃用详细信息 + * + * @param instanceActivityId 主键 + */ + @SaCheckPermission("dms:dmsMaintInstanceActivity:query") + @GetMapping("/{instanceActivityId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long instanceActivityId) { + return R.ok(dmsMaintInstanceActivityService.queryById(instanceActivityId)); + } + + /** + * 新增保养工单实例节点;弃用 + */ + @SaCheckPermission("dms:dmsMaintInstanceActivity:add") + @Log(title = "保养工单实例节点;弃用", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DmsMaintInstanceActivityBo bo) { + return R.ok(dmsMaintInstanceActivityService.insertByBo(bo)); + } + + /** + * 修改保养工单实例节点;弃用 + */ + @SaCheckPermission("dms:dmsMaintInstanceActivity:edit") + @Log(title = "保养工单实例节点;弃用", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DmsMaintInstanceActivityBo bo) { + return R.ok(dmsMaintInstanceActivityService.updateByBo(bo)); + } + + /** + * 删除保养工单实例节点;弃用 + * + * @param instanceActivityIds 主键串 + */ + @SaCheckPermission("dms:dmsMaintInstanceActivity:remove") + @Log(title = "保养工单实例节点;弃用", businessType = BusinessType.DELETE) + @DeleteMapping("/{instanceActivityIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] instanceActivityIds) { + return toAjax(dmsMaintInstanceActivityService.deleteWithValidByIds(List.of(instanceActivityIds), true)); + } + + + /** + * 下拉框查询保养工单实例节点;弃用列表 + */ + + @GetMapping("/getDmsMaintInstanceActivityList") + public R> getDmsMaintInstanceActivityList(DmsMaintInstanceActivityBo bo) { + List list = dmsMaintInstanceActivityService.queryList(bo); + return R.ok(list); + } +} 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 4d717f0e..0e4bcf48 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 @@ -1,326 +1,404 @@ -//package org.dromara.dms.controller; -// -//import com.fasterxml.jackson.core.JsonProcessingException; -//import com.fasterxml.jackson.core.type.TypeReference; -//import com.fasterxml.jackson.databind.ObjectMapper; -//import lombok.RequiredArgsConstructor; -//import org.dromara.common.core.constant.DmsConstants; -//import org.dromara.common.core.domain.R; -//import org.dromara.common.log.annotation.Log; -//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.DmsBaseMachineInfo; -//import org.dromara.dms.domain.DmsBaseOutsourcingInfo; -//import org.dromara.dms.domain.DmsBillsLubeDetail; -//import org.dromara.dms.domain.DmsBillsLubeInstance; -//import org.dromara.dms.service.IDmsBillsLubeInstanceService; -//import org.springframework.util.CollectionUtils; -//import org.springframework.validation.annotation.Validated; -//import org.springframework.web.bind.annotation.*; -//import org.springframework.web.multipart.MultipartFile; -// -//import java.util.ArrayList; -//import java.util.Date; -//import java.util.List; -// -//@Validated -//@RequiredArgsConstructor -//@RestController -//@RequestMapping("/mobile") -//public class DmsMobileController extends BaseController { -// -// -// private final IDmsBillsFaultInstanceService dmsBillsFaultInstanceService; -// -// -// private final IDmsBillsInspectInstanceService dmsBillsInspectInstanceService; -// -// -// private final IDmsBaseDeviceLedgerService baseDeviceLedgerService; -// -// -// private final IDmsBaseOutsrcInfoService dmsBaseOutsrcInfoService; -// -// -// private final IDmsBillsMaintInstanceService dmsBillsMaintInstanceService; -// -// -// private final IDmsBillsLubeInstanceService dmsBillsLubeInstanceService; -// -// /** -// * 根据设备编号获取设备信息 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getDeviceByDeviceCode/{deviceCode}") -// public R getDeviceByDeviceCode(@PathVariable("deviceCode") String deviceCode) { -// DmsBaseMachineInfo dmsBaseDeviceLedger = baseDeviceLedgerService.selectDmsBaseDeviceLedgerByDeviceCode(deviceCode); -// return R.ok(dmsBaseDeviceLedger); -// } -// -// /** -// * 获取外协单位列表 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getOutsrcInfos") -// public R getOutsrcInfos() { -// DmsBaseOutsourcingInfo queryBaseOutsrcInfo = new DmsBaseOutsourcingInfo(); +package org.dromara.dms.controller; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +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.*; +import org.dromara.dms.domain.bo.*; +import org.dromara.dms.domain.vo.*; +import org.dromara.dms.service.*; +import org.dromara.resource.api.RemoteFileService; +import org.dromara.resource.api.domain.RemoteFile; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.dromara.common.core.exception.ServiceException; +import java.io.IOException; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/mobile") +@Slf4j +public class DmsMobileController extends BaseController { + + + private final IDmsBillsFaultInstanceService dmsBillsFaultInstanceService; + + private final IDmsBillsInspectInstanceService dmsBillsInspectInstanceService; + + private final IDmsBaseMachineInfoService baseDeviceLedgerService; + + private final IDmsBaseOutsourcingInfoService dmsBaseOutsrcInfoService; + + private final IDmsBillsMaintInstanceService dmsBillsMaintInstanceService; + + private final IDmsBillsLubeInstanceService dmsBillsLubeInstanceService; + + private final RemoteFileService remoteFileService; + + + /** + * 处理文件上传的函数 + * @param files 多部分文件列表 + * @return 上传文件的URL列表 + */ + private List handleFileUploads(List files) { + // 创建一个存储上传文件URL的列表 + List fileUrls = new ArrayList<>(); + // 判断文件列表是否为空 + if (files != null) { + // 遍历每个文件 + for (MultipartFile file : files) { + // 获取原始文件名 + String originalFilename = file.getOriginalFilename(); + // 获取文件类型 + String contentType = file.getContentType(); + byte[] fileBytes; + try { + // 获取文件字节内容 + fileBytes = file.getBytes(); + } catch (IOException e) { + // 记录错误日志并抛出服务异常 + log.error("获取文件字节失败: {}", originalFilename, e); + throw new ServiceException("文件获取失败,请重试。"); + } + + try { + // 调用远程文件服务的上传方法 + RemoteFile sysFile = remoteFileService.upload(originalFilename, originalFilename, contentType, fileBytes); + // 判断上传结果是否成功 + if (sysFile != null && sysFile.getUrl() != null) { + // 将文件URL添加到列表中 + fileUrls.add(sysFile.getUrl()); + } else { + // 记录警告日志 + log.warn("文件上传成功但未返回URL或返回数据为空: {}", originalFilename); + } + } catch (ServiceException e) { + // 记录服务异常日志并抛出新的服务异常 + log.error("文件上传服务异常: {}", originalFilename, e); + throw new ServiceException("文件上传服务异常:" + e.getMessage()); + } catch (Exception e) { + // 记录未知错误日志并抛出新的服务异常 + log.error("文件上传过程中发生未知错误: {}", originalFilename, e); + throw new ServiceException("文件上传过程中发生未知错误,请联系管理员。"); + } + } + } + // 返回上传文件的URL列表 + return fileUrls; + } + + + /** + * 根据设备编号获取设备信息 + * + * @return + */ + @GetMapping("/getDeviceByDeviceCode/{deviceCode}") + public R getDeviceByDeviceCode(@PathVariable("deviceCode") String deviceCode) { + DmsBaseMachineInfoBo dmsBaseMachineInfoBo = new DmsBaseMachineInfoBo(); + dmsBaseMachineInfoBo.setMachineCode(deviceCode); + //TODO:根据设备编号查一个设备 + DmsBaseMachineInfoVo dmsBaseDeviceLedger = baseDeviceLedgerService.queryList(dmsBaseMachineInfoBo).get(0); + return R.ok(dmsBaseDeviceLedger); + } + + /** + * 获取外协单位列表 + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/getOutsrcInfos") + public R getOutsrcInfos() { + DmsBaseOutsourcingInfoBo queryBaseOutsrcInfo = new DmsBaseOutsourcingInfoBo(); + + //沒有外协状态,用激活状态 // queryBaseOutsrcInfo.setOutsrcStatus(DmsConstants.DMS_BASE_OUTSRC_INFO_STATUS_NROMAL); -// List baseOutsrcInfos = dmsBaseOutsrcInfoService.selectDmsBaseOutsrcInfoList(queryBaseOutsrcInfo); -// return R.ok(baseOutsrcInfos); -// } -// /** -// * 根据传参模糊查询设备名 -// */ -// @GetMapping("/likeDeviceName") -// public R likeDeviceName(String deviceName) { -// List deviceLedgerList = baseDeviceLedgerService.likeDeviceName(deviceName); -// return R.ok(deviceLedgerList); -// } -// -// -// /** -// * PDA-报修 -// *

-// * 需传入 -// * 设备id deviceId -// * 故障类别 faultType -// * 故障描述 faultDescription -// * 涉及操作 designOperations -// * 维修类型 repairType -// * 外协id outsrcId(可不传入) -// * 图片 files -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "故障报修工单", businessType = BusinessType.INSERT) -// @PostMapping("/insertFaultInstsanceActivity") -// public R insertFaultInstsanceActivity(DmsBillsFaultInstance dmsBillsFaultInstance, -// List files) { -// List fileUrls = new ArrayList<>(); -// if(files!=null){ -// for (MultipartFile file : files) { -// R sysFileR = remoteFileService.upload(file); -// SysFile sysFile = sysFileR.getData(); -// fileUrls.add(sysFile.getUrl()); -// } -// } -// dmsBillsFaultInstance.setFileUrls(fileUrls); -// return R.ok(dmsBillsFaultInstanceService.insertDmsBillsFaultInstance(dmsBillsFaultInstance)); -// } -// -// -// /** -// * 获取故障报修工单列表 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getBillsFaultInstances") -// public TableDataInfo getBillsFaultInstances() { -//// startPage(); -// DmsBillsFaultInstance queryBillsFaultInstance = new DmsBillsFaultInstance(); -// List billsFaultInstances = dmsBillsFaultInstanceService.selectDmsBillsFaultInstanceJoinList(queryBillsFaultInstance); -// return getDataTable(billsFaultInstances); -// } -// -// /** -// * 获取故障报修工单详细信息,修改工单使用 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getBillsFaultInstanceByRepairInstanceId/{repairInstanceId}") -// public R getBillsFaultInstanceByRepairInstanceId(@PathVariable("repairInstanceId") Long repairInstanceId) { -// DmsBillsFaultInstance billsFaultInstance = dmsBillsFaultInstanceService.selectDmsBillsFaultInstanceByRepairInstanceId(repairInstanceId); -// return R.ok(billsFaultInstance); -// } -// -// /** -// * 修改工单提交 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "故障报修工单", businessType = BusinessType.UPDATE) -// @PostMapping("/updateFaultInstanceActivity") -// public R updateFaultInstanceActivity(DmsFaultInstanceActivity dmsFaultInstanceActivity, -// @RequestParam(value = "files") List files) { -// List fileUrls = new ArrayList<>(); -// if (!CollectionUtils.isEmpty(files)){ -// for (MultipartFile file : files) { -// R sysFileR = remoteFileService.upload(file); -// SysFile sysFile = sysFileR.getData(); -// fileUrls.add(sysFile.getUrl()); -// } -// dmsFaultInstanceActivity.setFileUrls(fileUrls); -// } -// return R.ok(dmsBillsFaultInstanceService.updateDmsFaultInstanceActivity(dmsFaultInstanceActivity)); -// } -// -// /** -// * 获取故障报修工单详细信息,维修使用 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getBillsFaultInstance4Repair/{repairInstanceId}") -// public R getBillsFaultInstance4Repair(@PathVariable("repairInstanceId") Long repairInstanceId) { -// DmsBillsFaultInstance billsFaultInstance = dmsBillsFaultInstanceService.getDmsBillsFaultInstance4Repair(repairInstanceId); -// return R.ok(billsFaultInstance); -// } -// -// -// /** -// * 故障报修扫描设备验证 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/scanDevice4Repair") -// public R scanDevice4Repair(@Validated DmsBillsFaultInstanceScanVo dmsBillsFaultInstanceScanVo) { -// dmsBillsFaultInstanceService.scanDevice4Repair(dmsBillsFaultInstanceScanVo); -// return R.ok(); -// } -// -// -// /** -// * 开始维修 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "故障报修工单", businessType = BusinessType.START) -// @PostMapping("/startRepair") -// public R startRepair(@RequestBody DmsFaultInstanceActivity dmsFaultInstanceActivity) { -// return R.ok(dmsBillsFaultInstanceService.startRepair(dmsFaultInstanceActivity)); -// } -// -// /** -// * 完成维修 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "故障报修工单", businessType = BusinessType.COMPLETE) -// @PostMapping("/completeRepair") -// public R completeRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity,@RequestParam(value = "files") List files) throws JsonProcessingException { -// dmsFaultInstanceActivity.setRepairConfirm(2); -// dmsFaultInstanceActivity.setConfirmTime(new Date()); -// String parts1 = dmsFaultInstanceActivity.getParts1(); -// ObjectMapper objectMapper = new ObjectMapper(); -// List parts2 = objectMapper.readValue(parts1, new TypeReference>() {}); -// dmsFaultInstanceActivity.setParts(parts2); -// List < String > fileUrls = new ArrayList<>(); -// for (MultipartFile file : files) { -// R sysFileR = remoteFileService.upload(file); -// SysFile sysFile = sysFileR.getData(); -// fileUrls.add(sysFile.getUrl()); -// } -// dmsFaultInstanceActivity.setFileUrls(fileUrls); -// return R.ok(dmsBillsFaultInstanceService.completeRepair(dmsFaultInstanceActivity)); -// } -// -// -// /** -// * 获取最新一条待巡检或巡检中的巡检或点检工单(检查类型inspectType(1巡检,2点检)) -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getNewestInspectInstance") -// public R getNewestInspectInstance(DmsBillsInspectInstance dmsBillsInspectInstance) { -// DmsBillsInspectInstance newestInspectInstance = dmsBillsInspectInstanceService.getNewestBillsInspectInstance(dmsBillsInspectInstance); -// return R.ok(newestInspectInstance); -// } -// -// -// /** -// * 扫描设备编号或者输入设备编号进行巡检验证 -// * */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/scanInspectInstanceDetail") -// public R scanInspectInstanceDetail(@Validated DmsBillsInspectInstanceScanVo dmsBillsInspectInstanceScanVo) { -// return R.ok(dmsBillsInspectInstanceService.scanInspectInstanceDetail(dmsBillsInspectInstanceScanVo)); -// } -// -// /** -// * 点巡检工单 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") + queryBaseOutsrcInfo.setActiveFlag("1"); + + List baseOutsrcInfos = dmsBaseOutsrcInfoService.queryList(queryBaseOutsrcInfo); + return R.ok(baseOutsrcInfos); + } + /** + * 根据传参模糊查询设备名 + */ + @GetMapping("/likeDeviceName") + public R likeDeviceName(String deviceName) { + List deviceLedgerList = baseDeviceLedgerService.likeDeviceName(deviceName); + return R.ok(deviceLedgerList); + } + + + /** + * PDA-报修 + *

+ * 需传入 + * 设备id deviceId + * 故障类别 faultType + * 故障描述 faultDescription + * 涉及操作 designOperations + * 维修类型 repairType + * 外协id outsrcId(可不传入) + * 图片 files + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "故障报修工单", businessType = BusinessType.INSERT) + @PostMapping("/insertFaultInstsanceActivity") + public R insertFaultInstsanceActivity(DmsBillsFaultInstanceBo dmsBillsFaultInstance, + List files) { + List fileUrls = new ArrayList<>(); + if(files!=null){ + for (MultipartFile file : files) { + // 从 MultipartFile 中提取 RemoteFileService 所需的参数 + String originalFilename = file.getOriginalFilename(); + String contentType = file.getContentType(); + byte[] fileBytes; + try { + fileBytes = file.getBytes(); + } catch (IOException e) { + log.error("获取文件字节失败: {}", originalFilename, e); + return R.fail("文件获取失败,请重试。"); + } + + try { + // 调用 RemoteFileService 的 upload 方法,传入正确参数 + // 'name' 参数在当前RemoteFileServiceImpl实现中并非强制决定最终文件名, + // 这里传入originalFilename以保持一致性或作为备用标识 + RemoteFile sysFile = remoteFileService.upload(originalFilename, originalFilename, contentType, fileBytes); + if (sysFile != null && sysFile.getUrl() != null) { + fileUrls.add(sysFile.getUrl()); + } else { + log.warn("文件上传成功但未返回URL或返回数据为空: {}", originalFilename); + // 可以选择返回失败,或继续处理其他文件 + } + } catch (ServiceException e) { + log.error("文件上传服务异常: {}", originalFilename, e); + return R.fail("文件上传服务异常:" + e.getMessage()); + } catch (Exception e) { // 捕获其他未知异常 + log.error("文件上传过程中发生未知错误: {}", originalFilename, e); + return R.fail("文件上传过程中发生未知错误,请联系管理员。"); + } + } + } + + //TODO:文件存储待测试 + dmsBillsFaultInstance.setFileUrls(fileUrls); + return R.ok(dmsBillsFaultInstanceService.insertByBo(dmsBillsFaultInstance)); + } + + + /** + * 获取故障报修工单列表 + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/getBillsFaultInstances") + public TableDataInfo getBillsFaultInstances() { + DmsBillsFaultInstanceBo queryBillsFaultInstance = new DmsBillsFaultInstanceBo(); + List billsFaultInstances = dmsBillsFaultInstanceService.queryList(queryBillsFaultInstance); + return TableDataInfo.build(billsFaultInstances); + } + + /** + * 获取故障报修工单详细信息,修改工单使用 + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/getBillsFaultInstanceByRepairInstanceId/{repairInstanceId}") + public R getBillsFaultInstanceByRepairInstanceId(@PathVariable("repairInstanceId") Long repairInstanceId) { + //fixme:图片地址完整路径(IP) + DmsBillsFaultInstanceVo billsFaultInstance = dmsBillsFaultInstanceService.selectDmsBillsFaultInstanceByRepairInstanceId(repairInstanceId); + return R.ok(billsFaultInstance); + } + + + /** + * 修改工单提交 + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "故障报修工单", businessType = BusinessType.UPDATE) + @PostMapping("/updateFaultInstanceActivity") + public R updateFaultInstanceActivity(DmsFaultInstanceActivityBo dmsFaultInstanceActivity, + @RequestParam(value = "files") List files) { + List fileUrls = handleFileUploads(files); + dmsFaultInstanceActivity.setFileUrls(fileUrls); + return R.ok(dmsBillsFaultInstanceService.updateDmsFaultInstanceActivity(dmsFaultInstanceActivity)); + } + + /** + * 获取故障报修工单详细信息,维修使用 + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/getBillsFaultInstance4Repair/{repairInstanceId}") + public R getBillsFaultInstance4Repair(@PathVariable("repairInstanceId") Long repairInstanceId) { + DmsBillsFaultInstanceVo billsFaultInstance = dmsBillsFaultInstanceService.queryById(repairInstanceId); + return R.ok(billsFaultInstance); + } + + + /** + * 故障报修扫描设备验证 + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/scanDevice4Repair") + public R scanDevice4Repair(@Validated DmsBillsFaultInstanceScanBo dmsBillsFaultInstanceScan) { + //FIXME:返回从void改为long + return R.ok(dmsBillsFaultInstanceService.scanDevice4Repair(dmsBillsFaultInstanceScan)); + } + + + /** + * 开始维修 + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "故障报修工单", businessType = BusinessType.START) + @PostMapping("/startRepair") + public R startRepair(@RequestBody DmsFaultInstanceActivityBo dmsFaultInstanceActivity) { + return R.ok(dmsBillsFaultInstanceService.startRepair(dmsFaultInstanceActivity)); + } + + /** + * 完成维修 + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "故障报修工单", businessType = BusinessType.COMPLETE) + @PostMapping("/completeRepair") + public R completeRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity, + @RequestParam(value = "files") List files) throws JsonProcessingException { + dmsFaultInstanceActivity.setRepairConfirm("2"); + dmsFaultInstanceActivity.setConfirmTime(new Date()); + String parts1 = dmsFaultInstanceActivity.getParts1(); + ObjectMapper objectMapper = new ObjectMapper(); + List parts2 = objectMapper.readValue(parts1, new TypeReference>() {}); + dmsFaultInstanceActivity.setParts(parts2); + + List fileUrls = handleFileUploads(files); + dmsFaultInstanceActivity.setFileUrls(fileUrls); + //FIXME:关于工作流相关的本页代码以及调用方法都需测试完善修改 + return R.ok(dmsBillsFaultInstanceService.completeRepair(dmsFaultInstanceActivity)); + } + + + /** + * 获取最新一条待巡检或巡检中的巡检或点检工单(检查类型inspectType(1巡检,2点检)) + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/getNewestInspectInstance") + public R getNewestInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstance) { + DmsBillsInspectInstanceVo newestInspectInstance = dmsBillsInspectInstanceService.getNewestBillsInspectInstance(dmsBillsInspectInstance); + return R.ok(newestInspectInstance); + } + + + /** + * 扫描设备编号或者输入设备编号进行巡检验证 + * */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/scanInspectInstanceDetail") + public R scanInspectInstanceDetail(@Validated DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan) { + return R.ok(dmsBillsInspectInstanceService.scanInspectInstanceDetail(dmsBillsInspectInstanceScan)); + } + + /** + * 点巡检工单 + */ +// @RequiresPermissions("qms:checkresultdetail:add") // @Log(title = "点巡检工单明细", businessType = BusinessType.INSERT) // @PostMapping("/saveInspectInstanceDetail") -// public R saveInspectInstanceDetail(@RequestBody DmsInspectInstanceDetail dmsInspectInstanceDetail) { +// public R saveInspectInstanceDetail(@RequestBody DmsInspectInstanceDetailBo dmsInspectInstanceDetail) { // return R.ok(dmsBillsInspectInstanceService.updateDmsInspectInstanceDetail(dmsInspectInstanceDetail)); // // } -// -// -// -// -// /** -// * 获取最新一条待保养或保养中的保养工单 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getNewestMaintInstance") -// public R getNewestMaintInstance(DmsBillsMaintInstance dmsBillsMaintInstance) { -// DmsBillsMaintInstance newestMaintInstance = dmsBillsMaintInstanceService.getNewestBillsMaintInstance(dmsBillsMaintInstance); -// return R.ok(newestMaintInstance); -// } -// -// -// /** -// * 开始保养 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "保养工单", businessType = BusinessType.START) -// @PostMapping("/startMaint") -// public R startMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) { -// return R.ok(dmsBillsMaintInstanceService.startMaint(dmsBillsMaintDetail)); -// } -// -// /** -// * 完成保养 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "保养工单", businessType = BusinessType.COMPLETE) -// @PostMapping("/completeMaint") -// public R completeMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) { -// return R.ok(dmsBillsMaintInstanceService.completeMaint(dmsBillsMaintDetail)); -// } -// -// -// /** -// * 获取最新一条待润滑或润滑中的润滑工单 -// * -// * @return -// */ -// // @RequiresPermissions("qms:checkrule:list") -// @GetMapping("/getNewestLubeInstance") -// public R getNewestLubeInstance(DmsBillsLubeInstance dmsBillsLubeInstance) { -// DmsBillsLubeInstance newestLubeInstance = dmsBillsLubeInstanceService.getNewestBillsLubeInstance(dmsBillsLubeInstance); -// return R.ok(newestLubeInstance); -// } -// -// /** -// * 开始润滑 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "润滑工单", businessType = BusinessType.START) -// @PostMapping("/startLube") -// public R startLube(@RequestBody DmsBillsLubeDetail dmsBillsLubeDetail) { -// -// return R.ok(dmsBillsLubeInstanceService.startLube(dmsBillsLubeDetail)); -// } -// -// /** -// * 完成润滑 -// */ -//// @RequiresPermissions("qms:checkresultdetail:add") -// @Log(title = "润滑工单", businessType = BusinessType.COMPLETE) -// @PostMapping("/completeLube") -// public R completeLube(@RequestBody DmsBillsLubeDetail dmsBillsLubeDetail) { -// return R.ok(dmsBillsLubeInstanceService.completeLube(dmsBillsLubeDetail)); -// } -// -// -//} + + + + /** + * 获取最新一条待保养或保养中的保养工单 + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/getNewestMaintInstance") + public R getNewestMaintInstance(DmsBillsMaintInstance dmsBillsMaintInstance) { + DmsBillsMaintInstance newestMaintInstance = dmsBillsMaintInstanceService.getNewestBillsMaintInstance(dmsBillsMaintInstance); + return R.ok(newestMaintInstance); + } + + + /** + * 开始保养 + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "保养工单", businessType = BusinessType.START) + @PostMapping("/startMaint") + public R startMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) { + return R.ok(dmsBillsMaintInstanceService.startMaint(dmsBillsMaintDetail)); + } + + /** + * 完成保养 + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "保养工单", businessType = BusinessType.COMPLETE) + @PostMapping("/completeMaint") + public R completeMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) { + return R.ok(dmsBillsMaintInstanceService.completeMaint(dmsBillsMaintDetail)); + } + + + /** + * 获取最新一条待润滑或润滑中的润滑工单 + * + * @return + */ + // @RequiresPermissions("qms:checkrule:list") + @GetMapping("/getNewestLubeInstance") + public R getNewestLubeInstance(DmsBillsLubeInstanceBo dmsBillsLubeInstance) { + DmsBillsLubeInstanceVo newestLubeInstance = dmsBillsLubeInstanceService.getNewestBillsLubeInstance(dmsBillsLubeInstance); + return R.ok(newestLubeInstance); + } + + /** + * 开始润滑 + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "润滑工单", businessType = BusinessType.START) + @PostMapping("/startLube") + public R startLube(@RequestBody DmsBillsLubeDetailBo dmsBillsLubeDetail) { + + return R.ok(dmsBillsLubeInstanceService.startLube(dmsBillsLubeDetail)); + } + + /** + * 完成润滑 + */ +// @RequiresPermissions("qms:checkresultdetail:add") + @Log(title = "润滑工单", businessType = BusinessType.COMPLETE) + @PostMapping("/completeLube") + public R completeLube(@RequestBody DmsBillsLubeDetailBo dmsBillsLubeDetail) { + return R.ok(dmsBillsLubeInstanceService.completeLube(dmsBillsLubeDetail)); + } + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsRepairInstanceController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsRepairInstanceController.java index ee873e67..9834f5de 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsRepairInstanceController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsRepairInstanceController.java @@ -114,4 +114,16 @@ public class DmsRepairInstanceController extends BaseController { List list = dmsRepairInstanceService.queryList(bo); return R.ok(list); } + + /** + * 更新检修实例的工作流定义ID + * @param repairInstanceId 检修实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + @PostMapping("/updateWfDefinitionIdById") + public R updateWfDefinitionIdById(@RequestParam Long repairInstanceId, @RequestParam Long wfDefinitionId) + { + return toAjax(dmsRepairInstanceService.updateWfDefinitionIdById(repairInstanceId, wfDefinitionId)); + } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMachineInfo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMachineInfo.java index 90e8f20a..40016503 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMachineInfo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBaseMachineInfo.java @@ -136,4 +136,6 @@ public class DmsBaseMachineInfo extends TenantEntity { */ @TableField(exist = false) private String deviceModeName; + + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java index d3bcde64..1c3d5bdd 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsFaultInstance.java @@ -1,6 +1,8 @@ package org.dromara.dms.domain; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,6 +29,7 @@ public class DmsBillsFaultInstance extends TenantEntity { /** * 主键标识;此表不会长期保存 */ + @TableId(value = "repair_instance_id") private Long repairInstanceId; /** @@ -92,6 +95,7 @@ public class DmsBillsFaultInstance extends TenantEntity { /** * 审批状态 */ + @TableField("approveStatus") // 显式指定数据库列名approveStatus private String approveStatus; /** @@ -138,8 +142,13 @@ public class DmsBillsFaultInstance extends TenantEntity { @TableField(exist = false) private String repairType;//JOIN + + /** + * 外协单位,关联dms_base_outsourcing_info的outsourcing_id;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ @TableField(exist = false) private Long outsourcingId;//JOIN + @TableField(exist = false) private String processHandleResolution;//JOIN @TableField(exist = false) @@ -165,4 +174,28 @@ public class DmsBillsFaultInstance extends TenantEntity { @TableField(exist = false) private List parts;//JOIN + /** + * 故障文件地址,一般是图片 + */ + @TableField(exist = false) + private String filePath;//join + + /** + * 零部件名称 + */ + @TableField(exist = false) + private String partName;//JOIN + + /** + * 零部件规格 + */ + @TableField(exist = false) + private String partSpecifications;//JOIN + + /** + * 数量 + */ + @TableField(exist = false) + private Long amount;//JOIN + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java index d3502ef2..b97a5ce4 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstance.java @@ -1,6 +1,7 @@ package org.dromara.dms.domain; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -27,7 +28,8 @@ public class DmsBillsInspectInstance extends TenantEntity { /** * 主键标识 */ - @TableId(value = "inspect_instance_id", type = IdType.AUTO) +// @TableId(value = "inspect_instance_id", type = IdType.AUTO) + @TableId(value = "inspect_instance_id") private Long inspectInstanceId; /** @@ -91,5 +93,16 @@ public class DmsBillsInspectInstance extends TenantEntity { */ private String status; + /** + * 线路名称 + */ + @TableField(exist = false) + private String routeName; + + /** + * 执行人员 + */ + @TableField(exist = false) + private String performer; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstanceActivity.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstanceActivity.java new file mode 100644 index 00000000..6452d07c --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsInspectInstanceActivity.java @@ -0,0 +1,117 @@ +package org.dromara.dms.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; + +import java.io.Serial; + +/** + * 点巡检工单实例节点;此暂时不用对象 dms_bills_inspect_instance_activity + * + * @author zch + * @date 2025-05-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("dms_bills_inspect_instance_activity") +public class DmsBillsInspectInstanceActivity extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 巡检工单实例节点ID + */ + @TableId(value = "instance_activity_id", type = IdType.AUTO) + private Long instanceActivityId; + + /** + * 巡检工单实例ID,关联dms_bills_inspect_instance的inspect_instance_id + */ + private Long inspectInstanceId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + private Long wfDefinitionId; + + /** + * 工单流程节点ID(关联wf_task_back_node的id) + */ + private Long wfNodeId; + + /** + * 巡检线路,关联dms_base_inspect_route的inspect_route_id;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private Long inspectRouteId; + + /** + * 设备总数;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private Long deviceAmount; + + /** + * 执行人员;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String performer; + + /** + * 处理意见;第一步不显示,从第2步开始只显示此字段 + */ + private String processHandleResolution; + + /** + * 状态(0已结束 1执行中 2待接取 3已转发) + */ + private String processHandleStatus; + + /** + * 工单流程步骤顺序 + */ + private Long processStepOrder; + + /** + * 执行开始时间 + */ + private Date startTime; + + /** + * 执行结束时间 + */ + private Date endTime; + + /** + * 处理人ID(关联sys_user的user_id) + */ + private Long handleUserId; + + /** + * 处理人 + */ + private String handleBy; + + /** + * 处理时间 + */ + private Date handleTime; + + /** + * 转单人用户id或转发协助用户id + */ + private Long transferUserId; + + /** + * 用户预留1 + */ + private String attr1; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultComponentsParts.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultComponentsParts.java index f840c04b..f676a603 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultComponentsParts.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsFaultComponentsParts.java @@ -46,5 +46,6 @@ public class DmsFaultComponentsParts extends TenantEntity { */ private Long amount; + private Long faultId;//表结构不存在 } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectInstanceDetailProject.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectInstanceDetailProject.java index 9f744542..4acf56b2 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectInstanceDetailProject.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsInspectInstanceDetailProject.java @@ -83,4 +83,6 @@ public class DmsInspectInstanceDetailProject extends TenantEntity { private String inspectProjectDesc; + private Long deviceId;//表结构不存在,在其他地方叫machineId + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsMaintInstanceActivity.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsMaintInstanceActivity.java new file mode 100644 index 00000000..d9071ad1 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsMaintInstanceActivity.java @@ -0,0 +1,118 @@ +package org.dromara.dms.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 保养工单实例节点;弃用对象 dms_maint_instance_activity + * + * @author zch + * @date 2025-05-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("dms_maint_instance_activity") +public class DmsMaintInstanceActivity extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 保养工单实例节点ID + */ + @TableId(value = "instance_activity_id") + private Long instanceActivityId; + + /** + * 保养工单实例ID,关联dms_bills_maint_instance的maint_instance_id + */ + private Long maintInstanceId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + private Long wfDefinitionId; + + /** + * 工单流程节点ID(关联wf_task_back_node的id) + */ + private Long wfNodeId; + + /** + * 保养级别(1日常保养 2月度保养 3年度保养);最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String maintLevel; + + /** + * 保养组别;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String maintGroup; + + /** + * 保养负责人;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String maintSupervisor; + + /** + * 处理意见;第一步不显示,从第二步开始只显示此字段 + */ + private String processHandleResolution; + + /** + * 状态(0已结束 1执行中 2待接取 3已转发) + */ + private String processHandleStatus; + + /** + * 工单流程步骤顺序 + */ + private Long processStepOrder; + + /** + * 执行开始时间 + */ + private Date startTime; + + /** + * 执行结束时间 + */ + private Date endTime; + + /** + * 处理人ID(关联sys_user的user_id) + */ + private Long handleUserId; + + /** + * 处理人 + */ + private String handleBy; + + /** + * 处理时间 + */ + private Date handleTime; + + /** + * 转单人用户id或转发协助用户id + */ + private Long transferUserId; + + /** + * 用户预留1 + */ + private String attr1; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java index 6b56d419..9cb6636f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanInspect.java @@ -29,6 +29,7 @@ public class DmsPlanInspect extends TenantEntity { * 主键标识 */ @TableId(value = "plan_inspect_id", type = IdType.AUTO) +// @TableId(value = "plan_inspect_id") private Long planInspectId; /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java index 4850a021..1c666377 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; /** @@ -113,5 +115,11 @@ public class DmsBillsFaultInstanceBo extends BaseEntity { */ private String remark; + private List fileUrls; + + /** + * 外协单位,关联dms_base_outsourcing_info的outsourcing_id;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private Long outsourcingId; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceScanBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceScanBo.java new file mode 100644 index 00000000..4a388c4c --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsFaultInstanceScanBo.java @@ -0,0 +1,18 @@ +package org.dromara.dms.domain.bo; + + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class DmsBillsFaultInstanceScanBo { + + @NotNull(message="故障报修工单ID必须输入") + private Long repairInstanceId; + + /** 设备编号 */ + @NotBlank(message="设备编号必须输入") + private String deviceCode; + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceActivityBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceActivityBo.java new file mode 100644 index 00000000..85b32836 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceActivityBo.java @@ -0,0 +1,116 @@ +package org.dromara.dms.domain.bo; + +import org.dromara.dms.domain.DmsBillsInspectInstanceActivity; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 点巡检工单实例节点;此暂时不用业务对象 dms_bills_inspect_instance_activity + * + * @author zch + * @date 2025-05-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DmsBillsInspectInstanceActivity.class, reverseConvertGenerate = true) +public class DmsBillsInspectInstanceActivityBo extends BaseEntity { + + /** + * 巡检工单实例节点ID + */ + private Long instanceActivityId; + + /** + * 巡检工单实例ID,关联dms_bills_inspect_instance的inspect_instance_id + */ + private Long inspectInstanceId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + private Long wfDefinitionId; + + /** + * 工单流程节点ID(关联wf_task_back_node的id) + */ + private Long wfNodeId; + + /** + * 巡检线路,关联dms_base_inspect_route的inspect_route_id;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private Long inspectRouteId; + + /** + * 设备总数;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private Long deviceAmount; + + /** + * 执行人员;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String performer; + + /** + * 处理意见;第一步不显示,从第2步开始只显示此字段 + */ + private String processHandleResolution; + + /** + * 状态(0已结束 1执行中 2待接取 3已转发) + */ + private String processHandleStatus; + + /** + * 工单流程步骤顺序 + */ + private Long processStepOrder; + + /** + * 执行开始时间 + */ + private Date startTime; + + /** + * 执行结束时间 + */ + private Date endTime; + + /** + * 处理人ID(关联sys_user的user_id) + */ + private Long handleUserId; + + /** + * 处理人 + */ + private String handleBy; + + /** + * 处理时间 + */ + private Date handleTime; + + /** + * 转单人用户id或转发协助用户id + */ + private Long transferUserId; + + /** + * 用户预留1 + */ + private String attr1; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java index c002a62b..edbaf144 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceBo.java @@ -9,7 +9,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.dms.domain.DmsInspectInstanceDetail; /** * 点巡检工单业务对象 dms_bills_inspect_instance @@ -87,5 +90,10 @@ public class DmsBillsInspectInstanceBo extends BaseEntity { */ private String status; + /**多个状态时使用,以,隔开*/ + private String inspectStatusStr;//表结构不存在 + + private List dmsInspectInstanceDetailList;//表结构不存在 + } 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 new file mode 100644 index 00000000..557d0a2d --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsBillsInspectInstanceScanBo.java @@ -0,0 +1,17 @@ +package org.dromara.dms.domain.bo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class DmsBillsInspectInstanceScanBo { + + @NotNull(message="点巡检工单ID必须输入") + private Long inspectInstanceId; + + /** 设备编号 */ + @NotBlank(message="设备编号必须输入") + private String deviceCode; + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsFaultInstanceActivityBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsFaultInstanceActivityBo.java index 028f390f..139f00e7 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsFaultInstanceActivityBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsFaultInstanceActivityBo.java @@ -1,5 +1,6 @@ package org.dromara.dms.domain.bo; +import org.dromara.dms.domain.DmsFaultComponentsParts; import org.dromara.dms.domain.DmsFaultInstanceActivity; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -9,6 +10,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; /** @@ -157,5 +160,16 @@ public class DmsFaultInstanceActivityBo extends BaseEntity { */ private String componentsPartsId; + private List fileUrls;//表结构不存在 + + /** + * 报修来源类型(1检修 2点检 3巡检 9其他) + */ + private String faultSourceType;//表结构不存在 + + + private String parts1;//表结构不存在 + + private List parts;//表结构不存在 } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsMaintInstanceActivityBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsMaintInstanceActivityBo.java new file mode 100644 index 00000000..7a23ac62 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsMaintInstanceActivityBo.java @@ -0,0 +1,117 @@ +package org.dromara.dms.domain.bo; + +import org.dromara.dms.domain.DmsMaintInstanceActivity; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 保养工单实例节点;弃用业务对象 dms_maint_instance_activity + * + * @author zch + * @date 2025-05-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DmsMaintInstanceActivity.class, reverseConvertGenerate = true) +public class DmsMaintInstanceActivityBo extends BaseEntity { + + /** + * 保养工单实例节点ID + */ + @NotNull(message = "保养工单实例节点ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long instanceActivityId; + + /** + * 保养工单实例ID,关联dms_bills_maint_instance的maint_instance_id + */ + private Long maintInstanceId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + private Long wfDefinitionId; + + /** + * 工单流程节点ID(关联wf_task_back_node的id) + */ + private Long wfNodeId; + + /** + * 保养级别(1日常保养 2月度保养 3年度保养);最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String maintLevel; + + /** + * 保养组别;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String maintGroup; + + /** + * 保养负责人;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + private String maintSupervisor; + + /** + * 处理意见;第一步不显示,从第二步开始只显示此字段 + */ + private String processHandleResolution; + + /** + * 状态(0已结束 1执行中 2待接取 3已转发) + */ + private String processHandleStatus; + + /** + * 工单流程步骤顺序 + */ + private Long processStepOrder; + + /** + * 执行开始时间 + */ + private Date startTime; + + /** + * 执行结束时间 + */ + private Date endTime; + + /** + * 处理人ID(关联sys_user的user_id) + */ + private Long handleUserId; + + /** + * 处理人 + */ + private String handleBy; + + /** + * 处理时间 + */ + private Date handleTime; + + /** + * 转单人用户id或转发协助用户id + */ + private Long transferUserId; + + /** + * 用户预留1 + */ + private String attr1; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java index 05ee563e..30603e4a 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsFaultInstanceVo.java @@ -2,6 +2,7 @@ package org.dromara.dms.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; @@ -144,6 +145,10 @@ public class DmsBillsFaultInstanceVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + /** + * 故障文件地址,一般是图片 + */ + private String filePath;//join private String machineCode;//JOIN diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceActivityVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceActivityVo.java new file mode 100644 index 00000000..769521eb --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsBillsInspectInstanceActivityVo.java @@ -0,0 +1,145 @@ +package org.dromara.dms.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.dms.domain.DmsBillsInspectInstanceActivity; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 点巡检工单实例节点;此暂时不用视图对象 dms_bills_inspect_instance_activity + * + * @author zch + * @date 2025-05-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsBillsInspectInstanceActivity.class, reverseConvertGenerate = true) +public class DmsBillsInspectInstanceActivityVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 巡检工单实例节点ID + */ + @ExcelProperty(value = "巡检工单实例节点ID") + private Long instanceActivityId; + + /** + * 巡检工单实例ID,关联dms_bills_inspect_instance的inspect_instance_id + */ + @ExcelProperty(value = "巡检工单实例ID,关联dms_bills_inspect_instance的inspect_instance_id") + private Long inspectInstanceId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + @ExcelProperty(value = "流程定义ID,关联wf_definition_config的id") + private Long wfDefinitionId; + + /** + * 工单流程节点ID(关联wf_task_back_node的id) + */ + @ExcelProperty(value = "工单流程节点ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联wf_task_back_node的id") + private Long wfNodeId; + + /** + * 巡检线路,关联dms_base_inspect_route的inspect_route_id;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + @ExcelProperty(value = "巡检线路,关联dms_base_inspect_route的inspect_route_id;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的") + private Long inspectRouteId; + + /** + * 设备总数;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + @ExcelProperty(value = "设备总数;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的") + private Long deviceAmount; + + /** + * 执行人员;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + @ExcelProperty(value = "执行人员;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的") + private String performer; + + /** + * 处理意见;第一步不显示,从第2步开始只显示此字段 + */ + @ExcelProperty(value = "处理意见;第一步不显示,从第2步开始只显示此字段") + private String processHandleResolution; + + /** + * 状态(0已结束 1执行中 2待接取 3已转发) + */ + @ExcelProperty(value = "状态(0已结束 1执行中 2待接取 3已转发)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "process_handle_status") + private String processHandleStatus; + + /** + * 工单流程步骤顺序 + */ + @ExcelProperty(value = "工单流程步骤顺序") + private Long processStepOrder; + + /** + * 执行开始时间 + */ + @ExcelProperty(value = "执行开始时间") + private Date startTime; + + /** + * 执行结束时间 + */ + @ExcelProperty(value = "执行结束时间") + private Date endTime; + + /** + * 处理人ID(关联sys_user的user_id) + */ + @ExcelProperty(value = "处理人ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "处理人ID(关联sys_user的user_id)") + private Long handleUserId; + + /** + * 处理人 + */ + @ExcelProperty(value = "处理人") + private String handleBy; + + /** + * 处理时间 + */ + @ExcelProperty(value = "处理时间") + private Date handleTime; + + /** + * 转单人用户id或转发协助用户id + */ + @ExcelProperty(value = "转单人用户id或转发协助用户id") + private Long transferUserId; + + /** + * 用户预留1 + */ + @ExcelProperty(value = "用户预留1") + private String attr1; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} 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 a7b6e396..5ac80425 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 @@ -1,6 +1,8 @@ package org.dromara.dms.domain.vo; import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.dms.domain.DmsBillsInspectInstance; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; @@ -9,11 +11,12 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.dms.domain.DmsInspectInstanceDetail; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -110,4 +113,18 @@ public class DmsBillsInspectInstanceVo implements Serializable { private String status; + /** + * 线路名称 + */ + private String routeName; + + /** + * 执行人员 + */ + private String performer; + + private List dmsInspectInstanceDetailList; + + private String planInspectCode; + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectInstanceDetailVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectInstanceDetailVo.java index 9d93d86c..e4788718 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectInstanceDetailVo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsInspectInstanceDetailVo.java @@ -9,11 +9,12 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.dms.domain.DmsInspectInstanceDetailProject; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -104,5 +105,6 @@ public class DmsInspectInstanceDetailVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + private List dmsInspectInstanceDetailProjectList;//表结构不存在 } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsMaintInstanceActivityVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsMaintInstanceActivityVo.java new file mode 100644 index 00000000..e29c4e49 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsMaintInstanceActivityVo.java @@ -0,0 +1,143 @@ +package org.dromara.dms.domain.vo; + +import java.util.Date; +import org.dromara.dms.domain.DmsMaintInstanceActivity; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 保养工单实例节点;弃用视图对象 dms_maint_instance_activity + * + * @author zch + * @date 2025-05-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsMaintInstanceActivity.class, reverseConvertGenerate = true) +public class DmsMaintInstanceActivityVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 保养工单实例节点ID + */ + @ExcelProperty(value = "保养工单实例节点ID") + private Long instanceActivityId; + + /** + * 保养工单实例ID,关联dms_bills_maint_instance的maint_instance_id + */ + @ExcelProperty(value = "保养工单实例ID,关联dms_bills_maint_instance的maint_instance_id") + private Long maintInstanceId; + + /** + * 流程定义ID,关联wf_definition_config的id + */ + @ExcelProperty(value = "流程定义ID,关联wf_definition_config的id") + private Long wfDefinitionId; + + /** + * 工单流程节点ID(关联wf_task_back_node的id) + */ + @ExcelProperty(value = "工单流程节点ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联wf_task_back_node的id") + private Long wfNodeId; + + /** + * 保养级别(1日常保养 2月度保养 3年度保养);最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + @ExcelProperty(value = "保养级别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "maint_level") + private String maintLevel; + + /** + * 保养组别;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + @ExcelProperty(value = "保养组别;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的") + private String maintGroup; + + /** + * 保养负责人;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的 + */ + @ExcelProperty(value = "保养负责人;最后一步自动复制第1步的,可在第2步修改,修改保存后为第2步的记录,第1步为要求的,第2步为实际的") + private String maintSupervisor; + + /** + * 处理意见;第一步不显示,从第二步开始只显示此字段 + */ + @ExcelProperty(value = "处理意见;第一步不显示,从第二步开始只显示此字段") + private String processHandleResolution; + + /** + * 状态(0已结束 1执行中 2待接取 3已转发) + */ + @ExcelProperty(value = "状态(0已结束 1执行中 2待接取 3已转发)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "process_handle_status") + private String processHandleStatus; + + /** + * 工单流程步骤顺序 + */ + @ExcelProperty(value = "工单流程步骤顺序") + private Long processStepOrder; + + /** + * 执行开始时间 + */ + @ExcelProperty(value = "执行开始时间") + private Date startTime; + + /** + * 执行结束时间 + */ + @ExcelProperty(value = "执行结束时间") + private Date endTime; + + /** + * 处理人ID(关联sys_user的user_id) + */ + @ExcelProperty(value = "处理人ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "处理人ID(关联sys_user的user_id)") + private Long handleUserId; + + /** + * 处理人 + */ + @ExcelProperty(value = "处理人") + private String handleBy; + + /** + * 处理时间 + */ + @ExcelProperty(value = "处理时间") + private Date handleTime; + + /** + * 转单人用户id或转发协助用户id + */ + @ExcelProperty(value = "转单人用户id或转发协助用户id") + private Long transferUserId; + + /** + * 用户预留1 + */ + @ExcelProperty(value = "用户预留1") + private String attr1; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java index 5b0607a2..21b25042 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java @@ -41,65 +41,48 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe public R insertInspectInstance(String planInspectCode, String tenantId, Long userId){ // 使用 replaceAll 方法将双引号替换为空字符串 String result = planInspectCode.replaceAll("\"", ""); - + // 根据检查计划代码查询检查计划信息 DmsPlanInspect dmsPlanInspect = dmsPlanInspectMapper.selectPlanInspectJoinJobByInspectCode(result); + // 获取时间限制 Long timeLimit = dmsPlanInspect.getTimeLimit(); if (timeLimit != null) { + // 计算天数和小时数 Long days = timeLimit / (24 * 60 * 60l); Long hours = timeLimit % (24 * 60 * 60l); -// System.out.println(days); -// System.out.println(hours); + // 设置时间限制的天数和小时数 dmsPlanInspect.setTimeLimitDays(days); dmsPlanInspect.setTimeLimitHours(hours / (60 * 60l)); } + // 创建新的检查实例对象 DmsBillsInspectInstance dmsBillsInspectInstance = new DmsBillsInspectInstance(); - // DmsRepairInstance dmsRepairInstance = dmsRepairInstanceService.selectDmsRepairInstanceByRepairInstanceId(2l); + // 设置检查实例的相关属性 dmsBillsInspectInstance.setPlanInspectId(dmsPlanInspect.getPlanInspectId()); // dmsBillsInspectInstance.setWfProcessId(105l); dmsBillsInspectInstance.setInspectType(dmsPlanInspect.getInspectType());//检查类型(1巡检 2点检) dmsBillsInspectInstance.setPlanBeginTime(dmsPlanInspect.getPlanTime()); dmsBillsInspectInstance.setPlanEndTime(new Date(dmsPlanInspect.getPlanTime().getTime()+dmsPlanInspect.getTimeLimit()*1000l)); dmsBillsInspectInstance.setInspectRouteId(dmsPlanInspect.getInspectRouteId()); -// dmsBillsInspectInstance.setDeviceAmount(dmsPlanInspect.getDeviceAmount());//设备数量 -// dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人 - - //写死105,也可根据传入对象的wfprocessid作为传参。 -/* - Long aLong = dmsRepairInstanceMapper.selectWfProcessActivityId(105l); - if (dmsBillsInspectInstance.getInspectType().equals("1")) { - dmsBillsInspectInstance.setWfProcessId(105l); - } else if (dmsBillsInspectInstance.getInspectType().equals("2")) { - dmsBillsInspectInstance.setWfProcessId(104l); - } -*/ +// dmsBillsInspectInstance.setDeviceAmount(dmsPlanInspect.getDeviceAmount());//设备数量FIXME:没有这个字段 + dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人 // dmsBillsInspectInstance.setIsFlag("1"); dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT);//待巡检 dmsBillsInspectInstance.setCreateBy(userId); -// dmsBillsInspectInstance.setCreateTime(new Date()); dmsBillsInspectInstance.setTenantId(tenantId); + // 插入检查实例并返回影响的行数 int i = dmsBillsInspectInstanceMapper.insert(dmsBillsInspectInstance); // List dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance); - //新建第一步工单实例节点 -/* - DmsBillsInspectInstanceActivity dmsBillsInspectInstanceActivity = new DmsBillsInspectInstanceActivity(); - dmsBillsInspectInstanceActivity.setInspectInstanceId(dmsBillsInspectInstance.getInspectInstanceId()); - dmsBillsInspectInstanceActivity.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId()); - dmsBillsInspectInstanceActivity.setDeviceAmount(dmsBillsInspectInstance.getDeviceAmount()); - dmsBillsInspectInstanceActivity.setPerformer(dmsBillsInspectInstance.getPerformer()); - dmsBillsInspectInstanceActivity.setProcessStepOrder(1l); - dmsBillsInspectInstanceActivity.setProcessActivityId(aLong); - dmsBillsInspectInstanceActivityMapper.insertDmsBillsInspectInstanceActivity(dmsBillsInspectInstanceActivity); -*/ //新建点巡检工单明细 /* DmsInspectRouteDetail queryInspectRouteDetail = new DmsInspectRouteDetail(); queryInspectRouteDetail.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId());*/ + // 查询检查路线明细 MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsInspectRouteDetail.class) .eq(DmsInspectRouteDetail::getInspectRouteId, dmsBillsInspectInstance.getInspectRouteId()); List dmsInspectRouteDetails = dmsInspectRouteDetailMapper.selectList(lqw); + // 遍历检查路线明细,生成检查实例明细 for(DmsInspectRouteDetail dmsInspectRouteDetail:dmsInspectRouteDetails){ DmsInspectInstanceDetail dmsInspectInstanceDetail = new DmsInspectInstanceDetail(); Long deviceId = dmsInspectRouteDetail.getMachineId(); @@ -109,18 +92,17 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetail.setInstanceDetailStatus("1");//(1待巡检 2巡检中 3已完成) dmsInspectInstanceDetail.setInspectStandard(dmsInspectRouteDetail.getInspectStandard()); dmsInspectInstanceDetail.setInspectStatus("0");//FIXME:为什么设置为异常?设备状态(1正常 0异常) - -// dmsInspectInstanceDetailMapper.insertDmsInspectInstanceDetail(dmsInspectInstanceDetail); - dmsInspectInstanceDetail.setTenantId(tenantId); dmsInspectInstanceDetail.setCreateBy(userId); // dmsInspectInstanceDetail.setCreateTime(new Date()); dmsInspectInstanceDetailMapper.insert(dmsInspectInstanceDetail); + + // 查询项目ID Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(dmsInspectRouteDetail.getInspectStandard()); -// DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice(); -// queryInspectProjectDevice.setTargetType("2");//FIXME:关联类型(1设备类型) -// queryInspectProjectDevice.setTargetId(deviceId); + DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice(); + queryInspectProjectDevice.setTargetType("2");//FIXME:关联类型(1设备类型) + queryInspectProjectDevice.setTargetId(deviceId); MPJLambdaWrapper DmsInspectProjectDeviceLQW = JoinWrappers.lambda(DmsInspectProjectDevice.class) .eq(DmsInspectProjectDevice::getTargetType, "2")//FIXME:关联类型(1设备类型) .eq(DmsInspectProjectDevice::getTargetId, deviceId); @@ -131,16 +113,15 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe DmsInspectInstanceDetailProject dmsInspectInstanceDetailProject = new DmsInspectInstanceDetailProject(); dmsInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId()); dmsInspectInstanceDetailProject.setInspectProjectId(projectId); -// dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(dmsInspectInstanceDetailProject); dmsInspectInstanceDetailProject.setTenantId(tenantId); dmsInspectInstanceDetailProject.setCreateBy(userId); -// dmsInspectInstanceDetailProject.setCreateTime(new Date()); dmsInspectInstanceDetailProjectMapper.insert(dmsInspectInstanceDetailProject); // } } + // 返回成功结果和影响的行数 return R.ok(i); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java index e1d65d73..c4867fb8 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java @@ -1,8 +1,8 @@ package org.dromara.dms.dubbo; - import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.seata.spring.annotation.GlobalTransactional; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.constant.DmsConstants; @@ -17,8 +17,8 @@ import org.dromara.dms.domain.vo.DmsPlanLubeDetailVo; import org.dromara.dms.mapper.*; import org.dromara.dms.service.IDmsBillsLubeInstanceService; import org.dromara.dms.service.IDmsPlanInspectService; + import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.dromara.dms.api.RemoteLubeInstanceService; import java.util.ArrayList; @@ -47,11 +47,11 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService private final DmsInspectRouteDetailMapper dmsInspectRouteDetailMapper; - +// private final RemoteWorkflowService remoteWorkflowService; @Override - @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) public R insertLubeInstance(String planLubeCode, String tenantId, Long userId) { // 去除润滑计划编号中的双引号 // String lubeInstanceCodeS = planLubeCode.replaceAll("\"", ""); @@ -77,8 +77,6 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService // 创建新的润滑工单实例对象 DmsBillsLubeInstance dmsBillsLubeInstance = new DmsBillsLubeInstance(); - // 设置创建人 - dmsBillsLubeInstance.setCreateBy(dmsPlanLube.getCreateBy()); // 设置润滑工单的计划ID dmsBillsLubeInstance.setPlanLubeId(dmsPlanLube.getPlanLubeId()); // 设置计划开始时间为润滑时间 @@ -100,14 +98,10 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService dmsBillsLubeInstance.setPlanEndTime(planEndTime); dmsBillsLubeInstance.setCreateBy(userId); -// dmsBillsLubeInstance.setCreateTime(new Date()); dmsBillsLubeInstance.setTenantId(tenantId); - // 插入润滑工单实例到数据库 int i = dmsBillsLubeInstanceMapper.insert(dmsBillsLubeInstance); DmsPlanLubeBo dmsPlanLubeBo = MapstructUtils.convert(dmsPlanLube, DmsPlanLubeBo.class); - - // 批量插入润滑工单详情 List lubeDetails = dmsPlanLubeBo.getDmsPlanLubeDetailList(); List billsLubeDetails = new ArrayList<>(); @@ -128,6 +122,4 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService return R.ok(); } - - } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBaseMachineInfoMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBaseMachineInfoMapper.java index 29e1623c..99e34b8a 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBaseMachineInfoMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBaseMachineInfoMapper.java @@ -1,9 +1,12 @@ package org.dromara.dms.mapper; +import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.dms.domain.DmsBaseMachineInfo; import org.dromara.dms.domain.vo.DmsBaseMachineInfoVo; +import java.util.List; + /** * 设备信息Mapper接口 * @@ -12,4 +15,6 @@ import org.dromara.dms.domain.vo.DmsBaseMachineInfoVo; */ public interface DmsBaseMachineInfoMapper extends BaseMapperPlus { + + List likeDeviceName(@Param("deviceName") String deviceName); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java index 19ee43c0..ac9526a0 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsFaultInstanceMapper.java @@ -36,7 +36,7 @@ public interface DmsBillsFaultInstanceMapper extends BaseMapperPlus getDmsPartsList(@Param("repairInstanceId") Long repairInstanceId); + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsInspectInstanceActivityMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsInspectInstanceActivityMapper.java new file mode 100644 index 00000000..5523cd63 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsInspectInstanceActivityMapper.java @@ -0,0 +1,15 @@ +package org.dromara.dms.mapper; + +import org.dromara.dms.domain.DmsBillsInspectInstanceActivity; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceActivityVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 点巡检工单实例节点;此暂时不用Mapper接口 + * + * @author zch + * @date 2025-05-19 + */ +public interface DmsBillsInspectInstanceActivityMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsInspectInstanceMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsInspectInstanceMapper.java index aa82a8d7..12ab70ef 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsInspectInstanceMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsBillsInspectInstanceMapper.java @@ -27,4 +27,15 @@ public interface DmsBillsInspectInstanceMapper extends BaseMapperPlus selectInspection(); + + + /** + * 查询最新一条巡检工单列表 + * + * @param dmsBillsInspectInstance 巡检工单 + * @return 巡检工单 + */ + public DmsBillsInspectInstanceVo selectNewestDmsBillsInspectInstance(DmsBillsInspectInstance dmsBillsInspectInstance); + + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsFaultInstanceActivityMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsFaultInstanceActivityMapper.java index cc013c90..c98362b8 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsFaultInstanceActivityMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsFaultInstanceActivityMapper.java @@ -2,6 +2,7 @@ package org.dromara.dms.mapper; import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.dms.domain.DmsFaultComponentsParts; import org.dromara.dms.domain.DmsFaultInstanceActivity; import org.dromara.dms.domain.vo.DmsFaultComponentsPartsVo; import org.dromara.dms.domain.vo.DmsFaultInstanceActivityVo; @@ -22,4 +23,8 @@ public interface DmsFaultInstanceActivityMapper extends BaseMapperPlus parts); + } 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 0f590d66..eb8d9d12 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 @@ -5,6 +5,8 @@ import org.dromara.dms.domain.DmsInspectInstanceDetail; import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.List; + /** * 点巡检工单明细Mapper接口 * @@ -24,4 +26,14 @@ public interface DmsInspectInstanceDetailMapper extends BaseMapperPlus selectDmsInspectInstanceDetailJoinList(DmsInspectInstanceDetail dmsInspectInstanceDetail); + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInstanceFileMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInstanceFileMapper.java index 7ba75af6..534821ed 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInstanceFileMapper.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsInstanceFileMapper.java @@ -4,6 +4,8 @@ import org.dromara.dms.domain.DmsInstanceFile; import org.dromara.dms.domain.vo.DmsInstanceFileVo; 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 DmsInstanceFileMapper extends BaseMapperPlus { + /** + * 批量新增工单文件;手工创建,从故障报修开始 + * + * @param dmsInstanceFileList 工单文件;手工创建,从故障报修开始列表 + * @return 结果 + */ + public int batchDmsInstanceFile(List dmsInstanceFileList); + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsMaintInstanceActivityMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsMaintInstanceActivityMapper.java new file mode 100644 index 00000000..84ee4a5d --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsMaintInstanceActivityMapper.java @@ -0,0 +1,15 @@ +package org.dromara.dms.mapper; + +import org.dromara.dms.domain.DmsMaintInstanceActivity; +import org.dromara.dms.domain.vo.DmsMaintInstanceActivityVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 保养工单实例节点;弃用Mapper接口 + * + * @author zch + * @date 2025-05-19 + */ +public interface DmsMaintInstanceActivityMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBaseMachineInfoService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBaseMachineInfoService.java index 64952493..a2b773f5 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBaseMachineInfoService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBaseMachineInfoService.java @@ -41,7 +41,17 @@ public interface IDmsBaseMachineInfoService { */ List queryList(DmsBaseMachineInfoBo bo); -/* *//** + /** + * 查询设备台账信息 + * + * @param + * @return 设备台账信息 + */ +// public DmsBaseMachineInfoVo selectDmsBaseDeviceLedgerByDeviceCode(String deviceCode); + + List likeDeviceName(String deviceName); + + /* *//** * 新增设备信息 * * @param bo 设备信息 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java index 94958498..b0beec4c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsFaultInstanceService.java @@ -2,8 +2,11 @@ package org.dromara.dms.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.dms.domain.DmsBillsFaultInstance; import org.dromara.dms.domain.DmsFaultInstanceActivity; import org.dromara.dms.domain.bo.DmsBillsFaultInstanceBo; +import org.dromara.dms.domain.bo.DmsBillsFaultInstanceScanBo; +import org.dromara.dms.domain.bo.DmsFaultInstanceActivityBo; import org.dromara.dms.domain.vo.DmsBillsFaultInstanceVo; import java.util.Collection; @@ -69,4 +72,44 @@ public interface IDmsBillsFaultInstanceService { DmsFaultInstanceActivity selectFaults(Long repairInstanceId); + + /** + * 查询检修工单 + * + * @param repairInstanceId 检修工单主键 + * @return 检修工单 + */ + public DmsBillsFaultInstanceVo selectDmsBillsFaultInstanceByRepairInstanceId(Long repairInstanceId); + + /** + * 修改报修工单实例节点 + * + * @param dmsFaultInstanceActivity 报修工单实例节点 + * @return 结果 + */ + public int updateDmsFaultInstanceActivity(DmsFaultInstanceActivityBo dmsFaultInstanceActivity); + + /** + * 扫描设备编码验证,验证通过后进行维修 + * @param dmsBillsFaultInstanceScan + */ + public Long scanDevice4Repair(DmsBillsFaultInstanceScanBo dmsBillsFaultInstanceScan); + + /** + * 开始维修 + * + * @param dmsFaultInstanceActivity 报修工单实例节点 + * @return 结果 + */ + public int startRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity); + + /** + * 完成维修 + * + * @param dmsFaultInstanceActivity 报修工单实例节点 + * @return 结果 + */ + public int completeRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity); + + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceActivityService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceActivityService.java new file mode 100644 index 00000000..5a5628b8 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceActivityService.java @@ -0,0 +1,69 @@ +package org.dromara.dms.service; + +import org.dromara.dms.domain.DmsBillsInspectInstanceActivity; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceActivityVo; +import org.dromara.dms.domain.bo.DmsBillsInspectInstanceActivityBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 点巡检工单实例节点;此暂时不用Service接口 + * + * @author zch + * @date 2025-05-19 + */ +public interface IDmsBillsInspectInstanceActivityService { + + /** + * 查询点巡检工单实例节点;此暂时不用 + * + * @param instanceActivityId 主键 + * @return 点巡检工单实例节点;此暂时不用 + */ + DmsBillsInspectInstanceActivityVo queryById(Long instanceActivityId); + + /** + * 分页查询点巡检工单实例节点;此暂时不用列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 点巡检工单实例节点;此暂时不用分页列表 + */ + TableDataInfo queryPageList(DmsBillsInspectInstanceActivityBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的点巡检工单实例节点;此暂时不用列表 + * + * @param bo 查询条件 + * @return 点巡检工单实例节点;此暂时不用列表 + */ + List queryList(DmsBillsInspectInstanceActivityBo bo); + + /** + * 新增点巡检工单实例节点;此暂时不用 + * + * @param bo 点巡检工单实例节点;此暂时不用 + * @return 是否新增成功 + */ + DmsBillsInspectInstanceActivityVo insertByBo(DmsBillsInspectInstanceActivityBo bo); + + /** + * 修改点巡检工单实例节点;此暂时不用 + * + * @param bo 点巡检工单实例节点;此暂时不用 + * @return 是否修改成功 + */ + DmsBillsInspectInstanceActivityVo updateByBo(DmsBillsInspectInstanceActivityBo bo); + + /** + * 校验并批量删除点巡检工单实例节点;此暂时不用信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java index 3b107592..27db0d3d 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsInspectInstanceService.java @@ -1,10 +1,14 @@ package org.dromara.dms.service; import org.dromara.dms.domain.DmsBillsInspectInstance; +import org.dromara.dms.domain.DmsInspectInstanceDetail; +import org.dromara.dms.domain.bo.DmsBillsInspectInstanceScanBo; +import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo; import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo; import org.dromara.dms.domain.bo.DmsBillsInspectInstanceBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; import java.util.Collection; import java.util.List; @@ -66,4 +70,37 @@ public interface IDmsBillsInspectInstanceService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 更新点巡检实例的工作流定义ID + * @param inspectInstanceId 点巡检实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + public Boolean updateWfDefinitionIdById(Long inspectInstanceId, Long wfDefinitionId); + + /** + * 更新点巡检工单明细 + * + * @param dmsInspectInstanceDetail 点巡检工单明细 + * @return 结果 + */ +// int updateDmsInspectInstanceDetail(DmsInspectInstanceDetailBo dmsInspectInstanceDetail); + + + /** + * 获取最新一条未完成的巡检工单 + * + * @param dmsBillsInspectInstance + * @return + */ + public DmsBillsInspectInstanceVo getNewestBillsInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstance); + + /** + * 扫描设备验证并获取巡检项目信息 + * @param dmsBillsInspectInstanceScan + * @return + */ + public DmsInspectInstanceDetailVo scanInspectInstanceDetail(DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan); + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceActivityService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceActivityService.java index 9eb31962..53c45f6c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceActivityService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceActivityService.java @@ -45,9 +45,9 @@ public interface IDmsBillsLubeInstanceActivityService { * 新增润滑工单实例节点 * * @param bo 润滑工单实例节点 - * @return 是否新增成功 + * @return 新增的润滑工单实例节点实体 */ - Boolean insertByBo(DmsBillsLubeInstanceActivityBo bo); + DmsBillsLubeInstanceActivityVo insertByBo(DmsBillsLubeInstanceActivityBo bo); /** * 修改润滑工单实例节点 @@ -55,7 +55,7 @@ public interface IDmsBillsLubeInstanceActivityService { * @param bo 润滑工单实例节点 * @return 是否修改成功 */ - Boolean updateByBo(DmsBillsLubeInstanceActivityBo bo); + DmsBillsLubeInstanceActivityVo updateByBo(DmsBillsLubeInstanceActivityBo bo); /** * 校验并批量删除润滑工单实例节点信息 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java index 8cbb3e04..d8058651 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsLubeInstanceService.java @@ -99,4 +99,13 @@ public interface IDmsBillsLubeInstanceService { * @return 结果 */ public int completeLube(DmsBillsLubeDetailBo bo); + + + /** + * 更新润滑实例的工作流定义ID + * @param lubeInstanceId 润滑实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + public Boolean updateWfDefinitionIdById(Long lubeInstanceId, Long wfDefinitionId); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java index 1befd225..680de0ae 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintInstanceService.java @@ -101,4 +101,12 @@ public interface IDmsBillsMaintInstanceService { * @return 结果 */ public int completeMaint(DmsBillsMaintDetail dmsBillsMaintDetail); + + /** + * 更新保养实例的工作流定义ID + * @param maintInstanceId 保养实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + public Boolean updateWfDefinitionIdById(Long maintInstanceId, Long wfDefinitionId); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsMaintInstanceActivityService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsMaintInstanceActivityService.java new file mode 100644 index 00000000..343fbe54 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsMaintInstanceActivityService.java @@ -0,0 +1,69 @@ +package org.dromara.dms.service; + +import org.dromara.dms.domain.DmsMaintInstanceActivity; +import org.dromara.dms.domain.vo.DmsMaintInstanceActivityVo; +import org.dromara.dms.domain.bo.DmsMaintInstanceActivityBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 保养工单实例节点;弃用Service接口 + * + * @author zch + * @date 2025-05-19 + */ +public interface IDmsMaintInstanceActivityService { + + /** + * 查询保养工单实例节点;弃用 + * + * @param instanceActivityId 主键 + * @return 保养工单实例节点;弃用 + */ + DmsMaintInstanceActivityVo queryById(Long instanceActivityId); + + /** + * 分页查询保养工单实例节点;弃用列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 保养工单实例节点;弃用分页列表 + */ + TableDataInfo queryPageList(DmsMaintInstanceActivityBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的保养工单实例节点;弃用列表 + * + * @param bo 查询条件 + * @return 保养工单实例节点;弃用列表 + */ + List queryList(DmsMaintInstanceActivityBo bo); + + /** + * 新增保养工单实例节点;弃用 + * + * @param bo 保养工单实例节点;弃用 + * @return 是否新增成功 + */ + DmsMaintInstanceActivityVo insertByBo(DmsMaintInstanceActivityBo bo); + + /** + * 修改保养工单实例节点;弃用 + * + * @param bo 保养工单实例节点;弃用 + * @return 是否修改成功 + */ + DmsMaintInstanceActivityVo updateByBo(DmsMaintInstanceActivityBo bo); + + /** + * 校验并批量删除保养工单实例节点;弃用信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRepairInstanceService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRepairInstanceService.java index 1c39caa2..75f09937 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRepairInstanceService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsRepairInstanceService.java @@ -66,4 +66,12 @@ public interface IDmsRepairInstanceService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 更新检修实例的工作流定义ID + * @param repairInstanceId 检修实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + public Boolean updateWfDefinitionIdById(Long repairInstanceId, Long wfDefinitionId); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseMachineInfoServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseMachineInfoServiceImpl.java index ff64fb9d..02736a3c 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseMachineInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseMachineInfoServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -100,6 +101,27 @@ public class DmsBaseMachineInfoServiceImpl implements IDmsBaseMachineInfoService return lqw; } + /** + * 查询设备台账信息 + * + * @param deviceCode 设备Code + * @return 设备台账信息 + */ +// @Override +// public DmsBaseMachineInfoVo selectDmsBaseDeviceLedgerByDeviceCode(String deviceCode) { +// DmsBaseMachineInfoVo dmsBaseDeviceLedger = baseMapper.selectDmsBaseDeviceLedgerByDeviceCode(deviceCode); +// if (dmsBaseDeviceLedger == null) { +// throw new ServiceException("无此设备"); +// } +// return dmsBaseDeviceLedger; +// } + + @Override + public List likeDeviceName(String deviceName) { + List list = baseMapper.likeDeviceName(deviceName); + return list; + } + /* *//** * 新增设备信息 * diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java index 86c7f510..fa71d9d5 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java @@ -150,10 +150,10 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi throw new ServiceException("新位置不能与原位置相同"); } - // 2. 校验转移前必须有安装位置 + // 2. 校验转移前必须有位置 //设备安装时会赋值给设备信息表的设备位置;新增或修改转移信息时,前端会将设备信息的设备位置赋值给转移信息的旧位置(自动赋值,不可编辑) if (StringUtils.isBlank(entity.getDevicePosition())) { - throw new ServiceException("转移前必须有安装位置"); + throw new ServiceException("转移前必须有位置(可先安装)"); } // 3. 校验转移时间不能小于之前记录的安装时间和转移时间 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 44a3bf7f..25ca667f 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 @@ -3,25 +3,42 @@ package org.dromara.dms.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.seata.spring.annotation.GlobalTransactional; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.constant.DmsConstants; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; 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.dms.domain.DmsBillsFaultInstance; -import org.dromara.dms.domain.DmsFaultInstanceActivity; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.dms.domain.*; import org.dromara.dms.domain.bo.DmsBillsFaultInstanceBo; +import org.dromara.dms.domain.bo.DmsBillsFaultInstanceScanBo; +import org.dromara.dms.domain.bo.DmsFaultInstanceActivityBo; +import org.dromara.dms.domain.bo.DmsInstanceFileBo; import org.dromara.dms.domain.vo.DmsBillsFaultInstanceVo; import org.dromara.dms.domain.vo.DmsFaultComponentsPartsVo; import org.dromara.dms.domain.vo.DmsFaultInstanceActivityVo; +import org.dromara.dms.domain.vo.DmsInstanceFileVo; import org.dromara.dms.mapper.DmsBillsFaultInstanceMapper; +import org.dromara.dms.mapper.DmsFaultInstanceActivityMapper; +import org.dromara.dms.mapper.DmsInstanceFileMapper; import org.dromara.dms.service.IDmsBillsFaultInstanceService; +import org.dromara.dms.service.IDmsFaultInstanceActivityService; +import org.dromara.dms.service.IDmsInstanceFileService; +import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 故障报修工单Service业务层处理 @@ -37,6 +54,19 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS private final DmsBillsFaultInstanceMapper dmsBillsFaultInstanceMapper; + private final DmsInstanceFileMapper dmsInstanceFileMapper; + + private final IDmsInstanceFileService DmsInstanceFileService; + + @DubboReference + private final RemoteWorkflowService remoteWorkflowService; + + private final DmsFaultInstanceActivityMapper dmsFaultInstanceActivityMapper; + + private final IDmsFaultInstanceActivityService dmsFaultInstanceActivityService; + + + /** * 查询故障报修工单 * @@ -78,6 +108,23 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsBillsFaultInstance.class) .selectAll(DmsBillsFaultInstance.class) + + //关联查询设备信息 + .select(DmsBaseMachineInfo::getMachineName) + .select(DmsBaseMachineInfo::getMachineCode) + .select(DmsBaseMachineInfo::getMachineLocation) + .select(DmsBaseMachineInfo::getMachineSpec) + .leftJoin(DmsBaseMachineInfo.class, DmsBaseMachineInfo::getMachineId, DmsBaseShutReason::getMachineId) + + //关联查询零部件更换记录 + .select(DmsFaultComponentsParts::getPartName) + .select(DmsFaultComponentsParts::getPartSpecifications) + .select(DmsFaultComponentsParts::getAmount) + .leftJoin(DmsFaultComponentsParts.class, DmsFaultComponentsParts::getRepairInstanceId, DmsBillsFaultInstance::getRepairInstanceId) + + .select(DmsInstanceFile::getFilePath) + .leftJoin(DmsInstanceFile.class, DmsInstanceFile::getTargetId, DmsBillsFaultInstance::getRepairInstanceId) + .eq(bo.getRepairInstanceId() != null, DmsBillsFaultInstance::getRepairInstanceId, bo.getRepairInstanceId()) .eq(StringUtils.isNotBlank(bo.getBillsFaultCode()), DmsBillsFaultInstance::getBillsFaultCode, bo.getBillsFaultCode()) .eq(StringUtils.isNotBlank(bo.getInstanceType()), DmsBillsFaultInstance::getInstanceType, bo.getInstanceType()) @@ -106,13 +153,63 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS * @return 是否新增成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean insertByBo(DmsBillsFaultInstanceBo bo) { DmsBillsFaultInstance add = MapstructUtils.convert(bo, DmsBillsFaultInstance.class); validEntityBeforeSave(add); + // 获取当前日期时间 + Date curretnDate = new Date(); + add.setApplyTime(curretnDate); + add.setApplyUser(LoginHelper.getUsername()); + add.setBillsFaultCode(Seq.getId(Seq.dmsBillsFaultInstanceSeqType, Seq.dmsBillsFaultInstanceSeqCode)); + // 设置报修状态为待维修 + add.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_TO_REPAIR); + // 设置实例类型为手动录入 + add.setInstanceType(DmsConstants.DMS_BILLS_FAULT_INSTANCE_TYPE_MAUAL); + RemoteStartProcess remoteStartProcess = new RemoteStartProcess(); + remoteStartProcess.setFlowCode(DmsConstants.DMS_BILLS_FAULT_INSTANCE_WF_CODE); + remoteStartProcess.setBusinessId(add.getRepairInstanceId().toString()); + RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(remoteStartProcess); + add.setWfDefinitionId(remoteStartProcessReturn.getTaskId()); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setRepairInstanceId(add.getRepairInstanceId()); } + + // 创建故障实例活动对象 + DmsFaultInstanceActivity dmsFaultInstanceActivity = new DmsFaultInstanceActivity(); + // 设置维修实例ID + dmsFaultInstanceActivity.setRepairInstanceId(add.getRepairInstanceId()); + // 设置流程活动ID + dmsFaultInstanceActivity.setWfNodeId(remoteStartProcessReturn.getProcessInstanceId()); + // 设置故障类型 + dmsFaultInstanceActivity.setFaultType(add.getFaultType()); + // 设置故障描述 + dmsFaultInstanceActivity.setFaultDescription(add.getFaultDescription()); + // 设置设计操作 + dmsFaultInstanceActivity.setDesignOperations(add.getDesignOperations()); + // 设置设备ID + dmsFaultInstanceActivity.setMachineId(add.getMachineId()); + // 设置维修类型 + dmsFaultInstanceActivity.setRepairType(add.getRepairType()); + // 如果外部资源ID不为空,则设置外部资源ID + if (add.getOutsourcingId() != null) { + dmsFaultInstanceActivity.setOutsourcingId(add.getOutsourcingId()); + } + // 设置处理状态为待领取 + dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_TO_PICK); + // 设置流程步骤顺序 + dmsFaultInstanceActivity.setProcessStepOrder(1l); + // 插入故障实例活动记录 + dmsFaultInstanceActivityMapper.insert(dmsFaultInstanceActivity); + + //存储图片 + // 获取文件URL列表 + List fileUrls = add.getFileUrls(); + // 批量插入实例文件记录 + batchInsertInstanceFiles(fileUrls, dmsFaultInstanceActivity.getInstanceActivityId()); + + return flag; } @@ -123,8 +220,11 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsBillsFaultInstanceBo bo) { DmsBillsFaultInstance update = MapstructUtils.convert(bo, DmsBillsFaultInstance.class); + + validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } @@ -161,4 +261,294 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS activity.setParts(parts); return activity; } + + /** + * 查询报修工单 + * + * @param repairInstanceId 报修工单主键 + * @return 报修工单 + */ + @Override + public DmsBillsFaultInstanceVo selectDmsBillsFaultInstanceByRepairInstanceId(Long repairInstanceId) { + // 根据repairInstanceId查询故障实例及其关联的设备和第一条活动记录 + DmsBillsFaultInstanceVo dmsBillsFaultInstance = dmsBillsFaultInstanceMapper.selectFaultInstanceJoinFirstAndDeviceById(repairInstanceId); + // 创建实例文件查询对象 + DmsInstanceFileBo queryInstanceFile = new DmsInstanceFileBo(); + // 设置目标类型为故障实例活动 + queryInstanceFile.setTargetType(DmsConstants.DMS_INSTANCE_FILE_TARGET_TYPE_FAULT_INSTANCE_ACTIVITY); + // 设置目标ID为故障实例的活动ID + queryInstanceFile.setTargetId(dmsBillsFaultInstance.getInstanceActivityId()); + // 查询实例文件列表 + List dmsInstanceFiles = DmsInstanceFileService.queryList(queryInstanceFile); + + // 遍历实例文件列表FIXME + for (DmsInstanceFileVo dmsInstanceFile : dmsInstanceFiles){ + // 获取文件路径 + String filePath = dmsInstanceFile.getFilePath(); + // 如果文件路径不包含"7309" + if(!filePath.contains("7309")){ + // 如果文件路径包含"https",将其替换为"http" + if(filePath.contains("https")){ + filePath.replaceFirst("https","http"); + } + // 找到"/statics"的索引位置 + int index= filePath.indexOf("/statics"); + // 修改文件路径为新的地址 + filePath = "http://172.16.12.100:7309"+filePath.substring(index); + // 设置新的URL和文件路径 + dmsInstanceFile.setFilePath(filePath); + dmsInstanceFile.setFilePath(filePath); + }else{ + // 如果文件路径包含"7309",直接设置URL为文件路径 + dmsInstanceFile.setFilePath(dmsInstanceFile.getFilePath()); + } + } + List InstanceFiles = MapstructUtils.convert(dmsInstanceFiles, DmsInstanceFile.class); + // 将修改后的实例文件列表设置到故障实例中 + dmsBillsFaultInstance.setDmsInstanceFiles(InstanceFiles); + + // 返回故障实例对象 + return dmsBillsFaultInstance; + } + + + public void batchInsertInstanceFiles(List fileUrls, Long instanceActivityId) { + // 判断文件URL列表是否不为空且非空 + if (fileUrls != null && !fileUrls.isEmpty()) { + // 创建一个DmsInstanceFile对象的列表 + List dmsInstanceFiles = new ArrayList<>(); + // 遍历文件URL列表 + for (String fileUrl : fileUrls) { + // 创建一个新的DmsInstanceFile对象 + DmsInstanceFile dmsInstanceFile = new DmsInstanceFile(); + // 设置目标ID为实例活动ID + dmsInstanceFile.setTargetId(instanceActivityId); + // 设置目标类型为故障实例活动 + dmsInstanceFile.setTargetType(DmsConstants.DMS_INSTANCE_FILE_TARGET_TYPE_FAULT_INSTANCE_ACTIVITY); + // 设置文件路径为当前URL + dmsInstanceFile.setFilePath(fileUrl); + // 将DmsInstanceFile对象添加到列表中 + dmsInstanceFiles.add(dmsInstanceFile); + } + // 批量插入DmsInstanceFile对象到数据库 + dmsInstanceFileMapper.batchDmsInstanceFile(dmsInstanceFiles); + } + } + + + /** + * 修改报修工单实例节点 + * + * @param dmsFaultInstanceActivity 报修工单实例节点 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateDmsFaultInstanceActivity(DmsFaultInstanceActivityBo dmsFaultInstanceActivity) { + // 获取文件URL列表 + List fileUrls = dmsFaultInstanceActivity.getFileUrls(); + // 获取活动ID + Long activityId = dmsFaultInstanceActivity.getInstanceActivityId(); + // 根据活动ID查询对应的维修实例ID + Long repairInstanceId = dmsFaultInstanceActivityMapper.selectRepairInstanceId(activityId); + // 创建新的DmsBillsFaultInstance对象 + DmsBillsFaultInstance dmsBillsFaultInstance = new DmsBillsFaultInstance(); + // 设置外包ID + dmsBillsFaultInstance.setOutsourcingId(dmsFaultInstanceActivity.getOutsourcingId()); + // 设置故障来源类型 + dmsBillsFaultInstance.setFaultSourceType(dmsFaultInstanceActivity.getFaultSourceType()); + // 设置故障类型 + dmsBillsFaultInstance.setFaultType(dmsFaultInstanceActivity.getFaultType()); + // 设置维修实例ID + dmsBillsFaultInstance.setRepairInstanceId(repairInstanceId); + // 根据ID更新DmsBillsFaultInstance记录 + int i = dmsBillsFaultInstanceMapper.updateById(dmsBillsFaultInstance); + // 根据目标ID删除DmsFaultInstanceActivity记录 + int rows = dmsFaultInstanceActivityMapper.deleteByTargetId(activityId); + // 批量插入实例文件 + batchInsertInstanceFiles(fileUrls,activityId); + + // 将dmsFaultInstanceActivity转换为DmsBillsFaultInstance对象 + DmsBillsFaultInstance update = MapstructUtils.convert(dmsFaultInstanceActivity, DmsBillsFaultInstance.class); + // 在保存之前验证实体 + validEntityBeforeSave(update); + // 根据ID更新记录并返回影响行数 + return baseMapper.updateById(update); + } + + /** + * 扫描设备编码验证,验证通过后进行维修 + * + * @param dmsBillsFaultInstanceScanVo + */ + @Override + public Long scanDevice4Repair(DmsBillsFaultInstanceScanBo dmsBillsFaultInstanceScan) { + Long count = dmsBillsFaultInstanceMapper.selectCountByRepairInstanceIdAndDeviceCode( + dmsBillsFaultInstanceScan.getRepairInstanceId(), dmsBillsFaultInstanceScan.getDeviceCode()); + if (count <= 0) { + throw new ServiceException("扫描验证失败"); + }else { + return count; + } + } + + /** + * 开始维修 + * + * @param dmsFaultInstanceActivity 报修工单实例节点 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int startRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity) { + // 根据维修实例ID查询故障实例信息 + DmsBillsFaultInstance dmsBillsFaultInstance = dmsBillsFaultInstanceMapper + .selectFaultInstanceJoinFirstById(dmsFaultInstanceActivity.getRepairInstanceId());//join 第一步activity + // 获取工单状态 + String dmsBillsStatus = dmsBillsFaultInstance.getBillsStatus(); + // 如果工单状态为已完成,抛出异常 + if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH)) {//维修完成 + throw new ServiceException("已经维修完成"); + } + + // 获取当前日期和登录用户名 + Date currentDate = new Date(); + String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname(); + + // 如果工单状态为待维修 + if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_TO_REPAIR)) {//待维修 + // 设置工单状态为维修中 + dmsBillsFaultInstance.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_REPAIRING); + // 设置实际开始时间 + dmsBillsFaultInstance.setRealBeginTime(currentDate); + // 更新故障实例信息 + dmsBillsFaultInstanceMapper.updateById(dmsBillsFaultInstance); + + // 设置维修实例ID + dmsFaultInstanceActivity.setRepairInstanceId(dmsBillsFaultInstance.getRepairInstanceId()); + // FIXME: 工作流相关代码(暂时注释掉) +// dmsFaultInstanceActivity.setProcessActivityId(WfConstants.WF_BILLS_FAULT_INSTANCE_PROCESS_ACTIVITY_SECOND_ID); + + // 设置机器ID + dmsFaultInstanceActivity.setMachineId(dmsBillsFaultInstance.getMachineId()); + // 设置处理状态为执行中 + dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_EXECUTING); + // 设置步骤顺序 + dmsFaultInstanceActivity.setProcessStepOrder(2L); + // 设置开始时间 + dmsFaultInstanceActivity.setStartTime(currentDate); + // 设置处理用户ID + dmsFaultInstanceActivity.setHandleUserId(LoginHelper.getUserId()); + // 设置处理人名称 + dmsFaultInstanceActivity.setHandleBy(userName); + // 设置处理时间 + dmsFaultInstanceActivity.setHandleTime(currentDate); + + // 插入新的故障实例活动记录 + Boolean b = dmsFaultInstanceActivityService.insertByBo(dmsFaultInstanceActivity); + + // 创建第一个实例活动对象并设置其属性 + DmsFaultInstanceActivityBo firstInstanceActivity = new DmsFaultInstanceActivityBo(); + firstInstanceActivity.setInstanceActivityId(dmsBillsFaultInstance.getInstanceActivityId()); + // 设置处理状态为已完成 + firstInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_FINISH); + // 设置结束时间 + firstInstanceActivity.setEndTime(currentDate); + // FIXME: 需重新梳理代码dmsFaultInstanceActivityService + // 更新第一个实例活动记录 + dmsFaultInstanceActivityService.updateByBo(firstInstanceActivity); + + } else {// 如果工单状态为维修中 + // 更新故障实例活动记录 + Boolean b = dmsFaultInstanceActivityService.updateByBo(dmsFaultInstanceActivity); + } + + // 返回结果1表示成功 + return 1; + } + + + /** + * 完成维修 + * + * @param dmsFaultInstanceActivity 报修工单实例节点 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int completeRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity) { + // 批量插入实例的附件文件信息 + batchInsertInstanceAfterFiles(dmsFaultInstanceActivity.getFileUrls(),dmsFaultInstanceActivity.getInstanceActivityId()); + // 获取需要插入的备件列表 + List parts = dmsFaultInstanceActivity.getParts(); + // 如果备件列表不为空,则设置每个备件的故障ID并插入数据库 + if (!CollectionUtils.isEmpty(parts)){ + for (DmsFaultComponentsParts part : parts) { + part.setFaultId(dmsFaultInstanceActivity.getRepairInstanceId()); + } + dmsFaultInstanceActivityMapper.insertParts(parts); + } + // 根据维修实例ID查询对应的工单实例 + DmsBillsFaultInstanceVo dmsBillsFaultInstance = this. + queryById(dmsFaultInstanceActivity.getRepairInstanceId()); + + // 获取当前工单的状态 + String dmsBillsStatus = dmsBillsFaultInstance.getBillsStatus(); + // 如果状态为已完成,抛出异常提示已经维修完成 + if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH)) {//维修完成 + throw new ServiceException("已经维修完成"); + } + // 如果状态为待维修,抛出异常提示请先开始维修 + if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_TO_REPAIR)) {//待维修 + throw new ServiceException("请先开始维修"); + + } + + // 获取当前日期和时间 + Date currentDate = new Date(); + // 获取当前登录用户的用户名或昵称 + String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname(); + + // 设置工单状态为已完成,并记录实际结束时间 + dmsBillsFaultInstance.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH); + dmsBillsFaultInstance.setRealEndTime(currentDate); + // 将工单实例转换为数据库实体对象并更新数据库 + DmsBillsFaultInstance faultInstance = MapstructUtils.convert(dmsBillsFaultInstance, DmsBillsFaultInstance.class); + dmsBillsFaultInstanceMapper.updateById(faultInstance); + + // 设置工单活动状态为已完成,并记录结束时间和维修人员 + dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_FINISH); + dmsFaultInstanceActivity.setEndTime(currentDate); + dmsFaultInstanceActivity.setRepairer(userName); + // 将工单活动实例转换为数据库实体对象并更新数据库 + DmsFaultInstanceActivity faultInstanceActivity = MapstructUtils.convert(dmsFaultInstanceActivity, DmsFaultInstanceActivity.class); + int i = dmsFaultInstanceActivityMapper.updateById(faultInstanceActivity); + + // 返回更新操作影响的行数 + return i; + } + + public void batchInsertInstanceAfterFiles(List fileUrls, Long instanceActivityId) { + // 判断文件URL列表是否不为空且非空集合 + if (fileUrls != null && !fileUrls.isEmpty()) { + // 创建一个DmsInstanceFile对象的列表,用于存储文件信息 + List dmsInstanceFiles = new ArrayList<>(); + // 遍历文件URL列表 + for (String fileUrl : fileUrls) { + // 创建一个新的DmsInstanceFile对象 + DmsInstanceFile dmsInstanceFile = new DmsInstanceFile(); + // 设置目标ID为传入的实例活动ID + dmsInstanceFile.setTargetId(instanceActivityId); + // 设置目标类型为"2",表示关联类型为维修后 + dmsInstanceFile.setTargetType("2");//关联类型(1维修前,2维修后) + // 设置文件路径为当前遍历到的文件URL + dmsInstanceFile.setFilePath(fileUrl); + // 将DmsInstanceFile对象添加到列表中 + dmsInstanceFiles.add(dmsInstanceFile); + } + // 调用数据映射器批量插入文件信息 + dmsInstanceFileMapper.batchDmsInstanceFile(dmsInstanceFiles); + } + } + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceActivityServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceActivityServiceImpl.java new file mode 100644 index 00000000..468f92bd --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsInspectInstanceActivityServiceImpl.java @@ -0,0 +1,188 @@ +package org.dromara.dms.service.impl; + +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.dms.domain.DmsBillsInspectInstance; +import org.dromara.dms.domain.DmsBillsLubeInstance; +import org.dromara.dms.domain.bo.DmsBillsInspectInstanceBo; +import org.dromara.dms.domain.bo.DmsBillsLubeInstanceBo; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo; +import org.dromara.dms.domain.vo.DmsBillsLubeInstanceVo; +import org.dromara.dms.mapper.DmsBillsInspectInstanceMapper; +import org.dromara.dms.service.IDmsBillsInspectInstanceService; +import org.springframework.stereotype.Service; +import org.dromara.dms.domain.bo.DmsBillsInspectInstanceActivityBo; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceActivityVo; +import org.dromara.dms.domain.DmsBillsInspectInstanceActivity; +import org.dromara.dms.mapper.DmsBillsInspectInstanceActivityMapper; +import org.dromara.dms.service.IDmsBillsInspectInstanceActivityService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 点巡检工单实例节点;此暂时不用Service业务层处理 + * + * @author zch + * @date 2025-05-19 + */ +@RequiredArgsConstructor +@Service +public class DmsBillsInspectInstanceActivityServiceImpl implements IDmsBillsInspectInstanceActivityService { + + private final DmsBillsInspectInstanceActivityMapper baseMapper; + + private final DmsBillsInspectInstanceMapper dmsBillsInspectInstanceMapper; + + /** + * 查询点巡检工单实例节点;此暂时不用 + * + * @param instanceActivityId 主键 + * @return 点巡检工单实例节点;此暂时不用 + */ + @Override + public DmsBillsInspectInstanceActivityVo queryById(Long instanceActivityId){ + return baseMapper.selectVoById(instanceActivityId); + } + + /** + * 分页查询点巡检工单实例节点;此暂时不用列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 点巡检工单实例节点;此暂时不用分页列表 + */ + @Override + public TableDataInfo queryPageList(DmsBillsInspectInstanceActivityBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的点巡检工单实例节点;此暂时不用列表 + * + * @param bo 查询条件 + * @return 点巡检工单实例节点;此暂时不用列表 + */ + @Override + public List queryList(DmsBillsInspectInstanceActivityBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(DmsBillsInspectInstanceActivityBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsBillsInspectInstanceActivity.class) + .selectAll(DmsBillsInspectInstanceActivity.class) + .eq(bo.getInstanceActivityId() != null, DmsBillsInspectInstanceActivity::getInstanceActivityId, bo.getInstanceActivityId()) + .eq(bo.getInspectInstanceId() != null, DmsBillsInspectInstanceActivity::getInspectInstanceId, bo.getInspectInstanceId()) + .eq(bo.getWfDefinitionId() != null, DmsBillsInspectInstanceActivity::getWfDefinitionId, bo.getWfDefinitionId()) + .eq(bo.getWfNodeId() != null, DmsBillsInspectInstanceActivity::getWfNodeId, bo.getWfNodeId()) + .eq(bo.getInspectRouteId() != null, DmsBillsInspectInstanceActivity::getInspectRouteId, bo.getInspectRouteId()) + .eq(bo.getDeviceAmount() != null, DmsBillsInspectInstanceActivity::getDeviceAmount, bo.getDeviceAmount()) + .eq(StringUtils.isNotBlank(bo.getPerformer()), DmsBillsInspectInstanceActivity::getPerformer, bo.getPerformer()) + .eq(StringUtils.isNotBlank(bo.getProcessHandleResolution()), DmsBillsInspectInstanceActivity::getProcessHandleResolution, bo.getProcessHandleResolution()) + .eq(StringUtils.isNotBlank(bo.getProcessHandleStatus()), DmsBillsInspectInstanceActivity::getProcessHandleStatus, bo.getProcessHandleStatus()) + .eq(bo.getProcessStepOrder() != null, DmsBillsInspectInstanceActivity::getProcessStepOrder, bo.getProcessStepOrder()) + .eq(bo.getStartTime() != null, DmsBillsInspectInstanceActivity::getStartTime, bo.getStartTime()) + .eq(bo.getEndTime() != null, DmsBillsInspectInstanceActivity::getEndTime, bo.getEndTime()) + .eq(bo.getHandleUserId() != null, DmsBillsInspectInstanceActivity::getHandleUserId, bo.getHandleUserId()) + .eq(StringUtils.isNotBlank(bo.getHandleBy()), DmsBillsInspectInstanceActivity::getHandleBy, bo.getHandleBy()) + .eq(bo.getHandleTime() != null, DmsBillsInspectInstanceActivity::getHandleTime, bo.getHandleTime()) + .eq(bo.getTransferUserId() != null, DmsBillsInspectInstanceActivity::getTransferUserId, bo.getTransferUserId()) + .eq(StringUtils.isNotBlank(bo.getAttr1()), DmsBillsInspectInstanceActivity::getAttr1, bo.getAttr1()) + .orderByDesc(DmsBillsInspectInstanceActivity::getCreateTime); + return lqw; + } + + /** + * 新增点巡检工单实例节点;此暂时不用 + * + * @param bo 点巡检工单实例节点;此暂时不用 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public DmsBillsInspectInstanceActivityVo insertByBo(DmsBillsInspectInstanceActivityBo bo) { + DmsBillsInspectInstanceActivity add = MapstructUtils.convert(bo, DmsBillsInspectInstanceActivity.class); + validEntityBeforeSave(add); + // 获取当前登录用户信息 + Long userId = LoginHelper.getUserId(); + String username = LoginHelper.getUsername(); + add.setHandleTime(DateUtils.getNowDate());/**/ + add.setHandleUserId(userId); + add.setHandleBy(username); + + // 更新点巡检工单状态 + DmsBillsInspectInstanceVo dmsBillsInspectInstanceVo = dmsBillsInspectInstanceMapper.selectVoById(add.getInspectInstanceId()); + if (add.getProcessStepOrder() == 2L) {//如果是第二步就更新为巡检中 + dmsBillsInspectInstanceVo.setInspectStatus("2"); + }else if (add.getProcessStepOrder() == 3L) {//如果是第三步就更新为巡检结束 + dmsBillsInspectInstanceVo.setInspectStatus("3"); + dmsBillsInspectInstanceVo.setRealEndTime(new Date()); + } + DmsBillsInspectInstance updateInstance = MapstructUtils.convert(dmsBillsInspectInstanceVo, DmsBillsInspectInstance.class); + dmsBillsInspectInstanceMapper.updateById(updateInstance); + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setInstanceActivityId(add.getInstanceActivityId()); + DmsBillsInspectInstanceActivityVo vo = MapstructUtils.convert(add, DmsBillsInspectInstanceActivityVo.class); + return vo; + } + return null; + } + + /** + * 修改点巡检工单实例节点;此暂时不用 + * + * @param bo 点巡检工单实例节点;此暂时不用 + * @return 是否修改成功 + */ + @Override + public DmsBillsInspectInstanceActivityVo updateByBo(DmsBillsInspectInstanceActivityBo bo) { + DmsBillsInspectInstanceActivity update = MapstructUtils.convert(bo, DmsBillsInspectInstanceActivity.class); + validEntityBeforeSave(update); + Boolean flag = baseMapper.updateById(update) > 0; + if (flag) { + DmsBillsInspectInstanceActivityVo vo = MapstructUtils.convert(update, DmsBillsInspectInstanceActivityVo.class); + return vo; + } + return null; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DmsBillsInspectInstanceActivity entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除点巡检工单实例节点;此暂时不用信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} 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 2f4db69f..4a5ce63c 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 @@ -4,20 +4,30 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.DmsConstants; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.dms.domain.DmsBaseInspectRoute; -import org.dromara.dms.domain.DmsBillsInspectInstance; -import org.dromara.dms.domain.DmsPlanInspect; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.dms.domain.*; import org.dromara.dms.domain.bo.DmsBillsInspectInstanceBo; +import org.dromara.dms.domain.bo.DmsBillsInspectInstanceScanBo; +import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo; import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo; +import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; import org.dromara.dms.mapper.DmsBillsInspectInstanceMapper; +import org.dromara.dms.mapper.DmsInspectInstanceDetailMapper; +import org.dromara.dms.mapper.DmsInspectInstanceDetailProjectMapper; +import org.dromara.dms.mapper.DmsPlanInspectMapper; import org.dromara.dms.service.IDmsBillsInspectInstanceService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Map; @@ -33,6 +43,15 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta private final DmsBillsInspectInstanceMapper baseMapper; + private final DmsBillsInspectInstanceMapper dmsBillsInspectInstanceMapper; + + private final DmsPlanInspectMapper dmsPlanInspectMapper; + + private final DmsInspectInstanceDetailMapper dmsInspectInstanceDetailMapper; + + private final DmsInspectInstanceDetailProjectMapper dmsInspectInstanceDetailPrjectMapper; + + /** * 查询点巡检工单 * @@ -84,8 +103,6 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta .leftJoin(DmsBaseInspectRoute.class, DmsBaseInspectRoute::getInspectRouteId, DmsBillsInspectInstance::getInspectRouteId) - - .eq(bo.getInspectInstanceId() != null, DmsBillsInspectInstance::getInspectInstanceId, bo.getInspectInstanceId()) .eq(bo.getPlanInspectId() != null, DmsBillsInspectInstance::getPlanInspectId, bo.getPlanInspectId()) .eq(bo.getWfDefinitionId() != null, DmsBillsInspectInstance::getWfDefinitionId, bo.getWfDefinitionId()) @@ -152,4 +169,178 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 更新点巡检实例的工作流定义ID + * @param inspectInstanceId 点巡检实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateWfDefinitionIdById(Long inspectInstanceId, Long wfDefinitionId) { + if(ObjectUtils.isEmpty(inspectInstanceId)){ + throw new ServiceException("参数为空"); + } + DmsBillsInspectInstance entity = baseMapper.selectById(inspectInstanceId); + if (entity == null) { + throw new ServiceException("记录不存在"); + } + entity.setWfDefinitionId(wfDefinitionId); + entity.setInspectStatus("1"); + entity.setRealBeginTime(new Date()); + return baseMapper.updateById(entity) > 0; + } + + /** + * 更新点巡检工单明细 + * + * @param dmsInspectInstanceDetail 点巡检工单明细 + * @return 结果 + */ + +// @Override +// @Transactional(rollbackFor = Exception.class) +// public int updateDmsInspectInstanceDetail(DmsInspectInstanceDetailBo dmsInspectInstanceDetail) { +// // 根据instanceDetailId查询记录检查信息 +// DmsRecordInspect dmsRecordInspect = dmsBillsInspectInstanceMapper.selectRecord(dmsInspectInstanceDetail.getInstanceDetailId()); +// +// // 根据inspectInstanceId批量查询记录检查信息 +// List recordInspect = dmsBillsInspectInstanceMapper.selectRecordByInstainceId(dmsRecordInspect.getInspectInstanceId()); +//// if (recordInspect!=null&&recordInspect.size()>0){ +//// // 如果有未完成的检查记录,设置状态为2 +//// dmsRecordInspect.setInspectStatus(2l); +//// }else { +//// // 如果所有检查记录都完成,设置状态为3 +//// dmsRecordInspect.setInspectStatus(3l); +//// } +// // 直接将状态设置为3,表示完成 +// dmsRecordInspect.setInspectStatus(3l); +// // 插入记录检查信息 +// int i1 = dmsBillsInspectInstanceMapper.insertRecord(dmsRecordInspect); +// // 查询未完成的检查实例数量 +// int count = dmsBillsInspectInstanceMapper.selectUnCompletedInstance(dmsRecordInspect.getInspectInstanceId()); +//// int count1 = dmsBillsInspectInstanceMapper.selectAllInstance(dmsRecordInspect.getInspectInstanceId()); +// // 创建新的检查实例对象 +// DmsBillsInspectInstanceBo dmsBillsInspectInstance = new DmsBillsInspectInstanceBo(); +// if (count==0||count==1){ +// // 如果没有未完成的检查实例,设置状态为3 +// dmsBillsInspectInstance.setInspectStatus("3"); +// }else{ +// // 如果有未完成的检查实例,设置状态为2 +// dmsBillsInspectInstance.setInspectStatus("2"); +// } +// // 设置检查实例ID +// dmsBillsInspectInstance.setInspectInstanceId(dmsInspectInstanceDetail.getInspectInstanceId()); +// // 设置实际结束时间 +// dmsBillsInspectInstance.setRealEndTime(new Date()); +// // 更新检查实例信息 +// dmsBillsInspectInstanceService.updateByBo(dmsBillsInspectInstance); +// // 获取当前登录用户的信息 +// String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname(); +// // 获取当前日期 +// Date currentDate = new Date(); +// // 设置更新时间和更新人 +// dmsInspectInstanceDetail.setUpdateTime(currentDate); +// dmsInspectInstanceDetail.setUpdateBy(Long.valueOf(userName)); +// +// // 处理检查实例详情的子项目 +// DmsInspectInstanceDetail returnInspectInstanceDetail = handleDmsInspectInstanceDetailProject(dmsInspectInstanceDetail); +// if (returnInspectInstanceDetail != null) { +// // 更新检查状态和实例详情状态 +// dmsInspectInstanceDetail.setInspectStatus(returnInspectInstanceDetail.getInspectStatus()); +// dmsInspectInstanceDetail.setInstanceDetailStatus(returnInspectInstanceDetail.getInstanceDetailStatus()); +// // 设置子项目列表 +// dmsInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(returnInspectInstanceDetail.getDmsInspectInstanceDetailProjectList()); +// // 批量更新子项目信息 +// batchUpdateDmsInspectInstanceDetailProject(dmsInspectInstanceDetail); +// } +// +// // 返回更新结果 +// return dmsInspectInstanceDetailMapper.update(dmsInspectInstanceDetail); +// } + + + /** + * 获取最新一条未完成的巡检工单 + * + * @param dmsBillsInspectInstanceBo + * @return + */ + @Override + public DmsBillsInspectInstanceVo getNewestBillsInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstanceBo) { + // 设置巡检状态字符串,包含“待巡检”和“巡检中”状态 + dmsBillsInspectInstanceBo.setInspectStatusStr(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT + "," + DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_INSPECTING); + // 将传入的BO对象转换为DO对象 + DmsBillsInspectInstance dmsBillsInspectInstance = MapstructUtils.convert(dmsBillsInspectInstanceBo, DmsBillsInspectInstance.class); + // 查询最新的未完成巡检工单 + DmsBillsInspectInstanceVo newestBillsInspectInstance = dmsBillsInspectInstanceMapper.selectNewestDmsBillsInspectInstance(dmsBillsInspectInstance); + // 如果查询结果不为空 + if (newestBillsInspectInstance != null) { + // 创建巡检实例详情查询对象 + DmsInspectInstanceDetail queryInspectInstanceDetail = new DmsInspectInstanceDetail(); + // 设置巡检实例ID + queryInspectInstanceDetail.setInspectInstanceId(newestBillsInspectInstance.getInspectInstanceId()); + // 查询巡检实例详情列表 + List inspectInstanceDetails = dmsInspectInstanceDetailMapper.selectDmsInspectInstanceDetailJoinList(queryInspectInstanceDetail); + // 设置巡检实例详情列表到newestBillsInspectInstance对象中 + newestBillsInspectInstance.setDmsInspectInstanceDetailList(inspectInstanceDetails); + } + // 设置新的巡检编码为计划巡检编码 + newestBillsInspectInstance.setBillsInspectCode(newestBillsInspectInstance.getPlanInspectCode()); + // 返回最新的未完成巡检工单 + return newestBillsInspectInstance; + } + + + /** + * 扫描设备验证并获取巡检项目信息 + * + * @param dmsBillsInspectInstanceScan + * @return + */ + @Override + public DmsInspectInstanceDetailVo scanInspectInstanceDetail(DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan) { + // 根据检查实例ID和设备编码查询检查实例详细信息 + DmsInspectInstanceDetailVo dmsInspectInstanceDetail = dmsInspectInstanceDetailMapper.selectDmsInspectInstanceDetailByUI(dmsBillsInspectInstanceScan.getInspectInstanceId(), + dmsBillsInspectInstanceScan.getDeviceCode()); + // 如果查询结果为空,抛出异常提示无此设备的检查工单 + if (dmsInspectInstanceDetail == null) { + throw new ServiceException("无此设备的检查工单"); + } + // 获取设备ID + Long deviceId = dmsInspectInstanceDetail.getMachineId(); + // 创建查询检查实例详细项目的参数对象 + DmsInspectInstanceDetailProject queryInspectInstanceDetailProject = new DmsInspectInstanceDetailProject(); + // 设置设备ID + queryInspectInstanceDetailProject.setDeviceId(deviceId); + // 根据标准ID查询项目ID + Long projectId = dmsInspectInstanceDetailPrjectMapper.selectProjectByStandardId(dmsInspectInstanceDetail.getInspectStandard()); + // 设置检查项目ID + queryInspectInstanceDetailProject.setInspectProjectId(projectId); + // 设置检查实例详情ID + queryInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId()); + // 查询检查实例详细项目列表 + List dmsInspectInstanceDetailProjects = dmsInspectInstanceDetailPrjectMapper.selectDmsInspectInstanceDetailProjectJoinList(queryInspectInstanceDetailProject); + // 将查询结果设置到检查实例详情对象中 + dmsInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(dmsInspectInstanceDetailProjects); + + // 更新检查实例的开始时间 + DmsBillsInspectInstanceBo dmsBillsInspectInstance = new DmsBillsInspectInstanceBo(); + // 设置检查实例ID + dmsBillsInspectInstance.setInspectInstanceId(dmsBillsInspectInstanceScan.getInspectInstanceId()); + // 设置实际开始时间为当前时间 + dmsBillsInspectInstance.setRealBeginTime(new Date()); +// dmsBillsInspectInstance.setInspectStatus("2"); + + // FIXME: 梳理流程,完善更新方法 +// int i = dmsBillsInspectInstanceMapper.updateDmsBillsInspectInstance(dmsBillsInspectInstance); + // 使用BO更新检查实例信息 + this.updateByBo(dmsBillsInspectInstance); + + // 返回检查实例详情对象 + return dmsInspectInstanceDetail; + + } + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceActivityServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceActivityServiceImpl.java index 398bcf44..a4443e48 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceActivityServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsLubeInstanceActivityServiceImpl.java @@ -4,14 +4,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; 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.DmsBillsLubeInstance; import org.dromara.dms.domain.DmsBillsLubeInstanceActivity; import org.dromara.dms.domain.bo.DmsBillsLubeInstanceActivityBo; +import org.dromara.dms.domain.bo.DmsBillsLubeInstanceBo; import org.dromara.dms.domain.vo.DmsBillsLubeInstanceActivityVo; +import org.dromara.dms.domain.vo.DmsBillsLubeInstanceVo; import org.dromara.dms.mapper.DmsBillsLubeInstanceActivityMapper; import org.dromara.dms.mapper.DmsBillsLubeInstanceMapper; import org.dromara.dms.service.IDmsBillsLubeInstanceActivityService; @@ -20,10 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 润滑工单实例节点Service业务层处理 @@ -111,119 +112,40 @@ public class DmsBillsLubeInstanceActivityServiceImpl implements IDmsBillsLubeIns * 新增润滑工单实例节点 * * @param bo 润滑工单实例节点 - * @return 是否新增成功 + * @return 新增的润滑工单实例节点实体,包含数据库生成的ID */ @Override @Transactional(rollbackFor = Exception.class) - public Boolean insertByBo(DmsBillsLubeInstanceActivityBo bo) { + public DmsBillsLubeInstanceActivityVo insertByBo(DmsBillsLubeInstanceActivityBo bo) { // 转换为实体类 DmsBillsLubeInstanceActivity add = MapstructUtils.convert(bo, DmsBillsLubeInstanceActivity.class); // 获取当前登录用户信息 Long userId = LoginHelper.getUserId(); String username = LoginHelper.getUsername(); + add.setHandleTime(DateUtils.getNowDate());/**/ + add.setHandleUserId(userId); + add.setHandleBy(username); -/* TODO:还没用工作流wf,暂时注释掉 */ - // 如果当前步骤不是第一步 - if (add.getProcessStepOrder() != 1) { - // 如果是最后一步,执行结束流程 -/* if (add.getProcessStepOrder() == add.getWfLength()) { - // 设置结束信息 - add.setEndTime(DateUtils.getNowDate()); - add.setHandleUserId(userId); - add.setHandleBy(username); - add.setHandleTime(DateUtils.getNowDate()); - - // 查询该润滑实例的所有相关活动 - MPJLambdaWrapper wrapper = JoinWrappers.lambda(DmsBillsLubeInstanceActivity.class) - .selectAll(DmsBillsLubeInstanceActivity.class) - .eq(DmsBillsLubeInstanceActivity::getLubeInstanceId, add.getLubeInstanceId()); - - List activities = baseMapper.selectJoinList(DmsBillsLubeInstanceActivityVo.class, wrapper); - - // 插入新的润滑工单实例活动记录 - boolean flag = baseMapper.insert(add) > 0; - - // 更新所有相关活动的处理状态为"0" - for (DmsBillsLubeInstanceActivityVo activity : activities) { - DmsBillsLubeInstanceActivityBo updateBo = new DmsBillsLubeInstanceActivityBo(); - updateBo.setInstanceActivityId(activity.getInstanceActivityId()); - updateBo.setProcessHandleStatus("0"); - this.updateByBo(updateBo); - } - - // 更新润滑工单实例的状态和实际结束时间 - MPJLambdaWrapper instanceWrapper = JoinWrappers.lambda(DmsBillsLubeInstance.class) - .selectAll(DmsBillsLubeInstance.class) - .eq(DmsBillsLubeInstance::getLubeInstanceId, add.getLubeInstanceId()); - - DmsBillsLubeInstanceVo instance = dmsBillsLubeInstanceMapper.selectJoinOne(DmsBillsLubeInstanceVo.class, instanceWrapper); - - DmsBillsLubeInstanceBo updateInstance = new DmsBillsLubeInstanceBo(); - updateInstance.setLubeInstanceId(instance.getLubeInstanceId()); - updateInstance.setLubeStatus("2"); // 完成状态 - updateInstance.setRealEndTime(DateUtils.getNowDate()); - - dmsBillsLubeInstanceMapper.updateById(MapstructUtils.convert(updateInstance, DmsBillsLubeInstance.class)); - - // 创建润滑记录相关代码暂时注释 - DmsRecordLube dmsRecordLube = new DmsRecordLube(); - dmsRecordLube.setPlanLubeId(instance.getPlanLubeId()); - dmsRecordLube.setBillsLubeCode(instance.getBillsLubeCode()); - dmsRecordLube.setLubeGroup(add.getLubeGroup()); - dmsRecordLube.setLubeLevel(add.getLubeLevel()); - dmsRecordLube.setLubeSupervisor(add.getLubeSupervisor()); - dmsRecordLube.setLubeStatus(instance.getLubeStatus()); - dmsRecordLube.setPlanBeginTime(instance.getPlanBeginTime()); - dmsRecordLube.setRealBeginTime(instance.getRealBeginTime()); - dmsRecordLube.setPlanEndTime(instance.getPlanEndTime()); - dmsRecordLube.setRealEndTime(instance.getRealEndTime()); - - if (flag) { - bo.setInstanceActivityId(add.getInstanceActivityId()); - } - return flag; - } - // 中间步骤的处理逻辑 - else { - // 如果是第二步,更新润滑工单实例的实际开始时间 - if (add.getProcessStepOrder() == 2) { - DmsBillsLubeInstanceBo updateInstance = new DmsBillsLubeInstanceBo(); - updateInstance.setLubeInstanceId(add.getLubeInstanceId()); - updateInstance.setRealBeginTime(DateUtils.getNowDate()); - - dmsBillsLubeInstanceMapper.updateById(MapstructUtils.convert(updateInstance, DmsBillsLubeInstance.class)); - } - - // 查询前一个步骤的活动 - MPJLambdaWrapper prevWrapper = JoinWrappers.lambda(DmsBillsLubeInstanceActivity.class) - .selectAll(DmsBillsLubeInstanceActivity.class) - .eq(DmsBillsLubeInstanceActivity::getLubeInstanceId, add.getLubeInstanceId()) - .eq(DmsBillsLubeInstanceActivity::getProcessStepOrder, add.getProcessStepOrder() - 1); - - List prevActivities = baseMapper.selectJoinList(DmsBillsLubeInstanceActivityVo.class, prevWrapper); - - if (!prevActivities.isEmpty()) { - // 更新前一个步骤的活动状态和时间信息 - DmsBillsLubeInstanceActivityBo updatePrev = new DmsBillsLubeInstanceActivityBo(); - updatePrev.setInstanceActivityId(prevActivities.get(0).getInstanceActivityId()); - updatePrev.setProcessHandleStatus("3"); - updatePrev.setEndTime(DateUtils.getNowDate()); - updatePrev.setHandleTime(DateUtils.getNowDate()); - updatePrev.setHandleBy(username); - updatePrev.setHandleUserId(userId); - - this.updateByBo(updatePrev); - } - }*/ + //更新润滑工单的状态 + DmsBillsLubeInstanceVo dmsBillsLubeInstanceVo = dmsBillsLubeInstanceMapper.selectVoById(add.getLubeInstanceId()); + if(add.getProcessStepOrder()==2L){//如果是第二步就更新为润滑中 + dmsBillsLubeInstanceVo.setLubeStatus("2"); + }else if (add.getProcessStepOrder()==3L){//如果是第三步就更新为润滑结束 + dmsBillsLubeInstanceVo.setLubeStatus("3"); + dmsBillsLubeInstanceVo.setRealEndTime(new Date()); } + dmsBillsLubeInstanceMapper.updateById(MapstructUtils.convert(dmsBillsLubeInstanceVo, DmsBillsLubeInstance.class)); + // 插入新的润滑工单实例活动记录 boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setInstanceActivityId(add.getInstanceActivityId()); + DmsBillsLubeInstanceActivityVo vo = MapstructUtils.convert(add, DmsBillsLubeInstanceActivityVo.class); + return vo; } - return flag; + return null; } /** @@ -233,10 +155,14 @@ public class DmsBillsLubeInstanceActivityServiceImpl implements IDmsBillsLubeIns * @return 是否修改成功 */ @Override - public Boolean updateByBo(DmsBillsLubeInstanceActivityBo bo) { + public DmsBillsLubeInstanceActivityVo updateByBo(DmsBillsLubeInstanceActivityBo bo) { DmsBillsLubeInstanceActivity update = MapstructUtils.convert(bo, DmsBillsLubeInstanceActivity.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + boolean flag = baseMapper.updateById(update) > 0; + if (flag){ + return MapstructUtils.convert(update, DmsBillsLubeInstanceActivityVo.class); + } + return null; } /** 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 38b9f965..21310d47 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.constant.DmsConstants; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.DateUtils; @@ -24,6 +25,10 @@ import org.dromara.dms.domain.vo.DmsPlanLubeDetailVo; import org.dromara.dms.domain.vo.DmsPlanLubeVo; import org.dromara.dms.mapper.*; import org.dromara.dms.service.IDmsBillsLubeInstanceService; +import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.RemoteCompleteTask; +import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -51,7 +56,8 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer private final DmsPlanLubeDetailMapper dmsPlanLubeDetailMapper; - + @DubboReference + private final RemoteWorkflowService remoteWorkflowService; /** * 查询润滑工单 @@ -319,8 +325,24 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer @Override @Transactional(rollbackFor = Exception.class) public Boolean startLube(DmsBillsLubeDetailBo bo) { + Long lubeInstanceId = bo.getLubeInstanceId(); // 根据润滑实例ID查询润滑实例信息 - DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(bo.getLubeInstanceId()); + DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(lubeInstanceId); + + //FIXME:需测试能否启动工作流 + RemoteStartProcess startProcess = new RemoteStartProcess(); + startProcess.setFlowCode(DmsConstants.DMS_BILLS_LUBE_INSTANCE_WF_CODE); + String businessId = lubeInstanceId.toString(); + startProcess.setBusinessId(businessId); + RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(startProcess); + Long taskId = remoteStartProcessReturn.getTaskId(); + if (taskId == null) { + throw new ServiceException("流程启动失败"); + }else if (taskId != null) { + dmsBillsLubeInstance.setWfDefinitionId(taskId); + } + DmsBillsLubeInstanceBo dmsBillsLubeInstanceBo = MapstructUtils.convert(dmsBillsLubeInstance, DmsBillsLubeInstanceBo.class); + this.updateByBo(dmsBillsLubeInstanceBo); // 获取润滑状态,如果为空则设置为待润滑状态 String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ? @@ -375,6 +397,12 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer // 根据润滑实例ID查询润滑实例信息 DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(lubeInstanceId); + //fIXME:需测试能否完成工作流 + Long taskId = dmsBillsLubeInstance.getWfDefinitionId(); + RemoteCompleteTask completeTask = new RemoteCompleteTask(); + completeTask.setTaskId(taskId); + boolean taskFlag = remoteWorkflowService.completeTask(completeTask); + // 获取润滑状态,如果为空则设置为待润滑状态 String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ? DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE : dmsBillsLubeInstance.getLubeStatus(); @@ -422,9 +450,10 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer bo.setEndTime(currentDate); //bo.setUpdateBy(userId); bo.setMaintStatus(String.valueOf(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE)); - dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class)); + int i = dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class)); - return 1; + + return i; } @@ -444,8 +473,11 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer if (entity == null) { throw new ServiceException("记录不存在"); } - entity.setWfDefinitionId(wfDefinitionId); // 假设字段已存在于实体中 + entity.setWfDefinitionId(wfDefinitionId); + entity.setLubeStatus("1");//待润滑 + entity.setRealBeginTime(new Date()); return baseMapper.updateById(entity) > 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 c88b9092..efd07d75 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 @@ -29,6 +29,7 @@ import org.dromara.dms.service.IDmsBillsMaintDetailService; import org.dromara.dms.service.IDmsBillsMaintInstanceService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.util.*; import java.util.stream.Collectors; @@ -295,13 +296,9 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS if (maintStatus.equals(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT)) {//待保养 dmsBillsMaintInstance.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_MAINTING); dmsBillsMaintInstance.setRealBeginTime(currentDate); - baseMapper.updateById(dmsBillsMaintInstance); - dmsBillsMaintDetail.setBeginTime(currentDate); - dmsBillsMaintDetail.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_MAINTING); - dmsBillsMaintDetailMapper.updateById(dmsBillsMaintDetail); } @@ -330,24 +327,34 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS @Override @Transactional(rollbackFor = Exception.class) public int completeMaint(DmsBillsMaintDetail dmsBillsMaintDetail) { + // 获取保养工单明细中的项目列表 List dmsBillsMaintDetailProjects = dmsBillsMaintDetail.getDmsBillsMaintDetailProjectList(); + // 获取保养实例ID Long maintInstanceId = dmsBillsMaintDetail.getMaintInstanceId(); + // 根据保养实例ID查询保养实例信息 DmsBillsMaintInstance dmsBillsMaintInstance = baseMapper. selectDmsBillsMaintInstanceByMaintInstanceId(maintInstanceId); + // 获取保养状态,如果为空则设置为待保养状态 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("已经保养完成"); } + // 如果保养状态为待保养,抛出异常提示请先执行开始保养 if (maintStatus.equals(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT)) {//待保养 throw new ServiceException("请先执行开始保养"); } + // 获取当前日期时间 Date currentDate = new Date(); + // 创建查询保养明细的对象 DmsBillsMaintDetailBo queryMaintDetail = new DmsBillsMaintDetailBo(); + // 设置查询条件为保养实例ID queryMaintDetail.setMaintInstanceId(maintInstanceId); + // 查询保养明细列表 List maintDetails = dmsBillsMaintDetailService.queryList(queryMaintDetail); /**获取未完成的保养明细,并且需要排除当前提交完成的保养明细*/ @@ -359,28 +366,59 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS /**如果已经没有未完成的,则需要将工单修改成已完成,并更新结束时间*/ if (inCompleteMaintDetails == null || inCompleteMaintDetails.isEmpty()) { + // 设置保养状态为已完成 dmsBillsMaintInstance.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE); + // 设置实际结束时间为当前时间 dmsBillsMaintInstance.setRealEndTime(currentDate); + // 更新保养实例信息 baseMapper.updateById(dmsBillsMaintInstance); } //更新保养工单明细项目信息 for (DmsBillsMaintDetailProjectVo dmsBillsMaintDetailProject : dmsBillsMaintDetailProjects) { + // 设置项目状态为已完成 dmsBillsMaintDetailProject.setMaintProjectStatus(DmsConstants.DMS_MAINT_PROJECT_STATUS_COMPLETE); + // 转换项目对象类型 DmsBillsMaintDetailProject dmsBillsMaintInstanceProject = MapstructUtils.convert(dmsBillsMaintDetailProject, DmsBillsMaintDetailProject.class); + // 更新项目信息 dmsBillsMaintInstanceProjectMapper.updateById(dmsBillsMaintInstanceProject); } + // 设置保养明细的结束时间为当前时间 dmsBillsMaintDetail.setEndTime(currentDate); + // 设置保养明细的更新时间为当前时间 dmsBillsMaintDetail.setUpdateTime(currentDate); + // 设置保养明细的状态为已完成 dmsBillsMaintDetail.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE); + // 更新保养明细信息 dmsBillsMaintDetailMapper.updateById(dmsBillsMaintDetail); - + // 返回结果1表示成功 return 1; } + /** + * 更新保养实例的工作流定义ID + * @param maintInstanceId 保养实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateWfDefinitionIdById(Long maintInstanceId, Long wfDefinitionId) { + if(ObjectUtils.isEmpty(maintInstanceId)){ + throw new ServiceException("参数为空"); + } + DmsBillsMaintInstance entity = baseMapper.selectById(maintInstanceId); + if (entity == null) { + throw new ServiceException("记录不存在"); + } + entity.setWfDefinitionId(wfDefinitionId); + entity.setMaintStatus(1L); + entity.setRealBeginTime(new Date()); + return baseMapper.updateById(entity) > 0; + } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsMaintInstanceActivityServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsMaintInstanceActivityServiceImpl.java new file mode 100644 index 00000000..307827ac --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsMaintInstanceActivityServiceImpl.java @@ -0,0 +1,176 @@ +package org.dromara.dms.service.impl; + +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.dms.domain.DmsBillsMaintInstance; +import org.dromara.dms.domain.bo.DmsBillsMaintInstanceBo; +import org.dromara.dms.domain.vo.DmsBillsMaintInstanceVo; +import org.dromara.dms.mapper.DmsBillsMaintInstanceMapper; +import org.springframework.stereotype.Service; +import org.dromara.dms.domain.bo.DmsMaintInstanceActivityBo; +import org.dromara.dms.domain.vo.DmsMaintInstanceActivityVo; +import org.dromara.dms.domain.DmsMaintInstanceActivity; +import org.dromara.dms.mapper.DmsMaintInstanceActivityMapper; +import org.dromara.dms.service.IDmsMaintInstanceActivityService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 保养工单实例节点;弃用Service业务层处理 + * + * @author zch + * @date 2025-05-19 + */ +@RequiredArgsConstructor +@Service +public class DmsMaintInstanceActivityServiceImpl implements IDmsMaintInstanceActivityService { + + private final DmsMaintInstanceActivityMapper baseMapper; + + private final DmsBillsMaintInstanceMapper dmsBillsMaintInstanceMapper; + + /** + * 查询保养工单实例节点;弃用 + * + * @param instanceActivityId 主键 + * @return 保养工单实例节点;弃用 + */ + @Override + public DmsMaintInstanceActivityVo queryById(Long instanceActivityId){ + return baseMapper.selectVoById(instanceActivityId); + } + + /** + * 分页查询保养工单实例节点;弃用列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 保养工单实例节点;弃用分页列表 + */ + @Override + public TableDataInfo queryPageList(DmsMaintInstanceActivityBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的保养工单实例节点;弃用列表 + * + * @param bo 查询条件 + * @return 保养工单实例节点;弃用列表 + */ + @Override + public List queryList(DmsMaintInstanceActivityBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(DmsMaintInstanceActivityBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsMaintInstanceActivity.class) + .selectAll(DmsMaintInstanceActivity.class) + .eq(bo.getInstanceActivityId() != null, DmsMaintInstanceActivity::getInstanceActivityId, bo.getInstanceActivityId()) + .eq(bo.getMaintInstanceId() != null, DmsMaintInstanceActivity::getMaintInstanceId, bo.getMaintInstanceId()) + .eq(bo.getWfDefinitionId() != null, DmsMaintInstanceActivity::getWfDefinitionId, bo.getWfDefinitionId()) + .eq(bo.getWfNodeId() != null, DmsMaintInstanceActivity::getWfNodeId, bo.getWfNodeId()) + .eq(StringUtils.isNotBlank(bo.getMaintLevel()), DmsMaintInstanceActivity::getMaintLevel, bo.getMaintLevel()) + .eq(StringUtils.isNotBlank(bo.getMaintGroup()), DmsMaintInstanceActivity::getMaintGroup, bo.getMaintGroup()) + .eq(StringUtils.isNotBlank(bo.getMaintSupervisor()), DmsMaintInstanceActivity::getMaintSupervisor, bo.getMaintSupervisor()) + .eq(StringUtils.isNotBlank(bo.getProcessHandleResolution()), DmsMaintInstanceActivity::getProcessHandleResolution, bo.getProcessHandleResolution()) + .eq(StringUtils.isNotBlank(bo.getProcessHandleStatus()), DmsMaintInstanceActivity::getProcessHandleStatus, bo.getProcessHandleStatus()) + .eq(bo.getProcessStepOrder() != null, DmsMaintInstanceActivity::getProcessStepOrder, bo.getProcessStepOrder()) + .eq(bo.getStartTime() != null, DmsMaintInstanceActivity::getStartTime, bo.getStartTime()) + .eq(bo.getEndTime() != null, DmsMaintInstanceActivity::getEndTime, bo.getEndTime()) + .eq(bo.getHandleUserId() != null, DmsMaintInstanceActivity::getHandleUserId, bo.getHandleUserId()) + .eq(StringUtils.isNotBlank(bo.getHandleBy()), DmsMaintInstanceActivity::getHandleBy, bo.getHandleBy()) + .eq(bo.getHandleTime() != null, DmsMaintInstanceActivity::getHandleTime, bo.getHandleTime()) + .eq(bo.getTransferUserId() != null, DmsMaintInstanceActivity::getTransferUserId, bo.getTransferUserId()) + .eq(StringUtils.isNotBlank(bo.getAttr1()), DmsMaintInstanceActivity::getAttr1, bo.getAttr1()) + .orderByDesc(DmsMaintInstanceActivity::getCreateTime); + return lqw; + } + + /** + * 新增保养工单实例节点;弃用 + * + * @param bo 保养工单实例节点;弃用 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public DmsMaintInstanceActivityVo insertByBo(DmsMaintInstanceActivityBo bo) { + DmsMaintInstanceActivity add = MapstructUtils.convert(bo, DmsMaintInstanceActivity.class); + validEntityBeforeSave(add); + + DmsBillsMaintInstanceVo dmsBillsMaintInstanceVo = dmsBillsMaintInstanceMapper.selectVoById(bo.getMaintInstanceId()); + if (add.getProcessStepOrder() == 2L){ + dmsBillsMaintInstanceVo.setMaintStatus(2L); + }else if(add.getProcessStepOrder()== 3L){ + dmsBillsMaintInstanceVo.setMaintStatus(3L); + dmsBillsMaintInstanceVo.setRealEndTime(new Date()); + } + DmsBillsMaintInstance updateInstance = MapstructUtils.convert(dmsBillsMaintInstanceVo,DmsBillsMaintInstance.class); + dmsBillsMaintInstanceMapper.updateById(updateInstance); + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setInstanceActivityId(add.getInstanceActivityId()); + DmsMaintInstanceActivityVo vo = MapstructUtils.convert(add, DmsMaintInstanceActivityVo.class); + return vo; + } + return null; + } + + /** + * 修改保养工单实例节点;弃用 + * + * @param bo 保养工单实例节点;弃用 + * @return 是否修改成功 + */ + @Override + public DmsMaintInstanceActivityVo updateByBo(DmsMaintInstanceActivityBo bo) { + DmsMaintInstanceActivity update = MapstructUtils.convert(bo, DmsMaintInstanceActivity.class); + validEntityBeforeSave(update); + boolean flag = baseMapper.updateById(update) > 0; + if (flag) { + DmsMaintInstanceActivityVo vo = MapstructUtils.convert(update, DmsMaintInstanceActivityVo.class); + return vo; + } + return null; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DmsMaintInstanceActivity entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除保养工单实例节点;弃用信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java index eda8e496..d66f2508 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java @@ -195,6 +195,7 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { if (add.getMaintLevel().equals(3l)){ cron = "0 0 "+add.getHour()+" "+day+" "+ month+" ? "+year; } + bo.setCronExpression(cron);//cron表达式 String planMaintCode = Seq.getId(Seq.planMaintSeqType, Seq.planMaintCode); // String cron = "* * "+dmsPlanMaint.getHour()+" ? * "+week; /* SysJob job = new SysJob(); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsRepairInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsRepairInstanceServiceImpl.java index 336029bc..1167aaec 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsRepairInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsRepairInstanceServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.dms.service.impl; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -15,6 +16,8 @@ import org.dromara.dms.domain.vo.DmsRepairInstanceVo; import org.dromara.dms.domain.DmsRepairInstance; import org.dromara.dms.mapper.DmsRepairInstanceMapper; import org.dromara.dms.service.IDmsRepairInstanceService; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.util.List; import java.util.Map; @@ -140,4 +143,24 @@ public class DmsRepairInstanceServiceImpl implements IDmsRepairInstanceService { } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 更新检修实例的工作流定义ID + * @param repairInstanceId 检修实例的ID + * @param wfDefinitionId 工作流定义的ID + * @return 如果更新成功返回true,否则返回false + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateWfDefinitionIdById(Long repairInstanceId, Long wfDefinitionId) { + if(ObjectUtils.isEmpty(repairInstanceId)){ + throw new ServiceException("参数为空"); + } + DmsRepairInstance entity = baseMapper.selectById(repairInstanceId); + if (entity == null) { + throw new ServiceException("记录不存在"); + } + entity.setWfDefinitionId(wfDefinitionId); + return baseMapper.updateById(entity) > 0; + } } diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBaseMachineInfoMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBaseMachineInfoMapper.xml index d152c64c..b78a5d73 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBaseMachineInfoMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBaseMachineInfoMapper.xml @@ -4,4 +4,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + 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 4a5648ea..20e158f6 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 @@ -5,7 +5,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -225,4 +225,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsInspectInstanceActivityMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsInspectInstanceActivityMapper.xml new file mode 100644 index 00000000..993e9467 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsBillsInspectInstanceActivityMapper.xml @@ -0,0 +1,7 @@ + + + + + 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 742fd18f..042e4dfe 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 @@ -4,10 +4,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - + @@ -30,7 +30,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select a.inspect_instance_id, a.plan_inspect_id, - a.wf_process_id, a.inspect_type, a.bills_inspect_code, a.plan_begin_time, @@ -38,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.real_begin_time, a.real_end_time, a.inspect_status, - + a.wf_definition_id, b.remark, b.create_by, a.create_time, @@ -61,4 +60,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where a.inspect_type = 1 + + diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsFaultInstanceActivityMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsFaultInstanceActivityMapper.xml index 3cca4998..f09cf014 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsFaultInstanceActivityMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsFaultInstanceActivityMapper.xml @@ -55,4 +55,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + delete FROM dms_instance_file where target_id =#{activityId} + + + + insert into dms_fault_compents_parts(fault_id,part_name,part_specifications,amount) + values + + (#{item.faultId},#{item.partName},#{item.partSpecifications},#{item.amount}) + + + 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 56ecc0d3..2df854f8 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 @@ -57,5 +57,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where x.inspect_standard_id = #{inspectStandard} + + diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInstanceFileMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInstanceFileMapper.xml index ed8f0624..2cbab3d9 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInstanceFileMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsInstanceFileMapper.xml @@ -4,4 +4,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + insert into dms_instance_file( instance_file_id, target_type, target_id, file_path) values + + ( #{item.instanceFileId}, #{item.targetType}, #{item.targetId}, #{item.filePath}) + + + diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsMaintInstanceActivityMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsMaintInstanceActivityMapper.xml new file mode 100644 index 00000000..d5d8db3c --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsMaintInstanceActivityMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRoute.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRoute.java index 1027c2c2..6fb18d7f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRoute.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRoute.java @@ -4,7 +4,7 @@ import org.dromara.common.tenant.core.TenantEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; - +import java.util.Date; import java.io.Serial; import java.util.List; @@ -39,7 +39,7 @@ public class ProdBaseRoute extends TenantEntity { private String routeDesc; /** - * 激活标识(1是 0否) + * 状态(1待审核 2审核通过 3审核不通过 4发布 5作废) */ private String activeFlag; @@ -54,6 +54,51 @@ public class ProdBaseRoute extends TenantEntity { @TableLogic private String delFlag; + /** + * 工艺路线版本 + */ + private String routeVersion; + + /** + * 生产类型(1正式 2试制 3返修) + */ + private String productionType; + + /** + * 路线类型(1生产 2装配) + */ + private String routeType; + + /** + * 审核原因 + */ + private String auditReason; + + /** + * 审核人 + */ + private Long approveBy; + + /** + * 审核时间 + */ + private Date approveTime; + + /** + * 是否需要首件检验(0否 1是) + */ + private String needFirstInspect; + + /** + * 是否打印流转卡(0继承 1是 2否) + */ + private String printFlowCard; + + /** + * 批次量(0=不拆分) + */ + private Long batchSize; + @TableField(exist = false) - List prodBaseRouteProcess;//映射字段 + List prodBaseRouteProcessList;//映射字段 } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteMaterial.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteMaterial.java new file mode 100644 index 00000000..b6c9daae --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteMaterial.java @@ -0,0 +1,52 @@ +package org.dromara.mes.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 工艺路线关联物料对象 prod_base_route_material + * + * @author Yinq + * @date 2025-06-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("prod_base_route_material") +public class ProdBaseRouteMaterial extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 关联物料ID + */ + @TableId(value = "route_material_id", type = IdType.AUTO) + private Long routeMaterialId; + + /** + * 工艺路线ID + */ + private Long routeId; + + /** + * 物料ID + */ + private Long materialId; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + @TableField(exist = false) + private String materialName; +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java index 4030499f..da6e129f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdBaseRouteProcess.java @@ -47,7 +47,126 @@ public class ProdBaseRouteProcess extends BaseEntity { */ private String remark; + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + /** + * 委外标识(1自制 2委外) + */ + private String outsourcingFlag; + + /** + * 工序类型(1投料 2加工 3装配) + */ + private String operationType; + + /** + * 是否需要上料(0否 1是) + */ + private String needFeeding; + + /** + * 设备点检(0不需要 1需要) + */ + private String needEquipmentCheck; + + /** + * 实际产出率(%) + */ + private Long actualYieldRate; + + /** + * 领料方式(1领料单 2申请领料 3生产叫料) + */ + private String materialIssuance; + + /** + * 委外提前期(秒) + */ + private Long outsourcingLeadTime; + + /** + * 准备时间(秒) + */ + private Long setupTime; + + /** + * 加工时间(秒) + */ + private Long processingTime; + + /** + * 拆卸时间(秒) + */ + private Long teardownTime; + + /** + * 生产节拍(秒/件) + */ + private Long productionTakt; + + /** + * 质检方式(1免检 2自检 3质量检验) + */ + private String inspectionMethod; + + /** + * 质量检验规则ID + */ + private Long qualityRuleId; + + /** + * 关键工序(0否 1是) + */ + private String isKeyOperation; + + /** + * 下工序要求(0无要求 1完成 2质检通过) + */ + private String nextStepRequirement; + + /** + * 最后工序(0否 1是) + */ + private String isFinalStep; + + /** + * 生成流转卡任务(0否 1是) + */ + private String generatePrepareTask; + + /** + * 瓶颈工序(0否 1是) + */ + private String bottleneckFlag; + + /** + * 瓶颈设置(0人工 1自动) + */ + private String bottleneckSetting; + + /** + * 接续关系(ES结束到开始 SS开始到开始) + */ + private String successorRelation; + + /** + * 偏置时间(秒) + */ + private Long offsetTime; + + /** + * 技术附件 + */ + private String techAttachments; + + /** + * 质检员 + */ + private String inspectors; /** * 工序名称 diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdMaterialBom.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdMaterialBom.java index 9882abf5..625375f0 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdMaterialBom.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/ProdMaterialBom.java @@ -119,11 +119,6 @@ public class ProdMaterialBom extends TenantEntity { */ private String activeFlag; - /** - * 删除标识(1是 0否) - */ - private String deleteFlag; - /** * 备注 */ diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteBo.java index 49e91e62..6f106a0e 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteBo.java @@ -1,6 +1,7 @@ package org.dromara.mes.domain.bo; import org.dromara.mes.domain.ProdBaseRoute; +import org.dromara.mes.domain.ProdBaseRouteMaterial; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; @@ -9,6 +10,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.util.Date; import java.util.List; /** @@ -49,6 +51,53 @@ public class ProdBaseRouteBo extends BaseEntity { */ private String remark; - private List routeProcessBoList; + /** + * 工艺路线版本 + */ + private String routeVersion; + + /** + * 生产类型(1正式 2试制 3返修) + */ + private String productionType; + + /** + * 路线类型(1生产 2装配) + */ + private String routeType; + + /** + * 审核原因 + */ + private String auditReason; + + /** + * 审核人 + */ + private Long approveBy; + + /** + * 审核时间 + */ + private Date approveTime; + + /** + * 是否需要首件检验(0否 1是) + */ + private String needFirstInspect; + + /** + * 是否打印流转卡(0继承 1是 2否) + */ + private String printFlowCard; + + /** + * 批次量(0=不拆分) + */ + private Long batchSize; + + private List routeProcessList; + + private List prodBaseRouteMaterialList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteMaterialBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteMaterialBo.java new file mode 100644 index 00000000..92e7b33f --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteMaterialBo.java @@ -0,0 +1,51 @@ +package org.dromara.mes.domain.bo; + +import org.dromara.mes.domain.ProdBaseRouteMaterial; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 工艺路线关联物料业务对象 prod_base_route_material + * + * @author Yinq + * @date 2025-06-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ProdBaseRouteMaterial.class, reverseConvertGenerate = false) +public class ProdBaseRouteMaterialBo extends BaseEntity { + + /** + * 关联物料ID + */ + @NotNull(message = "关联物料ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long routeMaterialId; + + /** + * 工艺路线ID + */ + private Long routeId; + + /** + * 物料ID + */ + private Long materialId; + + /** + * 激活标识(1是 0否) + */ + @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String activeFlag; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteProcessBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteProcessBo.java index dde8caaa..65a83478 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteProcessBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdBaseRouteProcessBo.java @@ -47,5 +47,118 @@ public class ProdBaseRouteProcessBo extends BaseEntity { */ private String remark; + /** + * 委外标识(1自制 2委外) + */ + private String outsourcingFlag; + /** + * 工序类型(1投料 2加工 3装配) + */ + private String operationType; + + /** + * 是否需要上料(0否 1是) + */ + private String needFeeding; + + /** + * 设备点检(0不需要 1需要) + */ + private String needEquipmentCheck; + + /** + * 实际产出率(%) + */ + private Long actualYieldRate; + + /** + * 领料方式(1领料单 2申请领料 3生产叫料) + */ + private String materialIssuance; + + /** + * 委外提前期(秒) + */ + private Long outsourcingLeadTime; + + /** + * 准备时间(秒) + */ + private Long setupTime; + + /** + * 加工时间(秒) + */ + private Long processingTime; + + /** + * 拆卸时间(秒) + */ + private Long teardownTime; + + /** + * 生产节拍(秒/件) + */ + private Long productionTakt; + + /** + * 质检方式(1免检 2自检 3质量检验) + */ + private String inspectionMethod; + + /** + * 质量检验规则ID + */ + private Long qualityRuleId; + + /** + * 关键工序(0否 1是) + */ + private String isKeyOperation; + + /** + * 下工序要求(0无要求 1完成 2质检通过) + */ + private String nextStepRequirement; + + /** + * 最后工序(0否 1是) + */ + private String isFinalStep; + + /** + * 生成流转卡任务(0否 1是) + */ + private String generatePrepareTask; + + /** + * 瓶颈工序(0否 1是) + */ + private String bottleneckFlag; + + /** + * 瓶颈设置(0人工 1自动) + */ + private String bottleneckSetting; + + /** + * 接续关系(ES结束到开始 SS开始到开始) + */ + private String successorRelation; + + /** + * 偏置时间(秒) + */ + private Long offsetTime; + + /** + * 技术附件 + */ + private String techAttachments; + + /** + * 质检员 + */ + private String inspectors; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdMaterialBomBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdMaterialBomBo.java index a5097679..4529e03f 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdMaterialBomBo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/ProdMaterialBomBo.java @@ -120,9 +120,9 @@ public class ProdMaterialBomBo extends BaseEntity { private String activeFlag; /** - * 删除标识(1是 0否) + * 删除标志(0代表存在 2代表删除) */ - private String deleteFlag; + private String delFlag; /** * 备注 diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteMaterialVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteMaterialVo.java new file mode 100644 index 00000000..5d37b069 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteMaterialVo.java @@ -0,0 +1,63 @@ +package org.dromara.mes.domain.vo; + +import org.dromara.mes.domain.ProdBaseRouteMaterial; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 工艺路线关联物料视图对象 prod_base_route_material + * + * @author Yinq + * @date 2025-06-04 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ProdBaseRouteMaterial.class) +public class ProdBaseRouteMaterialVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 关联物料ID + */ + @ExcelProperty(value = "关联物料ID") + private Long routeMaterialId; + + /** + * 工艺路线ID + */ + @ExcelProperty(value = "工艺路线ID") + private Long routeId; + + /** + * 物料ID + */ + @ExcelProperty(value = "物料ID") + private Long materialId; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识(1是 0否)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java index d3a99b24..81da0887 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteProcessVo.java @@ -58,9 +58,6 @@ public class ProdBaseRouteProcessVo implements Serializable { @ExcelProperty(value = "备注") private String remark; - - - /** * 工序名称 */ @@ -73,5 +70,154 @@ public class ProdBaseRouteProcessVo implements Serializable { @ExcelProperty(value = "工序类别", converter = ExcelDictConvert.class) private String processType; + /** + * 委外标识(1自制 2委外) + */ + @ExcelProperty(value = "委外标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_outsourcing_flag") + private String outsourcingFlag; + /** + * 工序类型(1投料 2加工 3装配) + */ + @ExcelProperty(value = "工序类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "process_type") + private String operationType; + + /** + * 是否需要上料(0否 1是) + */ + @ExcelProperty(value = "是否需要上料", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_need_feeding") + private String needFeeding; + + /** + * 设备点检(0不需要 1需要) + */ + @ExcelProperty(value = "设备点检", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_need_equipment_check") + private String needEquipmentCheck; + + /** + * 实际产出率(%) + */ + @ExcelProperty(value = "实际产出率(%)") + private Long actualYieldRate; + + /** + * 领料方式(1领料单 2申请领料 3生产叫料) + */ + @ExcelProperty(value = "领料方式", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_material_method") + private String materialIssuance; + + /** + * 委外提前期(秒) + */ + @ExcelProperty(value = "委外提前期(秒)") + private Long outsourcingLeadTime; + + /** + * 准备时间(秒) + */ + @ExcelProperty(value = "准备时间(秒)") + private Long setupTime; + + /** + * 加工时间(秒) + */ + @ExcelProperty(value = "加工时间(秒)") + private Long processingTime; + + /** + * 拆卸时间(秒) + */ + @ExcelProperty(value = "拆卸时间(秒)") + private Long teardownTime; + + /** + * 生产节拍(秒/件) + */ + @ExcelProperty(value = "生产节拍(秒/件)") + private Long productionTakt; + + /** + * 质检方式(1免检 2自检 3质量检验) + */ + @ExcelProperty(value = "质检方式", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_inspection_method") + private String inspectionMethod; + + /** + * 质量检验规则ID + */ + @ExcelProperty(value = "质量检验规则ID") + private Long qualityRuleId; + + /** + * 关键工序(0否 1是) + */ + @ExcelProperty(value = "关键工序", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_is_key_operation") + private String isKeyOperation; + + /** + * 下工序要求(0无要求 1完成 2质检通过) + */ + @ExcelProperty(value = "下工序要求", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_next_step_requirement") + private String nextStepRequirement; + + /** + * 最后工序(0否 1是) + */ + @ExcelProperty(value = "最后工序", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_is_final_step") + private String isFinalStep; + + /** + * 生成流转卡任务(0否 1是) + */ + @ExcelProperty(value = "生成流转卡任务", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "generate_prepare_task") + private String generatePrepareTask; + + /** + * 瓶颈工序(0否 1是) + */ + @ExcelProperty(value = "瓶颈工序", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_bottleneck_flag") + private String bottleneckFlag; + + /** + * 瓶颈设置(0人工 1自动) + */ + @ExcelProperty(value = "瓶颈设置", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_bottleneck_setting") + private String bottleneckSetting; + + /** + * 接续关系(ES结束到开始 SS开始到开始) + */ + @ExcelProperty(value = "接续关系", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_successor_relation") + private String successorRelation; + + /** + * 偏置时间(秒) + */ + @ExcelProperty(value = "偏置时间(秒)") + private Long offsetTime; + + /** + * 技术附件 + */ + @ExcelProperty(value = "技术附件") + private String techAttachments; + + /** + * 质检员 + */ + @ExcelProperty(value = "质检员") + private String inspectors; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java index b8ed28b3..92c5181c 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProdBaseRouteVo.java @@ -8,6 +8,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.mes.domain.ProdBaseRouteMaterial; import java.io.Serial; import java.io.Serializable; @@ -66,6 +67,64 @@ public class ProdBaseRouteVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + /** + * 工艺路线版本 + */ + @ExcelProperty(value = "工艺路线版本") + private String routeVersion; + + /** + * 生产类型(1正式 2试制 3返修) + */ + @ExcelProperty(value = "生产类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_process_production_type") + private String productionType; + + /** + * 路线类型(1生产 2装配) + */ + @ExcelProperty(value = "路线类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_route_type") + private String routeType; + + /** + * 审核原因 + */ + @ExcelProperty(value = "审核原因") + private String auditReason; + + /** + * 审核人 + */ + @ExcelProperty(value = "审核人") + private Long approveBy; + + /** + * 审核时间 + */ + @ExcelProperty(value = "审核时间") + private Date approveTime; + + /** + * 是否需要首件检验(0否 1是) + */ + @ExcelProperty(value = "是否需要首件检验", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_need_first_inspect") + private String needFirstInspect; + + /** + * 是否打印流转卡(0继承 1是 2否) + */ + @ExcelProperty(value = "是否打印流转卡", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "mes_print_flow_card") + private String printFlowCard; + + /** + * 批次量(0=不拆分) + */ + @ExcelProperty(value = "批次量") + private Long batchSize; + /** * 创建部门 */ @@ -100,7 +159,9 @@ public class ProdBaseRouteVo implements Serializable { * 工艺路线 */ @ExcelIgnore - private List routeProcessVoList; + private List routeProcessList; + @ExcelIgnore + private List prodBaseRouteMaterialList; } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteMaterialMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteMaterialMapper.java new file mode 100644 index 00000000..981cc483 --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdBaseRouteMaterialMapper.java @@ -0,0 +1,15 @@ +package org.dromara.mes.mapper; + +import org.dromara.mes.domain.ProdBaseRouteMaterial; +import org.dromara.mes.domain.vo.ProdBaseRouteMaterialVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 工艺路线关联物料Mapper接口 + * + * @author Yinq + * @date 2025-06-04 + */ +public interface ProdBaseRouteMaterialMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java index 530dec03..c33a269c 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdBaseRouteServiceImpl.java @@ -1,7 +1,6 @@ package org.dromara.mes.service.impl; import cn.hutool.core.util.ObjectUtil; -import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,22 +8,22 @@ import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.dromara.mes.domain.ProdBaseRouteProcess; +import org.dromara.mes.domain.*; import org.dromara.mes.domain.bo.ProdBaseRouteProcessBo; import org.dromara.mes.domain.vo.ProdBaseRouteProcessVo; +import org.dromara.mes.mapper.ProdBaseRouteMaterialMapper; import org.dromara.mes.service.IProdBaseRouteProcessService; import org.springframework.stereotype.Service; import org.dromara.mes.domain.bo.ProdBaseRouteBo; import org.dromara.mes.domain.vo.ProdBaseRouteVo; -import org.dromara.mes.domain.ProdBaseRoute; import org.dromara.mes.mapper.ProdBaseRouteMapper; import org.dromara.mes.service.IProdBaseRouteService; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * 工艺路线Service业务层处理 @@ -40,6 +39,8 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { private final IProdBaseRouteProcessService routeProcessService; + private final ProdBaseRouteMaterialMapper routeMaterialMapper; + /** * 查询工艺路线 * @@ -47,13 +48,22 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { * @return 工艺路线 */ @Override - public ProdBaseRouteVo queryById(Long routeId){ + public ProdBaseRouteVo queryById(Long routeId) { ProdBaseRouteVo prodBaseRouteVo = routeMapper.selectVoById(routeId); - // queryList方法查询工艺路线组陈(工艺步骤) + // queryList方法查询工艺路线组成(工艺步骤) ProdBaseRouteProcessBo prodBaseRouteProcessBo = new ProdBaseRouteProcessBo(); prodBaseRouteProcessBo.setRouteId(routeId); List routeProcessVoList = routeProcessService.queryList(prodBaseRouteProcessBo); - prodBaseRouteVo.setRouteProcessVoList(routeProcessVoList); + prodBaseRouteVo.setRouteProcessList(routeProcessVoList); + + // 关联物料 + MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseRouteMaterial.class); + lqw.selectAll(ProdBaseRouteMaterial.class) + .select(BaseMaterialInfo::getMaterialName) + .leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, ProdBaseRouteMaterial::getMaterialId) + .eq(ProdBaseRouteMaterial::getRouteId, routeId); + List prodBaseRouteMaterialList = routeMaterialMapper.selectList(lqw); + prodBaseRouteVo.setProdBaseRouteMaterialList(prodBaseRouteMaterialList); return prodBaseRouteVo; } @@ -87,13 +97,12 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { private MPJLambdaWrapper buildQueryWrapper(ProdBaseRouteBo bo) { Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(ProdBaseRoute.class) - - .selectAll(ProdBaseRoute.class) - .eq(bo.getRouteId() != null, ProdBaseRoute::getRouteId, bo.getRouteId()) - .like(StringUtils.isNotBlank(bo.getRouteName()), ProdBaseRoute::getRouteName, bo.getRouteName()) - .eq(StringUtils.isNotBlank(bo.getRouteDesc()), ProdBaseRoute::getRouteDesc, bo.getRouteDesc()) - .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseRoute::getActiveFlag, bo.getActiveFlag()) - .orderByDesc(ProdBaseRoute::getCreateTime); + .selectAll(ProdBaseRoute.class) + .eq(bo.getRouteId() != null, ProdBaseRoute::getRouteId, bo.getRouteId()) + .like(StringUtils.isNotBlank(bo.getRouteName()), ProdBaseRoute::getRouteName, bo.getRouteName()) + .eq(StringUtils.isNotBlank(bo.getRouteDesc()), ProdBaseRoute::getRouteDesc, bo.getRouteDesc()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseRoute::getActiveFlag, bo.getActiveFlag()) + .orderByAsc(ProdBaseRoute::getCreateTime); return lqw; } @@ -112,7 +121,16 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { insertProdBaseRouteProcess(bo); boolean flag = routeMapper.insert(add) > 0; if (flag) { + assert add != null; bo.setRouteId(add.getRouteId()); + // 插入关联物料 + List materialList = bo.getProdBaseRouteMaterialList(); + if (materialList != null && !materialList.isEmpty()) { + for (ProdBaseRouteMaterial material : materialList) { + material.setRouteId(add.getRouteId()); + routeMaterialMapper.insert(material); + } + } } return flag; } @@ -131,14 +149,44 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { Long routeId = bo.getRouteId(); routeMapper.deleteProdBaseRouteProcessByRouteId(routeId); insertProdBaseRouteProcess(bo); + // 更新工艺路线关联物料 + List materialList = bo.getProdBaseRouteMaterialList(); + MPJLambdaWrapper lqwMaterial = JoinWrappers.lambda(ProdBaseRouteMaterial.class); + lqwMaterial.eq(ProdBaseRouteMaterial::getRouteId, bo.getRouteId()); + List dbMaterialList = routeMaterialMapper.selectList(lqwMaterial); + if (materialList != null && !materialList.isEmpty()) { + for (ProdBaseRouteMaterial material : materialList) { + material.setRouteId(bo.getRouteId()); + if (material.getRouteMaterialId() == null) { + routeMaterialMapper.insert(material); + } else { + routeMaterialMapper.updateById(material); + } + } + Set existingIds = materialList.stream() + .filter(m -> m.getRouteMaterialId() != null) + .map(ProdBaseRouteMaterial::getRouteMaterialId) + .collect(Collectors.toSet()); + List filteredIds = dbMaterialList.stream() + .filter(field -> !existingIds.contains(field.getRouteMaterialId())) + .toList(); + for (ProdBaseRouteMaterial material : filteredIds) { + routeMaterialMapper.deleteById(material.getRouteMaterialId()); + } + } else if (dbMaterialList != null && !dbMaterialList.isEmpty()) { + // 如果前端传空,全部删除 + for (ProdBaseRouteMaterial material : dbMaterialList) { + routeMaterialMapper.deleteById(material.getRouteMaterialId()); + } + } validEntityBeforeSave(update); - return updateResult > 0; + return updateResult > 0; } /** * 保存前的数据校验 */ - private void validEntityBeforeSave(ProdBaseRoute entity){ + private void validEntityBeforeSave(ProdBaseRoute entity) { //TODO 做一些数据校验,如唯一约束 } @@ -152,7 +200,7 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { @Transactional @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } routeProcessService.deleteWithValidByIds(ids, isValid); @@ -161,31 +209,28 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { /** * 插入工艺路线过程 + * * @param bo 包含工艺路线信息的业务对象 */ - public void insertProdBaseRouteProcess(ProdBaseRouteBo bo) - { + public void insertProdBaseRouteProcess(ProdBaseRouteBo bo) { // 获取工艺路线中的工艺步骤列表 - List prodBaseRouteProcessList = bo.getRouteProcessBoList(); + List prodBaseRouteProcessList = bo.getRouteProcessList(); // 获取工艺路线ID Long routeId = bo.getRouteId(); // 如果工艺步骤列表不为空 - if (ObjectUtil.isNotNull(prodBaseRouteProcessList)) - { + if (ObjectUtil.isNotNull(prodBaseRouteProcessList)) { // 创建一个新的工艺步骤列表 List list = new ArrayList(); // 遍历每一个工艺步骤 - for (ProdBaseRouteProcessBo prodBaseRouteProcess : prodBaseRouteProcessList) - { + for (ProdBaseRouteProcessBo prodBaseRouteProcess : prodBaseRouteProcessList) { // 设置工艺步骤的工艺路线ID prodBaseRouteProcess.setRouteId(routeId); // 将工艺步骤添加到新的列表中 list.add(prodBaseRouteProcess); } // 如果新的工艺步骤列表不为空 - if (!list.isEmpty()) - { + if (!list.isEmpty()) { // 批量插入工艺步骤到数据库 routeMapper.batchProdBaseRouteProcess(list); } @@ -194,6 +239,7 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { /** * 根据工艺路线ID查询工位信息 + * * @param routeId * @return */ @@ -209,8 +255,7 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService { * @return 工艺路线 */ @Override - public ProdBaseRouteVo selectProdBaseRouteByRouteId(Long routeId) - { + public ProdBaseRouteVo selectProdBaseRouteByRouteId(Long routeId) { return routeMapper.selectProdBaseRouteByRouteId(routeId); } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java index 5277c84f..8ef62881 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdMaterialBomServiceImpl.java @@ -1,7 +1,6 @@ package org.dromara.mes.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import org.dromara.common.constant.DatabaseConstants; import org.dromara.common.constant.HwMomMesConstants; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -11,7 +10,6 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.properties.MesProperties; import org.dromara.mes.domain.ProdPlanInfo; import org.dromara.mes.domain.bo.ProdPlanInfoBo; -import org.dromara.mes.domain.vo.ProdPlanInfoVo; import org.dromara.mes.domain.vo.TreeSelect; import org.dromara.mes.mapper.ProdPlanInfoMapper; import org.jetbrains.annotations.NotNull; @@ -70,7 +68,6 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { */ @Override public List queryList(ProdMaterialBomBo bo) { - bo.setDeleteFlag(HwMomMesConstants.DELETE_FLAG_NO); MPJLambdaWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } @@ -87,7 +84,6 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { .like(StringUtils.isNotBlank(bo.getMaterialBomVersion()), ProdMaterialBom::getMaterialBomVersion, bo.getMaterialBomVersion()) .eq(bo.getStandardAmount() != null, ProdMaterialBom::getStandardAmount, bo.getStandardAmount()) .eq(bo.getTopFlag() != null, ProdMaterialBom::getTopFlag, bo.getTopFlag()) - .eq(bo.getDeleteFlag() != null, ProdMaterialBom::getDeleteFlag, bo.getDeleteFlag()) .eq(StringUtils.isNotBlank(bo.getCheckType()), ProdMaterialBom::getCheckType, bo.getCheckType()) .eq(bo.getProjectId() != null, ProdMaterialBom::getProjectId, bo.getProjectId()) .eq(bo.getAssembleTime() != null, ProdMaterialBom::getAssembleTime, bo.getAssembleTime()) @@ -144,7 +140,6 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { @Transactional(rollbackFor = Exception.class) public Boolean publishByBo(ProdMaterialBomBo bo) { String materialBomVersion = bo.getMaterialBomVersion(); - bo.setDeleteFlag(HwMomMesConstants.DELETE_FLAG_NO); bo.setMaterialBomVersion(null); //先获取parentid所有的物料bom信息 @@ -223,7 +218,6 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { materialBomBos.forEach(materialBomBo -> { validEntityUsed(materialBomBo); ProdMaterialBom update = MapstructUtils.convert(materialBomBo, ProdMaterialBom.class); - update.setDeleteFlag(HwMomMesConstants.DELETE_FLAG_YES); baseMapper.updateById(update); }); @@ -850,7 +844,6 @@ public class ProdMaterialBomServiceImpl implements IProdMaterialBomService { */ @Override public List queryList4Select(ProdMaterialBomBo bo) { - bo.setDeleteFlag(HwMomMesConstants.DELETE_FLAG_NO); MPJLambdaWrapper lqw = buildQueryWrapper(bo); List prodMaterialBomVos = baseMapper.selectVoList(lqw); diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdShiftChangeServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdShiftChangeServiceImpl.java index 0bcc2093..3b9d7508 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdShiftChangeServiceImpl.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/ProdShiftChangeServiceImpl.java @@ -93,7 +93,6 @@ public class ProdShiftChangeServiceImpl implements IProdShiftChangeService { .leftJoin(ProdBaseMachineInfo.class,ProdBaseMachineInfo::getMachineId,ProdShiftChange::getMachineId) - .eq(bo.getShiftChangeId() != null, ProdShiftChange::getShiftChangeId, bo.getShiftChangeId()) .eq(bo.getShiftChangeTime() != null, ProdShiftChange::getShiftChangeTime, bo.getShiftChangeTime()) .eq(bo.getMachineId() != null, ProdShiftChange::getMachineId, bo.getMachineId()) diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseRouteMaterialMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseRouteMaterialMapper.xml new file mode 100644 index 00000000..5cfb441d --- /dev/null +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdBaseRouteMaterialMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml index ea467c71..127c34b0 100644 --- a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdMaterialBomMapper.xml @@ -23,6 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join base_material_type bmt on bmi.material_type_id = bmt.matrial_type_id left join base_material_type bmtp on pmb.parent_material_type_id = bmtp.matrial_type_id + pmb.del_flag='0' and bmt.matrial_type_code like concat('%', #{materialTypeCode}, '%') @@ -62,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -96,7 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -115,7 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pmb.material_bom_desc, bmt.matrial_type_name as parent_material_type_name from base_material_info bmi - left join prod_material_bom pmb on pmb.parent_id=bmi.material_id and pmb.material_bom_version = #{materialBomVersion} and pmb.delete_flag='0' + left join prod_material_bom pmb on pmb.parent_id=bmi.material_id and pmb.material_bom_version = #{materialBomVersion} and pmb.del_flag='0' left join base_material_type bmt on bmi.material_type_id = bmt.matrial_type_id and bmi.material_id = #{parentId} @@ -139,7 +140,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join base_material_info bmi on pmb.parent_id=bmi.material_id left join base_material_type bmt on bmi.parent_material_type_id = bmt.matrial_type_id - and pmb.delete_flag='0' + pmb.del_flag='0' and pmb.top_flag = #{topFlag} @@ -160,7 +161,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bmt.matrial_type_code as material_type_code, bmt.matrial_type_name as material_type_name from base_structure_bom bsb - left join prod_material_bom pmb on pmb.material_type_id = bsb.material_type_id and pmb.parent_id = #{parentId} and pmb.material_bom_version=#{materialBomVersion} and pmb.delete_flag='0' + left join prod_material_bom pmb on pmb.material_type_id = bsb.material_type_id and pmb.parent_id = #{parentId} and pmb.material_bom_version=#{materialBomVersion} and pmb.del_flag='0' left join base_material_info bmi on pmb.material_id=bmi.material_id left join base_material_type bmt on bsb.material_type_id = bmt.matrial_type_id @@ -182,7 +183,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcInspectionTaskController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcInspectionTaskController.java new file mode 100644 index 00000000..4c32d0e8 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcInspectionTaskController.java @@ -0,0 +1,127 @@ +package org.dromara.qms.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.qms.domain.vo.QcInspectionTaskVo; +import org.dromara.qms.domain.bo.QcInspectionTaskBo; +import org.dromara.qms.service.IQcInspectionTaskService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 检验任务处理 + * 前端访问路由地址为:/qms/inspectionTask + * + * @author LionLi + * @date 2025-05-27 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/inspectionTask") +public class QcInspectionTaskController extends BaseController { + + private final IQcInspectionTaskService qcInspectionTaskService; + + /** + * 查询检验任务处理列表 + */ + @SaCheckPermission("qms:inspectionTask:list") + @GetMapping("/list") + public TableDataInfo list(QcInspectionTaskBo bo, PageQuery pageQuery) { + return qcInspectionTaskService.queryPageList(bo, pageQuery); + } + + /** + * 导出检验任务处理列表 + */ + @SaCheckPermission("qms:inspectionTask:export") + @Log(title = "检验任务处理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(QcInspectionTaskBo bo, HttpServletResponse response) { + List list = qcInspectionTaskService.queryList(bo); + ExcelUtil.exportExcel(list, "检验任务处理", QcInspectionTaskVo.class, response); + } + + /** + * 获取检验任务处理详细信息 + * + * @param taskId 主键 + */ + @SaCheckPermission("qms:inspectionTask:query") + @GetMapping("/{taskId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String taskId) { + return R.ok(qcInspectionTaskService.queryById(taskId)); + } + + /** + * 新增检验任务处理 + */ + @SaCheckPermission("qms:inspectionTask:add") + @Log(title = "检验任务处理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody QcInspectionTaskBo bo) { + return toAjax(qcInspectionTaskService.insertByBo(bo)); + } + + /** + * 修改检验任务处理 + */ + @SaCheckPermission("qms:inspectionTask:edit") + @Log(title = "检验任务处理", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody QcInspectionTaskBo bo) { + return toAjax(qcInspectionTaskService.updateByBo(bo)); + } + + /** + * 删除检验任务处理 + * + * @param taskIds 主键串 + */ + @SaCheckPermission("qms:inspectionTask:remove") + @Log(title = "检验任务处理", businessType = BusinessType.DELETE) + @DeleteMapping("/{taskIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable String[] taskIds) { + return toAjax(qcInspectionTaskService.deleteWithValidByIds(List.of(taskIds), true)); + } + + + /** + * 下拉框查询检验任务处理列表 + */ + + @GetMapping("/getQcInspectionTaskList") + public R> getQcInspectionTaskList(QcInspectionTaskBo bo) { + List list = qcInspectionTaskService.queryList(bo); + return R.ok(list); + } + + /** + * 上位机新增检验任务处理 + */ + @Log(title = "检验任务处理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/InspectionTaskByHMI") + public R addInspectionTaskByHMI(@Validated(AddGroup.class) @RequestBody QcInspectionTaskBo bo) { + return toAjax(qcInspectionTaskService.addInspectionTaskByHMI(bo)); + } +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcInspectionTask.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcInspectionTask.java new file mode 100644 index 00000000..6626cb36 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcInspectionTask.java @@ -0,0 +1,106 @@ +package org.dromara.qms.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 检验任务处理对象 qc_inspection_task + * + * @author LionLi + * @date 2025-05-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("qc_inspection_task") +public class QcInspectionTask extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @TableId(value = "task_id") + private Long taskId; + + /** + * 检验类型 + */ + private String category; + + /** + * 任务编号 + */ + private String taskNo; + + /** + * 任务描述 + */ + private String description; + + /** + * 任务状态 + */ + private String status; + + /** + * 生产车间 + */ + private String workCenter; + + /** + * 工单编号 + */ + private String shopOrder; + + /** + * 生产批次 + */ + private String sfc; + + /** + * 工序编号 + */ + private String operation; + + /** + * 工艺路线步骤标识 + */ + private String stepId; + + /** + * 资源编号 + */ + private String resrce; + + /** + * 任务结果 + */ + private String result; + + /** + * PDA扫描字段,轮胎号或者流转卡。存质检物料扫描标识 + */ + private String qcMaterialCode; + + /** + * 物料id + */ + private Long materialId; + + /** + * 预留字段 + */ + private String attr3; + + /** + * 预留字段 + */ + private String attr4; + + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionTaskBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionTaskBo.java new file mode 100644 index 00000000..3ed914bf --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionTaskBo.java @@ -0,0 +1,117 @@ +package org.dromara.qms.domain.bo; + +import org.dromara.qms.domain.QcInspectionTask; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 检验任务处理业务对象 qc_inspection_task + * + * @author LionLi + * @date 2025-05-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = QcInspectionTask.class, reverseConvertGenerate = false) +public class QcInspectionTaskBo extends BaseEntity { + + /** + * 主键标识 + */ + private Long taskId; + + /** + * 检验类型 + */ + @NotBlank(message = "检验类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String category; + + /** + * 任务编号 + */ + + private String taskNo; + + /** + * 任务描述 + */ + @NotBlank(message = "任务描述不能为空", groups = { AddGroup.class, EditGroup.class }) + private String description; + + /** + * 任务状态 + */ + @NotBlank(message = "任务状态不能为空", groups = { AddGroup.class, EditGroup.class }) + private String status; + + /** + * 生产车间 + */ + @NotBlank(message = "生产车间不能为空", groups = { AddGroup.class, EditGroup.class }) + private String workCenter; + + /** + * 工单编号 + */ + @NotBlank(message = "工单编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String shopOrder; + + /** + * 生产批次 + */ + @NotBlank(message = "生产批次不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sfc; + + /** + * 工序编号 + */ + @NotBlank(message = "工序编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String operation; + + /** + * 工艺路线步骤标识 + */ + + private String stepId; + + /** + * 资源编号 + */ + @NotBlank(message = "资源编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String resrce; + + /** + * 任务结果 + */ + + private String result; + + /** + * PDA扫描字段,轮胎号或者流转卡。存质检物料扫描标识 + */ + @NotBlank(message = "PDA扫描字段,轮胎号或者流转卡。存质检物料扫描标识不能为空", groups = { AddGroup.class, EditGroup.class }) + private String qcMaterialCode; + + /** + * 物料id + */ + @NotNull(message = "物料id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long materialId; + + /** + * 预留字段 + */ + private String attr3; + + /** + * 预留字段 + */ + private String attr4; + + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcInspectionTaskVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcInspectionTaskVo.java new file mode 100644 index 00000000..3b9e0598 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcInspectionTaskVo.java @@ -0,0 +1,123 @@ +package org.dromara.qms.domain.vo; + +import org.dromara.qms.domain.QcInspectionTask; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 检验任务处理视图对象 qc_inspection_task + * + * @author LionLi + * @date 2025-05-27 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = QcInspectionTask.class) +public class QcInspectionTaskVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 检验类型 + */ + @ExcelProperty(value = "检验类型") + private String category; + + /** + * 任务编号 + */ + @ExcelProperty(value = "任务编号") + private String taskNo; + + /** + * 任务描述 + */ + @ExcelProperty(value = "任务描述") + private String description; + + /** + * 任务状态 + */ + @ExcelProperty(value = "任务状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "inspection_task_status") + private String status; + + /** + * 生产车间 + */ + @ExcelProperty(value = "生产车间") + private String workCenter; + + /** + * 工单编号 + */ + @ExcelProperty(value = "工单编号") + private String shopOrder; + + /** + * 生产批次 + */ + @ExcelProperty(value = "生产批次") + private String sfc; + + /** + * 工序编号 + */ + @ExcelProperty(value = "工序编号") + private String operation; + + /** + * 工艺路线步骤标识 + */ + @ExcelProperty(value = "工艺路线步骤标识") + private String stepId; + + /** + * 资源编号 + */ + @ExcelProperty(value = "资源编号") + private String resrce; + + /** + * 任务结果 + */ + @ExcelProperty(value = "任务结果") + private String result; + + /** + * PDA扫描字段,轮胎号或者流转卡。存质检物料扫描标识 + */ + @ExcelProperty(value = "PDA扫描字段,轮胎号或者流转卡。存质检物料扫描标识") + private String qcMaterialCode; + + /** + * 物料id + */ + @ExcelProperty(value = "物料id") + private Long materialId; + + /** + * 预留字段 + */ + @ExcelProperty(value = "预留字段") + private String attr3; + + /** + * 预留字段 + */ + @ExcelProperty(value = "预留字段") + private String attr4; + + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/QcInspectionTaskMapper.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/QcInspectionTaskMapper.java new file mode 100644 index 00000000..63daf2be --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/QcInspectionTaskMapper.java @@ -0,0 +1,15 @@ +package org.dromara.qms.mapper; + +import org.dromara.qms.domain.QcInspectionTask; +import org.dromara.qms.domain.vo.QcInspectionTaskVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 检验任务处理Mapper接口 + * + * @author LionLi + * @date 2025-05-27 + */ +public interface QcInspectionTaskMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcInspectionTaskService.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcInspectionTaskService.java new file mode 100644 index 00000000..e22f68d3 --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcInspectionTaskService.java @@ -0,0 +1,72 @@ +package org.dromara.qms.service; + +import org.dromara.qms.domain.QcInspectionTask; +import org.dromara.qms.domain.vo.QcInspectionTaskVo; +import org.dromara.qms.domain.bo.QcInspectionTaskBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 检验任务处理Service接口 + * + * @author LionLi + * @date 2025-05-27 + */ +public interface IQcInspectionTaskService { + + /** + * 查询检验任务处理 + * + * @param taskId 主键 + * @return 检验任务处理 + */ + QcInspectionTaskVo queryById(String taskId); + + /** + * 分页查询检验任务处理列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 检验任务处理分页列表 + */ + TableDataInfo queryPageList(QcInspectionTaskBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的检验任务处理列表 + * + * @param bo 查询条件 + * @return 检验任务处理列表 + */ + List queryList(QcInspectionTaskBo bo); + + /** + * 新增检验任务处理 + * + * @param bo 检验任务处理 + * @return 是否新增成功 + */ + Boolean insertByBo(QcInspectionTaskBo bo); + + /** + * 修改检验任务处理 + * + * @param bo 检验任务处理 + * @return 是否修改成功 + */ + Boolean updateByBo(QcInspectionTaskBo bo); + + /** + * 校验并批量删除检验任务处理信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + Boolean addInspectionTaskByHMI(QcInspectionTaskBo bo); +} diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionTaskServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionTaskServiceImpl.java new file mode 100644 index 00000000..0ca9fdcd --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionTaskServiceImpl.java @@ -0,0 +1,157 @@ +package org.dromara.qms.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.qms.domain.bo.QcInspectionTaskBo; +import org.dromara.qms.domain.vo.QcInspectionTaskVo; +import org.dromara.qms.domain.QcInspectionTask; +import org.dromara.qms.mapper.QcInspectionTaskMapper; +import org.dromara.qms.service.IQcInspectionTaskService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 检验任务处理Service业务层处理 + * + * @author LionLi + * @date 2025-05-27 + */ +@RequiredArgsConstructor +@Service +public class QcInspectionTaskServiceImpl implements IQcInspectionTaskService { + + private final QcInspectionTaskMapper baseMapper; + + /** + * 查询检验任务处理 + * + * @param taskId 主键 + * @return 检验任务处理 + */ + @Override + public QcInspectionTaskVo queryById(String taskId){ + return baseMapper.selectVoById(taskId); + } + + /** + * 分页查询检验任务处理列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 检验任务处理分页列表 + */ + @Override + public TableDataInfo queryPageList(QcInspectionTaskBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的检验任务处理列表 + * + * @param bo 查询条件 + * @return 检验任务处理列表 + */ + @Override + public List queryList(QcInspectionTaskBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(QcInspectionTaskBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(QcInspectionTask.class) + .selectAll(QcInspectionTask.class) + .eq(StringUtils.isNotBlank(bo.getCategory()), QcInspectionTask::getCategory, bo.getCategory()) + .eq(StringUtils.isNotBlank(bo.getTaskNo()), QcInspectionTask::getTaskNo, bo.getTaskNo()) + .eq(StringUtils.isNotBlank(bo.getDescription()), QcInspectionTask::getDescription, bo.getDescription()) + .eq(StringUtils.isNotBlank(bo.getStatus()), QcInspectionTask::getStatus, bo.getStatus()) + .eq(StringUtils.isNotBlank(bo.getWorkCenter()), QcInspectionTask::getWorkCenter, bo.getWorkCenter()) + .eq(StringUtils.isNotBlank(bo.getShopOrder()), QcInspectionTask::getShopOrder, bo.getShopOrder()) + .eq(StringUtils.isNotBlank(bo.getSfc()), QcInspectionTask::getSfc, bo.getSfc()) + .eq(StringUtils.isNotBlank(bo.getOperation()), QcInspectionTask::getOperation, bo.getOperation()) + .eq(StringUtils.isNotBlank(bo.getStepId()), QcInspectionTask::getStepId, bo.getStepId()) + .eq(StringUtils.isNotBlank(bo.getResrce()), QcInspectionTask::getResrce, bo.getResrce()) + .eq(StringUtils.isNotBlank(bo.getResult()), QcInspectionTask::getResult, bo.getResult()) + .eq(StringUtils.isNotBlank(bo.getQcMaterialCode()), QcInspectionTask::getQcMaterialCode, bo.getQcMaterialCode()) + .eq(bo.getMaterialId() != null, QcInspectionTask::getMaterialId, bo.getMaterialId()) + .eq(StringUtils.isNotBlank(bo.getAttr3()), QcInspectionTask::getAttr3, bo.getAttr3()) + .eq(StringUtils.isNotBlank(bo.getAttr4()), QcInspectionTask::getAttr4, bo.getAttr4()) + .orderByDesc(QcInspectionTask::getCreateTime); + return lqw; + } + + /** + * 新增检验任务处理 + * + * @param bo 检验任务处理 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(QcInspectionTaskBo bo) { + QcInspectionTask add = MapstructUtils.convert(bo, QcInspectionTask.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTaskId(add.getTaskId()); + } + return flag; + } + + /** + * 修改检验任务处理 + * + * @param bo 检验任务处理 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(QcInspectionTaskBo bo) { + QcInspectionTask update = MapstructUtils.convert(bo, QcInspectionTask.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(QcInspectionTask entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除检验任务处理信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public Boolean addInspectionTaskByHMI(QcInspectionTaskBo bo) { + QcInspectionTask add = MapstructUtils.convert(bo, QcInspectionTask.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTaskId(add.getTaskId()); + } + return flag; + } +} diff --git a/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/QcInspectionTaskMapper.xml b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/QcInspectionTaskMapper.xml new file mode 100644 index 00000000..12ef5a4a --- /dev/null +++ b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/QcInspectionTaskMapper.xml @@ -0,0 +1,7 @@ + + + + +