From 0f769b47d8d71bd419ddf1733b0b2f21c82e86b1 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期一, 07 十月 2024 10:33:30 +0800 Subject: [PATCH] 跨巷道移库 --- src/main/java/com/zy/asrs/service/WorkService.java | 5 src/main/resources/mapper/OrderMapper.xml | 3 src/main/java/com/zy/asrs/entity/OrderDetl.java | 10 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 89 +++++++++++ src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | 6 src/main/java/com/zy/asrs/task/GhjtScheduler.java | 27 +++ src/main/java/com/zy/asrs/task/handler/GhjtHandler.java | 124 +++++++++++++++ src/main/java/com/zy/asrs/importexcle/ImportOrderDto.java | 7 src/main/resources/mapper/OrderDetlMapper.xml | 17 ++ src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java | 15 + src/main/java/com/zy/asrs/mapper/OrderMapper.java | 5 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 130 ++++++++++++++++ src/main/webapp/static/js/order/order.js | 4 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 2 14 files changed, 429 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java index 89b83ed..a97aa6a 100644 --- a/src/main/java/com/zy/asrs/entity/OrderDetl.java +++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java @@ -417,14 +417,14 @@ } public String getDanger$(){ - if (null == this.danger){ return null; } + if (null == this.danger){ return "寰呯Щ搴�"; } switch (this.danger){ case 1: - return "鏄�"; - case 0: - return "鍚�"; + return "绉诲簱涓�"; + case 2: + return "绉诲簱瀹屾垚"; default: - return String.valueOf(this.danger); + return "寰呯Щ搴�"; } } diff --git a/src/main/java/com/zy/asrs/importexcle/ImportOrderDto.java b/src/main/java/com/zy/asrs/importexcle/ImportOrderDto.java index 8395d76..fd0ecf5 100644 --- a/src/main/java/com/zy/asrs/importexcle/ImportOrderDto.java +++ b/src/main/java/com/zy/asrs/importexcle/ImportOrderDto.java @@ -11,10 +11,13 @@ @Data public class ImportOrderDto { - @ExcelProperty(value = "鍖呰缁勫彿",index = 0) + @ExcelProperty(value = "鍖呰缁勫彿/婧愬簱浣�",index = 0) private String column1; - @ExcelProperty(value = "鍑哄簱鍗曞彿/鍗曟嵁绫诲瀷",index = 1) + @ExcelProperty(value = "鍑哄簱鍗曞彿/鍗曟嵁绫诲瀷/鐩爣搴撲綅",index = 1) private String column2; + @ExcelProperty(value = "鐩爣宸烽亾",index = 2) + private String column3; + } diff --git a/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java b/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java index 93226be..4fefeb9 100644 --- a/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java +++ b/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java @@ -37,6 +37,8 @@ private long orderId; + private long docTypeId; + List<ImportOrderDto> list = new ArrayList<>(); /** * 鍋囪杩欎釜鏄竴涓狣AO锛屽綋鐒舵湁涓氬姟閫昏緫杩欎釜涔熷彲浠ユ槸涓�涓猻ervice銆傚綋鐒跺鏋滀笉鐢ㄥ瓨鍌ㄨ繖涓璞℃病鐢ㄣ�� @@ -77,6 +79,7 @@ throw new ExcelAnalysisException("鍗曟嵁绫诲瀷閿欒锛�" + list.get(1).getColumn2()); } orderNo = list.get(0).getColumn2(); + docTypeId = docType.getDocId(); Order order = new Order(); order.setUuid(String.valueOf(snowflakeIdWorker.nextId())); order.setOrderNo(orderNo); @@ -122,7 +125,17 @@ List<OrderDetl> orderDetlList = new ArrayList<>(); list.forEach(importOrderDto -> { OrderDetl orderDetl = new OrderDetl(); - orderDetl.setBrand(importOrderDto.getColumn1()); + if (docTypeId == 24) { + orderDetl.setSpecs(String.format("%07d",Integer.parseInt(importOrderDto.getColumn1()))); // 婧愬簱浣� + if (importOrderDto.getColumn2() != null) { + orderDetl.setModel(String.format("%07d",Integer.parseInt(importOrderDto.getColumn2()))); // 鐩爣搴撲綅 + } + if (importOrderDto.getColumn3() != null) { + orderDetl.setBeBatch(Integer.parseInt(importOrderDto.getColumn3())); //宸烽亾 + } + } else { + orderDetl.setBrand(importOrderDto.getColumn1()); + } orderDetl.setBatch(""); orderDetl.setOrderId(orderId); orderDetl.setOrderNo(orderNo); diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java index fef98cd..151f68f 100644 --- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java @@ -53,4 +53,10 @@ * 鎸夊寘瑁呯粍鍙锋洿鏂拌鍗曟槑缁嗙姸鎬� */ void updateOrderDetlStatusByPackageNo(@Param("brands") List<String> brands,@Param("status") int status); + + /** + * 鏌ヨ璺ㄥ贩閬撶Щ搴撶殑鏈墽琛岀殑搴撲綅 + */ + List<OrderDetl> selectMoveLocDetl(); + } diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java index 5c42005..8dd8494 100644 --- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java +++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java @@ -23,6 +23,11 @@ void updateSettleByOrderNo(@Param("orderNo") String orderNo, @Param("status") long status, @Param("userId") Long userId); /** + * 鏇存柊鍗曟嵁鐘舵�侊紝鍙湁寰呭鐞嗘墠鏇存柊 + */ + void updatePendingSettleByOrderNo(@Param("orderNo") String orderNo, @Param("status") long status); + + /** * 鏌ヨ鍑哄簱鐢宠鍗曚腑娌℃湁澶囪揣鐨勮鍗曟槑缁嗙殑鍖呰缁勫彿 */ List<String> selectStockUpOrderDetl(); diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java index 4d9cc0e..81b1438 100644 --- a/src/main/java/com/zy/asrs/service/WorkService.java +++ b/src/main/java/com/zy/asrs/service/WorkService.java @@ -71,6 +71,11 @@ void locMove(String sourceLocNo, String locNo, Long userId); /** + * 璺ㄥ贩閬撳簱浣嶇Щ杞� + */ + void autoLocMove(String orderNo,String sourceLocNo, String locNo, Long userId); + + /** * 鎵嬪姩瀹屾垚宸ヤ綔妗� */ void completeWrkMast(String workNo, Long userId); diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index 2de975b..c702b1d 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -1341,6 +1341,8 @@ wrkMast.setWrkSts(2L); if(wrkMast.getIoType() == 10){ wrkMast.setBarcode(param.getBarcode()); + } else if(wrkMast.getIoType() == 12) { // 璺ㄥ贩閬撹浆绉诲叆搴� + } wrkMastService.updateById(wrkMast); diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java index 228bb31..eeffb60 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -43,6 +43,19 @@ // 搴撲綅鎺掑彿鍒嗛厤榛樿绫诲埆 private static final int DEFAULT_ROW_NO_TYPE = 1; + // 鍫嗗灈鏈烘槧灏勪竴妤肩殑鍏ュ簱鍑哄簱绔欑偣 + private static final Map<Integer,List<Integer>> crnMapNo; + + static { + crnMapNo = new HashMap<>(); + crnMapNo.put(1,new ArrayList<Integer>(){{add(3001);add(3002);}}); + crnMapNo.put(2,new ArrayList<Integer>(){{add(3004);add(3003);}}); + crnMapNo.put(3,new ArrayList<Integer>(){{add(3005);add(3006);}}); + crnMapNo.put(4,new ArrayList<Integer>(){{add(3007);add(3008);}}); + crnMapNo.put(5,new ArrayList<Integer>(){{add(3010);add(3009);}}); + crnMapNo.put(6,new ArrayList<Integer>(){{add(3011);add(3012);}}); + } + @Autowired private MatService matService; @Autowired @@ -831,6 +844,95 @@ @Override @Transactional + public void autoLocMove(String orderNo,String sourceLocNo, String locNo, Long userId) { + LocMast sourceLoc = locMastService.selectById(sourceLocNo); + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); + if (Cools.isEmpty(sourceLoc)){ + throw new CoolException("鏈壘鍒板簱浣�"); + } + LocMast loc = locMastService.selectById(locNo); + if (Cools.isEmpty(loc)){ + throw new CoolException("鏈壘鍒板簱浣�"); + } + if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){ + throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉"); + } +// if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { +// throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); +// } + + Date now = new Date(); + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.PICK.type); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(12); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 + wrkMast.setIoPri(10D); + wrkMast.setCrnNo(sourceLoc.getCrnNo()); + wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� + wrkMast.setLocNo(locNo); // 鐩爣搴撲綅 + wrkMast.setSourceStaNo(crnMapNo.get(sourceLoc.getCrnNo()).get(1)); // 鍑哄簱婧愮珯鐐� + wrkMast.setStaNo(crnMapNo.get(loc.getCrnNo()).get(0)); // 鍏ュ簱鐩爣绔欑偣 + wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 + wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 宸ヤ綔妗f槑缁嗕繚瀛� + for (LocDetl locDetl : locDetls) { + WrkDetl wrkDetl = new WrkDetl(); + + wrkDetl.sync(locDetl); + wrkDetl.setOrderNo(orderNo); + wrkDetl.setWrkNo(workNo); + wrkDetl.setIoTime(now); + wrkDetl.setAnfme(locDetl.getAnfme()); + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(now); + wrkDetl.setModiUser(userId); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + } + // 淇敼婧愬簱浣嶇姸鎬� + if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { + sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 + sourceLoc.setModiUser(userId); + sourceLoc.setModiTime(now); + if (!locMastService.updateById(sourceLoc)){ + throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); + } + } else { + throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$()); + } + // 淇敼鐩爣搴撲綅鐘舵�� + if (loc.getLocSts().equals("O")) { + loc.setLocSts("S"); // S.鍏ュ簱棰勭害 + loc.setModiTime(now); + loc.setModiUser(userId); + if (!locMastService.updateById(loc)) { + throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$()); + } + } + + @Override + @Transactional public void completeWrkMast(String workNo, Long userId) { WrkMast wrkMast = wrkMastService.selectById(workNo); if (Cools.isEmpty(wrkMast)){ @@ -1019,7 +1121,7 @@ } else if (wrkMast.getIoType() == 110) { locSts = "D"; // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 11) { + } else if (wrkMast.getIoType() == 11 || wrkMast.getIoType() == 12) { locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; // 搴撲綅杞Щ锛氱洰鏍囧簱浣� LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); @@ -1052,6 +1154,32 @@ } } + // 鍙栨秷璺ㄥ贩閬撶Щ搴撲换鍔℃椂锛屽洖婊氬湪鎵ц鐨勪换鍔� + if (wrkMast.getIoType() == 12) { + List<Order> orderList = orderMapper.selectList(new EntityWrapper<Order>().eq("doc_type", 24).lt("settle", 3)); + if (orderList.size() == 1) { + Order order = orderList.get(0); + // 鍥炴粴鍗曟嵁鏄庣粏鐨勭Щ搴撶姸鎬� + List<OrderDetl> orderDetlList1 = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()).eq("specs", wrkMast.getSourceLocNo())); + for (OrderDetl orderDetl:orderDetlList1) { + if (orderDetl.getBeBatch() != null) { + orderDetl.setModel(""); + } + orderDetl.setUpdateTime(now); + orderDetl.setDanger(0); + orderDetlMapper.updateById(orderDetl); + } + // 鍥炴粴鍗曟嵁鐘舵�侊紝鏈夊ぇ浜�0鐨勮鍗曟槑缁嗗垯鏄綔涓氫腑锛屾病鏈夊垯鏇存柊涓哄緟澶勭悊 + Integer count = orderDetlMapper.selectCount(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()).gt("danger", 0)); + if (count == 0) { + order.setSettle(1L); + orderMapper.updateById(order); + } + } else { + log.error("鍥炴粴绉诲簱鍗曟嵁寮傚父锛屾棤婧愬簱浣嶆暟鎹細{}",wrkMast.getSourceLocNo()); + } + } + //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺 if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) { List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); diff --git a/src/main/java/com/zy/asrs/task/GhjtScheduler.java b/src/main/java/com/zy/asrs/task/GhjtScheduler.java index f3366d6..075bbe7 100644 --- a/src/main/java/com/zy/asrs/task/GhjtScheduler.java +++ b/src/main/java/com/zy/asrs/task/GhjtScheduler.java @@ -1,7 +1,9 @@ package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.OrderDetl; 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.task.handler.GhjtHandler; @@ -35,6 +37,9 @@ @Resource private ConfigMapper configMapper; + @Resource + private OrderDetlMapper orderDetlMapper; + // 鑷姩澶囪揣(鏍规嵁鍑哄簱鍗曪紝鎶婅鍑虹殑璐ф彁鍓嶆斁鍒伴潬杩戝嚭搴撳彛浣嶇疆) // 瀹氭椂浠诲姟鑾峰彇寰呭璐ц鍗曟槑缁�->鑾峰彇鍫嗗灈鏈哄搴旂殑婧愬簱浣嶏紝鑾峰彇澶囪揣鍖哄簱浣�->鐢熸垚绉诲簱浠诲姟11-> // 鎵ц绉诲簱浠诲姟12->鍏ュ簱瀹屾垚4->鏇存柊宸ヤ綔妗e畾鏃朵换鍔′腑鏇存柊璁㈠崟澶囪揣鐘舵�佸拰璁㈠崟鏄庣粏澶囪揣鐘舵��5->杞偍鍘嗗彶 @@ -59,7 +64,7 @@ @Scheduled(cron = "0/2 * * * * ? ") public void ckrwPushGwcs() { // 鏌ヨ鐘舵�佷负13鐨勫伐浣滄。 - List<WrkMast> wrkMasts = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().in("io_type", 101,103,107,110,3).eq("wrk_sts", 13)); + List<WrkMast> wrkMasts = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().in("io_type", 101,103,107,110,3,12).eq("wrk_sts", 13)); for (WrkMast wrkMast : wrkMasts) { try { ghjtHandler.startCkrwPushGwcs(wrkMast); @@ -69,6 +74,26 @@ } } + // 鑷姩璺ㄥ贩閬撶Щ搴� + // 閰嶇疆寮�鍚�->鑾峰彇鍗曟嵁鏄庣粏->鑾峰彇婧愬簱浣嶇洰鏍囧簱浣�->鐢熸垚绉诲簱浠诲姟->鍙栨秷浠诲姟鍥炴粴鍗曟嵁-> + // wcs鍑哄簱鍒板爢鍨涙満鍑哄簱鍙�->gwms缁檊wcs鎺ㄩ�佺洰鏍囩珯1->gwcs鍒拌揪鍫嗗灈鏈哄叆搴撳彛璇锋眰鍏ュ簱->鍫嗗灈鏈烘墽琛屽叆搴�->鍏ュ簱瀹屾垚->鏇存柊鍗曟嵁鐘舵�� + // 11->12->13->1->2->3->4->5 + @Scheduled(cron = "0/10 * * * * ?") + public synchronized void autoMoveLoc() { + // 鏌ヨ璺ㄥ贩閬撶Щ搴撻厤缃� + Config config = configMapper.selectConfigByCode("auto_move_loc"); + if (config == null || config.getStatus() == 0) { + return; + } + // 鏌ヨ寰呯Щ搴撶殑鍗曟嵁鏄庣粏 + List<OrderDetl> orderDetlList = orderDetlMapper.selectMoveLocDetl(); + if (orderDetlList.isEmpty()) { + return; + } + + ghjtHandler.autoMoveLoc(orderDetlList); + } + // 绌洪棽鐞嗚揣 @Scheduled(cron = "0/5 * * * * ? ") public void autoTallyGoods() { 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 a3f5e4b..3d61ebe 100644 --- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java @@ -4,16 +4,17 @@ 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.entity.*; 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.asrs.utils.Utils; import com.zy.common.constant.MesConstant; +import com.zy.common.properties.SlaveProperties; import com.zy.common.utils.HttpHandler; +import com.zy.system.entity.Config; +import com.zy.system.mapper.ConfigMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -56,6 +57,12 @@ @Resource private WorkService workService; + @Resource + private ConfigMapper configMapper; + + @Autowired + private SlaveProperties slaveProperties; + @Transactional public void startCkrwPushGwcs(WrkMast wrkMast) { @@ -92,6 +99,9 @@ } else if (wrkMast.getIoType() == 3) { // 淇敼宸ヤ綔涓绘。鐘舵�� wrkMast.setWrkSts(15L); + wrkMast.setModiTime(new Date()); + } else if(wrkMast.getIoType() == 12) { // 璺ㄥ贩閬撹浆绉� + wrkMast.setWrkSts(1L); // 鐘舵�佹敼涓�1.鐢熸垚鍏ュ簱id wrkMast.setModiTime(new Date()); } wrkMastMapper.updateById(wrkMast); @@ -168,6 +178,7 @@ /** * 鑷姩澶囪揣澶勭悊 */ + @Transactional public void autoStockUpHandler(List<String> list,int columnNum) { // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣� @@ -257,4 +268,109 @@ } } + + @Transactional + public void autoMoveLoc(List<OrderDetl> orderDetlList) { + + // 鍒ゆ柇鏄惁宸茬粡鏈夋墽琛岀殑绉诲簱浠诲姟 + Integer count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().in("io_type", 11, 12)); + if (count > 0) { + return; + } + + OrderDetl detl = null; // 瑕佺Щ搴撶殑鏄庣粏 + String staLoc = null; // 绉诲簱鐩爣搴撲綅 + + // 浠庡緟绉诲簱浣嶅垪琛ㄤ腑鍏堟祬鍚庢繁鑾峰彇涓�涓緟绉诲簱浣� + Optional<OrderDetl> any = orderDetlList.stream().filter(orderDetl -> Utils.isShallowLoc(slaveProperties,orderDetl.getSpecs())).findAny(); + + if (any.isPresent()){ + detl = any.get(); + } + // 鍓╀笅鐨勫簲璇ラ兘鏄繁搴撲綅锛岃幏鍙栫涓�涓� + if (detl == null) { + detl = orderDetlList.get(0); + // 瀵瑰簲娴呭簱浣嶆湁璐э紝鍦ㄥ爢鍨涙満鍑哄簱鐨勬椂鍊欎細妫�娴嬪埌锛屽湪閭i噷鐢熸垚绉诲簱浠诲姟 + } + + // 鑾峰彇澶囪揣鍖洪厤缃� + Config config = configMapper.selectConfigByCode("auto_stock_up"); + if (config == null) { + return; + } + // 澶囪揣鍙栨槸鍓嶅嚑鍒� + int bay1 = Integer.parseInt(config.getValue()); + // 鎸囧畾鐨勭洰鏍囧簱浣� + String model = detl.getModel(); + + // 鎸囧畾鐩爣搴撲綅 + if (!Cools.isEmpty(model)) { + // 鐩爣搴撲綅鏄繁搴撲綅 + if (Utils.isDeepLoc(slaveProperties,model)) { + // 鐩爣搴撲綅 + LocMast locMast2 = locMastMapper.selectById(model); + if (locMast2 == null || !locMast2.getLocSts().equals("O")) { + log.error("鎸囧畾鐨勭洰鏍囧簱浣嶃�恵}銆戠姸涓嶄负绌�", model); + return; + } + // 鑾峰彇鍒板搴旀祬搴撲綅 + String shallowLoc = Utils.getShallowLoc(slaveProperties, model); + LocMast locMast = locMastMapper.selectById(shallowLoc); + // 娴呭簱浣嶆湁璐� + if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) { + log.error("閫夋嫨鐨勬繁搴撲綅銆恵}銆戯紝浣嗘槸娴呭簱浣嶃�恵}銆戞湁璐�", model, locMast.getLocNo()); + return; + } + // 閬垮紑澶囪揣鍖� + if (Utils.getBay(model) <= bay1) { + log.error("鎸囧畾鐨勭洰鏍囧簱浣嶃�恵}銆戝湪澶囪揣鍖猴紝涓嶈兘杞Щ", model); + return; + } + } + // 娣卞簱浣嶆娴嬮�氳繃锛屾垨鑰呮槸娴呭簱浣� + staLoc = model; + } else if ( detl.getBeBatch() != null) { // 鎸囧畾鐩爣宸烽亾 + // 鐩爣宸烽亾 + Integer beBatch = detl.getBeBatch(); + // 浠庡贩閬撻噷闈㈠厛娣卞悗娴呭彇涓�涓┖搴撲綅锛屼笉瑕佸崰鐢ㄥ璐у尯 + List<LocMast> locMasts = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("crn_no", beBatch).eq("loc_sts", "O").gt("bay1", bay1)); + if (locMasts.isEmpty()) { + log.error("鎸囧畾宸烽亾銆恵}銆戞病鏈夎兘绉诲簱鐨勭┖搴撲綅浜�",beBatch); + return; + } + // 鍏堣繃婊ゅ嚭娣卞簱浣� + Optional<LocMast> a = locMasts.stream().filter(locMast -> Utils.isDeepLoc(slaveProperties,locMast.getLocNo())).findAny(); + if (a.isPresent()){ + staLoc = a.get().getLocNo(); + // 鑾峰彇鍒板搴旀祬搴撲綅 + String shallowLoc = Utils.getShallowLoc(slaveProperties, staLoc); + LocMast locMast = locMastMapper.selectById(shallowLoc); + // 娴呭簱浣嶆湁璐� + if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) { + log.error("鎸囧畾鐨勭洰鏍囧贩閬撴繁搴撲綅銆恵}銆戯紝浣嗘槸娴呭簱浣嶃�恵}銆戞湁璐�",staLoc,locMast.getLocNo()); + return; + } + } + // 娣卞簱浣嶆病鏈夊垯鍙栨祬搴撲綅 + if (staLoc == null) { + staLoc = locMasts.get(0).getLocNo(); + } + } else { + log.error("鐩爣搴撲綅鎴栫洰鏍囧贩閬撴湁璇細{}",detl); + return; + } + + // 鐢熸垚璺ㄥ贩閬撶Щ搴撲换鍔� + workService.autoLocMove(detl.getOrderNo(),detl.getSpecs(),staLoc,29L); + + // 鏇存柊鍗曟嵁鏄庣粏绉诲簱鐘舵�佷负绉诲簱涓� + detl.setDanger(1); + if (detl.getBeBatch() != null) { + detl.setModel(staLoc); // 琛ュ厖鐩爣搴撲綅 + } + orderDetlMapper.updateById(detl); + // 鏇存柊鍗曟嵁鐘舵�佷负2澶勭悊涓� + orderMapper.updatePendingSettleByOrderNo(detl.getOrderNo(),2L); + } + } 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 93032b4..a0fcb1b 100644 --- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java @@ -17,6 +17,7 @@ import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -364,6 +365,94 @@ return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } break; + // 璺ㄥ贩閬撳簱浣嶇Щ杞畬鎴� + case 12: + // 榛樿鐩爣搴撲綅鏄┖鏉� + String locSts2 = "D"; + // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞� + if (wrkMast.getEmptyMk().equals("N")) { + locSts2 = "F"; + // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣� + if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { +// exceptionHandle("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={0}],[鐩爣搴撲綅={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); + } + } + // 璺ㄥ贩閬撶Щ搴擄紝鏇存柊璁㈠崟鏄庣粏鍙婅鍗曠姸鎬� + List<WrkDetl> wrkDetlList2 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); + if (!wrkDetlList2.isEmpty()) { + // 鍒ゆ柇鏈夋棤鍗曟嵁缂栧彿 + Optional<WrkDetl> any = wrkDetlList2.stream().filter(wrkDetl -> wrkDetl.getOrderNo() != null).findAny(); + if (any.isPresent()) { + String orderNo = any.get().getOrderNo(); + // 鏍规嵁鍗曟嵁缂栧彿鍜屽簱浣嶅彿鏌ヨ鍗曟嵁鏄庣粏 + List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("order_no",orderNo).eq("specs",wrkMast.getSourceLocNo())); + // 鏇存柊鍗曟嵁鏄庣粏鐨勭Щ搴撶姸鎬� + for(OrderDetl orderDetl: orderDetlList) { + orderDetl.setDanger(2); + orderDetl.setUpdateTime(now); + orderDetlMapper.updateById(orderDetl); + } + // 鍒ゆ柇鍗曟嵁鏄庣粏鏄笉鏄叏閮ㄧЩ搴撳畬鎴� + Integer count = orderDetlMapper.selectCount(new EntityWrapper<OrderDetl>().lt("danger", 2).eq("order_no", orderNo)); + if (count == 0) { + // 鏇存柊鍗曟嵁涓哄凡瀹屾垚 + orderMapper.updateSettleByOrderNo(orderNo,4,null); + } + } + } else { // 绌烘澘杞Щ娌℃湁宸ヤ綔鏄庣粏,浣嗘槸瑕佹洿鏂板崟鎹槑缁嗙姸鎬� + + // 鍙湁涓�鏉′綔涓氫腑鐨勭Щ搴撳崟鎹� + List<Order> orderList = orderMapper.selectList(new EntityWrapper<Order>().eq("doc_type", 24).le("settle", 3)); + if(orderList.isEmpty()) { + log.error("娌℃湁鑾峰彇鍒版鍦ㄦ墽琛屼腑鐨勭Щ搴撳崟鎹�"); + } else { + Order order = orderList.get(0); + // 鏍规嵁鍗曟嵁缂栧彿鍜屽簱浣嶅彿鏌ヨ鍗曟嵁鏄庣粏 + List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("order_no",order.getOrderNo()).eq("specs",wrkMast.getSourceLocNo())); + // 鏇存柊鍗曟嵁鏄庣粏鐨勭Щ搴撶姸鎬� + for(OrderDetl orderDetl: orderDetlList) { + orderDetl.setDanger(2); + orderDetl.setUpdateTime(now); + orderDetlMapper.updateById(orderDetl); + } + // 鍒ゆ柇鍗曟嵁鏄庣粏鏄笉鏄叏閮ㄧЩ搴撳畬鎴� + Integer count = orderDetlMapper.selectCount(new EntityWrapper<OrderDetl>().lt("danger", 2).eq("order_no", order.getOrderNo())); + if (count == 0) { + // 鏇存柊鍗曟嵁涓哄凡瀹屾垚 + orderMapper.updateSettleByOrderNo(order.getOrderNo(),4,null); + } + } + + } + + // 淇敼婧愬簱浣嶇姸鎬� ==> O + LocMast sourceLoc2 = locMastService.selectById(wrkMast.getSourceLocNo()); + if (null != sourceLoc2) { + sourceLoc2.setBarcode(""); + sourceLoc2.setLocSts("O"); + sourceLoc2.setSheetNo("0"); + sourceLoc2.setModiTime(now); + sourceLoc2.setIoTime(now); + if (!locMastService.updateById(sourceLoc2)) { +// exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); + } + } + // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts + locMast.setLocSts(locSts2); + locMast.setBarcode(wrkMast.getBarcode()); + locMast.setSheetNo("0"); + locMast.setIoTime(now); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { +// exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); + } + break; default: break; } diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml index 84b5fb9..371ada8 100644 --- a/src/main/resources/mapper/OrderDetlMapper.xml +++ b/src/main/resources/mapper/OrderDetlMapper.xml @@ -126,6 +126,18 @@ and mdt.pakout = 1 <include refid="pakOutPageCondition"></include> </select> + <select id="selectMoveLocDetl" resultMap="BaseResultMap"> + select + md.* + from + man_order mo + left join man_order_detl md on + mo.order_no = md.order_no + where + mo.doc_type = 24 + and mo.settle <= 2 + and md.danger = 0 + </select> <update id="increase"> update man_order_detl @@ -171,7 +183,7 @@ </insert> <insert id="batchDetls"> INSERT INTO - man_order_detl(brand,batch,order_id,order_no,create_by,create_time,status,qty,anfme) + man_order_detl(brand,batch,order_id,order_no,specs,model,be_batch,create_by,create_time,status,qty,anfme) VALUES <foreach collection="list" item="item" index="index" separator=","> ( @@ -179,6 +191,9 @@ #{item.batch}, #{item.orderId}, #{item.orderNo}, + #{item.specs}, + #{item.model}, + #{item.beBatch}, #{item.createBy}, #{item.createTime}, #{item.status}, diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 9a84bc0..be78b61 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/src/main/resources/mapper/OrderMapper.xml @@ -66,6 +66,9 @@ <update id="updateStatusByOrderNo"> update man_order set account_day = #{status},update_time = getdate(),update_by = #{userId} where order_no = #{orderNo} </update> + <update id="updatePendingSettleByOrderNo"> + update man_order set settle = #{status},update_time = getdate() where order_no = #{orderNo} and settle = 1 + </update> <select id="selectComplete" resultMap="BaseResultMap"> select diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js index 2f5ff3d..8ff12fe 100644 --- a/src/main/webapp/static/js/order/order.js +++ b/src/main/webapp/static/js/order/order.js @@ -261,6 +261,10 @@ // {field: 'color', title: '棰滆壊'}, // {field: 'specs', title: '鎺ュご'}, {field: 'qty$', title: '鍑哄簱鐘舵��', style: 'font-weight: bold'}, + {field: 'specs', title: '婧愬簱浣�', style: 'font-weight: bold'}, + {field: 'model', title: '鐩爣搴撲綅', style: 'font-weight: bold'}, + {field: 'beBatch', title: '璺ㄥ贩閬�', style: 'font-weight: bold'}, + {field: 'danger$', title: '绉诲簱鐘舵��', style: 'font-weight: bold'}, {field: 'inspect$', title: '澶囪揣鐘舵��', style: 'font-weight: bold'} ]], request: { -- Gitblit v1.9.1