package com.zy.asrs.task.handler;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.Cools;
|
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;
|
|
@Service
|
@Slf4j
|
public class OrderMoveHistoryHandler extends AbstractHandler<String> {
|
@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 = 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());
|
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()));
|
}
|
}
|
if (!Cools.isEmpty(order)){
|
order.setUpdateBy(0L);
|
order.setUpdateTime(now);
|
orderService.addToLogTable(order);
|
orderService.delete(new EntityWrapper<Order>()
|
.eq("id",order.getId()));
|
}
|
}
|
|
}
|