From dbcc9f8992c97b84aa6ae0a381c807ba6239ae2c Mon Sep 17 00:00:00 2001
From: huangjiayang <5265313@qq.com>
Date: 星期四, 15 五月 2025 16:47:08 +0800
Subject: [PATCH] 【UPDATE】刷新BOM、库存、工艺路线数据缓存接口增加刷新钣金子单数据

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java |  131 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 109 insertions(+), 22 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java
index 74f7ae4..3792967 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java
@@ -1,41 +1,51 @@
 package com.aps.core.service.impl;
 
-import java.util.List;
-
+import cn.hutool.core.util.IdUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.aps.common.core.utils.DateUtils;
 import com.aps.common.core.utils.uuid.IdUtils;
 import com.aps.common.security.utils.DictUtils;
+import com.aps.core.domain.ApsPlatePlan;
 import com.aps.core.domain.ApsPlatePlanTemp;
 import com.aps.core.mapper.ApsPartPlanTempMapper;
+import com.aps.core.mapper.ApsPlatePlanMapper;
 import com.aps.core.mapper.ApsPlatePlanTempMapper;
+import com.aps.core.service.IApsPlatePlanService;
 import com.aps.system.api.domain.SysDictData;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
-import com.aps.core.mapper.ApsPlatePlanMapper;
-import com.aps.core.domain.ApsPlatePlan;
-import com.aps.core.service.IApsPlatePlanService;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 閽i噾璁″垝绠$悊Service涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2025-04-08
  */
 @Service
