From fe4d8530e45569a8b17886f4bd050e96e187fb8d Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 30 三月 2026 16:26:24 +0800
Subject: [PATCH] feat: 生产成品核算报表接口,生产订单绑定工艺路线
---
src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java | 56 ++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 42 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java
index bc6d03e..65b79bb 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java
@@ -57,6 +57,9 @@
@Resource
private ProductOrderService productOrderService;
+ @Resource
+ private IProductionOrderRouteService productionOrderRouteService;
+
@Override
public Long populateBlocks(Long orderId, ProductionPlanDto productionPlanDto) {
if (productionPlanDto == null) {
@@ -70,8 +73,12 @@
log.info("涓嬪彂浜у搧銆恵}銆戞湭鏌ヨ鍑哄伐鑹鸿矾绾�", productionPlanDto.getProductName());
return null;
}
- migration(orderId, processRoute);
- return processRoute.getId();
+
+ // 鍒涘缓宸ヨ壓璺嚎
+ ProductionOrderRoute productionOrderRoute = createOrderRouteSnapshot(orderId, processRoute);
+ migration(orderId, processRoute, productionOrderRoute.getId());
+
+ return productionOrderRoute.getId();
}
@Override
@@ -85,8 +92,12 @@
log.info("涓嬪彂浜у搧銆恵}銆戞湭鏌ヨ鍑哄伐鑹鸿矾绾�", productionPlanDto.getProductName());
return null;
}
- migration(orderId, processRoute);
- return processRoute.getId();
+
+ // 鍒涘缓宸ヨ壓璺嚎
+ ProductionOrderRoute productionOrderRoute = createOrderRouteSnapshot(orderId, processRoute);
+ migration(orderId, processRoute, productionOrderRoute.getId());
+
+ return productionOrderRoute.getId();
}
@Override
@@ -101,14 +112,27 @@
if (processRoute == null) {
throw new ServiceException("璇ュ伐鑹鸿矾绾夸笉瀛樺湪,缁戝畾澶辫触");
}
- migration(productOrder.getId(), processRoute);
- // 鍥炲啓宸ヨ壓璺嚎id鍒扮敓浜ц鍗�
+ // 鍒涘缓宸ヨ壓璺嚎
+ ProductionOrderRoute productionOrderRoute = createOrderRouteSnapshot(productOrder.getId(), processRoute);
+ migration(productOrder.getId(), processRoute, productionOrderRoute.getId());
+
+ // 鍥炲啓鏂扮殑宸ヨ壓璺嚎ID鍒扮敓浜ц鍗�
+ productOrder.setRouteId(productionOrderRoute.getId());
productOrderService.updateById(productOrder);
}
+ private ProductionOrderRoute createOrderRouteSnapshot(Long orderId, ProcessRoute processRoute) {
+ ProductionOrderRoute snapshot = new ProductionOrderRoute();
+ BeanUtils.copyProperties(processRoute, snapshot, "id", "createTime", "updateTime", "tenantId");
+ snapshot.setOrderId(orderId);
+ snapshot.setProcessRouteId(processRoute.getId());
+ productionOrderRouteService.save(snapshot);
+ return snapshot;
+ }
+
@Override
- public void deleteData(Long orderId, Long processRouteId) {
+ public void deleteData(Long orderId, Long snapshotRouteId) {
// 鍒犻櫎宸ヨ壓璺嚎宸ュ簭鍙傛暟闄勮〃
productionOrderRouteItemParamService.remove(new LambdaQueryWrapper<ProductionOrderRouteItemParam>()
.eq(ProductionOrderRouteItemParam::getOrderId, orderId));
@@ -116,25 +140,28 @@
// 鍒犻櫎宸ヨ壓璺嚎瀛愰泦闄勮〃
productionOrderRouteItemService.remove(new LambdaQueryWrapper<ProductionOrderRouteItem>()
.eq(ProductionOrderRouteItem::getOrderId, orderId)
- .eq(ProductionOrderRouteItem::getRouteId, processRouteId));
+ .eq(ProductionOrderRouteItem::getRouteId, snapshotRouteId));
+
+ // 鍒犻櫎宸ヨ壓璺嚎
+ productionOrderRouteService.removeById(snapshotRouteId);
// 鍒犻櫎BOM瀛愰泦闄勮〃
- ProcessRoute processRoute = processRouteService.getById(processRouteId);
- if (processRoute != null && processRoute.getBomId() != null) {
+ ProductionOrderRoute snapshot = productionOrderRouteService.getById(snapshotRouteId);
+ if (snapshot != null && snapshot.getBomId() != null) {
productionOrderStructureService.remove(new LambdaQueryWrapper<ProductionOrderStructure>()
.eq(ProductionOrderStructure::getOrderId, orderId)
- .eq(ProductionOrderStructure::getBomId, processRoute.getBomId()));
+ .eq(ProductionOrderStructure::getBomId, snapshot.getBomId().longValue()));
}
}
/**
* 鏍规嵁宸ヨ壓璺嚎杩佺Щ闄勮〃鏁版嵁
*/
- private void migration(Long orderId, ProcessRoute processRoute) {
+ private void migration(Long orderId, ProcessRoute processRoute, Long newRouteId) {
// 杩佺Щ宸ヨ壓璺嚎瀛愰泦琛ㄦ暟鎹紝杩斿洖鏃d->鏂癷nstance鏄犲皠
List<ProcessRouteItem> processRouteItemList = processRouteItemService.list(
new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
- Map<Long, ProductionOrderRouteItem> routeItemOldIdMap = migrationProcessRouteItem(orderId, processRouteItemList);
+ Map<Long, ProductionOrderRouteItem> routeItemOldIdMap = migrationProcessRouteItem(orderId, newRouteId, processRouteItemList);
// 杩佺Щ宸ヨ壓璺嚎鍐呯粦瀹氱殑宸ュ簭鍙傛暟
if (processRouteItemList != null && !processRouteItemList.isEmpty()) {
@@ -156,7 +183,7 @@
}
}
- private Map<Long, ProductionOrderRouteItem> migrationProcessRouteItem(Long orderId, List<ProcessRouteItem> list) {
+ private Map<Long, ProductionOrderRouteItem> migrationProcessRouteItem(Long orderId, Long newRouteId, List<ProcessRouteItem> list) {
Map<Long, ProductionOrderRouteItem> oldIdMap = new HashMap<>();
if (list == null || list.isEmpty()) {
return oldIdMap;
@@ -166,6 +193,7 @@
BeanUtils.copyProperties(item, instance, "id");
instance.setIsQuality(item.getIsQuality() != null && item.getIsQuality() ? 1 : 0);
instance.setOrderId(orderId);
+ instance.setRouteId(newRouteId);
if (item.getId() != null) {
oldIdMap.put(item.getId(), instance);
}
--
Gitblit v1.9.3