From fbb90c31d56348ec3fcc49af49c66b19992f58df Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期五, 16 五月 2025 17:15:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java | 64 +++++++++++++++++++++++++++++--
1 files changed, 59 insertions(+), 5 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 6fda182..51e6618 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,15 +1,13 @@
package com.aps.core.service.impl;
import cn.hutool.core.util.IdUtil;
-import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
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.ApsMaterialStorageManagement;
import com.aps.core.domain.ApsPlatePlan;
import com.aps.core.domain.ApsPlatePlanTemp;
-import com.aps.core.domain.ApsPlateStandardRequire;
import com.aps.core.mapper.ApsPartPlanTempMapper;
import com.aps.core.mapper.ApsPlatePlanMapper;
import com.aps.core.mapper.ApsPlatePlanTempMapper;
@@ -21,8 +19,9 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
-import java.util.List;
-import java.util.Optional;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 閽i噾璁″垝绠$悊Service涓氬姟灞傚鐞�
@@ -38,8 +37,12 @@
@Autowired
private ApsPartPlanTempMapper apsPartPlanTempMapper;
+
@Autowired
private ApsPlatePlanTempMapper apsPlatePlanTempMapper;
+
+ @Autowired
+ public RedisTemplate redisTemplate;
/**
* 鏌ヨ閽i噾璁″垝绠$悊
@@ -197,4 +200,55 @@
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> planOptional = subPlanList.stream().filter(x -> x.getUnmatchedQuantity().compareTo(BigDecimal.ZERO) > 0).findFirst();
+ return planOptional.orElse(null);
+ }else {
+ List<ApsPlatePlan> plans = getSubPlansFromRedis(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;
+ }
+ }
+
+ public List<ApsPlatePlan> getSubPlansFromRedis(String itemNumber) {
+ List<ApsPlatePlan> subPlans=new ArrayList<>();
+ JSONArray jsonArray =(JSONArray) redisTemplate.opsForValue().get("PLATE_SUB_PLAN:" + itemNumber);
+ if (jsonArray != null && !jsonArray.isEmpty()) {
+ subPlans = jsonArray.stream().map(obj -> JSONObject.parseObject(String.valueOf(obj), ApsPlatePlan.class)).toList();
+ subPlans.forEach(subPlan -> subPlan.setVersion(0));
+ }
+ return subPlans;
+ }
}
--
Gitblit v1.9.3