From 124a6178ae918de05886b52199b7755d4fa1ece3 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 18 三月 2026 17:06:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_宁夏_中盛建材' into dev_宁夏_中盛建材
---
src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 216 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java b/src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java
new file mode 100644
index 0000000..5d77a0f
--- /dev/null
+++ b/src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java
@@ -0,0 +1,216 @@
+package com.ruoyi.appendix.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
+import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
+import com.ruoyi.appendix.pojo.ProductProcessParamInstance;
+import com.ruoyi.appendix.pojo.ProductStructureInstance;
+import com.ruoyi.appendix.service.*;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.service.*;
+import com.ruoyi.productionPlan.dto.ProductionPlanDto;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <br>
+ * BOM-宸ヨ壓璺嚎闄勮〃Service鎺ュ彛瀹炵幇绫�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/18 14:45
+ */
+@Slf4j
+@Service
+public class AppendixServiceImpl implements AppendixService {
+
+ @Resource
+ private ProcessRouteItemInstanceService processRouteItemInstanceService;
+
+ @Resource
+ private ProcessRouteItemParamInstanceService processRouteItemParamInstanceService;
+
+ @Resource
+ private ProductProcessParamInstanceService productProcessParamInstanceService;
+
+ @Resource
+ private ProductStructureInstanceService productStructureInstanceService;
+
+ @Resource
+ private ProcessRouteService processRouteService;
+
+ @Resource
+ private ProcessRouteItemService processRouteItemService;
+
+ @Resource
+ private ProcessRouteItemParamService processRouteItemParamService;
+
+ @Resource
+ private ProductProcessParamService productProcessParamService;
+
+ @Resource
+ private ProductStructureService productStructureService;
+
+ @Resource
+ private ProductOrderService productOrderService;
+
+ @Override
+ public Long populateBlocks(ProductionPlanDto productionPlanDto) {
+ if (productionPlanDto == null) {
+ throw new ServiceException("涓嬪彂鏁版嵁涓嶈兘涓虹┖");
+ }
+ if (StringUtils.isEmpty(productionPlanDto.getStrength())) {
+ throw new ServiceException("鐮屽潡鐨勪骇鍝佺被鍨嬩笉鑳戒负绌�");
+ }
+ ProcessRoute processRoute = processRouteService.latestTypeDate(productionPlanDto.getProductName(), productionPlanDto.getStrength());
+ if (processRoute == null) {
+ log.info("涓嬪彂浜у搧銆恵}銆戞湭鏌ヨ鍑哄伐鑹鸿矾绾�", productionPlanDto.getProductName());
+ return null;
+ }
+ migration(processRoute);
+ return processRoute.getId();
+ }
+
+ @Override
+ public Long populatePlates(ProductionPlanDto productionPlanDto) {
+ if (productionPlanDto == null) {
+ throw new ServiceException("涓嬪彂鏁版嵁涓嶈兘涓虹┖");
+ }
+ // 鏉挎潗涓嶅尯鍒嗗己搴︼紝strength浼爊ull
+ ProcessRoute processRoute = processRouteService.latestTypeDate(productionPlanDto.getProductName(), null);
+ if (processRoute == null) {
+ log.info("涓嬪彂浜у搧銆恵}銆戞湭鏌ヨ鍑哄伐鑹鸿矾绾�", productionPlanDto.getProductName());
+ return null;
+ }
+ migration(processRoute);
+ return processRoute.getId();
+ }
+
+ @Override
+ public void populateData(Long productOrderId, Long processRouteId) {
+ ProcessRoute processRoute = processRouteService.getById(processRouteId);
+ if (processRoute == null) {
+ log.info("鐢熶骇璁㈠崟銆恵}銆戞湭鏌ヨ鍑哄伐鑹鸿矾绾裤�恵}銆�", productOrderId, processRouteId);
+ return;
+ }
+ migration(processRoute);
+
+ // 鍥炲啓宸ヨ壓璺嚎id鍒扮敓浜ц鍗�
+ ProductOrder productOrder = new ProductOrder();
+ productOrder.setId(productOrderId);
+ productOrder.setRouteId(processRouteId);
+ productOrderService.updateById(productOrder);
+ }
+
+ @Override
+ public void deleteData(Long processRouteId) {
+ // 鏌ュ嚭宸ヨ壓璺嚎瀛愰泦锛岀敤浜庡叧鑱斿垹闄ゅ弬鏁伴檮琛�
+ List<ProcessRouteItem> itemList = processRouteItemService.list(new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRouteId));
+
+ if (itemList != null && !itemList.isEmpty()) {
+ List<Long> itemIds = itemList.stream().map(ProcessRouteItem::getId).collect(Collectors.toList());
+ List<Long> processIds = itemList.stream().map(ProcessRouteItem::getProcessId).collect(Collectors.toList());
+
+ // 鍒犻櫎宸ヨ壓璺嚎宸ュ簭鍙傛暟闄勮〃
+ processRouteItemParamInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemParamInstance>().in(ProcessRouteItemParamInstance::getRouteItemId, itemIds));
+
+ // 鍒犻櫎宸ュ簭缁戝畾鍙傛暟闄勮〃
+ productProcessParamInstanceService.remove(new LambdaQueryWrapper<ProductProcessParamInstance>().in(ProductProcessParamInstance::getProcessId, processIds));
+ }
+
+ // 鍒犻櫎宸ヨ壓璺嚎瀛愰泦闄勮〃
+ processRouteItemInstanceService.remove(
+ new LambdaQueryWrapper<ProcessRouteItemInstance>().eq(ProcessRouteItemInstance::getRouteId, processRouteId));
+
+ // 鍒犻櫎BOM瀛愰泦闄勮〃
+ ProcessRoute processRoute = processRouteService.getById(processRouteId);
+ if (processRoute != null && processRoute.getBomId() != null) {
+ productStructureInstanceService.remove(new LambdaQueryWrapper<ProductStructureInstance>().eq(ProductStructureInstance::getBomId, processRoute.getBomId()));
+ }
+ }
+
+ /**
+ * 鏍规嵁宸ヨ壓璺嚎杩佺Щ鍥涘紶闄勮〃鏁版嵁
+ */
+ private void migration(ProcessRoute processRoute) {
+ // 杩佺Щ宸ヨ壓璺嚎瀛愰泦琛ㄦ暟鎹�
+ List<ProcessRouteItem> processRouteItemList = processRouteItemService.list(new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
+ migrationProcessRouteItem(processRouteItemList);
+
+ // 杩佺Щ宸ヨ壓璺嚎鍐呯粦瀹氱殑宸ュ簭鍙婂伐搴忓弬鏁�
+ if (processRouteItemList != null && !processRouteItemList.isEmpty()) {
+ for (ProcessRouteItem item : processRouteItemList) {
+ List<ProcessRouteItemParam> paramList = processRouteItemParamService.list(new LambdaQueryWrapper<ProcessRouteItemParam>().eq(ProcessRouteItemParam::getRouteItemId, item.getId()));
+ migrationProcessRouteItemParam(paramList);
+
+ List<ProductProcessParam> processParamList = productProcessParamService.list(new LambdaQueryWrapper<ProductProcessParam>().eq(ProductProcessParam::getProcessId, item.getProcessId()));
+ migrationProductProcessParam(processParamList);
+ }
+ }
+
+ // 杩佺ЩBOM瀛愰泦琛ㄦ暟鎹�
+ if (processRoute.getBomId() != null) {
+ List<ProductStructure> structureList = productStructureService.list(new LambdaQueryWrapper<ProductStructure>().eq(ProductStructure::getBomId, processRoute.getBomId()));
+ migrationProductStructure(structureList);
+ }
+ }
+
+ private void migrationProcessRouteItem(List<ProcessRouteItem> list) {
+ if (list == null || list.isEmpty()) {
+ return;
+ }
+ List<ProcessRouteItemInstance> instances = list.stream().map(item -> {
+ ProcessRouteItemInstance instance = new ProcessRouteItemInstance();
+ BeanUtils.copyProperties(item, instance, "id");
+ instance.setIsQuality(item.getIsQuality() != null && item.getIsQuality() ? 1 : 0);
+ return instance;
+ }).collect(Collectors.toList());
+ processRouteItemInstanceService.saveBatch(instances);
+ }
+
+ private void migrationProcessRouteItemParam(List<ProcessRouteItemParam> list) {
+ if (list == null || list.isEmpty()) {
+ return;
+ }
+ List<ProcessRouteItemParamInstance> instances = list.stream().map(item -> {
+ ProcessRouteItemParamInstance instance = new ProcessRouteItemParamInstance();
+ BeanUtils.copyProperties(item, instance, "id");
+ return instance;
+ }).collect(Collectors.toList());
+ processRouteItemParamInstanceService.saveBatch(instances);
+ }
+
+ private void migrationProductProcessParam(List<ProductProcessParam> list) {
+ if (list == null || list.isEmpty()) {
+ return;
+ }
+ List<ProductProcessParamInstance> instances = list.stream().map(item -> {
+ ProductProcessParamInstance instance = new ProductProcessParamInstance();
+ BeanUtils.copyProperties(item, instance, "id");
+ instance.setIsRequired(item.getIsRequired() != null && item.getIsRequired() == 1);
+ return instance;
+ }).collect(Collectors.toList());
+ productProcessParamInstanceService.saveBatch(instances);
+ }
+
+ private void migrationProductStructure(List<ProductStructure> list) {
+ if (list == null || list.isEmpty()) {
+ return;
+ }
+ List<ProductStructureInstance> instances = list.stream().map(item -> {
+ ProductStructureInstance instance = new ProductStructureInstance();
+ BeanUtils.copyProperties(item, instance, "id");
+ instance.setBomId(item.getBomId() != null ? item.getBomId().longValue() : null);
+ return instance;
+ }).collect(Collectors.toList());
+ productStructureInstanceService.saveBatch(instances);
+ }
+}
--
Gitblit v1.9.3