diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java index a188bfb32..2c6b019f4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java @@ -42,6 +42,8 @@ import org.springblade.desk.dashboard.pojo.vo.DsCraftVO; import org.springblade.desk.dashboard.pojo.vo.DsPartToolVO; import org.springblade.desk.dashboard.pojo.vo.DsProcessSynthesisVO; import org.springblade.desk.dashboard.service.*; +import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.service.IYieldOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -75,6 +77,9 @@ public class DsCraftServiceImpl extends BaseServiceImpl selectDsCraftPage(IPage page, DsCraftVO dsCraft) { @@ -276,6 +281,12 @@ public class DsCraftServiceImpl extends BaseServiceImpl yieldOrderList = yieldOrderService.selectByCraftId(craftEntity.getId()); + if(!CollectionUtils.isEmpty(yieldOrderList)){ + throw new ServiceException("该工艺下存在订单,无法删除"); + } + //查询工序 List processEntities = processService.selectDsProcessByCraftId(craftId); if (processEntities.isEmpty()) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java index 98e6c7529..27c92a478 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java @@ -71,4 +71,7 @@ public interface YieldOrderMapper extends BaseMapper { */ boolean updateOldMesPrWorkOrder(@Param("woId") Long woId, @Param("plateSingleQuota") double plateSingleQuota); + List selectByCraftId(@Param("craftId") Long craftId); + + List selectByFatherYoId(@Param("yieldOrderId") Long yieldOrderId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml index de0a2b0bd..667030a32 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml @@ -147,6 +147,18 @@ + + update MJMES.PR_WORK_ORDER set PLATE_SINGLE_QUOTA = #{plateSingleQuota} where WO_ID = #{woId} 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 cd924352d..904656dcf 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 @@ -295,4 +295,18 @@ public interface IYieldOrderService extends BaseService { String generateMdCode(); boolean createBlbYieldOrder(String partCode,Double qty,String memo); + + /** + * 根据工艺ID查询生产订单 + * @param craftId + * @return + */ + List selectByCraftId(Long craftId); + + /** + * 根据父级ID查询 + * @param yieldOrderId + * @return + */ + List selectByFatherYoId(Long yieldOrderId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldDemandServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldDemandServiceImpl.java index 33f6bf47e..b277f0160 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldDemandServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldDemandServiceImpl.java @@ -50,9 +50,6 @@ public class MoldDemandServiceImpl extends BaseServiceImpl selectPage(IPage page, MoldDemand entity) { entity.setMafStatus(MoldDemandEnum.MAF_STATUS_CREATE.getCode()); List dataList = baseMapper.selectPage(page, entity); - for (MoldDemand moldDemand : dataList) { - - } return page.setRecords(dataList); } 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 0c3dd6dcd..327e4e4d9 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 @@ -86,8 +86,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl yieldOrderCheckList = baseMapper.selectList(wrapper); if (CollectionUtils.isNotEmpty(yieldOrderCheckList)) { - yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode()); - yieldOrder.setValidationTime(DateUtil.now()); - yieldOrder.setValidationMomo("已存在该流程卡号的数据"); - this.updateById(yieldOrder); - return false; + //重账订单,如果旧订单接收状态为未接收,删除旧订单(即更早同步的那一条) + //如果是烧结订单:删除烧结订单关联的子件订单 + // 按创建时间排序 + Collections.sort(yieldOrderCheckList, Comparator.comparing(YieldOrder::getCreateTime)); + YieldOrder earliestOrder = yieldOrderCheckList.get(0); + + // 检查最早订单的接收状态 + if (earliestOrder.getReceiveStatus().equals(YieldOrderEnum.RECEIVE_STATUS_NO.getCode())) { + // 1. 先收集需要删除的所有ID(包括父订单和子订单) + List allDeleteIds = new ArrayList<>(); + // 处理烧结订单的子件订单 + if (earliestOrder.getYieldType().equals(YieldOrderEnum.YIELD_TYPE_2.getCode())) { + List childOrderList = this.selectByFatherYoId(earliestOrder.getId()); + if (CollectionUtils.isNotEmpty(childOrderList)) { + List childIds = childOrderList.stream().map(YieldOrder::getId).filter(Objects::nonNull).collect(Collectors.toList()); + allDeleteIds.addAll(childIds); + } + } + // 添加父订单ID + allDeleteIds.add(earliestOrder.getId()); + this.deleteLogic(allDeleteIds); + + } else { + // 最早订单已接收,说明数据重复 + yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode()); + yieldOrder.setValidationTime(DateUtil.now()); + yieldOrder.setValidationMomo("已存在该流程卡号的数据"); + this.updateById(yieldOrder); + return false; + } } //校验批次号、生产标识、使用部门、数量、计划员、计划下达时间、需求交期字段是否为空,为空标记为【数据缺失-16002】 @@ -1590,6 +1615,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl selectByCraftId(Long craftId) { + return baseMapper.selectByCraftId(craftId); + } + + @Override + public List selectByFatherYoId(Long yieldOrderId) { + return baseMapper.selectByFatherYoId(yieldOrderId); + } + /** * @param codeType 0:订单号、1:流程卡号;2、批次号 * @return String diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/MoldDemandWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/MoldDemandWrapper.java index e4286136c..cf7543dbd 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/MoldDemandWrapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/wrapper/MoldDemandWrapper.java @@ -34,7 +34,8 @@ public class MoldDemandWrapper extends BaseEntityWrapper