From 5eee19fb4eb8552ecafe6c5db4406136f14ac246 Mon Sep 17 00:00:00 2001 From: kkk-ops <1050738955@qq.com> Date: Thu, 15 Jan 2026 18:30:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=A8=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/mold/vo/MoldBrandSaveReqVO.java | 1 - .../deviceledger/vo/DeviceLedgerRespVO.java | 7 ++ .../vo/DeviceLedgerSaveReqVO.java | 5 +- .../moldoperate/MoldOperateController.java | 70 ++++++++++++++++++- .../moldoperate/vo/MoldOperatePageReqVO.java | 9 +++ .../moldoperate/vo/MoldOperateRespVO.java | 15 +++- .../moldoperate/vo/MoldOperateSaveReqVO.java | 3 +- .../deviceledger/DeviceLedgerDO.java | 12 ++++ .../deviceledger/DeviceLedgerService.java | 24 +++++++ .../deviceledger/DeviceLedgerServiceImpl.java | 39 ++++++++++- 10 files changed, 176 insertions(+), 9 deletions(-) diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java index faedbfd755..3d9c1621af 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java @@ -28,7 +28,6 @@ public class MoldBrandSaveReqVO { private String moldType; @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336") - @NotNull(message = "产品ID不能为空") private Long productId; @Schema(description = "预期寿命(小时)") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java index 82b64c7ed1..50fb3f205a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; @@ -125,6 +126,9 @@ public class DeviceLedgerRespVO extends BaseDO { @Schema(description = "备件列表") private List beijianList; + @Schema(description = "模具列表") + private List moldList; + @Schema(description = "附件地址") @ExcelProperty("附件地址") private String fileUrl; @@ -134,4 +138,7 @@ public class DeviceLedgerRespVO extends BaseDO { @Schema(description = "备件id") private String beijianId; + + @Schema(description = "模具id") + private String moldId; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java index 445900a741..2c272a9eba 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java @@ -70,6 +70,9 @@ public class DeviceLedgerSaveReqVO { @Schema(description = "关键件,ids集合") private String componentId; - @Schema(description = "关键件,ids集合") + @Schema(description = "备件,ids集合") private String beijianId; + + @Schema(description = "模具,ids集合") + private String moldId; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java index 3bf827636f..6a4bfc5f30 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java @@ -1,5 +1,17 @@ package cn.iocoder.yudao.module.mes.controller.admin.moldoperate; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; +import cn.iocoder.yudao.module.erp.service.mold.MoldService; +import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; +import cn.iocoder.yudao.module.mes.service.deviceledger.DeviceLedgerService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -24,6 +36,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.moldoperate.MoldOperateDO; @@ -38,10 +51,37 @@ public class MoldOperateController { @Resource private MoldOperateService moldOperateService; + @Resource + private AdminUserApi adminUserApi; + + @Resource + private MoldService moldService; + @Resource + private DeviceLedgerService deviceLedgerService; + + @PostMapping("/create") @Operation(summary = "创建模具上下模") @PreAuthorize("@ss.hasPermission('mes:mold-operate:create')") public CommonResult createMoldOperate(@Valid @RequestBody MoldOperateSaveReqVO createReqVO) { + if (Objects.equals(createReqVO.getOperateType(), "1")) { + MoldDO moldDO = moldService.getMold(createReqVO.getMoldId()); + moldDO.setMachineId(createReqVO.getDeviceId()); + moldDO.setStatus(0); // 在机 0 在库 1 + moldService.updateMold(BeanUtils.toBean(moldDO, MoldSaveReqVO.class)); + DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); + deviceLedger.setMoldId(Long.toString(createReqVO.getMoldId())); + deviceLedgerService.updateDeviceLedger(BeanUtils.toBean(deviceLedger, DeviceLedgerSaveReqVO.class)); + } else { + DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); + createReqVO.setMoldId(Long.parseLong(deviceLedger.getMoldId())); + MoldDO moldDO = moldService.getMold(Long.parseLong(deviceLedger.getMoldId())); + moldDO.setMachineId(0L); + moldDO.setStatus(3); // 在机 0 在库 1 + moldService.updateMold(BeanUtils.toBean(moldDO, MoldSaveReqVO.class)); + deviceLedger.setMoldId("0"); + deviceLedgerService.updateDeviceLedger(BeanUtils.toBean(deviceLedger, DeviceLedgerSaveReqVO.class)); + } return success(moldOperateService.createMoldOperate(createReqVO)); } @@ -76,7 +116,21 @@ public class MoldOperateController { @PreAuthorize("@ss.hasPermission('mes:mold-operate:query')") public CommonResult> getMoldOperatePage(@Valid MoldOperatePageReqVO pageReqVO) { PageResult pageResult = moldOperateService.getMoldOperatePage(pageReqVO); - return success(BeanUtils.toBean(pageResult, MoldOperateRespVO.class)); + // 管理员信息 + Map userMap = adminUserApi.getUserMap( + convertSet(pageResult.getList(), admin -> Long.parseLong(admin.getCreator()))); + // 模具信息 + Map moldMap = moldService.getMoldVOMap( + convertSet(pageResult.getList(), MoldOperateDO::getMoldId)); + + // 设备台账 + Map deviceLedgerMap = deviceLedgerService.getDeviceLedgerVOMap( + convertSet(pageResult.getList(), MoldOperateDO::getDeviceId)); + return success(BeanUtils.toBean(pageResult, MoldOperateRespVO.class,moldOperate -> { + MapUtils.findAndThen(userMap, Long.parseLong(moldOperate.getCreator()), user -> moldOperate.setCreatorName(user.getNickname())); + MapUtils.findAndThen(moldMap, moldOperate.getMoldId(), mold -> moldOperate.setMoldName(mold.getName())); + MapUtils.findAndThen(deviceLedgerMap, moldOperate.getDeviceId(), deviceLedger -> moldOperate.setDeviceName(deviceLedger.getDeviceName())); + })); } @GetMapping("/export-excel") @@ -92,4 +146,18 @@ public class MoldOperateController { BeanUtils.toBean(list, MoldOperateRespVO.class)); } + @GetMapping("/get-mold") + @Operation(summary = "获得设备是否有模具") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:mold-operate:query')") + public CommonResult getDeviceLedgerLMold(@RequestParam("id") Long id) { + DeviceLedgerDO deviceLedgerDO = deviceLedgerService.getDeviceLedger(id); + if (deviceLedgerDO.getMoldId() != null && !deviceLedgerDO.getMoldId().isEmpty() && Integer.parseInt(deviceLedgerDO.getMoldId()) != 0) { + return success(true); + } else { + return success(false); + } + + } + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java index eb5c81528d..967e4c3dc9 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java @@ -21,12 +21,21 @@ public class MoldOperatePageReqVO extends PageParam { @Schema(description = "关联模具id", example = "23041") private Long moldId; + @Schema(description = "关联模具名称", example = "5057") + private String moldName; + @Schema(description = "关联设备id", example = "5057") private Long deviceId; + @Schema(description = "关联设备名称", example = "5057") + private String deviceName; + @Schema(description = "备注", example = "随便") private String remark; + @Schema(description = "创建人", example = "随便") + private String Creator; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java index a4b2638180..2162d51b42 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java @@ -21,13 +21,19 @@ public class MoldOperateRespVO { private String operateType; @Schema(description = "关联模具id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23041") - @ExcelProperty("关联模具id") private Long moldId; + @Schema(description = "关联模具", example = "5057") + @ExcelProperty("关联模具") + private String moldName; + @Schema(description = "关联设备id", example = "5057") - @ExcelProperty("关联设备id") private Long deviceId; + @Schema(description = "关联设备", example = "5057") + @ExcelProperty("关联设备") + private String deviceName; + @Schema(description = "备注", example = "随便") @ExcelProperty("备注") private String remark; @@ -36,4 +42,9 @@ public class MoldOperateRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "创建人", example = "芋道") + private String creator; + @Schema(description = "创建人名称", example = "芋道") + private String creatorName; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java index 028fc2fe0a..b78f1ddc56 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java @@ -15,8 +15,7 @@ public class MoldOperateSaveReqVO { @Schema(description = "操作类型", example = "2") private String operateType; - @Schema(description = "关联模具id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23041") - @NotNull(message = "关联模具id不能为空") + @Schema(description = "关联模具id", example = "23041") private Long moldId; @Schema(description = "关联设备id", example = "5057") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java index eaa6770923..ab7705a579 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; @@ -146,4 +147,15 @@ public class DeviceLedgerDO extends BaseDO { @TableField(exist = false) private List beijianList; + /** + * 模具id + */ + private String moldId; + + /** + * 模具列表 + */ + @TableField(exist = false) + private List moldList; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java index 70b71633a3..68e93fad0e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java @@ -2,10 +2,15 @@ package cn.iocoder.yudao.module.mes.service.deviceledger; import java.util.*; import javax.validation.*; + +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + /** * 设备类型 Service 接口 * @@ -51,4 +56,23 @@ public interface DeviceLedgerService { */ PageResult getDeviceLedgerPage(DeviceLedgerPageReqVO pageReqVO); + /** + * 获得产品 VO 列表 + * + * @param ids 编号数组 + * @return 产品 VO 列表 + */ + List getDeviceLedgerVOList(Collection ids); + /** + * 获得设备 VO Map + * + * @param ids 编号数组 + * @return 模具 VO Map + */ + default Map getDeviceLedgerVOMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); + return convertMap(getDeviceLedgerVOList(ids), DeviceLedgerRespVO::getId); + } + + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java index 08f2dd62b3..5baf45be8d 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java @@ -1,8 +1,14 @@ package cn.iocoder.yudao.module.mes.service.deviceledger; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; +import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper; import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper; -import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO; import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO; @@ -32,7 +38,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_CODE_EXISTS; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** @@ -63,6 +68,9 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { @Resource private ErpProductMapper productMapper; + @Resource + private MoldMapper moldMapper; + @Override public Long createDeviceLedger(DeviceLedgerSaveReqVO createReqVO) { @@ -177,6 +185,23 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { deviceLedgerDO.setComponentList(componentList); } + //模具列表 + List moldList = new ArrayList<>(); + if (StringUtils.isNotBlank(deviceLedgerDO.getMoldId())) { + // 将逗号分隔的字符串转换为Long类型的List + List idList = Arrays.stream(deviceLedgerDO.getMoldId().split(",")) + .map(String::trim) // 去除可能存在的空格 + .map(Long::valueOf) + .collect(Collectors.toList()); + for (Long moldId : idList) { + MoldDO moldDO = moldMapper.selectById(moldId); + if(moldDO!=null){ + moldList.add(moldDO); + } + } + deviceLedgerDO.setMoldList(moldList); + } + //备件列表 List beijianList = new ArrayList<>(); if (StringUtils.isNotBlank(deviceLedgerDO.getBeijianId())) { @@ -201,4 +226,14 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { return deviceLedgerMapper.selectPage(pageReqVO); } + @Override + public List getDeviceLedgerVOList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + List list = deviceLedgerMapper.selectBatchIds(ids); + return BeanUtils.toBean(list, DeviceLedgerRespVO.class); + } + + } \ No newline at end of file