From 0329286b3ba1ddbdcad4769b9ccd4d5b3f5d1e64 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 24 九月 2024 09:20:49 +0800
Subject: [PATCH] 备货定时任务
---
src/main/resources/mapper/OrderDetlMapper.xml | 6 +
src/main/resources/mapper/OrderMapper.xml | 16 ++++
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 5 +
src/main/java/com/zy/asrs/entity/OrderDetl.java | 10 +-
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 25 ++++++
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | 5 +
src/main/java/com/zy/asrs/task/GhjtScheduler.java | 31 ++++---
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java | 113 ++++++++++++++++++++++++++-
src/main/java/com/zy/asrs/mapper/OrderMapper.java | 10 ++
src/main/resources/mapper/LocDetlMapper.xml | 6 +
src/main/webapp/static/js/order/order.js | 4
11 files changed, 203 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index a6dfdc7..89b83ed 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -397,14 +397,14 @@
}
public String getInspect$(){
- if (null == this.inspect){ return null; }
+ if (null == this.inspect){ return "寰呭璐�"; }
switch (this.inspect){
case 1:
- return "鏄�";
- case 0:
- return "鍚�";
+ return "澶囪揣涓�";
+ case 2:
+ return "宸插璐�";
default:
- return String.valueOf(this.inspect);
+ return "寰呭璐�";
}
}
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index 51be533..3103277 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -86,4 +86,9 @@
* 鏌ヨ鍖呰缁勫彿鍦ㄥ簱鏃堕棿
*/
List<InLocTimeDto> queryInLocTime(@Param("param") List<String> param);
+
+ /**
+ * 鎸夊寘瑁呯粍鍙峰垪琛ㄦ煡璇㈠簱浣嶅彿鍒楄〃
+ */
+ List<LocDetl> selectLocNoByGroupNo(@Param("packageGroupNos") List<String> packageGroupNos);
}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 3346fd9..fef98cd 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -48,4 +48,9 @@
* 鎸夊寘瑁呯粍鍙锋爣璁扮洏鐐硅褰曞紓甯�
*/
void updateCheckExceptionByGroup(@Param("groups") List<String> groups);
+
+ /**
+ * 鎸夊寘瑁呯粍鍙锋洿鏂拌鍗曟槑缁嗙姸鎬�
+ */
+ void updateOrderDetlStatusByPackageNo(@Param("brands") List<String> brands,@Param("status") int status);
}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index bfc089f..5c42005 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -21,4 +21,14 @@
List<Order> selectorderNoL(@Param("orderNo")String orderNo);
void updateSettleByOrderNo(@Param("orderNo") String orderNo, @Param("status") long status, @Param("userId") Long userId);
+
+ /**
+ * 鏌ヨ鍑哄簱鐢宠鍗曚腑娌℃湁澶囪揣鐨勮鍗曟槑缁嗙殑鍖呰缁勫彿
+ */
+ List<String> selectStockUpOrderDetl();
+
+ /**
+ * 鏇存柊璁㈠崟澶囪揣鐘舵��
+ */
+ void updateStatusByOrderNo(@Param("orderNo") String orderNo,@Param("status") int status,@Param("userId") int userId);
}
diff --git a/src/main/java/com/zy/asrs/task/GhjtScheduler.java b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
index f145c11..f3366d6 100644
--- a/src/main/java/com/zy/asrs/task/GhjtScheduler.java
+++ b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
@@ -1,7 +1,6 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.mapper.WrkMastMapper;
@@ -36,20 +35,24 @@
@Resource
private ConfigMapper configMapper;
- // 澶囪揣(鏍规嵁鍑哄簱鍗曪紝鎶婅鍑虹殑璐ф彁鍓嶆斁鍒伴潬杩戝嚭搴撳彛浣嶇疆)
-// @Scheduled(cron = "0/4 * * * * ? ")
- public void stockUp() {
- // 鏌ヨ寰呭嚭搴撹鍗�
- List<Order> orderList = orderMapper.selectList(new EntityWrapper<Order>().eq("settle", 1));
-// ghjtHandler.stockUp();
- List<Order> orders = orderMapper.selectComplete();
- for (Order order : orders) {
- try {
-// ghjtHandler.OutBoundCompleteReport(order);
- } catch (Exception e) {
- log.error("鍑哄簱璁㈠崟瀹屾垚鍒欎笂鎶ES澶辫触锛屽紓甯镐俊鎭細" + e);
- }
+ // 鑷姩澶囪揣(鏍规嵁鍑哄簱鍗曪紝鎶婅鍑虹殑璐ф彁鍓嶆斁鍒伴潬杩戝嚭搴撳彛浣嶇疆)
+ // 瀹氭椂浠诲姟鑾峰彇寰呭璐ц鍗曟槑缁�->鑾峰彇鍫嗗灈鏈哄搴旂殑婧愬簱浣嶏紝鑾峰彇澶囪揣鍖哄簱浣�->鐢熸垚绉诲簱浠诲姟11->
+ // 鎵ц绉诲簱浠诲姟12->鍏ュ簱瀹屾垚4->鏇存柊宸ヤ綔妗e畾鏃朵换鍔′腑鏇存柊璁㈠崟澶囪揣鐘舵�佸拰璁㈠崟鏄庣粏澶囪揣鐘舵��5->杞偍鍘嗗彶
+ @Scheduled(cron = "0/10 * * * * ?")
+ public synchronized void autoStockUp() {
+ // 鏌ヨ鑷姩澶囪揣閰嶇疆
+ Config config = configMapper.selectConfigByCode("auto_stock_up");
+ if (config == null || config.getStatus() == 0) {
+ return;
}
+ // 鏌ヨ鍑哄簱鐢宠鍗曚腑娌℃湁澶囪揣鐨勮鍗曟槑缁嗙殑鍖呰缁勫彿
+ List<String> list = orderMapper.selectStockUpOrderDetl();
+ if (list.isEmpty()) {
+ return;
+ }
+
+ ghjtHandler.autoStockUpHandler(list, Integer.parseInt(config.getValue()));
+
}
// 涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)
diff --git a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
index 60150c6..a3f5e4b 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -4,12 +4,13 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.mapper.OrderDetlMapper;
-import com.zy.asrs.mapper.OrderMapper;
-import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.mapper.*;
import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.WorkService;
import com.zy.asrs.service.WrkDetlService;
import com.zy.common.constant.MesConstant;
import com.zy.common.utils.HttpHandler;
@@ -19,10 +20,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -48,6 +46,15 @@
@Resource
private OrderDetlMapper orderDetlMapper;
+
+ @Resource
+ private LocDetlMapper locDetlMapper;
+
+ @Resource
+ private LocMastMapper locMastMapper;
+
+ @Resource
+ private WorkService workService;
@Transactional
public void startCkrwPushGwcs(WrkMast wrkMast) {
@@ -158,4 +165,96 @@
return flag;
}
+ /**
+ * 鑷姩澶囪揣澶勭悊
+ */
+ public void autoStockUpHandler(List<String> list,int columnNum) {
+
+ // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣�
+ List<LocDetl> locDetls = locDetlMapper.selectLocNoByGroupNo(list);
+ if (locDetls.isEmpty()) {
+ return;
+ }
+ // 鐩稿悓鍒欏悎骞讹紝涓�涓簱浣嶄袱涓寘瑁呯粍鍙�
+ Map<String,List<String>> map = new HashMap<>();
+ for(LocDetl locDetl : locDetls) {
+ List<String> brand = map.get(locDetl.getLocNo());
+ if (brand == null) {
+ map.put(locDetl.getLocNo(),new ArrayList<String>(){{add(locDetl.getBrand());}});
+ } else {
+ brand.add(locDetl.getBrand());
+ map.put(locDetl.getLocNo(),brand);
+ }
+ }
+
+ // 閬嶅巻鍫嗗灈鏈哄苟涓斿垽鏂槸鍚﹀瓨鍦ㄤ换鍔�
+ for (int i = 1; i <= 6; i++) {
+ // 瑕佸璐х殑搴撲綅
+ String sourceLocNo = null;
+ // 澶囪揣鐩爣搴撲綅
+ String staLocNo = null;
+ Integer wrkCount = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", i));
+ if(wrkCount > 0) {
+ log.warn("{}鍙峰爢鍨涙満宸插瓨鍦ㄤ换鍔�",i);
+ continue;
+ }
+ // 鏍规嵁鍫嗗灈鏈哄彿鏌ヨ鍒板搴旂殑娣卞簱浣嶅拰娴呭簱浣� 娣卞簱浣�4*n-3鍜�4*n 娴呭簱浣�4*n-2鍜�4*n-1
+ int s1 = 4*i-3;
+ int s2 = 4*i;
+ int q1 = 4 * i - 2;
+ int q2 = 4 * i -1;
+
+ // 鏍规嵁鍫嗗灈鏈哄彿鑾峰彇涓�涓祬搴撲綅
+ for(String key : map.keySet()) {
+ int row = Integer.parseInt(key.substring(0, 2));
+ if (row == q1 || row == q2) {
+ sourceLocNo = key;
+ break;
+ }
+ }
+ // 娴呭簱浣嶆病鏈夊垯鎵句竴涓繁搴撲綅
+ if (sourceLocNo == null) {
+ for(String key : map.keySet()) {
+ int row = Integer.parseInt(key.substring(0, 2));
+ if (row == s1 || row == s2) {
+ sourceLocNo = key;
+ break;
+ }
+ }
+ }
+ // 娌℃湁鎵惧埌婧愬簱浣�
+ if (sourceLocNo == null) {
+ log.warn("娌℃湁鎵惧埌婧愬簱浣�,鍫嗗灈鏈猴細{}",i);
+ continue;
+ }
+ // 瀵绘壘涓�涓璐х殑鐩爣搴撲綅锛屽厛娣卞悗娴�
+ List<LocMast> locMasts1 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", s1, s2)
+ .le("bay1", columnNum));
+ if (locMasts1.isEmpty()) {
+ // 娣卞簱浣嶄负绌轰簡锛屽彇娴呭簱浣�
+ List<LocMast> locMasts2 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", q1, q2)
+ .le("bay1", columnNum));
+ if (!locMasts2.isEmpty()) {
+ staLocNo = locMasts2.get(0).getLocNo();
+ }
+ } else {
+ staLocNo = locMasts1.get(0).getLocNo();
+ }
+
+ if(staLocNo == null) {
+ log.warn("{}鍙峰爢鍨涙満澶囪揣鍖烘弧浜�",i);
+ continue;
+ }
+
+ // 澶囪揣鐨勬簮搴撲綅锛岀洰鏍囧簱浣嶉兘鑾峰彇鍒颁簡,鐢熸垚绉诲簱浠诲姟
+ workService.locMove(sourceLocNo,staLocNo,29L);
+
+ // 璁㈠崟鏄庣粏鏀规垚澶囪揣涓紝鍦ㄤ换鍔″畬鎴愭椂鍊欐敼鎴愬璐у畬鎴愶紝骞跺垽鏂暣涓鍗曟槸鍚﹀畬鎴�
+ orderDetlMapper.updateOrderDetlStatusByPackageNo(map.get(sourceLocNo), 1);
+
+ // 绉婚櫎宸茬敓鎴愬璐у簱浣�
+ map.remove(sourceLocNo);
+ }
+
+ }
}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 042a645..93032b4 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -4,6 +4,7 @@
import com.core.common.Cools;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
@@ -16,6 +17,7 @@
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
+import java.util.stream.Collectors;
/**
* Created by vincent on 2020/7/4
@@ -39,6 +41,9 @@
private OrderDetlService orderDetlService;
@Resource
private OrderDetlMapper orderDetlMapper;
+
+ @Resource
+ private OrderMapper orderMapper;
public ReturnT<String> start(WrkMast wrkMast) {
// 4.鍏ュ簱瀹屾垚
if (wrkMast.getWrkSts() == 4) {
@@ -313,6 +318,26 @@
return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
}
}
+ // 澶囪揣锛屾洿鏂拌鍗曟槑缁嗗強璁㈠崟鐘舵��
+ List<WrkDetl> wrkDetlList = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (!wrkDetlList.isEmpty()) {
+ List<String> brands = wrkDetlList.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
+ // 鏌ヨ璁㈠崟鏄庣粏
+ List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("brand", brands));
+ if (!orderDetlList.isEmpty()) {
+ // 鏇存柊鏄庣粏涓哄凡澶囪揣
+ orderDetlMapper.updateOrderDetlStatusByPackageNo(brands,2);
+ // 鑾峰彇璁㈠崟鍙�
+ String orderNo = orderDetlList.get(0).getOrderNo();
+ // 鍒ゆ柇璇ヨ鍗曟槑缁嗘槸鍚﹀叏閮ㄥ凡澶囪揣
+ Integer selectCount = orderDetlMapper.selectCount(new EntityWrapper<OrderDetl>().eq("order_no", orderNo).ne("inspect", 2));
+ if (selectCount == 0) {
+ // 鏇存柊璁㈠崟涓哄璐у畬鎴�
+ orderMapper.updateStatusByOrderNo(orderNo,2,29);
+ }
+ }
+ }
+
// 淇敼婧愬簱浣嶇姸鎬� ==> O
LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
if (null != sourceLoc) {
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index da73127..ef44e99 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -388,6 +388,12 @@
brand,
appe_time
</select>
+ <select id="selectLocNoByGroupNo" resultType="com.zy.asrs.entity.LocDetl">
+ select distinct ald.loc_no as locNo,ald.brand from asr_loc_detl ald where ald.brand in
+ <foreach collection="packageGroupNos" item="item" index="index" open="(" close=")" separator=",">
+ #{item}
+ </foreach>
+ </select>
<update id="updateMatTurn">
UPDATE a
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index dede67e..84b5fb9 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -237,5 +237,11 @@
#{item}
</foreach>
</update>
+ <update id="updateOrderDetlStatusByPackageNo">
+ update man_order_detl set inspect = #{status} where brand in
+ <foreach collection="brands" open="(" separator="," close=")" item="item" index="index">
+ #{item}
+ </foreach>
+ </update>
</mapper>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index 2bc2a3c..9a84bc0 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -63,6 +63,9 @@
and order_no = #{orderNo}
and settle != #{status}
</update>
+ <update id="updateStatusByOrderNo">
+ update man_order set account_day = #{status},update_time = getdate(),update_by = #{userId} where order_no = #{orderNo}
+ </update>
<select id="selectComplete" resultMap="BaseResultMap">
select
@@ -91,5 +94,18 @@
and order_no = #{orderNo}
</if>
</select>
+ <select id="selectStockUpOrderDetl" resultType="java.lang.String">
+ select
+ DISTINCT md.brand
+ from
+ man_order mo
+ left join man_order_detl md on
+ mo.order_no = md.order_no
+ where
+ mo.doc_type = 21
+ and mo.account_day = 1
+ and md.inspect = 0
+ and mo.settle = 1
+ </select>
</mapper>
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 20b90d0..2f5ff3d 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -260,8 +260,8 @@
// {field: 'inQty', title: '宸插叆搴撻噺'},
// {field: 'color', title: '棰滆壊'},
// {field: 'specs', title: '鎺ュご'},
- {field: 'qty$', title: '鐘舵��', style: 'font-weight: bold'},
- {field: 'source$', title: '鏄惁纭', style: 'font-weight: bold'}
+ {field: 'qty$', title: '鍑哄簱鐘舵��', style: 'font-weight: bold'},
+ {field: 'inspect$', title: '澶囪揣鐘舵��', style: 'font-weight: bold'}
]],
request: {
pageName: 'curr',
--
Gitblit v1.9.1