-public class ApsPlatePlanServiceImpl implements IApsPlatePlanService 
+public class ApsPlatePlanServiceImpl implements IApsPlatePlanService
 {
     @Autowired
     private ApsPlatePlanMapper apsPlatePlanMapper;
 
     @Autowired
     private ApsPartPlanTempMapper apsPartPlanTempMapper;
+
     @Autowired
     private ApsPlatePlanTempMapper apsPlatePlanTempMapper;
 
+    @Autowired
+    public RedisTemplate redisTemplate;
+
     /**
      * 鏌ヨ閽i噾璁″垝绠$悊
-     * 
+     *
      * @param id 閽i噾璁″垝绠$悊涓婚敭
      * @return 閽i噾璁″垝绠$悊
      */
@@ -47,7 +57,7 @@
 
     /**
      * 鏌ヨ閽i噾璁″垝绠$悊鍒楄〃
-     * 
+     *
      * @param apsPlatePlan 閽i噾璁″垝绠$悊
      * @return 閽i噾璁″垝绠$悊
      */
@@ -59,20 +69,21 @@
 
     /**
      * 鏂板閽i噾璁″垝绠$悊
-     * 
+     *
      * @param apsPlatePlan 閽i噾璁″垝绠$悊
      * @return 缁撴灉
      */
     @Override
     public int insertApsPlatePlan(ApsPlatePlan apsPlatePlan)
     {
-        apsPlatePlan.setId(IdUtils.fastUUID());
+        apsPlatePlan.setId(IdUtil.getSnowflakeNextId());
+        apsPlatePlan.setCreateTime(DateUtils.getNowDate());
         return apsPlatePlanMapper.insertApsPlatePlan(apsPlatePlan);
     }
 
     /**
      * 淇敼閽i噾璁″垝绠$悊
-     * 
+     *
      * @param apsPlatePlan 閽i噾璁″垝绠$悊
      * @return 缁撴灉
      */
@@ -84,7 +95,7 @@
 
     /**
      * 鎵归噺鍒犻櫎閽i噾璁″垝绠$悊
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑閽i噾璁″垝绠$悊涓婚敭
      * @return 缁撴灉
      */
@@ -96,7 +107,7 @@
 
     /**
      * 鍒犻櫎閽i噾璁″垝绠$悊淇℃伅
-     * 
+     *
      * @param id 閽i噾璁″垝绠$悊涓婚敭
      * @return 缁撴灉
      */
@@ -108,6 +119,8 @@
 
     @Override
     public int confirmPlan(ApsPlatePlanTemp tempPlan) {
+        //鍏堝垹闄ゆ墍鏈�
+        apsPlatePlanMapper.removeAllPlatePlans();
         //鏌ヨ涓存椂琛ㄦ暟鎹�
         List<ApsPlatePlanTemp> apsPartPlanTemps=apsPlatePlanTempMapper.selectApsPlatePlanTempList(tempPlan);
         int count=0;
@@ -117,7 +130,8 @@
             ids[i]=apsPartPlanTemps.get(i).getId();
             ApsPlatePlan platePlan=new ApsPlatePlan();
             BeanUtils.copyProperties(apsPartPlanTemps.get(i), platePlan);
-            platePlan.setId(IdUtils.fastUUID());
+            platePlan.setId(IdUtil.getSnowflakeNextId());
+            platePlan.setCreateTime(DateUtils.getNowDate());
             //鎻掑叆姝e紡琛紝骞惰褰�
             apsPlatePlanMapper.insertApsPlatePlan(platePlan);
             count++;
@@ -134,15 +148,37 @@
         String batchNum= IdUtils.fastUUID();
         //鍒ゆ柇瀵煎叆鏁版嵁鏄惁涓虹┖
         if (tempList.size() > 0) {
-            List<SysDictData> dictDataList = DictUtils.getDictCache("aps_is_suspended");
+            /*
+            * aps_business_type aps_document_status aps_is_suspended aps_account
+            * */
+
+            List<SysDictData> suspendedDic = DictUtils.getDictCache("aps_is_suspended");
+            List<SysDictData> businessTypeDic = DictUtils.getDictCache("aps_business_type");
+            List<SysDictData> documentStatusDic = DictUtils.getDictCache("aps_document_status");
+            List<SysDictData> accountDic = DictUtils.getDictCache("aps_account");
             for (int i = 0; i < tempList.size(); i++) {
+
                 ApsPlatePlanTemp planTemp = tempList.get(i);
-                for (int j = 0; j < dictDataList.size(); j++) {
-                    if (planTemp.getIsSuspendedTxt().equals(dictDataList.get(j).getDictLabel())) {
-                        planTemp.setIsSuspended(Integer.parseInt(dictDataList.get(j).getDictValue()));
-                        break;
-                    }
-                }
+
+                String isSuspendedTxt = planTemp.getIsSuspended().trim();
+                String businessType = planTemp.getBusinessType().trim();
+                String documentStatusText = planTemp.getDocumentStatus().trim();
+                String account = planTemp.getAccount().trim();
+
+                Optional<SysDictData> documentStatusFirst = documentStatusDic.stream().filter(x -> x.getDictLabel().equals(documentStatusText)).findFirst();
+                documentStatusFirst.ifPresent(sysDictData -> planTemp.setDocumentStatus(sysDictData.getDictValue()));
+
+                Optional<SysDictData> accountFirst = accountDic.stream().filter(x -> x.getDictLabel().equals(account)).findFirst();
+                accountFirst.ifPresent(sysDictData -> planTemp.setAccount(sysDictData.getDictValue()));
+
+                Optional<SysDictData> businessTypeFirst = businessTypeDic.stream().filter(x -> x.getDictLabel().equals(businessType)).findFirst();
+                businessTypeFirst.ifPresent(sysDictData -> planTemp.setBusinessType(sysDictData.getDictValue()));
+
+
+                Optional<SysDictData> isSuspendedFirst = suspendedDic.stream().filter(x -> x.getDictLabel().equals(isSuspendedTxt)).findFirst();
+                isSuspendedFirst.ifPresent(sysDictData -> planTemp.setIsSuspended(sysDictData.getDictValue()));
+
+                planTemp.setId(IdUtils.fastUUID());
                 //鎻掑叆鐗堟湰鍙�
                 planTemp.setBatchNumber(batchNum);
                 //鎻掑叆涓存椂琛�
@@ -153,4 +189,55 @@
            return Strings.EMPTY;
         }
     }
+
+    /**
+     * 閽i噾鍐椾綑宸ュ崟鎶ヨ〃
+     * @param apsPlatePlan
+     * @return
+     */
+    @Override
+    public List<ApsPlatePlan> selectPlateRedundantOrderList(ApsPlatePlan apsPlatePlan) {
+        return apsPlatePlanMapper.selectPlateRedundantOrderList(apsPlatePlan);
+    }
+
+    @Override
+    public ApsPlatePlan selectUnMatchPlateSubPlan(String plant, String itemNumber, Hashtable<String, List<ApsPlatePlan>> subPlans) {
+       if(subPlans.containsKey(itemNumber)) {
+           List<ApsPlatePlan> subPlanList = subPlans.get(itemNumber);
+           Optional<ApsPlatePlan> firstPlant = subPlanList.stream().filter(x -> x.getUnmatchedQuantity().compareTo(BigDecimal.ZERO) > 0).findFirst();
+           return firstPlant.orElse(null);
+       }else {
+           List<ApsPlatePlan> plans = apsPlatePlanMapper.selectUnMatchPlateSubPlanList(plant, itemNumber);
+           if (!plans.isEmpty()) {
+               subPlans.put(itemNumber, plans);
+               return selectUnMatchPlateSubPlan(plant, itemNumber, subPlans);
+           } else {
+               return null;
+           }
+       }
+    }
+
+    @Override
+    public boolean setSubPlansToRedis() {
+        try {
+            Set<String> keys = redisTemplate.keys("PLATE_SUB_PLAN:*");
+            if (keys != null && !keys.isEmpty()) {
+                redisTemplate.delete(keys);
+            }
+            List<JSONObject> subPlans = apsPlatePlanMapper.selectApsSubPlatePlan();
+//            ApsPlatePlan a = JSONObject.parseObject(String.valueOf(subPlans.get(0)), ApsPlatePlan.class);
+            Map<String, List<JSONObject>> groupByItemNumber = subPlans.stream().collect(Collectors.groupingBy(obj -> obj.getString("itemNumber")));
+            Map<String, Object> bulkData = new HashMap<>();
+            for (Map.Entry<String, List<JSONObject>> entry : groupByItemNumber.entrySet()) {
+                String key = entry.getKey();
+                List<JSONObject> value = entry.getValue();
+                bulkData.put("PLATE_SUB_PLAN:"+key, value);
+            }
+            redisTemplate.opsForValue().multiSet(bulkData);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
 }

--
Gitblit v1.9.3