From 6e18b1e086f202512eeb9aa988a8b9026cfccec3 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期六, 28 三月 2026 20:28:27 +0800
Subject: [PATCH] 修复
---
src/main/java/com/zy/api/service/HmesApiService.java | 2
src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java | 20 ++++++
src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java | 81 +++++++++++++++++++++++++++
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java | 36 ++++++-----
src/main/java/com/zy/api/controller/HmesApiController.java | 13 ++++
src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java | 8 ++
6 files changed, 143 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/zy/api/controller/HmesApiController.java b/src/main/java/com/zy/api/controller/HmesApiController.java
index b672bcc..4d2ba8e 100644
--- a/src/main/java/com/zy/api/controller/HmesApiController.java
+++ b/src/main/java/com/zy/api/controller/HmesApiController.java
@@ -80,6 +80,19 @@
}
/**
+ * 瑙e喕鎵�鏈夋満鍙板伐浣�
+ * @author Ryan
+ * @date 2026/3/28 20:45
+ * @return com.core.common.R
+ */
+// @ManagerAuth
+ @ApiOperation("瑙e喕鎵�鏈夋満鍙板伐浣�")
+ @PostMapping("/work/release/lock/all")
+ public R releaseAllLocks() {
+ return hmesApiService.releaseAllLocks();
+ }
+
+ /**
* 鑾峰彇鏈哄彴鍙婂搴斿伐浣嶅喕缁撴儏鍐�
* @author Ryan
* @date 2026/3/20 11:06
diff --git a/src/main/java/com/zy/api/service/HmesApiService.java b/src/main/java/com/zy/api/service/HmesApiService.java
index e97cb22..3adef8c 100644
--- a/src/main/java/com/zy/api/service/HmesApiService.java
+++ b/src/main/java/com/zy/api/service/HmesApiService.java
@@ -11,6 +11,8 @@
R releaseLock(ReceviceTaskParams params);
+ R releaseAllLocks();
+
R getDeviceFreezeStatus(String devNo);
R backLoc(HmesBackLocParams params);
diff --git a/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java
index 28b58d9..36abd52 100644
--- a/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java
@@ -251,6 +251,26 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
+ public R releaseAllLocks() {
+ EntityWrapper<LocAroundBind> frozenWrapper = new EntityWrapper<>();
+ frozenWrapper.eq("freeze", 1);
+ int frozenCount = locAroundBindService.selectCount(frozenWrapper);
+ if (frozenCount <= 0) {
+ return R.ok("鍏ㄩ儴鏈哄彴宸ヤ綅鍧囨湭鍐荤粨");
+ }
+
+ LocAroundBind updateEntity = new LocAroundBind();
+ updateEntity.setFreeze(0);
+ EntityWrapper<LocAroundBind> updateWrapper = new EntityWrapper<>();
+ updateWrapper.eq("freeze", 1);
+ if (!locAroundBindService.update(updateEntity, updateWrapper)) {
+ throw new CoolException("鍏ㄩ儴鏈哄彴宸ヤ綅瑙e喕澶辫触锛岃妫�鏌ュ悗鍐嶆搷浣滐紒锛�");
+ }
+ return R.ok("鍏ㄩ儴鏈哄彴宸ヤ綅瑙e喕鎴愬姛锛屽叡澶勭悊" + frozenCount + "涓伐浣�");
+ }
+
+ @Override
public R getDeviceFreezeStatus(String devNo) {
EntityWrapper<BasDevice> deviceWrapper = new EntityWrapper<>();
deviceWrapper.eq("status", 1);
diff --git a/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
index 2c70265..805b2db 100644
--- a/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -207,23 +207,25 @@
wrkMastService.updateById(wrkMast);
//鍑哄簱涓烘満鍙板伐浣嶆椂锛屽喕缁撶浉瀵规湁鐨勫簱浣�,鍙婄浉閭诲簱浣�
String s = Utils.convertLocFormat(params.getLocNo());
- LocAroundBind bind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
- .eq("b_loc_no", s));
- if (!Objects.isNull(bind)) {
- bind.setFreeze(1);
- locAroundBindService.updateById(bind);
- //鍐荤粨鐩搁偦搴撲綅
- Integer[] aroundIds = freezeLocAround(bind.getOrderNo());
- if (aroundIds != null) {
- for (Integer id : aroundIds) {
- if (id != null && id > 0) {
- LocAroundBind aroundBind = locAroundBindService.selectOne(
- new EntityWrapper<LocAroundBind>()
- .eq("dev_id", bind.getDevId())
- .eq("order_no", id));
- if (aroundBind != null) {
- aroundBind.setFreeze(1);
- locAroundBindService.updateById(aroundBind);
+ if(Cools.isEmpty(wrkMast.getLocNo())){
+ LocAroundBind bind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>()
+ .eq("b_loc_no", s));
+ if (!Objects.isNull(bind)) {
+ bind.setFreeze(1);
+ locAroundBindService.updateById(bind);
+ //鍐荤粨鐩搁偦搴撲綅
+ Integer[] aroundIds = freezeLocAround(bind.getOrderNo());
+ if (aroundIds != null) {
+ for (Integer id : aroundIds) {
+ if (id != null && id > 0) {
+ LocAroundBind aroundBind = locAroundBindService.selectOne(
+ new EntityWrapper<LocAroundBind>()
+ .eq("dev_id", bind.getDevId())
+ .eq("order_no", id));
+ if (aroundBind != null) {
+ aroundBind.setFreeze(1);
+ locAroundBindService.updateById(aroundBind);
+ }
}
}
}
diff --git a/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java b/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
index c2a7f49..f233f2b 100644
--- a/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
@@ -26,4 +26,12 @@
public void executeOrder(){
orderMoveHistoryHandler.startOrder();
}
+
+ /**
+ * 姣忓ぉ 0 鐐瑰皢鏈墽琛岀殑鍑哄簱鍗曡浆鍏ュ巻鍙叉。锛屽苟鎵撲笂绯荤粺鑷姩鍒犻櫎鏍囪
+ */
+ @Scheduled(cron = "0 0 0 * * ?", zone = "Asia/Shanghai")
+ public void executePakoutAutoArchive() {
+ orderMoveHistoryHandler.startPakoutAutoArchive();
+ }
}
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
index 11c0b25..b1023c7 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
@@ -11,7 +11,10 @@
import com.zy.asrs.utils.OrderInAndOutUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.Date;
import java.util.List;
@@ -31,6 +34,8 @@
private OrderDetlPakinServiceImpl orderDetlPakinService;
@Autowired
private OrderDetlPakoutService orderDetlPakoutService;
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
public ReturnT<String> start(){
// List<Order> settleEqual6 = orderService.selectList(new EntityWrapper<Order>()
@@ -60,6 +65,82 @@
return SUCCESS;
}
+ /**
+ * 姣忓ぉ 0 鐐瑰皢鏈墽琛岀殑鍑哄簱鍗曡浆鍏ュ巻鍙叉。锛屽苟鏍囪涓虹郴缁熻嚜鍔ㄥ垹闄ゃ��
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public ReturnT<String> startPakoutAutoArchive() {
+ try {
+ Integer orderCount = jdbcTemplate.queryForObject(
+ "select count(1) from man_order_pakout where settle = 1",
+ Integer.class
+ );
+ if (orderCount == null || orderCount == 0) {
+ return SUCCESS;
+ }
+
+ int detailLogCount = jdbcTemplate.update(
+ "insert into man_order_detl_log_pakout " +
+ "select * from man_order_detl_pakout " +
+ "where order_id in (select id from man_order_pakout where settle = 1)"
+ );
+ jdbcTemplate.update(
+ "update logDetl " +
+ "set logDetl.memo = case " +
+ "when logDetl.memo is null or logDetl.memo = '' " +
+ "then '绯荤粺0鐐硅嚜鍔ㄥ垹闄よ縼绉籟' + convert(varchar(19), getdate(), 120) + ']' " +
+ "else logDetl.memo + ';绯荤粺0鐐硅嚜鍔ㄥ垹闄よ縼绉籟' + convert(varchar(19), getdate(), 120) + ']' " +
+ "end, " +
+ "logDetl.update_by = 0, " +
+ "logDetl.update_time = getdate() " +
+ "from man_order_detl_log_pakout logDetl " +
+ "where exists (" +
+ "select 1 " +
+ "from man_order_detl_pakout detl " +
+ "inner join man_order_pakout pakout on detl.order_id = pakout.id " +
+ "where pakout.settle = 1 and detl.id = logDetl.id)"
+ );
+ int detailDeleteCount = jdbcTemplate.update(
+ "delete from man_order_detl_pakout " +
+ "where order_id in (select id from man_order_pakout where settle = 1)"
+ );
+
+ int orderLogCount = jdbcTemplate.update(
+ "insert into man_order_log_pakout " +
+ "select * from man_order_pakout " +
+ "where settle = 1"
+ );
+ jdbcTemplate.update(
+ "update logOrder " +
+ "set logOrder.memo = case " +
+ "when logOrder.memo is null or logOrder.memo = '' " +
+ "then '绯荤粺0鐐硅嚜鍔ㄥ垹闄よ縼绉籟' + convert(varchar(19), getdate(), 120) + ']' " +
+ "else logOrder.memo + ';绯荤粺0鐐硅嚜鍔ㄥ垹闄よ縼绉籟' + convert(varchar(19), getdate(), 120) + ']' " +
+ "end, " +
+ "logOrder.update_by = 0, " +
+ "logOrder.update_time = getdate() " +
+ "from man_order_log_pakout logOrder " +
+ "where exists (" +
+ "select 1 " +
+ "from man_order_pakout pakout " +
+ "where pakout.settle = 1 and pakout.id = logOrder.id)"
+ );
+ int orderDeleteCount = jdbcTemplate.update(
+ "delete from man_order_pakout where settle = 1"
+ );
+
+ log.info(
+ "0鐐硅嚜鍔ㄨ縼绉诲嚭搴撳崟鑷冲巻鍙叉。瀹屾垚, 璁㈠崟鏁�={}, 璁㈠崟鍘嗗彶鏁�={}, 鏄庣粏鍘嗗彶鏁�={}, 璁㈠崟鍒犻櫎鏁�={}, 鏄庣粏鍒犻櫎鏁�={}",
+ orderCount, orderLogCount, detailLogCount, orderDeleteCount, detailDeleteCount
+ );
+ return SUCCESS;
+ } catch (Exception e) {
+ log.error("0鐐硅嚜鍔ㄨ縼绉诲嚭搴撳崟鑷冲巻鍙叉。澶辫触", e);
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg(e.getMessage());
+ }
+ }
+
private void moveBoth(Order order, List<OrderDetl> orderDetls){
Date now = new Date();
if (!Cools.isEmpty(orderDetls)) {
--
Gitblit v1.9.1