From b830ec60edf8b4a581e6ed7ca4a62e16a82d7081 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 17 十二月 2024 15:33:12 +0800
Subject: [PATCH] 优化逻辑并调整线程池配置
---
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 13 +++++-
src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java | 74 +++++++++++++++++++++----------------
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 4 ++
src/main/java/com/zy/asrs/task/ReportDataScheduler.java | 2 +
src/main/java/com/zy/common/config/ThreadPoolConfig.java | 8 ++--
5 files changed, 62 insertions(+), 39 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 376531f..eecfc9d 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -1324,6 +1324,10 @@
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
wrkMast.setModiTime(now);
+ if (!Cools.isEmpty(locNo) && Cools.isEmpty(pltType)) {
+ AgvLocMast agvLocMast = agvLocMastService.selectById(locNo);
+ pltType = agvLocMast.getPltType();
+ }
wrkMast.setPltType(pltType);
wrkMast.setLogErrMemo("createWaitPainWrkMastStart");
diff --git a/src/main/java/com/zy/asrs/task/ReportDataScheduler.java b/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
index ba7974d..3e25641 100644
--- a/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
+++ b/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
@@ -15,6 +15,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -58,6 +59,7 @@
@Scheduled(fixedDelay = 5000)
+ @Async("reportThreadPool")
public void execute() {
log.info("瀹氭椂浠诲姟寮�濮嬫墽琛�");
if (!flag) {
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index c2c10bf..99a2dae 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -336,15 +336,22 @@
// }
// agvWrkMastService.updateById(agvWrkMast);
// }
-
+ Integer pltType = agvWrkMast.getPltType();
+ if (Cools.isEmpty(pltType) && !Cools.isEmpty(agvWrkMast.getLocNo())) {
+ AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
+ if (agvLocMast != null) {
+ pltType = agvLocMast.getPltType();
+ }
+ }
if (!isJSON(orderNo)) {
//妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo, agvWrkMast.getPltType());
+ orderService.checkComplete(orderNo, pltType);
} else {
List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ Integer finalPltType = pltType;
maps.forEach(map -> {
String o = map.get("orderNo").toString();
- orderService.checkComplete(o, agvWrkMast.getPltType());
+ orderService.checkComplete(o, finalPltType);
});
}
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
index 646d5a2..451c395 100644
--- a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
@@ -29,6 +29,9 @@
private LocDetlService locDetlService;
@Autowired
private LocMastService locMastService;
+
+ @Autowired
+ private AgvLocMastService agvLocMastService;
@Autowired
private CommonService commonService;
@Autowired
@@ -64,16 +67,16 @@
Date now = new Date();
Set<String> locNos = pakoutLoc(order);
- for (String locNo : locNos){
+ for (String locNo : locNos) {
LocMast locMast = locMastService.selectByLoc(locNo);
- if(!"F".equals(locMast.getLocSts())){
+ if (!"F".equals(locMast.getLocSts())) {
throw new CoolException("搴撲綅鐘舵�佸凡鍙樻洿");
}
//鐢熸垚宸ヤ綔妗�
- WrkMast wrkMast = createWrkMast(locNo,locMast.getBarcode(),now);
+ WrkMast wrkMast = createWrkMast(locNo, locMast.getBarcode(), now);
//鐢熸垚宸ヤ綔妗f槑缁�
List<LocDetl> locDetls = locDetlService.selectByLocNo(locNo);
- createWrkDetl(locDetls, wrkMast,order.getOrderNo(),now);
+ createWrkDetl(locDetls, wrkMast, order.getOrderNo(), now);
//淇敼搴撲綅鐘舵��
locMast.setLocSts("R");
locMastService.updateByLocNo(locMast);
@@ -84,7 +87,7 @@
return SUCCESS;
}
- private Order createOrder(){
+ private Order createOrder() {
Date now = new Date();
return new Order(
String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
@@ -125,7 +128,7 @@
}
- private OrderDetl createOrderDetl(Order order){
+ private OrderDetl createOrderDetl(Order order) {
Date now = new Date();
OrderDetl orderDetl = new OrderDetl();
@@ -141,14 +144,14 @@
return orderDetl;
}
- private Set<String> pakoutLoc(Order order){
+ private Set<String> pakoutLoc(Order order) {
//闇�瑕佸嚭搴撶殑搴撲綅
Set<String> locNos = new HashSet<>();
//鏍规嵁璁㈠崟鐢熸垚鍥涢」搴撳嚭搴撳伐浣滄。
List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()));
- for(OrderDetl orderDetl : orderDetlList){
- if(orderDetl.getAnfme() - orderDetl.getQty() <= 0){
+ for (OrderDetl orderDetl : orderDetlList) {
+ if (orderDetl.getAnfme() - orderDetl.getQty() <= 0) {
continue;
}
@@ -162,16 +165,16 @@
//杩囨护搴撲綅璐х墿涓洪珮璐х墿
locNosSearch = locNosSearch.stream().filter(locNo -> {
LocMast locMast = locMastService.selectByLoc(locNo);
- if(locMast.getLocType1() == 3){
+ if (locMast.getLocType1() == 3) {
return false;
- }else {
+ } else {
//涓旀娴嬭搴撲綅鏄惁鍚病鏈夎揣鏋剁爜鐨勭墿鏂欙紝濡傛湁鏈夊垯涓嶅厑璁稿嚭搴�
// LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locNo)
// .andNew().eq("supp_code", "").or().isNull("supp_code"));
- if(Cools.isEmpty(locDetlService.selectByLocWithoutContainer(locNo))){
+ if (Cools.isEmpty(locDetlService.selectByLocWithoutContainer(locNo))) {
return true;
- }else {
+ } else {
return false;
}
}
@@ -180,13 +183,13 @@
//閲嶆柊鎺掑簭
Set<String> resort = resort(locNosSearch);
- for(String locNo : resort){
+ for (String locNo : resort) {
List<LocDetl> locDetls = locDetlService.selectByLocNo(locNo);
locNos.add(locNo);
- for (LocDetl locDetl :locDetls){
- if(matnr.equals(locDetl.getMatnr())){
+ for (LocDetl locDetl : locDetls) {
+ if (matnr.equals(locDetl.getMatnr())) {
orderAnfme -= locDetl.getAnfme();
- }else {
+ } else {
OrderDetl odNew = createOrderDetl(order);
odNew.setMatnr(locDetl.getMatnr());
odNew.setMaktx(locDetl.getMaktx());
@@ -199,13 +202,13 @@
orderDetlService.insert(odNew);
}
}
- if(orderAnfme <= 0){
+ if (orderAnfme <= 0) {
orderDetl.setQty(orderDetl.getAnfme() - orderAnfme);
orderDetlService.updateById(orderDetl);
break;
}
}
- if(orderAnfme > 0){
+ if (orderAnfme > 0) {
orderDetl.setAnfme(orderDetl.getAnfme() - orderAnfme);
orderDetl.setQty(orderDetl.getAnfme());
orderDetlService.updateById(orderDetl);
@@ -216,30 +219,30 @@
}
//鏍规嵁娣辨祬搴撲綅杩涜閲嶆柊鎺掑簭
- private Set<String> resort(Set<String> locNos){
+ private Set<String> resort(Set<String> locNos) {
Set<String> locNosResort = new LinkedHashSet<>();
- for(String locNoSearch : locNos){
+ for (String locNoSearch : locNos) {
LocMast locMast = locMastService.selectById(locNoSearch);
- if(!"F".equals(locMast.getLocSts())){
+ if (!"F".equals(locMast.getLocSts())) {
continue;
}
List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNoSearch);
- if(Cools.isEmpty(groupOuterLoc)){
+ if (Cools.isEmpty(groupOuterLoc)) {
locNosResort.add(locNoSearch);
- }else {
+ } else {
groupOuterLoc.add(locNoSearch);
//濡傛灉鏄繁搴撲綅锛屽垯鍏堟壘澶栦晶鐨勫簱浣�
- for (String locNoOut : groupOuterLoc){
+ for (String locNoOut : groupOuterLoc) {
LocMast locMastOuter = locMastService.selectById(locNoOut);
//澶栦晶濡傛灉鏄嫞鏂欙紝鍒欏唴娴嬩笉鍏佽鍑�
- if("P".equals(locMastOuter.getLocSts()) || "Q".equals(locMastOuter.getLocSts()) || "S".equals(locMastOuter.getLocSts())){
+ if ("P".equals(locMastOuter.getLocSts()) || "Q".equals(locMastOuter.getLocSts()) || "S".equals(locMastOuter.getLocSts())) {
break;
}
- if(!"F".equals(locMastOuter.getLocSts())){
+ if (!"F".equals(locMastOuter.getLocSts())) {
continue;
}
locNosResort.add(locNoOut);
@@ -250,7 +253,7 @@
return locNosResort;
}
- private WrkMast createWrkMast(String locNo,String barCode,Date now){
+ private WrkMast createWrkMast(String locNo, String barCode, Date now) {
int ioType = 101;
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
WrkMast wrkMast = new WrkMast();
@@ -274,19 +277,26 @@
wrkMast.setAppeTime(now);
//wrkMast.setModiUser(userId);
wrkMast.setModiTime(now);
-
+ Integer pltType = null;
+ if (!Cools.isEmpty(locNo) && Cools.isEmpty(pltType)) {
+ AgvLocMast agvLocMast = agvLocMastService.selectById(locNo);
+ if (agvLocMast != null) {
+ pltType = agvLocMast.getPltType();
+ }
+ }
+ wrkMast.setPltType(pltType);
//琛ヨ揣鏍囪瘑
wrkMast.setMk("Y");
if (!wrkMastService.insert(wrkMast)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+locNo);
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locNo);
}
return wrkMast;
}
- private void createWrkDetl(List<LocDetl> locDetls, WrkMast wrkMast,String orderNo, Date now){
+ private void createWrkDetl(List<LocDetl> locDetls, WrkMast wrkMast, String orderNo, Date now) {
locDetls.forEach(locDetl -> {
WrkDetl wrkDetl = new WrkDetl();
- BeanUtils.copyProperties(locDetl,wrkDetl);
+ BeanUtils.copyProperties(locDetl, wrkDetl);
wrkDetl.setZpallet(wrkMast.getBarcode());
wrkDetl.setIoTime(now);
wrkDetl.setWrkNo(wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/common/config/ThreadPoolConfig.java b/src/main/java/com/zy/common/config/ThreadPoolConfig.java
index 1b21b47..184786c 100644
--- a/src/main/java/com/zy/common/config/ThreadPoolConfig.java
+++ b/src/main/java/com/zy/common/config/ThreadPoolConfig.java
@@ -14,20 +14,20 @@
@EnableAsync
public class ThreadPoolConfig {
- @Bean(name = "orderThreadPool")
+ @Bean(name = "reportThreadPool")
public ThreadPoolTaskExecutor orderThreadPool() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
int core = Runtime.getRuntime().availableProcessors();
- core = 2;
+ core = 1;
//璁剧疆鏍稿績绾跨▼鏁�
executor.setCorePoolSize(core);
//璁剧疆鏈�澶х嚎绋嬫暟
- executor.setMaxPoolSize(core * 10 + core);
+ executor.setMaxPoolSize(1);
//闄ゆ牳蹇冪嚎绋嬪鐨勭嚎绋嬪瓨娲绘椂闂�
executor.setKeepAliveSeconds(3);
//缂撳啿闃熷垪
executor.setQueueCapacity(core);
- executor.setThreadNamePrefix("order-task-");
+ executor.setThreadNamePrefix("report-task-");
//璁剧疆鎷掔粷绛栫暐
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
--
Gitblit v1.9.1