From cf55ca39fd7f7d65d5119313dff6315ac63aad8c Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期四, 12 十月 2023 08:29:10 +0800 Subject: [PATCH] 自动补货单 --- src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java | 99 +++++++++++++++++++++++++++++++++ src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java | 43 ++++++++++++++ 2 files changed, 142 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java b/src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java new file mode 100644 index 0000000..7050458 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java @@ -0,0 +1,43 @@ +package com.zy.asrs.task; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.DocTypeService; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.handler.AutoReplenishmentHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Component +public class AutoReplenishmentScheduler { + + @Autowired + private OrderService orderService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private AutoReplenishmentHandler autoReplenishmentHandler; + + /* + 瀹氭椂澶勭悊鑷姩琛ヨ揣鍗曟嵁 + */ + @Scheduled(cron = "0/5 * * * * ? ") + public void excute(){ + DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", "鑷姩琛ヨ揣鍗�")); + List<Order> orderList = orderService.selectList(new EntityWrapper<Order>() + .eq("doc_type", docType.getDocId()) + .eq("settle",1)); + if(!Cools.isEmpty(orderList)){ + orderList.forEach(order -> { + autoReplenishmentHandler.start(order); + }); + } + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java new file mode 100644 index 0000000..2a9cb89 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java @@ -0,0 +1,99 @@ +package com.zy.asrs.task.handler; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.exception.CoolException; +import com.zy.asrs.entity.LocDetl; +import com.zy.asrs.entity.LocMast; +import com.zy.asrs.entity.Order; +import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.service.LocDetlService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.service.OrderDetlService; +import com.zy.asrs.service.WorkService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Service +public class AutoReplenishmentHandler extends AbstractHandler<String> { + + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private LocDetlService locDetlService; + @Autowired + private LocMastService locMastService; + @Autowired + private WorkService workService; + + @Transactional + public ReturnT<String> start(Order order) { + + Set<String> locNos = pakoutLoc(order); + for (String locNo : locNos){ + LocMast locMast = locMastService.selectByLoc(locNo); + if(!"F".equals(locMast.getLocSts())){ + throw new CoolException("搴撲綅鐘舵�佸凡鍙樻洿"); + } + //鐢熸垚宸ヤ綔妗� + + //鐢熸垚宸ヤ綔妗f槑缁� + //淇敼搴撲綅鐘舵�� + } + + + return SUCCESS; + } + + private Set<String> pakoutLoc(Order order){ + //闇�瑕佸嚭搴撶殑搴撲綅 + Set<String> locNos = new HashSet<>(); + //鏍规嵁璁㈠崟鐢熸垚鍥涢」搴撳嚭搴撳伐浣滄。 + List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo())); + orderDetlList.forEach(orderDetl -> { + String matnr = orderDetl.getMatnr(); + Double orderAnfme = orderDetl.getAnfme(); + + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() + .eq("matnr", matnr) + .eq("loc_sts","F") + .groupBy("loc_no")); + for (LocDetl locDetl : locDetls){ + String locNo = locDetl.getLocNo(); + //璁㈠崟寰呭嚭鏁伴噺鍑忓幓搴撳瓨鏁伴噺 + orderAnfme -= locDetl.getAnfme(); + //娣诲姞寰呭嚭搴撳簱浣� + locNos.add(locNo); + + if(orderAnfme <= 0){ + orderDetl.setQty(orderDetl.getAnfme() - orderAnfme); + orderDetlService.updateById(orderDetl); + break; + } + } + + }); + + return locNos; + } + + public static void main(String[] args) { + for (int i=0; i<10; i++){ + for (int y=0; y<10; y++){ + System.out.println(i); + System.out.println(y); + if(y == 5){ + break; + } + } + } + } + + +} -- Gitblit v1.9.1