From 71ef24a25844527f7bfe5278a8b897f014967260 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 28 Mar 2026 18:51:12 +0800 Subject: [PATCH] ✨ feat(mes): 添加工作站设备资源的级联删除功能 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineService.java | 7 +++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineServiceImpl.java | 33 ++++++++++++++++++++++++++++----- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java | 66 +++++++++++++++++++++++++++++++++--------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolService.java | 7 +++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolServiceImpl.java | 31 +++++++++++++++++++++++++------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerService.java | 7 +++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerServiceImpl.java | 32 ++++++++++++++++++++++++++------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/pendinginspect/MesQcPendingInspectServiceImpl.java | 2 -- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeService.java | 7 +++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeServiceImpl.java | 3 ++- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionService.java | 1 - yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/dto/MesWmTransactionSaveReqDTO.java | 2 -- 15 files changed, 145 insertions(+), 59 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index b61c018..07e3e5c 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -79,7 +79,7 @@ public interface ErrorCodeConstants { ErrorCode MD_WORKSTATION_NAME_DUPLICATE = new ErrorCode(1_040_106_002, "工作站名称已存在"); // ========== MES 基础数据-设备资源(1-040-106-100) ========== ErrorCode MD_WORKSTATION_MACHINE_NOT_EXISTS = new ErrorCode(1_040_106_100, "设备资源记录不存在"); - ErrorCode MD_WORKSTATION_MACHINE_EXISTS = new ErrorCode(1_040_106_101, "该设备已分配到其他工作站"); + ErrorCode MD_WORKSTATION_MACHINE_EXISTS = new ErrorCode(1_040_106_101, "该设备已分配至工作站:{}"); // ========== MES 基础数据-工装夹具资源(1-040-106-200) ========== ErrorCode MD_WORKSTATION_TOOL_NOT_EXISTS = new ErrorCode(1_040_106_200, "工装夹具资源记录不存在"); ErrorCode MD_WORKSTATION_TOOL_TYPE_EXISTS = new ErrorCode(1_040_106_201, "该工具类型已在此工作站中存在"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineService.java index b973f3f..9352feb 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineService.java @@ -36,4 +36,11 @@ public interface MesMdWorkstationMachineService { */ List getWorkstationMachineListByWorkstationId(Long workstationId); + /** + * 按工作站编号删除设备资源(级联删除) + * + * @param workstationId 工作站编号 + */ + void deleteWorkstationMachineByWorkstationId(Long workstationId); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineServiceImpl.java index 94bc0a9..9ac239f 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineServiceImpl.java @@ -2,8 +2,11 @@ package cn.iocoder.yudao.module.mes.service.md.workstation; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.machine.MesMdWorkstationMachineSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationMachineDO; import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMachineMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMapper; +import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -25,13 +28,16 @@ public class MesMdWorkstationMachineServiceImpl implements MesMdWorkstationMachi @Resource private MesMdWorkstationMachineMapper workstationMachineMapper; + @Resource + private MesMdWorkstationMapper workstationMapper; + + @Resource + private MesDvMachineryService machineryService; + @Override public Long createWorkstationMachine(MesMdWorkstationMachineSaveReqVO createReqVO) { - // 校验该设备是否已分配到其他工作站 - MesMdWorkstationMachineDO existing = workstationMachineMapper.selectByMachineryId(createReqVO.getMachineryId()); - if (existing != null) { - throw exception(MD_WORKSTATION_MACHINE_EXISTS); - } + // 校验数据 + validateWorkstationMachineSaveData(createReqVO); // 插入 MesMdWorkstationMachineDO machine = BeanUtils.toBean(createReqVO, MesMdWorkstationMachineDO.class); @@ -39,6 +45,18 @@ public class MesMdWorkstationMachineServiceImpl implements MesMdWorkstationMachi return machine.getId(); } + private void validateWorkstationMachineSaveData(MesMdWorkstationMachineSaveReqVO reqVO) { + // 校验设备是否存在 + machineryService.validateMachineryExists(reqVO.getMachineryId()); + // 校验该设备是否已分配到其他工作站(一台设备只能分配到一个工作站) + MesMdWorkstationMachineDO existing = workstationMachineMapper.selectByMachineryId(reqVO.getMachineryId()); + if (existing != null) { + MesMdWorkstationDO workstation = workstationMapper.selectById(existing.getWorkstationId()); + throw exception(MD_WORKSTATION_MACHINE_EXISTS, + workstation != null ? workstation.getName() : String.valueOf(existing.getWorkstationId())); + } + } + @Override public void deleteWorkstationMachine(Long id) { if (workstationMachineMapper.selectById(id) == null) { @@ -52,4 +70,9 @@ public class MesMdWorkstationMachineServiceImpl implements MesMdWorkstationMachi return workstationMachineMapper.selectListByWorkstationId(workstationId); } + @Override + public void deleteWorkstationMachineByWorkstationId(Long workstationId) { + workstationMachineMapper.deleteByWorkstationId(workstationId); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java index da97ee6..5b2dbc8 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java @@ -9,11 +9,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorks import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; -import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMachineMapper; import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMapper; -import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationToolMapper; -import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationWorkerMapper; import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum; import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService; import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; @@ -45,29 +43,22 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService { private MesMdWorkstationMapper workstationMapper; @Resource - private MesMdWorkstationMachineMapper workstationMachineMapper; - + private MesMdWorkstationMachineService workstationMachineService; @Resource - private MesMdWorkstationToolMapper workstationToolMapper; - + private MesMdWorkstationToolService workstationToolService; @Resource - private MesMdWorkstationWorkerMapper workstationWorkerMapper; + private MesMdWorkstationWorkerService workstationWorkerService; @Resource private MesMdWorkshopService workshopService; - @Resource private MesWmWarehouseService warehouseService; - @Resource private MesWmWarehouseLocationService locationService; - @Resource private MesWmWarehouseAreaService areaService; - @Resource private MesWmBarcodeService barcodeService; - @Resource private MesProProcessService processService; @@ -107,8 +98,8 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService { validateWorkshopExists(reqVO.getWorkshopId()); // 校验工序存在 processService.validateProcessExists(reqVO.getProcessId()); - // 校验仓库层级 - validateWarehouseHierarchy(reqVO); + // 处理仓库层级(未指定仓库时自动设置虚拟线边库) + handleWarehouseHierarchy(reqVO); } @Override @@ -118,9 +109,9 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService { validateWorkstationExists(id); // 级联删除子资源 - workstationMachineMapper.deleteByWorkstationId(id); - workstationToolMapper.deleteByWorkstationId(id); - workstationWorkerMapper.deleteByWorkstationId(id); + workstationMachineService.deleteWorkstationMachineByWorkstationId(id); + workstationToolService.deleteWorkstationToolByWorkstationId(id); + workstationWorkerService.deleteWorkstationWorkerByWorkstationId(id); // 删除工作站 workstationMapper.deleteById(id); } @@ -142,22 +133,31 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService { } /** - * 校验仓库层级关系 + * 校验并处理仓库层级关系 * - * 仓库层级结构:仓库 -> 库位 -> 库区 - * 校验规则: - * 1. 如果填写了库位,必须填写仓库,且库位必须属于该仓库 - * 2. 如果填写了库区,必须填写库位,且库区必须属于该库位 + * 仓库层级结构:仓库 -> 库区 -> 库位 + * 处理规则: + * 1. 如果仓库/库区/库位都未填写,则自动设置虚拟线边库 + * 2. 如果填写了库区,必须填写仓库,且库区必须属于该仓库 + * 3. 如果填写了库位,必须填写库区,且库位必须属于该库区 * * @param reqVO 工作站保存请求对象 */ - private void validateWarehouseHierarchy(MesMdWorkstationSaveReqVO reqVO) { - // 1.1 获取仓库、库位、库区 ID + private void handleWarehouseHierarchy(MesMdWorkstationSaveReqVO reqVO) { + // 1.1 获取仓库、库区、库位 ID Long warehouseId = reqVO.getWarehouseId(); Long locationId = reqVO.getLocationId(); Long areaId = reqVO.getAreaId(); - // 1.2 如果都为空,则无需校验 + // 1.2 如果都为空,则自动设置虚拟线边库 if (warehouseId == null && locationId == null && areaId == null) { + MesWmWarehouseDO warehouse = warehouseService.getWarehouseByCode(MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE); + MesWmWarehouseLocationDO location = locationService.getWarehouseLocationByCode( + MesWmWarehouseLocationDO.WIP_VIRTUAL_LOCATION); + MesWmWarehouseAreaDO area = areaService.getWarehouseAreaByCode( + MesWmWarehouseAreaDO.WIP_VIRTUAL_AREA); + reqVO.setWarehouseId(warehouse.getId()); + reqVO.setLocationId(location.getId()); + reqVO.setAreaId(area.getId()); return; } @@ -166,32 +166,32 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService { warehouseService.validateWarehouseExists(warehouseId); } - // 3. 校验库位:如果填写了库位,必须填写仓库,且库位必须属于该仓库 + // 3. 校验库区:如果填写了库区,必须填写仓库,且库区必须属于该仓库 MesWmWarehouseLocationDO location; if (locationId != null) { - // 3.1 校验库位是否存在 + // 3.1 校验库区是否存在 location = locationService.validateWarehouseLocationExists(locationId); // 3.2 校验必须填写仓库 if (warehouseId == null) { throw exception(WM_WAREHOUSE_REQUIRED); } - // 3.3 校验库位是否属于该仓库 + // 3.3 校验库区是否属于该仓库 if (ObjUtil.notEqual(location.getWarehouseId(), warehouseId)) { throw exception(WM_WAREHOUSE_LOCATION_RELATION_INVALID); } } - // 4. 校验库区:如果填写了库区,必须填写库位,且库区必须属于该库位 + // 4. 校验库位:如果填写了库位,必须填写库区,且库位必须属于该库区 if (areaId == null) { return; } - // 4.1 校验库区是否存在 + // 4.1 校验库位是否存在 MesWmWarehouseAreaDO area = areaService.validateWarehouseAreaExists(areaId); - // 4.2 校验必须填写库位 + // 4.2 校验必须填写库区 if (locationId == null) { throw exception(WM_WAREHOUSE_LOCATION_REQUIRED); } - // 4.3 校验库区是否属于该库位 + // 4.3 校验库位是否属于该库区 if (ObjUtil.notEqual(area.getLocationId(), locationId)) { throw exception(WM_WAREHOUSE_AREA_RELATION_INVALID); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolService.java index 9253b74..bf5160d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolService.java @@ -43,4 +43,11 @@ public interface MesMdWorkstationToolService { */ List getWorkstationToolListByWorkstationId(Long workstationId); + /** + * 按工作站编号删除工装夹具资源(级联删除) + * + * @param workstationId 工作站编号 + */ + void deleteWorkstationToolByWorkstationId(Long workstationId); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolServiceImpl.java index bc747e1..a8f5d51 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolServiceImpl.java @@ -1,9 +1,11 @@ package cn.iocoder.yudao.module.mes.service.md.workstation; +import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.tool.MesMdWorkstationToolSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationToolDO; import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationToolMapper; +import cn.iocoder.yudao.module.mes.service.tm.tool.MesTmToolTypeService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -25,14 +27,13 @@ public class MesMdWorkstationToolServiceImpl implements MesMdWorkstationToolServ @Resource private MesMdWorkstationToolMapper workstationToolMapper; + @Resource + private MesTmToolTypeService toolTypeService; + @Override public Long createWorkstationTool(MesMdWorkstationToolSaveReqVO createReqVO) { - // 校验同一工作站下工具类型不重复 - MesMdWorkstationToolDO existing = workstationToolMapper.selectByWorkstationIdAndToolTypeId( - createReqVO.getWorkstationId(), createReqVO.getToolTypeId()); - if (existing != null) { - throw exception(MD_WORKSTATION_TOOL_TYPE_EXISTS); - } + // 校验数据 + validateWorkstationToolSaveData(null, createReqVO); // 插入 MesMdWorkstationToolDO tool = BeanUtils.toBean(createReqVO, MesMdWorkstationToolDO.class); @@ -44,12 +45,25 @@ public class MesMdWorkstationToolServiceImpl implements MesMdWorkstationToolServ public void updateWorkstationTool(MesMdWorkstationToolSaveReqVO updateReqVO) { // 校验存在 validateWorkstationToolExists(updateReqVO.getId()); + // 校验数据 + validateWorkstationToolSaveData(updateReqVO.getId(), updateReqVO); // 更新 MesMdWorkstationToolDO updateObj = BeanUtils.toBean(updateReqVO, MesMdWorkstationToolDO.class); workstationToolMapper.updateById(updateObj); } + private void validateWorkstationToolSaveData(Long id, MesMdWorkstationToolSaveReqVO reqVO) { + // 校验工具类型是否存在 + toolTypeService.validateToolTypeExists(reqVO.getToolTypeId()); + // 校验同一工作站下工具类型不重复(排除自身) + MesMdWorkstationToolDO existing = workstationToolMapper.selectByWorkstationIdAndToolTypeId( + reqVO.getWorkstationId(), reqVO.getToolTypeId()); + if (existing != null && ObjUtil.notEqual(existing.getId(), id)) { + throw exception(MD_WORKSTATION_TOOL_TYPE_EXISTS); + } + } + @Override public void deleteWorkstationTool(Long id) { // 校验存在 @@ -70,4 +84,9 @@ public class MesMdWorkstationToolServiceImpl implements MesMdWorkstationToolServ return workstationToolMapper.selectListByWorkstationId(workstationId); } + @Override + public void deleteWorkstationToolByWorkstationId(Long workstationId) { + workstationToolMapper.deleteByWorkstationId(workstationId); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerService.java index 3a63ce9..ce818fc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerService.java @@ -43,4 +43,11 @@ public interface MesMdWorkstationWorkerService { */ List getWorkstationWorkerListByWorkstationId(Long workstationId); + /** + * 按工作站编号删除人力资源(级联删除) + * + * @param workstationId 工作站编号 + */ + void deleteWorkstationWorkerByWorkstationId(Long workstationId); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerServiceImpl.java index e65c94c..6391196 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerServiceImpl.java @@ -1,13 +1,16 @@ package cn.iocoder.yudao.module.mes.service.md.workstation; +import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationWorkerSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationWorkerDO; import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationWorkerMapper; +import cn.iocoder.yudao.module.system.api.dept.PostApi; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -25,14 +28,13 @@ public class MesMdWorkstationWorkerServiceImpl implements MesMdWorkstationWorker @Resource private MesMdWorkstationWorkerMapper workstationWorkerMapper; + @Resource + private PostApi postApi; + @Override public Long createWorkstationWorker(MesMdWorkstationWorkerSaveReqVO createReqVO) { - // 校验同一工作站下岗位不重复 - MesMdWorkstationWorkerDO existing = workstationWorkerMapper.selectByWorkstationIdAndPostId( - createReqVO.getWorkstationId(), createReqVO.getPostId()); - if (existing != null) { - throw exception(MD_WORKSTATION_WORKER_POST_EXISTS); - } + // 校验数据 + validateWorkstationWorkerSaveData(null, createReqVO); // 插入 MesMdWorkstationWorkerDO worker = BeanUtils.toBean(createReqVO, MesMdWorkstationWorkerDO.class); @@ -44,12 +46,25 @@ public class MesMdWorkstationWorkerServiceImpl implements MesMdWorkstationWorker public void updateWorkstationWorker(MesMdWorkstationWorkerSaveReqVO updateReqVO) { // 校验存在 validateWorkstationWorkerExists(updateReqVO.getId()); + // 校验数据 + validateWorkstationWorkerSaveData(updateReqVO.getId(), updateReqVO); // 更新 MesMdWorkstationWorkerDO updateObj = BeanUtils.toBean(updateReqVO, MesMdWorkstationWorkerDO.class); workstationWorkerMapper.updateById(updateObj); } + private void validateWorkstationWorkerSaveData(Long id, MesMdWorkstationWorkerSaveReqVO reqVO) { + // 校验岗位是否存在 + postApi.validPostList(Collections.singleton(reqVO.getPostId())); + // 校验同一工作站下岗位不重复(排除自身) + MesMdWorkstationWorkerDO existing = workstationWorkerMapper.selectByWorkstationIdAndPostId( + reqVO.getWorkstationId(), reqVO.getPostId()); + if (existing != null && ObjUtil.notEqual(existing.getId(), id)) { + throw exception(MD_WORKSTATION_WORKER_POST_EXISTS); + } + } + @Override public void deleteWorkstationWorker(Long id) { // 校验存在 @@ -70,4 +85,9 @@ public class MesMdWorkstationWorkerServiceImpl implements MesMdWorkstationWorker return workstationWorkerMapper.selectListByWorkstationId(workstationId); } + @Override + public void deleteWorkstationWorkerByWorkstationId(Long workstationId) { + workstationWorkerMapper.deleteByWorkstationId(workstationId); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java index a604030..ccb6559 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java @@ -245,7 +245,7 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { } /** - * 推导工序 ID:对齐 KTG getProcessInfo() 逻辑 + * 推导工序 ID * *

通过产品 → 工艺路线产品 → 工艺路线 → 校验工位工序是否在该路线中 *

如果工位的工序在路线中,则返回该 processId;否则返回 null diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/pendinginspect/MesQcPendingInspectServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/pendinginspect/MesQcPendingInspectServiceImpl.java index c11205b..091e519 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/pendinginspect/MesQcPendingInspectServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/pendinginspect/MesQcPendingInspectServiceImpl.java @@ -12,8 +12,6 @@ import org.springframework.validation.annotation.Validated; /** * MES 待检任务 Service 实现类 - * - * 使用 UNION ALL SQL 从多个来源表查询待检行,对齐 KTG 的 QcPendingInspectMapper.xml 实现 */ @Service @Validated diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeService.java index 4f69e2a..c59975d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeService.java @@ -65,6 +65,13 @@ public interface MesTmToolTypeService { List getToolTypeList(); /** + * 校验工具类型是否存在 + * + * @param id 编号 + */ + void validateToolTypeExists(Long id); + + /** * 获得工具类型列表 * * @param ids 编号数组 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeServiceImpl.java index 0fda3cd..9ed57e2 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/tm/tool/MesTmToolTypeServiceImpl.java @@ -76,7 +76,8 @@ public class MesTmToolTypeServiceImpl implements MesTmToolTypeService { toolTypeMapper.deleteById(id); } - private void validateToolTypeExists(Long id) { + @Override + public void validateToolTypeExists(Long id) { if (toolTypeMapper.selectById(id) == null) { throw exception(TM_TOOL_TYPE_NOT_EXISTS); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java index ffd8b50..833c8ce 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java @@ -237,7 +237,7 @@ public class MesWmOutsourceReceiptServiceImpl implements MesWmOutsourceReceiptSe outsourceReceiptLineService.createOutsourceReceiptLineDO(unqualifiedLine); } - // 3. 直接更新主表状态为"待上架"(对齐 KTG:IQC 完成后直接推进状态) + // 3. 直接更新主表状态为"待上架" outsourceReceiptMapper.updateById(new MesWmOutsourceReceiptDO() .setId(receiptId).setStatus(MesWmOutsourceReceiptStatusEnum.APPROVING.getStatus())); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionService.java index 6f78dc6..472f1e6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionService.java @@ -8,7 +8,6 @@ import java.util.List; /** * MES 库存事务流水 Service 接口 * - * 对齐 KTG WmTransactionServiceImpl.processTransaction 实现: * 校验 → 库存台账更新 → 事务流水插入。 */ public interface MesWmTransactionService { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/dto/MesWmTransactionSaveReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/dto/MesWmTransactionSaveReqDTO.java index 6b07093..81974d1 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/dto/MesWmTransactionSaveReqDTO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/dto/MesWmTransactionSaveReqDTO.java @@ -96,8 +96,6 @@ public class MesWmTransactionSaveReqDTO { private Long vendorId; /** * 入库时间(为空默认当前时间) - * - * 对应 KTG 的 recptDate */ private LocalDateTime receiptTime; -- libgit2 0.21.4