package com.zy.asrs.wms.asrs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.exception.CoolException; import com.zy.asrs.wms.asrs.entity.Order; import com.zy.asrs.wms.asrs.entity.WaitPakin; import com.zy.asrs.wms.asrs.entity.enums.LocTypeHeightType; import com.zy.asrs.wms.asrs.entity.enums.OrderType; import com.zy.asrs.wms.asrs.entity.enums.TaskStsType; import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam; import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam; import com.zy.asrs.wms.asrs.service.MobileService; import com.zy.asrs.wms.asrs.service.OrderService; import com.zy.asrs.wms.asrs.service.WaitPakinService; import com.zy.asrs.wms.asrs.service.WorkService; import com.zy.asrs.wms.system.entity.Host; import com.zy.asrs.wms.system.service.HostService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Objects; @Service public class MobileServiceImpl implements MobileService { @Autowired private WaitPakinService waitPakinService; @Autowired private WorkService workService; @Autowired private HostService hostService; @Autowired private OrderService orderService; @Override @Transactional(rollbackFor = Exception.class) public boolean batchMergeOrders(BatchMergeOrdersParam ordersParam) { Order order = orderService.getOne(new LambdaQueryWrapper().eq(Order::getOrderNo, ordersParam.getOrderNo())); if (Objects.isNull(order)) { throw new CoolException("订单不存在!!"); } ArrayList waitPakins = new ArrayList<>(); ordersParam.getOrderDetls().forEach(orderdetl -> { WaitPakin waitPakin = new WaitPakin(); waitPakin.setBatch(orderdetl.getBatch()) .setAnfme(orderdetl.getMergeNum()) .setBarcode(ordersParam.getMergeNo()) .setMatnr(orderdetl.getMatnr()) .setDetlId(orderdetl.getDetlId()) .setIoStatus(0) .setOrderNo(orderdetl.getOrderNo()).setOrderId(orderdetl.getOrderId()).setStatus(1); waitPakins.add(waitPakin); }); //组拖通知档 waitPakins.forEach(pakin -> { waitPakinService.comb(pakin); }); // UTC入库单据(非平库入库单据) if (order.getOrderType() != OrderType.PK_IN_ORDER.id) { /*** 项目下发流程 * 1. PDA组拖通知档* 2. 生成任务档* 3. 通过定时任务下发至ESS** */ //生成任务档 GeneratePakInParam generatePakInParam = new GeneratePakInParam(); //当前没有起始站点,默认101, 高低位默认传低库位 generatePakInParam.setBarcode(ordersParam.getMergeNo()) .setOriginSite("101") .setTaskType(TaskStsType.GENERATE_IN.id).setLocTypeHeight(LocTypeHeightType.LOW.id); if (workService.generatePakIn(generatePakInParam)) { return true; } } else { //fixme 平库是否需要预约入库 } return false; } @Override public List getHosts() { return hostService.list(); } }