diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/DeviceLedgerController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/DeviceLedgerController.java index e9f475fc1a..0576a6a35e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/DeviceLedgerController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/DeviceLedgerController.java @@ -1,8 +1,14 @@ package cn.iocoder.yudao.module.mes.controller.admin.deviceledger; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.utils.ResumeNameUtils; +import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO; +import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper; +import cn.iocoder.yudao.module.mes.service.organization.OrganizationService; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import com.alibaba.excel.util.StringUtils; @@ -22,6 +28,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.io.IOException; import java.util.stream.Collectors; +import java.util.stream.Stream; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -33,6 +40,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.deviceledger.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; @@ -47,6 +55,9 @@ public class DeviceLedgerController { @Resource private DeviceLedgerService deviceLedgerService; + @Resource + private OrganizationService organizationService; + @Resource private AdminUserApi adminUserApi; @@ -87,9 +98,8 @@ public class DeviceLedgerController { @PreAuthorize("@ss.hasPermission('mes:device-ledger:query')") public CommonResult getDeviceLedger(@RequestParam("id") Long id) { DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(id); - DeviceLedgerRespVO respVO = BeanUtils.toBean(deviceLedger, DeviceLedgerRespVO.class); - + respVO.setCreatorName(adminUserApi.getUser(Long.valueOf(deviceLedger.getCreator())).getNickname()); if (StringUtils.isNotBlank(respVO.getDeviceManager())) { String[] userIds = respVO.getDeviceManager().split(","); StringBuilder names = new StringBuilder(); @@ -112,6 +122,33 @@ public class DeviceLedgerController { @PreAuthorize("@ss.hasPermission('mes:device-ledger:query')") public CommonResult> getDeviceLedgerPage(@Valid DeviceLedgerPageReqVO pageReqVO) { PageResult pageResult = deviceLedgerService.getDeviceLedgerPage(pageReqVO); + Set workshopIds = pageResult.getList().stream() + .map(DeviceLedgerDO::getWorkshop) + .filter(StringUtils::isNotBlank) // 使用StringUtils或手动判断 + .flatMap(workshop -> { + try { + return Stream.of(Long.valueOf(workshop.trim())); + } catch (NumberFormatException e) { + return Stream.empty(); // 转换失败时返回空流,相当于跳过 + } + }) + .collect(Collectors.toSet()); + + Map organizationMap = organizationService.getMap(workshopIds); + + // 4. 设置 workshopName + for (DeviceLedgerDO item : pageResult.getList()) { + if (item.getWorkshop() != null) { + try { + Long workshopId = Long.parseLong(item.getWorkshop().trim()); + OrganizationDO org = organizationMap.get(workshopId); + if (org != null) { + item.setWorkshopName(org.getName()); + } + } catch (NumberFormatException e) { + } + } + } return success(ResumeNameUtils.buildPageCreatorName(BeanUtils.toBean(pageResult, DeviceLedgerRespVO.class))); } @@ -123,6 +160,17 @@ public class DeviceLedgerController { return success(deviceLedgerDOList); } + @GetMapping("/noUsedlist") + @Operation(summary = "获得未关联设备台账列表") + @PreAuthorize("@ss.hasPermission('mes:device-ledger:query')") + public CommonResult> getDeviceLedgerListByNoUsed() { + List deviceLedgerDOList = deviceLedgerService.getDeviceLedgerList(); + deviceLedgerDOList.removeIf(device -> + device.getWorkshop() != null + ); + return success(deviceLedgerDOList); + } + @GetMapping("/export-excel") @Operation(summary = "导出设备台账 Excel") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerPageReqVO.java index a83da82542..7a6f1e5fb1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerPageReqVO.java @@ -80,4 +80,7 @@ public class DeviceLedgerPageReqVO extends PageParam { @Schema(description = "关键件id") private String componentId; + @Schema(description = "关联采集设备id") + private Long dvId; + } \ 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/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 c41f507e56..41207cce65 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 @@ -100,8 +100,11 @@ public class DeviceLedgerRespVO extends BaseDO { // @ExcelProperty("供应商") private String supplier; - @Schema(description = "所属车间") -// @ExcelProperty("所属车间") + @Schema(description = "所属产线") + @ExcelProperty("所属产线") + private String workshopName; + + @Schema(description = "所属产线ID") private String workshop; @Schema(description = "所属系统组织") @@ -145,4 +148,7 @@ public class DeviceLedgerRespVO extends BaseDO { @Schema(description = "模具id") private String moldId; + + @Schema(description = "关联采集设备id") + private Long dvId; } \ 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 2c272a9eba..c93a5c6039 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 @@ -75,4 +75,7 @@ public class DeviceLedgerSaveReqVO { @Schema(description = "模具,ids集合") private String moldId; + + @Schema(description = "关联采集设备id") + private Long dvId; } \ No newline at end of file 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 3946cd4276..3fb4d6eabc 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 @@ -66,9 +66,15 @@ public class DeviceLedgerDO extends BaseDO { */ private String supplier; /** - * 所属车间 + * 所属产线 */ private String workshop; + + /** + * 所属产线名称 + */ + @TableField(exist = false) + private String workshopName; /** * 所属系统组织 */ @@ -164,4 +170,9 @@ public class DeviceLedgerDO extends BaseDO { @TableField(exist = false) private List moldList; + /** + * 关联采集设备 + */ + private Long dvId; + } \ 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 7d131bc6a1..21f0b0419f 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 @@ -92,8 +92,9 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { // 插入 DeviceLedgerDO deviceLedger = BeanUtils.toBean(createReqVO, DeviceLedgerDO.class); - + // 创建台账 deviceLedgerMapper.insert(deviceLedger); + // 返回 return deviceLedger.getId(); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java index 11a1dce01a..6a102dbf35 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java @@ -10,13 +10,17 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceConta import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; import cn.iocoder.yudao.module.iot.service.device.DeviceService; +import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.*; import cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo.OrgWorkerPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.orgworker.OrgWorkerDO; import cn.iocoder.yudao.module.mes.dal.mysql.organization.OrganizationMapper; import cn.iocoder.yudao.module.mes.dal.mysql.orgworker.OrgWorkerMapper; import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO; +import cn.iocoder.yudao.module.mes.service.deviceledger.DeviceLedgerService; +import cn.iocoder.yudao.module.mes.service.deviceledger.DeviceLedgerServiceImpl; import cn.iocoder.yudao.module.mes.service.machine.MachineComponentService; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; @@ -58,6 +62,9 @@ public class OrganizationServiceImpl implements OrganizationService { @Resource private DeviceMapper deviceMapper; + @Resource + private DeviceLedgerService deviceLedgerService; + @Autowired private AutoCodeUtil autoCodeUtil; @Override @@ -86,6 +93,12 @@ public class OrganizationServiceImpl implements OrganizationService { } } organizationMapper.insert(organization); + // 设备台账关联产线 + if (organization.getMachineId() != null) { + DeviceLedgerDO deviceLedgerDO = deviceLedgerService.getDeviceLedger(organization.getMachineId()); + deviceLedgerDO.setWorkshop(String.valueOf(organization.getParentId())); + deviceLedgerService.updateDeviceLedger(BeanUtils.toBean(deviceLedgerDO, DeviceLedgerSaveReqVO.class)); + } // 返回 return organization.getId(); } @@ -102,6 +115,12 @@ public class OrganizationServiceImpl implements OrganizationService { // 更新 OrganizationDO updateObj = BeanUtils.toBean(updateReqVO, OrganizationDO.class); organizationMapper.updateById(updateObj); + // 设备台账关联产线 + if (updateObj.getMachineId() != null) { + DeviceLedgerDO deviceLedgerDO = deviceLedgerService.getDeviceLedger(updateObj.getMachineId()); + deviceLedgerDO.setWorkshop(String.valueOf(updateObj.getParentId())); + deviceLedgerService.updateDeviceLedger(BeanUtils.toBean(deviceLedgerDO, DeviceLedgerSaveReqVO.class)); + } } @Override @@ -112,8 +131,15 @@ public class OrganizationServiceImpl implements OrganizationService { if (organizationMapper.selectCountByParentId(id) > 0) { throw exception(ORGANIZATION_EXITS_CHILDREN); } + DeviceLedgerDO deviceLedgerDO = deviceLedgerService.getDeviceLedger(organizationMapper.selectById(id).getMachineId()); + if (deviceLedgerDO != null) { + deviceLedgerDO.setWorkshop(null); + deviceLedgerService.updateDeviceLedger(BeanUtils.toBean(deviceLedgerDO, DeviceLedgerSaveReqVO.class)); + } // 删除 organizationMapper.deleteById(id); + // 设备台账关联产线 + } private void validateOrganizationExists(Long id) { @@ -204,13 +230,21 @@ public class OrganizationServiceImpl implements OrganizationService { // // }); //关联设备 - Map map = deviceService.getMap( - convertSet(list, OrganizationDO::getMachineId)); +// Map map = deviceService.getMap( +// convertSet(list, OrganizationDO::getMachineId)); + + List deviceLedgerDOList = deviceLedgerService.getDeviceLedgerList(); + Map resultMap = deviceLedgerDOList.stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap( + DeviceLedgerDO::getId, + Function.identity(), + (existing, replacement) -> existing // 处理重复key + )); return BeanUtils.toBean(list, OrganizationRespVO.class, item -> { - MapUtils.findAndThen(map, item.getMachineId(), + MapUtils.findAndThen(resultMap, item.getMachineId(), device -> item.setMachineName(device.getDeviceName())); - }); } @Override