| 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(order.getTemp2() == null ? orderDetl.getTemp2() : order.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); | 
|     } | 
| } |