From a35b9acb89c73bf6fee0b4d48c72dc7240cffcf7 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期三, 23 十月 2024 13:56:39 +0800 Subject: [PATCH] 自动生成入库通知档 --- src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java | 92 ++++++++++++++++++++++++++++++ src/main/resources/mapper/OrderMapper.xml | 23 +++++++ src/main/java/com/zy/asrs/controller/OpenController.java | 2 src/main/java/com/zy/asrs/mapper/OrderMapper.java | 10 +++ src/main/java/com/zy/asrs/entity/Order.java | 2 src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java | 40 +++++++++++++ 6 files changed, 167 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 7bb5801..30bd744 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -55,7 +55,7 @@ return openService.grouping(param); } - @PostMapping("/barcodeVerificatio") + @PostMapping("/barcodeVerificatio") @AppAuth(memo = "AGV璋冪敤鏍¢獙鏉$爜") public synchronized R barcodeVerificatio(@RequestHeader(required = false) String appkey, @RequestBody(required = false) Map<String,String> param, diff --git a/src/main/java/com/zy/asrs/entity/Order.java b/src/main/java/com/zy/asrs/entity/Order.java index fd13474..4b170de 100644 --- a/src/main/java/com/zy/asrs/entity/Order.java +++ b/src/main/java/com/zy/asrs/entity/Order.java @@ -165,7 +165,7 @@ /** * 缁撶畻澶╂暟 */ - @ApiModelProperty(value= "缁撶畻澶╂暟") + @ApiModelProperty(value= "0榛樿锛�1宸茬敓鎴愬叆搴撻�氱煡妗�") @TableField("account_day") private Integer accountDay; diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java index eb249f6..c975faf 100644 --- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java +++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java @@ -23,4 +23,14 @@ Order selectOrderMoveStatus(); Order selectOrderMoveStatusInitial(); + + /** + * 鎵弿鍑哄緟澶勭悊锛屾湭鐢熸垚鍏ュ簱閫氱煡妗g殑鍏ュ簱鍗曟嵁 + */ + List<Order> selectNotGroupingList(); + + /** + * 鏇存柊璁㈠崟鐘舵�佸拰缁勬墭鐘舵�� + */ + int updateSettleAndGroupingFlag(@Param("orderId")Long orderId, @Param("settle")Long settle, @Param("account_day")Integer flag); } diff --git a/src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java b/src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java new file mode 100644 index 0000000..94c4812 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java @@ -0,0 +1,40 @@ +package com.zy.asrs.task; + +import com.zy.asrs.entity.Order; +import com.zy.asrs.mapper.OrderMapper; +import com.zy.asrs.task.handler.AutoGroupingHandler; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author pang.jiabao + * @description 鑷姩缁勬墭瀹氭椂浠诲姟 + * @createDate 2024/10/23 13:13 + */ +@Component +public class AutoGroupingScheduler { + + @Resource + private OrderMapper orderMapper; + + @Resource + private AutoGroupingHandler autoGroupingHandler; + + + // 鑷姩缁勬墭 + // 鎵弿鍗曟嵁杩涜缁勬墭 order琛� account_day 0榛樿锛�1宸茬敓鎴愬叆搴撻�氱煡妗� + @Scheduled(cron = "0/3 * * * * ? ") + private void autoGrouping() { + + // 鎵弿鏈敓鎴愬叆搴撻�氱煡妗e崟鎹� + List<Order> orderList = orderMapper.selectNotGroupingList(); + + for (Order order : orderList) { + autoGroupingHandler.autoGrouping(order); + } + + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java new file mode 100644 index 0000000..5e5f7d8 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java @@ -0,0 +1,92 @@ +package com.zy.asrs.task.handler; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +import com.core.exception.CoolException; +import com.zy.asrs.entity.Mat; +import com.zy.asrs.entity.Order; +import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.WaitPakin; +import com.zy.asrs.mapper.OrderMapper; +import com.zy.asrs.service.MatService; +import com.zy.asrs.service.OrderDetlService; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.service.WaitPakinService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * @author pang.jiabao + * @description 鑷姩缁勬墭瀹氭椂浠诲姟澶勭悊鍣� + * @createDate 2024/10/23 13:14 + */ +@Slf4j +@Service +public class AutoGroupingHandler { + + @Resource + private OrderDetlService orderDetlService; + + @Resource + private MatService matService; + + @Resource + private WaitPakinService waitPakinService; + + @Resource + private OrderService orderService; + + @Resource + private OrderMapper orderMapper; + + public void autoGrouping(Order order) { + + Date now = new Date(); + + // 鑾峰彇璁㈠崟鏄庣粏 + List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo())); + + // 鐢熸垚鍏ュ簱閫氱煡妗� + for (OrderDetl orderDetl : orderDetlList) { + if (orderDetl.getAnfme() > orderDetl.getEnableQty()) { + throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } + // 淇敼璁㈠崟浣滀笟鏁伴噺 + if (!orderDetlService.increaseWorkQty(orderDetl, orderDetl.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); + } + + Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(orderDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + WaitPakin waitPakin = new WaitPakin(); + waitPakin.sync(mat); + waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setBatch(orderDetl.getBatch()); // 搴忓垪鐮� + waitPakin.setZpallet(orderDetlList.size() == 1 ? order.getTemp2() : orderDetl.getTemp2()); // 鎵樼洏鐮� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme(orderDetl.getAnfme()); // 鏁伴噺 + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeTime(now); + waitPakin.setModiTime(now); + // @鍙互浜嗕富銆佷粠琛ㄤ腑Temp2瀛樼殑灏辨槸鎵樼洏鍙凤紝濡傛灉涓�鎵樹竴涓崟瀛愬瓨鐨勫氨鏄富琛ㄧ殑Temp2瀛楁锛� + // 鍚﹀垯瀛樼殑灏辨槸浠庤〃鐨凾emp2瀛楁锛屼粠琛ㄤ腑锛氫骇鍝両D:ItemId,浜у搧浠e彿:ItemCode,鎵瑰彿:ItemBatch, + // 灞炴��:ProType,棰滆壊:sColor,璁㈠崟鍙�:OrderNo,鐐夊彿:LuHao,瀹㈡埛ID:Packing,宸ュ崟鍙凤細sPgNo + waitPakin.setSPgNO(orderDetl.getSPgNO()); + waitPakin.setOutOrderNo(orderDetl.getOutOrderNo()); + waitPakin.setProType(orderDetl.getProType()); + waitPakin.setLuHao(orderDetl.getLuHao()); + waitPakin.setPacking(orderDetl.getPacking()); + if (!waitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + } + + orderMapper.updateSettleAndGroupingFlag(order.getId(), 2L, 1); + } +} diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 06a13d9..d74bcb9 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/src/main/resources/mapper/OrderMapper.xml @@ -58,6 +58,17 @@ where 1=1 and id = #{orderId} </update> + <update id="updateSettleAndGroupingFlag"> + update + man_order + set + settle = #{settle}, + account_day = #{account_day} , + update_time = getdate() + where + 1 = 1 + and id = #{orderId} + </update> <select id="selectWork" resultMap="BaseResultMap"> select top 5 * @@ -113,5 +124,17 @@ and move_status = 1 order by update_time </select> + <select id="selectNotGroupingList" resultMap="BaseResultMap"> + select + * + from + man_order mo + left join man_doc_type mdt on + mo.doc_type = mdt.doc_id + where + mdt.pakin = 1 + and mo.account_day = 0 + and mo.settle = 1 + </select> </mapper> -- Gitblit v1.9.1