package com.zy.asrs.task.handler;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.Cools;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.Mat;
|
import com.zy.asrs.entity.Order;
|
import com.zy.asrs.entity.OrderDetl;
|
import com.zy.asrs.entity.WaitPakin;
|
import com.zy.asrs.mapper.OrderMapper;
|
import com.zy.asrs.service.MatService;
|
import com.zy.asrs.service.OrderDetlService;
|
import com.zy.asrs.service.OrderService;
|
import com.zy.asrs.service.WaitPakinService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author pang.jiabao
|
* @description 自动组托定时任务处理器
|
* @createDate 2024/10/23 13:14
|
*/
|
@Slf4j
|
@Service
|
public class AutoGroupingHandler {
|
|
@Resource
|
private OrderDetlService orderDetlService;
|
|
@Resource
|
private MatService matService;
|
|
@Resource
|
private WaitPakinService waitPakinService;
|
|
@Resource
|
private OrderService orderService;
|
|
@Resource
|
private OrderMapper orderMapper;
|
|
public void autoGrouping(Order order) {
|
|
Date now = new Date();
|
|
// 获取订单明细
|
List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()));
|
|
// 生成入库通知档
|
for (OrderDetl orderDetl : orderDetlList) {
|
if (orderDetl.getAnfme() > orderDetl.getEnableQty()) {
|
throw new CoolException(orderDetl.getMatnr() + "入库数量不合法");
|
}
|
// 修改订单作业数量
|
if (!orderDetlService.increaseWorkQty(orderDetl, orderDetl.getAnfme())) {
|
throw new CoolException("修改单据作业数量失败");
|
}
|
|
Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
|
if (Cools.isEmpty(mat)) {
|
throw new CoolException(orderDetl.getMatnr() + "商品档案不存在");
|
}
|
WaitPakin waitPakin = new WaitPakin();
|
waitPakin.sync(mat);
|
waitPakin.setOrderNo(order.getOrderNo()); // 单据编号
|
waitPakin.setBatch(orderDetl.getBatch()); // 序列码
|
waitPakin.setZpallet(orderDetlList.size() == 1 ? order.getTemp2() : orderDetl.getTemp2()); // 托盘码
|
waitPakin.setIoStatus("N"); // 入出状态
|
waitPakin.setAnfme(orderDetl.getAnfme()); // 数量
|
waitPakin.setStatus("Y"); // 状态
|
waitPakin.setAppeTime(now);
|
waitPakin.setModiTime(now);
|
// @可以了主、从表中Temp2存的就是托盘号,如果一托一个单子存的就是主表的Temp2字段,
|
// 否则存的就是从表的Temp2字段,从表中:产品ID:ItemId,产品代号:ItemCode,批号:ItemBatch,
|
// 属性:ProType,颜色:sColor,订单号:OrderNo,炉号:LuHao,客户ID:Packing,工单号:sPgNo
|
waitPakin.setSPgNO(orderDetl.getSPgNO());
|
waitPakin.setOutOrderNo(orderDetl.getOutOrderNo());
|
waitPakin.setProType(orderDetl.getProType());
|
waitPakin.setLuHao(orderDetl.getLuHao());
|
waitPakin.setPacking(orderDetl.getPacking());
|
if (!waitPakinService.insert(waitPakin)) {
|
throw new CoolException("保存入库通知档失败");
|
}
|
}
|
|
orderMapper.updateSettleAndGroupingFlag(order.getId(), 2L, 1);
|
}
|
}
|