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 orderDetlList = orderDetlService.selectList(new EntityWrapper().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); } }