| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.service.OrderDetlService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl; |
| | | import com.zy.asrs.service.impl.OrderPakinServiceImpl; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | 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; |
| | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private OrderPakinService orderPakinService; |
| | | @Autowired |
| | | private OrderPakoutService orderPakoutService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private OrderDetlPakinServiceImpl orderDetlPakinService; |
| | | @Autowired |
| | | private OrderDetlPakoutService orderDetlPakoutService; |
| | | @Autowired |
| | | private JdbcTemplate jdbcTemplate; |
| | | |
| | | public ReturnT<String> start(){ |
| | | List<Order> settleEqual6 = orderService.selectList(new EntityWrapper<Order>() |
| | | .eq("settle", 6)); |
| | | // List<Order> settleEqual6 = orderService.selectList(new EntityWrapper<Order>() |
| | | // .eq("settle", 6)); |
| | | List<Order> settleEqual6 = OrderInAndOutUtil.selectBySettle(null, 6L); |
| | | for (Order order : settleEqual6) { |
| | | List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>() |
| | | .eq("order_no", order.getOrderNo())); |
| | | // List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>() |
| | | // .eq("order_no", order.getOrderNo())); |
| | | List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); |
| | | moveBoth(order,orderDetls); |
| | | log.info("已完成单据移动至历史表成功 =====>" +order); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | |
| | | public ReturnT<String> startOrder(){ |
| | | List<Order> settleEqual6 = orderService.selectList(new EntityWrapper<Order>() |
| | | .eq("settle", 6)); |
| | | // List<Order> settleEqual6 = OrderInAndOutUtil.selectBySettle(null, 6L); |
| | | for (Order order : settleEqual6) { |
| | | List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>() |
| | | .eq("order_no", order.getOrderNo())); |
| | | // List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); |
| | | moveBothOrder(order,orderDetls); |
| | | log.info("已完成单据移动至历史表成功 =====>" +order); |
| | | } |
| | | 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)) { |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | orderDetl.setUpdateBy(0L); |
| | | orderDetl.setUpdateTime(now); |
| | | // orderDetlService.addToLogTable(orderDetl); |
| | | OrderInAndOutUtil.addToLogTableOrderDetl(order.getPakinPakoutStatus$(),orderDetl); |
| | | if (order.getPakinPakoutStatus() == 1){ |
| | | orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>() |
| | | .eq("id",orderDetl.getId())); |
| | | } else { |
| | | orderDetlPakoutService.delete(new EntityWrapper<OrderDetlPakout>() |
| | | .eq("id",orderDetl.getId())); |
| | | } |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(order)){ |
| | | order.setUpdateBy(0L); |
| | | order.setUpdateTime(now); |
| | | // orderService.addToLogTable(order); |
| | | OrderInAndOutUtil.addToLogTableOrder(order.getPakinPakoutStatus$(),order); |
| | | // orderService.delete(new EntityWrapper<Order>() |
| | | // .eq("id",order.getId())); |
| | | if (order.getPakinPakoutStatus() == 1){ |
| | | orderPakinService.delete(new EntityWrapper<OrderPakin>() |
| | | .eq("id",order.getId())); |
| | | } else { |
| | | orderPakoutService.delete(new EntityWrapper<OrderPakout>() |
| | | .eq("id",order.getId())); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void moveBothOrder(Order order, List<OrderDetl> orderDetls){ |
| | | Date now = new Date(); |
| | | if (!Cools.isEmpty(orderDetls)) { |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | orderDetl.setUpdateBy(0L); |
| | | orderDetl.setUpdateTime(now); |
| | | orderDetlService.addToLogTable(orderDetl); |
| | | orderDetlService.delete(new EntityWrapper<OrderDetl>() |
| | | .eq("id",orderDetl.getId())); |