| src/main/java/com/zy/api/controller/HmesApiController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/HmesApiService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/impl/HmesApiServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/api/controller/HmesApiController.java
@@ -80,6 +80,19 @@ } /** * 解冻所有机台工位 * @author Ryan * @date 2026/3/28 20:45 * @return com.core.common.R */ // @ManagerAuth @ApiOperation("解冻所有机台工位") @PostMapping("/work/release/lock/all") public R releaseAllLocks() { return hmesApiService.releaseAllLocks(); } /** * 获取机台及对应工位冻结情况 * @author Ryan * @date 2026/3/20 11:06 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); 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("全部机台工位解冻失败,请检查后再操作!!"); } return R.ok("全部机台工位解冻成功,共处理" + frozenCount + "个工位"); } @Override public R getDeviceFreezeStatus(String devNo) { EntityWrapper<BasDevice> deviceWrapper = new EntityWrapper<>(); deviceWrapper.eq("status", 1); 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); } } } } 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(); } } 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)) {