diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java index 9d6afd8d8..5f16990b8 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java @@ -514,6 +514,9 @@ public class YieldOrder extends BaseEntity { @Schema(description = "原生产订单ID") private Long oldYoId; + @Schema(description = "一级工序名称状态") + private Integer firseqNameStatus; + @JsonSerialize(nullsUsing = NullSerializer.class) private Double plateThickness1; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java index a9c1be384..0218aad69 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java @@ -84,6 +84,13 @@ public enum YieldOrderEnum { VALIDATION_RESULT_DELIVERY("交期冲突", 16005), VALIDATION_RESULT_LESS_MATERIAL("物料需求异常", 16006), VALIDATION_RESULT_PASS("验证完成", 16007), + + /** + * 一级工序状态 + */ + FIRSEQ_NAME_EXIST("存在",17001), + FIRSEQ_NAME_NOT_EXIST ("不存在",17002) + ; final String name; final int code; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java index bc767504e..ce791be4d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java @@ -155,4 +155,6 @@ public interface DsPartMapper extends BaseMapper { List selectListPartByCodeLike(@Param("zPartCode") String zPartCode); List selectOldMesPartSubBySubCode(@Param("subCode") String subCode); + + List selectDsPartByPartCodeList(@Param("partCodeList") List partCodeList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java index e530cef74..1a36cf6e6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java @@ -72,4 +72,6 @@ public interface DsPartRelationMapper extends BaseMapper { @Param("zPartIdList")List zPartIdList); DsPartRelationEntity selectByPartCodeAndSubCode(@Param("partCode") String parentPartCode,@Param("subCode") String subCode); + + List selectDsPartRelationByPartIdList(@Param("partIdList") List partIdList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml index d5d9f1e68..c1848cff7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml @@ -419,6 +419,15 @@ src.MATERIAL, src.PLATE_CODE, src.SIN_TER_TYPE FROM MJMES.DS_PART_SUB src where src.SUB_CODE = #{subCode} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml index 7bbd173a2..c88248c13 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml @@ -85,6 +85,14 @@ and PART_CODE = #{partCode} and CHILD_PART_CODE = #{subCode} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java index 232bfd812..14e0b3fd9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java @@ -86,4 +86,11 @@ public interface IDsPartRelationService extends BaseService selectDsPartRelationByPartIdList(List partIdList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java index fc07b66ca..8a6802987 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java @@ -309,4 +309,11 @@ public interface IDsPartService extends BaseService { * @return */ List selectOldMesPartSubBySubCode(String subCode); + + /** + * 根据零件号查询 + * @param partCodeList + * @return + */ + List selectDsPartByPartCodeList(List partCodeList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java index bccb4f2f2..9bc64030c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java @@ -84,4 +84,9 @@ public class DsPartRelationServiceImpl extends BaseServiceImpl selectDsPartRelationByPartIdList(List partIdList) { + return partRelationMapper.selectDsPartRelationByPartIdList(partIdList); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java index 02d05107e..8a2e8a62a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java @@ -936,6 +936,11 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartByPartCodeList(List partCodeList) { + return dsPartMapper.selectDsPartByPartCodeList(partCodeList); + } + /** * 根据工艺获取工序ID列表(支持返工工艺和正常工艺) */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java index 4f52fe9ca..c683a5f08 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java @@ -375,4 +375,10 @@ public class YieldOrderController extends BladeController { public R createBlbYieldOrder(@RequestParam String partCode,@RequestParam Double qty,@RequestParam String memo) { return R.data(yieldOrderService.createBlbYieldOrder(partCode,qty,memo)); } + + @PostMapping("/subItemAssignment") + @Operation(summary = "子件下达", description = "") + public R subItemAssignment(@Parameter(description = "主键", required = true) @RequestParam String id) { + return R.data(yieldOrderService.subItemAssignment(id)); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java index 904656dcf..df8688d77 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java @@ -309,4 +309,11 @@ public interface IYieldOrderService extends BaseService { * @return */ List selectByFatherYoId(Long yieldOrderId); + + /** + * 下达子件 + * @param id + * @return + */ + boolean subItemAssignment(String id); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 8c45e30dc..f427959be 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.desk.order.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -374,16 +375,18 @@ public class YieldOrderServiceImpl extends BaseServiceImpl new ServiceException("暂无零件信息")); + + // 查询子件 + List partRelationList = partRelationService.selectDsPartRelationByPartId(part.getId()); + if (partRelationList.isEmpty()) { + throw new ServiceException("暂无子件信息"); + } + + // 获取所有子件编码 + Set childPartCodeSet = partRelationList.stream() + .map(DsPartRelationEntity::getChildPartCode) + .filter(Objects::nonNull) + .filter(code -> !code.isEmpty()) + .collect(Collectors.toSet()); + + // 查询已生成的子件订单 + List yieldOrderList = baseMapper.selectByFatherYoId(Long.valueOf(yieldOrderId)); + + // 获取已生成订单中的零件编码 + Set existingPartCodeSet = yieldOrderList.stream() + .filter(order -> order.getPartCode() != null) + .map(YieldOrder::getPartCode) + .collect(Collectors.toSet()); + + // 需要创建的子件编码 = 子件编码集合 - 已存在的订单编码 + List partSubCodeList = childPartCodeSet.stream() + .filter(code -> !existingPartCodeSet.contains(code)) + .collect(Collectors.toList()); + + // 如果没有需要创建的子件,直接返回 + if (partSubCodeList.isEmpty()) { + log.info("所有子件订单都已存在,无需创建"); + return true; + } + + // 批量查询子件零件信息 + List dsPartEntityList = dsPartService.selectDsPartByPartCodeList(partSubCodeList); + + if (dsPartEntityList.isEmpty()) { + log.warn("未查询到子件零件信息,子件编码:{}", partSubCodeList); + return true; + } + + // 创建子件订单 + try { + createSubYieldOrder(yieldOrder, dsPartEntityList, true, AuthUtil.getUser().getUserId()); + log.info("子件订单创建成功,父订单ID:{},创建子件数量:{}", yieldOrderId, dsPartEntityList.size()); + } catch (BusinessException e) { + log.error("创建子件订单失败,父订单ID:{}", yieldOrderId, e); + throw new ServiceException("创建子件订单失败:" + e.getMessage()); + } + + return true; + } + /** * @param codeType 0:订单号、1:流程卡号;2、批次号 * @return String