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