| | |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.enums.PakinIOStatus; |
| | | import com.vincent.rsf.server.manager.mapper.WaitPakinMapper; |
| | | import com.vincent.rsf.server.manager.mapper.MatnrMapper; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | |
| | | private TaskService taskService; |
| | | @Autowired |
| | | private TaskItemService taskItemService; |
| | | @Autowired |
| | | private MatnrMapper matnrMapper; |
| | | |
| | | |
| | | /** |
| | |
| | | WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() |
| | | .eq(WaitPakin::getBarcode, waitPakin.getBarcode())); |
| | | |
| | | // 如果容器号已经组托过,提示已组托,请更换容器条码 |
| | | if (!Objects.isNull(pakin)) { |
| | | throw new CoolException("已组托,请更换容器条码"); |
| | | } |
| | | |
| | | List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, waitPakin.getBarcode())); |
| | | if (!tasks.isEmpty()) { |
| | | throw new CoolException("当前托盘已有任务档在执行,不能再次组托!!"); |
| | | } |
| | | if (!Objects.isNull(pakin)) { |
| | | List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(!Objects.isNull(pakin.getId()) ,WaitPakinItem::getPakinId, pakin.getId())); |
| | | waitPakinItems.forEach(item -> { |
| | | for (PakinItem pakinItem : waitPakin.getItems()) { |
| | | WarehouseAreasItem warehouseAreasItems = warehouseAreasItemService.getById(pakinItem.getId()); |
| | | if (Objects.isNull(warehouseAreasItems)) { |
| | | throw new CoolException("物料未送至收货区或已组托完成移出收货区!!"); |
| | | } |
| | | // 只在票号不为空时才进行重复检查 |
| | | if (!Objects.isNull(item.getFieldsIndex()) && !Objects.isNull(warehouseAreasItems.getFieldsIndex()) |
| | | && item.getFieldsIndex().equals(warehouseAreasItems.getFieldsIndex())) { |
| | | String crushNo = item.getExtendFields() != null ? item.getExtendFields().get("crushNo") : ""; |
| | | throw new CoolException("票号:" + crushNo + "已组托,不可重复组托!!"); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 检查容器号是否在库存中存在(通过库位表查询) |
| | | List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, waitPakin.getBarcode())); |
| | | if (!locs.isEmpty()) { |
| | | List<String> locCodes = locs.stream().map(Loc::getCode).collect(Collectors.toList()); |
| | | String join = StringUtils.join(locCodes, ","); |
| | | throw new CoolException("托盘码:" + waitPakin.getBarcode() + "已被库位:" + join + "使用!!"); |
| | | throw new CoolException("在库,请更换容器条码"); |
| | | } |
| | | |
| | | double sum = waitPakin.getItems().stream().mapToDouble(PakinItem::getReceiptQty).sum(); |
| | | |
| | | WaitPakin waitPakin1 = new WaitPakin(); |
| | |
| | | |
| | | List<WaitPakinItem> items = new ArrayList<>(); |
| | | for (PakinItem pakinItem1 : waitPakin.getItems()) { |
| | | //不良标签组托 |
| | | WaitPakinItem pakinItem = new WaitPakinItem(); |
| | | |
| | | // 如果ASN单号为空,从物料信息表获取物料信息,不查询收货区 |
| | | if (StringUtils.isBlank(pakinItem1.getAsnCode())) { |
| | | if (Objects.isNull(pakinItem1.getMatnrId())) { |
| | | throw new CoolException("物料ID不能为空!!"); |
| | | } |
| | | |
| | | // 从物料信息表获取物料信息 |
| | | Matnr matnr = matnrMapper.selectById(pakinItem1.getMatnrId()); |
| | | if (Objects.isNull(matnr)) { |
| | | throw new CoolException("物料信息不存在,物料ID:" + pakinItem1.getMatnrId()); |
| | | } |
| | | |
| | | // 设置组托明细信息(不设置source,因为不在收货区) |
| | | pakinItem.setPakinId(waitPakin1.getId()) |
| | | .setSource(null) // 不在收货区,source设为null |
| | | .setAsnId(null) |
| | | .setAsnCode(null) |
| | | .setAsnItemId(null) |
| | | .setIsptResult(null) |
| | | .setPlatItemId(null) |
| | | .setPlatOrderCode(null) |
| | | .setPlatWorkCode(null) |
| | | .setProjectCode(null) |
| | | .setBatch(null) |
| | | .setUnit(matnr.getStockUnit()) |
| | | .setFieldsIndex(matnr.getFieldsIndex()) |
| | | .setMatnrId(matnr.getId()) |
| | | .setMaktx(matnr.getName()) |
| | | .setUpdateBy(userId) |
| | | .setCreateBy(userId) |
| | | .setMatnrCode(matnr.getCode()); |
| | | |
| | | // 设置组托数量 |
| | | if (pakinItem1.getReceiptQty() == null || pakinItem1.getReceiptQty().compareTo(0.0) <= 0) { |
| | | throw new CoolException("组托数量不能小于等于零!!"); |
| | | } |
| | | pakinItem.setAnfme(pakinItem1.getReceiptQty()) |
| | | .setTrackCode(pakinItem1.getTrackCode()); |
| | | } else { |
| | | // 有ASN单号,从收货区获取物料信息 |
| | | WarehouseAreasItem warehouseAreasItems = warehouseAreasItemService.getById(pakinItem1.getId()); |
| | | if (null == warehouseAreasItems) { |
| | | throw new CoolException("物料未送至收货区!!"); |
| | | } |
| | | WaitPakinItem pakinItem = new WaitPakinItem(); |
| | | |
| | | pakinItem.setAnfme(warehouseAreasItems.getAnfme()) |
| | | .setPakinId(waitPakin1.getId()) |
| | | .setSource(warehouseAreasItems.getId()) |
| | |
| | | .setUpdateBy(userId) |
| | | .setCreateBy(userId) |
| | | .setMatnrCode(warehouseAreasItems.getMatnrCode()); |
| | | |
| | | WkOrder order = asnOrderService.getById(warehouseAreasItems.getAsnId()); |
| | | if (!Objects.isNull(order)) { |
| | | pakinItem.setType(null == order.getType() ? null : order.getType()) |
| | |
| | | .setTrackCode(waitPakinItem.getTrackCode()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | items.add(pakinItem); |
| | | } |
| | | |
| | |
| | | // Double total = Math.round((sum + waitSum) * 100) / 100.0; |
| | | |
| | | for (WaitPakinItem pakinItem : items) { |
| | | // 如果source为空(没有ASN单号,不在收货区),跳过收货区更新 |
| | | if (Objects.isNull(pakinItem.getSource())) { |
| | | continue; |
| | | } |
| | | |
| | | WarehouseAreasItem one = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() |
| | | .eq(WarehouseAreasItem::getId, pakinItem.getSource())); |
| | | if (Objects.isNull(one)) { |