| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import zy.cloud.wms.common.config.CodeCoolException; |
| | | import zy.cloud.wms.common.model.MatnrDto; |
| | | import zy.cloud.wms.common.model.OrderStoDto; |
| | | import zy.cloud.wms.common.service.asrs.AsrsService; |
| | | import zy.cloud.wms.common.service.asrs.entity.Result; |
| | | import zy.cloud.wms.common.service.asrs.entity.Result1; |
| | | import zy.cloud.wms.common.utils.VersionUtils; |
| | | import zy.cloud.wms.manager.entity.*; |
| | | import zy.cloud.wms.manager.service.*; |
| | | import zy.cloud.wms.manager.entity.param.StockTransferParam; |
| | | import zy.cloud.wms.manager.entity.result.PakoutVo; |
| | | import zy.cloud.wms.manager.service.LocDetlService; |
| | | import zy.cloud.wms.manager.service.MatService; |
| | | import zy.cloud.wms.manager.service.OrderService; |
| | | import zy.cloud.wms.manager.service.PakoutService; |
| | | |
| | | import java.util.*; |
| | | |
| | |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private AsrsService asrsService; |
| | | |
| | | @Transactional |
| | | public List<StoPreTab> stockOutPreview(OrderStoDto orderStoDto) { |
| | |
| | | } |
| | | List<StoPreTab> res = new ArrayList<>(); |
| | | // 检查库存是否足够 |
| | | locDetlService.checkLocDetlCount(orderStoDto.getDtos()); |
| | | List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(orderStoDto.getDtos()); |
| | | if (!Cools.isEmpty(transferParams)) { |
| | | // 查看立库库存 |
| | | Result result = asrsService.stockTransferPrew(transferParams); |
| | | if (result.getCode() == 500) { |
| | | throw new CodeCoolException("20001-" + String.valueOf(result.getMsg())); |
| | | } |
| | | if (result.getCode() == 200) { |
| | | res = (List<StoPreTab>) result.getData(); |
| | | } |
| | | } |
| | | |
| | | for (MatnrDto matnrDto : orderStoDto.getDtos()) { |
| | | // 判断物料是否存在 |
| | |
| | | } |
| | | Date now = new Date(); |
| | | // 检查库存是否足够 |
| | | locDetlService.checkLocDetlCount(orderStoDto.getDtos()); |
| | | List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(orderStoDto.getDtos()); |
| | | if (!Cools.isEmpty(transferParams)) { |
| | | // 查看立库库存 |
| | | Result1 result = asrsService.stockTransfer(transferParams); |
| | | if (result.getCode() == 500) { |
| | | if (Cools.isEmpty(result.getData())) { |
| | | throw new CoolException(result.getMsg()); |
| | | } else { |
| | | throw new CodeCoolException("20001-" + result.getData()); |
| | | } |
| | | } |
| | | if (result.getCode() == 200) { |
| | | for (PakoutVo vo : result.getData()) { |
| | | // 判断物料是否存在 |
| | | Mat mat = matService.selectByMatnr(vo.getMatnr()); |
| | | if (null == mat) { |
| | | throw new CoolException(vo.getMatnr() + "物料尚未更新。" + orderStoDto.getOrderNo() +"单据因此中断!"); |
| | | } |
| | | Pakout pakout = new Pakout(); |
| | | pakout.setWrkSts(1L); |
| | | pakout.setAnfme(vo.getAnfme()); |
| | | pakout.setZpallet(vo.getZpallet()); |
| | | pakout.setLocNo(vo.getLocNo()); |
| | | pakout.setNodeId(-1L); |
| | | pakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId())); |
| | | VersionUtils.setPakout(pakout, mat); |
| | | pakout.setDocId(order.getDocType()); // 单据类型 |
| | | pakout.setDocNum(order.getOrderNo()); // 单据编号 |
| | | pakout.setCreateTime(now); |
| | | pakout.setUpdateTime(now); |
| | | pakout.setStatus(1); |
| | | if (!pakoutService.insert(pakout)) { |
| | | throw new CoolException("保存出库通知单失败"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | for (MatnrDto matnrDto : orderStoDto.getDtos()) { |
| | | // 判断物料是否存在 |