From f08dd93e49e8461f362c8f45f17fe10e0fbdebec Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 12 一月 2026 18:54:58 +0800
Subject: [PATCH] #新增和得码入库流程,渝程进仓后续下发货主转换
---
src/main/webapp/views/orderPakin/order.html | 9
src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferHandler.java | 194 +++++++++++--------
src/main/java/com/zy/asrs/controller/OrderPakinController.java | 18 +
src/main/java/com/zy/asrs/entity/OrderDetl.java | 53 +++++
src/main/resources/mapper/OrderPakinMapper.xml | 8
src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java | 5
src/main/java/com/zy/asrs/entity/Order.java | 40 ++++
src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java | 4
src/main/java/com/zy/asrs/service/OrderPakinService.java | 1
src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferOutHandler.java | 146 ++++++++++++++
src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java | 1
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 2
src/main/webapp/static/js/orderPakin/order.js | 40 ++++
src/main/java/com/zy/asrs/task/kingdee/AutoTransferScheduler.java | 20 +
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | 2
15 files changed, 453 insertions(+), 90 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakinController.java b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
index 277a5c0..e3222c9 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
@@ -44,6 +44,8 @@
private WrkMastLogService wrkMastLogService;
@Autowired
private LocOwnerService locOwnerService;
+ @Autowired
+ private OrderDetlPakinService orderDetlPakinService;
@RequestMapping(value = "/order/nav/list/auth")
@ManagerAuth
@@ -389,7 +391,21 @@
throw new CoolException("瀛樺湪浣滀笟涓暟鎹紝涓嶈兘瀹岀粨銆傝妫�鏌ュ叆搴撻�氱煡妗e拰宸ヤ綔妗�");
}
}
-
+ if(order.getSettle() == 66){
+ List<OrderDetlPakin> lists = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_no",order.getOrderNo()));
+ for (OrderDetlPakin orderDetlPakin : lists) {
+ String boxType3 = orderDetlPakin.getBoxType3();
+ if (boxType3 == null || !boxType3.contains("HDU")) {
+ throw new CoolException(
+ String.format("璁㈠崟 %s 鐨勬槑缁嗕腑涓嶅瓨鍦ㄥ寘鍚獺DU鐨勭墿鏂欐槑缁�: %s (鐗╂枡: %s)",
+ order.getOrderNo(),
+ boxType3,
+ orderDetlPakin.getMatnr() != null ? orderDetlPakin.getMatnr() : "鏈煡鐗╂枡"
+ )
+ );
+ }
+ }
+ }
order.setUpdateBy(getUserId());
order.setUpdateTime(new Date());
if (!orderService.updateById(order)) {
diff --git a/src/main/java/com/zy/asrs/entity/Order.java b/src/main/java/com/zy/asrs/entity/Order.java
index 08190ad..e971ecf 100644
--- a/src/main/java/com/zy/asrs/entity/Order.java
+++ b/src/main/java/com/zy/asrs/entity/Order.java
@@ -393,6 +393,46 @@
this.pakinPakoutStatus = order.getPakinPakoutStatus();
}
+
+ public Order(OrderPakin order) {
+ this.uuid = order.getUuid();
+ this.orderNo = order.getOrderNo();
+ this.orderTime = order.getOrderTime();
+ this.docType = order.getDocType();
+ this.itemId = order.getItemId();
+ this.itemName = order.getItemName();
+ this.allotItemId = order.getAllotItemId();
+ this.defNumber = order.getDefNumber();
+ this.number = order.getNumber();
+ this.cstmr = order.getCstmr();
+ this.cstmrName = order.getCstmrName();
+ this.tel = order.getTel();
+ this.operMemb = order.getOperMemb();
+ this.totalFee = order.getTotalFee();
+ this.discount = order.getDiscount();
+ this.discountFee = order.getDiscountFee();
+ this.otherFee = order.getOtherFee();
+ this.actFee = order.getActFee();
+ this.payType = order.getPayType();
+ this.salesman = order.getSalesman();
+ this.accountDay = order.getAccountDay();
+ this.postFeeType = order.getPostFeeType();
+ this.postFee = order.getPostFee();
+ this.payTime = order.getPayTime();
+ this.sendTime = order.getSendTime();
+ this.shipName = order.getShipName();
+ this.shipCode = order.getShipCode();
+ this.settle = order.getSettle();
+ this.status = order.getStatus();
+ this.createBy = order.getCreateBy();
+ this.createTime = order.getCreateTime();
+ this.updateBy = order.getUpdateBy();
+ this.updateTime = order.getUpdateTime();
+ this.memo = order.getMemo();
+ this.moveStatus = order.getMoveStatus();
+ this.pakinPakoutStatus = order.getPakinPakoutStatus();
+ }
+
// Order order = new Order(
// null, // 缂栧彿[闈炵┖]
// null, // 璁㈠崟缂栧彿
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index 4ae57c5..922bd30 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -477,6 +477,59 @@
this.height = orderDetl.getHeight();
}
+ public OrderDetl(OrderDetlPakin orderDetl) {
+ this.orderId = orderDetl.getOrderId();
+ this.orderNo = orderDetl.getOrderNo();
+ this.anfme = orderDetl.getAnfme();
+ this.qty = orderDetl.getQty();
+ this.matnr = orderDetl.getMatnr();
+ this.maktx = orderDetl.getMaktx();
+ this.batch = orderDetl.getBatch();
+ this.specs = orderDetl.getSpecs();
+ this.model = orderDetl.getModel();
+ this.color = orderDetl.getColor();
+ this.brand = orderDetl.getBrand();
+ this.unit = orderDetl.getUnit();
+ this.price = orderDetl.getPrice();
+ this.sku = orderDetl.getSku();
+ this.units = orderDetl.getUnits();
+ this.barcode = orderDetl.getBarcode();
+ this.origin = orderDetl.getOrigin();
+ this.manu = orderDetl.getManu();
+ this.manuDate = orderDetl.getManuDate();
+ this.itemNum = orderDetl.getItemNum();
+ this.safeQty = orderDetl.getSafeQty();
+ this.weight = orderDetl.getWeight();
+ this.manLength = orderDetl.getManLength();
+ this.volume = orderDetl.getVolume();
+ this.threeCode = orderDetl.getThreeCode();
+ this.supp = orderDetl.getSupp();
+ this.suppCode = orderDetl.getSuppCode();
+ this.beBatch = orderDetl.getBeBatch();
+ this.deadTime = orderDetl.getDeadTime();
+ this.deadWarn = orderDetl.getDeadWarn();
+ this.source = orderDetl.getSource();
+ this.inspect = orderDetl.getInspect();
+ this.danger = orderDetl.getDanger();
+ this.status = orderDetl.getStatus();
+ this.createBy = orderDetl.getCreateBy();
+ this.createTime = orderDetl.getCreateTime();
+ this.updateBy = orderDetl.getUpdateBy();
+ this.updateTime = orderDetl.getUpdateTime();
+ this.memo = orderDetl.getMemo();
+ this.pakinPakoutStatus = orderDetl.getPakinPakoutStatus();
+ this.lineNumber = orderDetl.getLineNumber();
+ this.standby1 = orderDetl.getStandby1();
+ this.standby2 = orderDetl.getStandby2();
+ this.standby3 = orderDetl.getStandby3();
+ this.boxType1 = orderDetl.getBoxType1();
+ this.boxType2 = orderDetl.getBoxType2();
+ this.boxType3 = orderDetl.getBoxType3();
+ this.erpAnfme = orderDetl.getErpAnfme();
+ this.width = orderDetl.getWidth();
+ this.height = orderDetl.getHeight();
+ }
+
public String getOrderId$(){
OrderService service = SpringUtils.getBean(OrderService.class);
diff --git a/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java b/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java
index 41a5af3..66ee546 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderPakinMapper.java
@@ -20,6 +20,7 @@
List<OrderPakin> selectComplete9();
List<OrderPakin> selectComplete10();
List<OrderPakin> selectComplete66();
+ List<OrderPakin> selectComplete67();
int addToLogTable(OrderPakin order);
diff --git a/src/main/java/com/zy/asrs/service/OrderPakinService.java b/src/main/java/com/zy/asrs/service/OrderPakinService.java
index 159763a..a5f1dea 100644
--- a/src/main/java/com/zy/asrs/service/OrderPakinService.java
+++ b/src/main/java/com/zy/asrs/service/OrderPakinService.java
@@ -30,6 +30,7 @@
List<OrderPakin> selectComplete9();
List<OrderPakin> selectComplete10();
List<OrderPakin> selectComplete66();
+ List<OrderPakin> selectComplete67();
boolean addToLogTable(OrderPakin order);
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 8121973..dfe6818 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -937,7 +937,7 @@
List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>()
.eq("matnr", combMat.getMatnr()).eq("box_type3", combMat.getOrderNo())
.eq("standby1", combMat.getStandby1()).eq("standby2", combMat.getStandby2())
- .eq("standby3", combMat.getStandby3()).eq("box_type2","shyucheng.test"));
+ .eq("standby3", combMat.getStandby3()));
if (orderDetlPakins.size() > 0) {
orderNo = orderDetlPakins.get(0).getOrderNo();
combMat.setBoxType1(orderDetlPakins.get(0).getBoxType1());
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
index beb6b31..61b67a5 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
@@ -191,7 +191,10 @@
public List<OrderPakin> selectComplete66() {
return this.baseMapper.selectComplete66();
}
-
+ @Override
+ public List<OrderPakin> selectComplete67() {
+ return this.baseMapper.selectComplete67();
+ }
@Override
public List<OrderPakin> selectComplete8() {
diff --git a/src/main/java/com/zy/asrs/task/kingdee/AutoTransferScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/AutoTransferScheduler.java
index 966e9b0..31f92b6 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/AutoTransferScheduler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/AutoTransferScheduler.java
@@ -8,6 +8,7 @@
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.kingdee.handler.AutoTransferHandler;
+import com.zy.asrs.task.kingdee.handler.AutoTransferOutHandler;
import com.zy.asrs.task.kingdee.handler.SaveOrderSyncHandler;
import com.zy.common.entity.Parameter;
import lombok.extern.slf4j.Slf4j;
@@ -35,10 +36,11 @@
private boolean ReviewOrderSwitch;
@Autowired
private AutoTransferHandler autoTransferHandler;
-
+ @Autowired
+ private AutoTransferOutHandler autoTransferOutHandler;
@Scheduled(cron = "0/30 * * * * ? ")
@Async("orderThreadPool")
- public void completeAndReport(){
+ public void completeAndReport(){ //搴撳唴搴撳瓨杞崲锛屽嚭搴撳搴旂墿鏂欏強鏁伴噺锛屾洿鏂板簱瀛樻槑缁�
List<OrderPakin> orders = orderPakinService.selectComplete66();
if(orders.size() > 0){
for (OrderPakin order : orders) {
@@ -50,4 +52,18 @@
}
}
+ @Scheduled(cron = "0/30 * * * * ? ")
+ @Async("orderThreadPool")
+ public void completeAndReportHD(){ ///鍜屽緱鍑哄簱娓濈▼涓婃姤
+ List<OrderPakin> orders = orderPakinService.selectComplete67();
+ if(orders.size() > 0){
+ for (OrderPakin order : orders) {
+ ReturnT<String> result = autoTransferOutHandler.start(order);//
+ if (!result.isSuccess()) {
+ log.error("鍗曟嵁[orderNo={}]杞崲鍑哄簱涓婃姤澶辫触", order.getOrderNo());
+ }
+ }
+ }
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java
index 4f9befc..e404fa7 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java
@@ -27,8 +27,8 @@
inboundOrderHandler.syncMaterialData(); // 鍚屾鐗╂枡妗f
}
- @Scheduled(cron = "0 */6 * * * ?")
-// @Scheduled(cron = "0/5 * * * * ?")
+ // @Scheduled(cron = "0 */6 * * * ?")
+ @Scheduled(cron = "0/5 * * * * ?")
void login(){
if(!InboundOrderSwitch){
return;
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferHandler.java
index 84226e9..8712902 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferHandler.java
@@ -1,5 +1,6 @@
package com.zy.asrs.task.kingdee.handler;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
@@ -44,105 +45,134 @@
@Transactional(rollbackFor = Exception.class)
public ReturnT<String> start(OrderPakin order) {
- // 鑾峰彇璇ヨ鍗曚笅鐨勬墍鏈夋槑缁�
- List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectList(
- new EntityWrapper<OrderDetlPakin>().eq("order_no", order.getOrderNo()));
+ JSONObject logData = new JSONObject();
+ String responseMsg = "";
+ boolean success = false;
- // 閬嶅巻姣忎釜璁㈠崟鏄庣粏杩涜搴撳瓨杞崲
- for (OrderDetlPakin orderDetlPakin : orderDetlPakins) {
- double orderQuantity = orderDetlPakin.getAnfme(); // 鏈槑缁嗛渶瑕佽浆鎹㈢殑鏁伴噺
- double remainingQuantity = orderQuantity; // 鍓╀綑鏈弧瓒崇殑鏁伴噺
- double convertedQuantity = 0.0; // 宸叉垚鍔熻浆鎹㈢殑鏁伴噺
+ try {
+ logData.put("orderNo", order.getOrderNo());
+ logData.put("docType", order.getDocType());
+ logData.put("settle", order.getSettle());
+ logData.put("startTime", System.currentTimeMillis());
- log.info("寮�濮嬪鐞嗚鍗曟槑缁�: 璁㈠崟鍙� = {}, 鐗╂枡鍙� = {}, 闇�瑕佽浆鎹㈡暟閲� = {}",
- order.getOrderNo(), orderDetlPakin.getMatnr(), orderQuantity);
+ // 鑾峰彇璇ヨ鍗曚笅鐨勬墍鏈夋槑缁�
+ List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectList(
+ new EntityWrapper<OrderDetlPakin>().eq("order_no", order.getOrderNo()));
- // 鏌ヨ绗﹀悎鏉′欢鐨勫彲鐢ㄥ簱瀛橈細鍚屼竴鐗╂枡 + box_type3 浠� HDU25 寮�澶�
- List<LocDetl> locDetls = locDetlService.selectList(
- new EntityWrapper<LocDetl>()
- .eq("matnr", orderDetlPakin.getMatnr())
- .like("box_type3", "HDU25%")
- .orderBy("anfme") // 鍙牴鎹笟鍔¤皟鏁存帓搴忥紙濡傚厛杩涘厛鍑猴級
- );
-
- if (locDetls.isEmpty()) {
- log.error("鏃犵鍚堟潯浠剁殑搴撳瓨: 璁㈠崟 {} 鐗╂枡 {}", order.getOrderNo(), orderDetlPakin.getMatnr());
- throw new IllegalArgumentException("鏃犵鍚堟潯浠剁殑搴撳瓨婊¤冻璁㈠崟 " + order.getOrderNo() +
- " 鐨勭墿鏂� " + orderDetlPakin.getMatnr());
+ if (orderDetlPakins.isEmpty()) {
+ throw new IllegalArgumentException("璁㈠崟 " + order.getOrderNo() + " 鏃犱换浣曟槑缁嗭紝鏃犳硶杞崲");
}
- // 閫愭潯娑堣�楀簱瀛�
- for (LocDetl locDetl : locDetls) {
- if (remainingQuantity <= 0) {
- break; // 宸插畬鍏ㄦ弧瓒抽渶姹�
+ // 閬嶅巻姣忎釜璁㈠崟鏄庣粏杩涜搴撳瓨杞崲锛堝師閫昏緫淇濇寔涓嶅彉锛�
+ for (OrderDetlPakin orderDetlPakin : orderDetlPakins) {
+ double orderQuantity = orderDetlPakin.getAnfme();
+ double remainingQuantity = orderQuantity;
+ double convertedQuantity = 0.0;
+
+ log.info("寮�濮嬪鐞嗚鍗曟槑缁�: 璁㈠崟鍙�={}, 鐗╂枡鍙�={}, 闇�瑕佽浆鎹㈡暟閲�={}",
+ order.getOrderNo(), orderDetlPakin.getMatnr(), orderQuantity);
+
+ List<LocDetl> locDetls = locDetlService.selectList(
+ new EntityWrapper<LocDetl>()
+ .eq("matnr", orderDetlPakin.getMatnr())
+ .like("box_type3", "HDU%")
+ .orderBy("anfme")
+ );
+
+ if (locDetls.isEmpty()) {
+ throw new IllegalArgumentException("鏃犵鍚堟潯浠剁殑搴撳瓨: 璁㈠崟 " + order.getOrderNo() +
+ " 鐗╂枡 " + orderDetlPakin.getMatnr());
}
- double stockQty = locDetl.getAnfme();
- if (stockQty <= 0) {
- continue; // 璺宠繃绌哄簱瀛�
+ for (LocDetl locDetl : locDetls) {
+ if (remainingQuantity <= 0) break;
+ double stockQty = locDetl.getAnfme();
+ if (stockQty <= 0) continue;
+
+ double consumeQty = Math.min(stockQty, remainingQuantity);
+
+ // 鍒涘缓鍒嗛厤璁板綍...
+ LocDetl allocated = new LocDetl();
+ BeanUtils.copyProperties(locDetl, allocated);
+ allocated.setAnfme(consumeQty);
+ allocated.setStandby1(orderDetlPakin.getStandby1());
+ allocated.setStandby2(orderDetlPakin.getStandby2());
+ allocated.setStandby3(orderDetlPakin.getStandby3());
+ allocated.setBoxType1(orderDetlPakin.getBoxType1());
+ allocated.setBoxType2(orderDetlPakin.getBoxType2());
+ allocated.setBoxType3(orderDetlPakin.getBoxType3());
+ allocated.setOrderNo(orderDetlPakin.getOrderNo());
+
+ locDetlService.insert(allocated);
+
+ // 鎵e噺鍘熷簱瀛�...
+ double remainingStock = stockQty - consumeQty;
+ if (remainingStock <= 0) {
+ locDetlService.delete(new EntityWrapper<LocDetl>()
+ .eq("loc_no", locDetl.getLocNo())
+ .eq("matnr", locDetl.getMatnr())
+ .eq("box_type3", locDetl.getBoxType3()));
+ } else {
+ locDetl.setAnfme(remainingStock);
+ locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
+ .eq("loc_no", locDetl.getLocNo())
+ .eq("matnr", locDetl.getMatnr())
+ .eq("box_type3", locDetl.getBoxType3()));
+ }
+
+ convertedQuantity += consumeQty;
+ remainingQuantity -= consumeQty;
}
- // 鏈瀹為檯娑堣�楃殑鏁伴噺
- double consumeQty = Math.min(stockQty, remainingQuantity);
-
- // 鍒涘缓涓�鏉℃柊鐨勨�滃凡鍒嗛厤缁欒鍗曗�濈殑搴撳瓨璁板綍锛堝畬鏁村鍒跺師璁板綍锛�
- LocDetl allocated = new LocDetl();
- BeanUtils.copyProperties(locDetl, allocated);
-
- // 璁剧疆鍒嗛厤鏁伴噺 + 瑕嗙洊鎸囧畾瀛楁
- allocated.setAnfme(consumeQty);
- allocated.setStandby1(orderDetlPakin.getStandby1());
- allocated.setStandby2(orderDetlPakin.getStandby2());
- allocated.setStandby3(orderDetlPakin.getStandby3());
- allocated.setBoxType1(orderDetlPakin.getBoxType1());
- allocated.setBoxType2(orderDetlPakin.getBoxType2());
- allocated.setBoxType3(orderDetlPakin.getBoxType3());
- allocated.setOrderNo(orderDetlPakin.getOrderNo());
-
- // 鎻掑叆宸插垎閰嶈褰�
- locDetlService.insert(allocated);
- log.info("宸插垎閰嶅簱瀛樿褰�: 浣嶇疆={}, 鏁伴噺={}, 鍓╀綑闇�姹�={}",
- locDetl.getLocNo(), consumeQty, remainingQuantity - consumeQty);
-
- // 澶勭悊鍘熷簱瀛樿褰曪細鎵e噺鍚庢暟閲忎负0鍒欏垹闄わ紝鍚﹀垯鏇存柊鍓╀綑鏁伴噺
- double remainingStock = stockQty - consumeQty;
- if (remainingStock <= 0) {
- // 鏁伴噺姝eソ鑰楀敖鎴栧凡涓�0锛岀洿鎺ュ垹闄ゅ師璁板綍
- locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no",locDetl.getLocNo()).eq("matnr",locDetl.getMatnr()).eq("box_type3",locDetl.getBoxType3()));
- log.info("鍘熷簱瀛樺凡鑰楀敖锛屽垹闄よ褰�: 浣嶇疆={}, 鍘熸暟閲�={}", locDetl.getLocNo(), stockQty);
- } else {
- // 浠嶆湁鍓╀綑锛屾洿鏂版暟閲�
- locDetl.setAnfme(remainingStock);
- locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("loc_no",locDetl.getLocNo()).eq("matnr",locDetl.getMatnr()).eq("box_type3",locDetl.getBoxType3()));
- log.info("鍘熷簱瀛橀儴鍒嗘秷鑰楋紝鏇存柊鍓╀綑鏁伴噺: 浣嶇疆={}, 鍓╀綑={}", locDetl.getLocNo(), remainingStock);
+ if (remainingQuantity > 0) {
+ throw new IllegalArgumentException("搴撳瓨涓嶈冻: 璁㈠崟 " + order.getOrderNo() +
+ " 鐗╂枡 " + orderDetlPakin.getMatnr() + " 缂哄皯 " + remainingQuantity);
}
- // 鏇存柊缁熻閲�
- convertedQuantity += consumeQty;
- remainingQuantity -= consumeQty;
+ orderDetlPakin.setQty(convertedQuantity);
+ orderDetlPakinService.updateById(orderDetlPakin);
}
- // 妫�鏌ユ槸鍚﹀畬鍏ㄦ弧瓒宠鏄庣粏鐨勯渶姹�
- if (remainingQuantity > 0) {
- log.error("搴撳瓨涓嶈冻: 璁㈠崟 {} 鐗╂枡 {} 闇�姹� {}锛屼粎杞崲 {}锛岀己灏� {}",
- order.getOrderNo(), orderDetlPakin.getMatnr(), orderQuantity, convertedQuantity, remainingQuantity);
- throw new IllegalArgumentException("搴撳瓨涓嶈冻浠ユ弧瓒宠鍗� " + order.getOrderNo() +
- " 鐨勭墿鏂� " + orderDetlPakin.getMatnr() + " 闇�姹傦紝缂哄皯 " + remainingQuantity);
- }
+ // 鍏ㄩ儴鎴愬姛
+ order.setSettle(67L);
+ orderPakinServiceImpl.updateById(order);
- // 鏇存柊璁㈠崟鏄庣粏宸茶浆鎹㈡暟閲�
- orderDetlPakin.setQty(convertedQuantity);
- orderDetlPakinService.updateById(orderDetlPakin);
+ success = true;
+ responseMsg = "搴撳瓨杞崲鎴愬姛锛岃鍗曞彿: " + order.getOrderNo() + "锛屽凡璁剧疆 settle=67";
+ log.info(responseMsg);
- log.info("璁㈠崟鏄庣粏杞崲瀹屾垚: 璁㈠崟鍙� = {}, 鐗╂枡鍙� = {}, 杞崲鏁伴噺 = {}",
- order.getOrderNo(), orderDetlPakin.getMatnr(), convertedQuantity);
+ } catch (Exception e) {
+ success = false;
+ responseMsg = "搴撳瓨杞崲澶辫触: " + e.getMessage();
+ log.error("鑷姩杞崲澶辫触锛岃鍗曞彿: {}, 鍘熷洜: {}", order.getOrderNo(), e.getMessage(), e);
+
+ throw e; // 璁� @Transactional 鍥炴粴
+ } finally {
+ // 鏃犺鎴愬姛澶辫触锛岄兘璁板綍鏃ュ織
+ logData.put("endTime", System.currentTimeMillis());
+ logData.put("durationMs", logData.getLongValue("endTime") - logData.getLongValue("startTime"));
+ logData.put("success", success);
+ logData.put("message", responseMsg);
+
+ saveApiLog(logData, responseMsg, success);
}
- // 鎵�鏈夋槑缁嗗潎澶勭悊瀹屾垚锛岃缃鍗� settle = 67
- order.setSettle(67L);
- orderPakinServiceImpl.updateById(order);
- log.info("璁㈠崟鍏ㄩ儴鏄庣粏杞崲瀹屾垚锛岃缃� settle = 67锛岃鍗曞彿 = {}", order.getOrderNo());
+ return success ? SUCCESS : FAIL;
+ }
- return SUCCESS;
+ private void saveApiLog(JSONObject add, String response, boolean success) {
+ try {
+ apiLogService.save(
+ "璐т富杞崲",
+ "AutoTransferHandler",
+ null,
+ "127.0.0.1",
+ add.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鎺ュ彛鏃ュ織淇濆瓨澶辫触", e);
+ }
}
}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferOutHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferOutHandler.java
new file mode 100644
index 0000000..bd74ddf
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/AutoTransferOutHandler.java
@@ -0,0 +1,146 @@
+package com.zy.asrs.task.kingdee.handler;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.toolkit.CollectionUtils;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.OrderDetlPakin;
+import com.zy.asrs.entity.OrderPakin;
+import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.ErpSecretServiceImpl;
+import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl;
+import com.zy.asrs.service.impl.OrderDetlServiceImpl;
+import com.zy.asrs.service.impl.OrderPakinServiceImpl;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Service
+public class AutoTransferOutHandler extends AbstractHandler<String> {
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private DocTypeService docTypeService;
+ @Autowired
+ private LoginAuthenticationHandler loginAuthenticationHandler;
+ @Autowired
+ private ErpSecretServiceImpl erpSecretService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private OrderDetlPakinServiceImpl orderDetlPakinService;
+ @Autowired
+ private OrderDetlServiceImpl orderDetlService;
+ @Autowired
+ private OrderPakinServiceImpl orderPakinServiceImpl;
+ @Autowired
+ private OrderPakinServiceImpl orderPakinService;
+
+ @Transactional(rollbackFor = Exception.class)
+ public ReturnT<String> start(OrderPakin orderPakin) {
+ JSONObject logData = new JSONObject();
+ String responseMsg = "";
+ boolean apiSuccess = false;
+ Order orderNew = null;
+ try {
+ logData.put("orderNo", orderPakin.getOrderNo());
+ logData.put("operation", "鐢熸垚鍑哄簱鍗�");
+ logData.put("source", "鍏ュ簱鍗曡浆鍑哄簱鍗�");
+ logData.put("startTime", System.currentTimeMillis());
+
+ orderNew = new Order(orderPakin);
+ orderNew.setDocType(23L);
+ orderNew.setOrderNo(orderPakin.getOrderNo() + "ZHCK");
+ orderNew.setSettle(65L);
+
+ // 鎻掑叆鍑哄簱涓诲崟
+ orderService.insert(orderNew);
+
+ List<OrderDetlPakin> pakinDetails = orderDetlPakinService.selectList(
+ new EntityWrapper<OrderDetlPakin>().eq("order_no", orderPakin.getOrderNo())
+ );
+
+ boolean hasInsertFailed = false;
+
+ if (CollectionUtils.isNotEmpty(pakinDetails)) {
+ for (OrderDetlPakin pd : pakinDetails) {
+ OrderDetl od = new OrderDetl(pd);
+ od.setOrderId(orderNew.getId());
+
+ boolean insertSuccess = orderDetlService.insert(od);
+ if (!insertSuccess) {
+ hasInsertFailed = true;
+ log.warn("鍑哄簱鏄庣粏鎻掑叆澶辫触锛氬嚭搴撳崟鍙�={}, 鐗╂枡={}",
+ orderNew.getOrderNo(), pd.getMatnr());
+ }
+ }
+ }
+
+ // 鏍规嵁鏄庣粏鎻掑叆缁撴灉鏇存柊鐘舵��
+ if (!hasInsertFailed) {
+ orderNew.setSettle(4L); // 鍑哄簱鍗曟垚鍔熺姸鎬�
+ orderPakin.setSettle(4L); // 鍘熷叆搴撳崟鏇存柊鐘舵�侊紙瑙嗕笟鍔℃槸鍚﹂渶瑕侊級
+ orderService.updateById(orderNew);
+ orderPakinService.updateById(orderPakin); // 娉ㄦ剰锛氳繖閲岀敤浜� orderPakinService
+
+ apiSuccess = true;
+ responseMsg = String.format("鎴愬姛鐢熸垚鍑哄簱鍗曪細%s锛屽叡 %d 鏉℃槑缁�",
+ orderNew.getOrderNo(), pakinDetails.size());
+ log.info(responseMsg);
+ } else {
+ responseMsg = "閮ㄥ垎鍑哄簱鏄庣粏鎻掑叆澶辫触锛岃鍗曞彿锛�" + orderNew.getOrderNo();
+ log.error(responseMsg);
+ throw new RuntimeException("閮ㄥ垎鏄庣粏鎻掑叆澶辫触锛岃Е鍙戜簨鍔″洖婊�");
+ }
+
+ } catch (Exception e) {
+ apiSuccess = false;
+ responseMsg = "鐢熸垚鍑哄簱鍗曞け璐ワ細" + e.getMessage();
+ log.error("鐢熸垚鍑哄簱鍗曞け璐ワ紝鍏ュ簱鍗曞彿锛歿}锛屽師鍥狅細{}", orderPakin.getOrderNo(), e.getMessage(), e);
+
+ // 濡傛灉浣犲笇鏈涘け璐ユ椂涓嶅洖婊氾紝鍙互娉ㄩ噴鎺変笅闈㈣繖琛�
+ throw e; // 鈫� 淇濇寔浜嬪姟鍥炴粴锛堟帹鑽愶級
+
+ } finally {
+ // 鏃犺鎴愬姛澶辫触锛岄兘璁板綍鏃ュ織
+ logData.put("endTime", System.currentTimeMillis());
+ logData.put("durationMs", logData.getLongValue("endTime") - logData.getLongValue("startTime"));
+ logData.put("success", apiSuccess);
+ logData.put("message", responseMsg);
+ logData.put("outOrderNo", orderNew != null ? orderNew.getOrderNo() : "鏈敓鎴�");
+
+ saveApiLog(logData, responseMsg, apiSuccess);
+ }
+
+ return apiSuccess ? SUCCESS : FAIL;
+ }
+
+ private void saveApiLog(JSONObject add, String response, boolean success) {
+ try {
+ apiLogService.save(
+ "璐т富杞崲鍑哄簱涓婃姤",
+ "AutoTransferHandler",
+ null,
+ "127.0.0.1",
+ add.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鎺ュ彛鏃ュ織淇濆瓨澶辫触", e);
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
index 2ba70a1..1e89dee 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -157,7 +157,7 @@
case "PUR_RECEIVEBIll": //宸插鏍告敹鏂欏崟鏌ヨ
jsonObject.put("start_biztime", latestUpdateTime);//涓氬姟璧峰鏃ユ湡
jsonObject.put("end_biztime", sdf1.format(now));//涓氬姟缁撴潫鏃ユ湡
- jsonObject.put("billno", null);
+ jsonObject.put("billno", "CGSL-260106-000001");
jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
jsonObject.put("start_auditdate", latestUpdateTime);
jsonObject.put("end_auditdate", sdf1.format(now));
diff --git a/src/main/resources/mapper/OrderPakinMapper.xml b/src/main/resources/mapper/OrderPakinMapper.xml
index d860bca..6e9b299 100644
--- a/src/main/resources/mapper/OrderPakinMapper.xml
+++ b/src/main/resources/mapper/OrderPakinMapper.xml
@@ -87,6 +87,14 @@
and status = 1
order by create_time asc
</select>
+ <select id="selectComplete67" resultMap="BaseResultMap">
+ select top 5 *
+ from man_order_pakin
+ where 1=1
+ and settle = 67
+ and status = 1
+ order by create_time asc
+ </select>
<select id="selectComplete8" resultMap="BaseResultMap">
select top 5 *
from man_order_pakin
diff --git a/src/main/webapp/static/js/orderPakin/order.js b/src/main/webapp/static/js/orderPakin/order.js
index c655147..8109431 100644
--- a/src/main/webapp/static/js/orderPakin/order.js
+++ b/src/main/webapp/static/js/orderPakin/order.js
@@ -96,6 +96,8 @@
showWrkTrace(data.id);
} else if (layEvent === 'del') {
doDel(data.id);
+ }else if(layEvent === 'transfer'){
+ doModifyTransfer(data.id, data.orderNo, 66);
} else if (layEvent === 'complete') {
doModify(data.id, data.orderNo, 4);
} else if (layEvent === 'look') {
@@ -484,6 +486,44 @@
});
}
+ // 淇敼璁㈠崟鐘舵��
+ function doModifyTransfer(orderId, orderNo, settle) {
+ layer.confirm('纭畾瑕佽揣涓昏浆鎹㈠悧锛�', {
+ shade: .1,
+ skin: 'layui-layer-admin'
+ }, function (i) {
+ layer.close(i);
+ layer.load(2);
+ console.log(orderId);
+ console.log(settle);
+ $.ajax({
+ url: baseUrl+"/order/pakin/order/update/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ id: orderId,
+ orderNo: orderNo,
+ settle: settle
+ },
+ method: 'POST',
+ success: function (res) {
+ layer.closeAll('loading');
+ if (res.code === 200){
+ if (insTbCount === 0) {
+ insTb.reload({page: {curr: 1}});
+ } else {
+ $(".layui-laypage-btn")[0].click();
+ }
+ layer.msg(res.msg, {icon: 1});
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg, {icon: 2});
+ }
+ }
+ })
+ });
+ }
+
// 浠诲姟杩芥函
function showWrkTrace(orderId) {
let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
diff --git a/src/main/webapp/views/orderPakin/order.html b/src/main/webapp/views/orderPakin/order.html
index 4e32b77..41a4a65 100644
--- a/src/main/webapp/views/orderPakin/order.html
+++ b/src/main/webapp/views/orderPakin/order.html
@@ -103,6 +103,9 @@
{{# if (d.settle == 0 || d.settle == 1 || d.settle == 2) { }}
<a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a>
{{# } }}
+ {{# if (d.settle == 0 || d.settle == 1 || d.settle == 2) { }}
+ <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="transfer">杞崲</a>
+ {{# } }}
</script>
<!-- 琛ㄦ牸鎿嶄綔鍒� -->
<script type="text/html" id="tbLook">
@@ -135,6 +138,12 @@
class="layui-badge layui-badge-blue"
{{# }else if(d.settle === 5){ }}
class="layui-badge layui-badge-gray"
+ {{# }else if(d.settle === 66){ }}
+ class="layui-badge layui-badge-gray"
+ {{# }else if(d.settle === 67){ }}
+ class="layui-badge layui-badge-gray"
+ {{# }else if(d.settle === 65){ }}
+ class="layui-badge layui-badge-gray"
{{# }else if(d.settle === 6){ }}
class="layui-badge layui-badge-gray"
{{# } }}
--
Gitblit v1.9.1