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