|  |  | 
 |  |  | import com.vincent.rsf.framework.common.Cools; | 
 |  |  | import com.vincent.rsf.framework.common.R; | 
 |  |  | import com.vincent.rsf.framework.exception.CoolException; | 
 |  |  | import com.vincent.rsf.server.api.controller.params.*; | 
 |  |  | import com.vincent.rsf.server.api.controller.erp.params.*; | 
 |  |  | import com.vincent.rsf.server.api.entity.dto.*; | 
 |  |  | import com.vincent.rsf.server.manager.enums.*; | 
 |  |  | import com.vincent.rsf.server.api.service.MobileService; | 
 |  |  | 
 |  |  |     private FieldsMapper fieldsMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private IsptHistoriesMapper isptHistoriesMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private AsnOrderLogService asnOrderLogService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private WaitPakinService waitPakinService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private WaitPakinItemService waitPakinItemService; | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |     private ConfigService configService; | 
 |  |  |     @Autowired | 
 |  |  |     private CompanysService companysService; | 
 |  |  |     @Autowired | 
 |  |  |     private OutStockService outStockService; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * @return | 
 |  |  | 
 |  |  |         if (StringUtils.isBlank(barcode)) { | 
 |  |  |             return R.error("标签码不能为空!!"); | 
 |  |  |         } | 
 |  |  |         List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() | 
 |  |  |                 .eq(AsnOrderItem::getTrackCode, barcode)); | 
 |  |  |         List<WkOrderItem> wkOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<WkOrderItem>() | 
 |  |  |                 .eq(WkOrderItem::getTrackCode, barcode)); | 
 |  |  |  | 
 |  |  |         if (Objects.isNull(asnOrderItem)) { | 
 |  |  |         if (Objects.isNull(wkOrderItem)) { | 
 |  |  |             throw new CoolException("单据明细不存在!!"); | 
 |  |  |         } | 
 |  |  |         List<AsnOrderItem> items = new ArrayList<>(); | 
 |  |  |         for (AsnOrderItem record : asnOrderItem) { | 
 |  |  |         List<WkOrderItem> items = new ArrayList<>(); | 
 |  |  |         for (WkOrderItem record : wkOrderItem) { | 
 |  |  |             if (!Objects.isNull(record.getFieldsIndex())) { | 
 |  |  |                 Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex()); | 
 |  |  |                 record.setExtendFields(fields); | 
 |  |  | 
 |  |  |  | 
 |  |  |         WkOrder wkOrder = asnOrderMapper.getOne(new LambdaQueryWrapper<WkOrder>() | 
 |  |  |                 .eq(WkOrder::getCode, asnCode)); | 
 |  |  |  | 
 |  |  |         //判断调拔单出库是否完成 | 
 |  |  |         if (wkOrder.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) { | 
 |  |  |             WkOrder one = outStockService.getOne(new LambdaQueryWrapper<WkOrder>() | 
 |  |  |                     .eq(WkOrder::getPoId, wkOrder.getPoId()) | 
 |  |  |                     .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type) | 
 |  |  |                     .eq(WkOrder::getType, OrderType.ORDER_OUT.type)); | 
 |  |  |             if (Objects.isNull(one)) { | 
 |  |  |                 throw new CoolException("数据错误!!"); | 
 |  |  |             } | 
 |  |  |             if (!one.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)) { | 
 |  |  |                 throw new CoolException("调拔出库单未完成,不可执行收货操作!!"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (Objects.isNull(wkOrder)) { | 
 |  |  |             throw new CoolException("数据错误:主单不存在!!"); | 
 |  |  |         } | 
 |  |  |         //TODO /**收货数量累加,1. 会出超收情况 2. 会有收货不足情况*/ | 
 |  |  |         Double rcptedQty = Math.round((wkOrder.getQty() + receiptQty) * 10000) / 10000.0; | 
 |  |  |  | 
 |  |  |         wkOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val); | 
 |  |  |         if (!asnOrderMapper.updateById(wkOrder)) { | 
 |  |  |             throw new CoolException("已收货数量修改失败!!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.ALLOW_OVER_CHANGE)); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts"); | 
 |  |  |         for (Map<String, Object> rcpt : receipts1) { | 
 |  |  | 
 |  |  | //                    .eq(AsnOrderItem::getTrackCode, dto.getBarcode()) | 
 |  |  | //                    .eq(AsnOrderItem::getSplrBatch, dto.getSplrBatch())); | 
 |  |  |  | 
 |  |  |             AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, dto.getId())); | 
 |  |  |             WkOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getId, dto.getId())); | 
 |  |  |             //asnOrderItemMapper.resultById(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, dto.getId())); | 
 |  |  |  | 
 |  |  |             if (Objects.isNull(orderItem)) { | 
 |  |  | 
 |  |  |         return R.ok("收货成功!!"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void extracted(Long loginUserId, ReceiptDetlsDto dto, WarehouseAreas areasItem, AsnOrderItem orderItem, WkOrder wkOrder, Matnr matnr) { | 
 |  |  |     private void extracted(Long loginUserId, ReceiptDetlsDto dto, WarehouseAreas areasItem, WkOrderItem orderItem, WkOrder wkOrder, Matnr matnr) { | 
 |  |  |  | 
 |  |  |         Companys companys = new Companys(); | 
 |  |  |         if (StringUtils.isNoneBlank(orderItem.getSplrCode())) { | 
 |  |  |              companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderItem.getSplrCode())); | 
 |  |  |             companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderItem.getSplrCode())); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         WarehouseAreasItem item = new WarehouseAreasItem(); | 
 |  |  | 
 |  |  |             throw new CoolException("请检查订单状态是否已完成或已取消!!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() | 
 |  |  |                 .eq(AsnOrderItem::getAsnCode, params.getAsnCode()) | 
 |  |  |                 .eq(!Objects.isNull(params.getTrackCode()), AsnOrderItem::getTrackCode, params.getTrackCode()) | 
 |  |  |                 .eq(!Cools.isEmpty(params.getMatnrCode()), AsnOrderItem::getMatnrCode, params.getMatnrCode()) | 
 |  |  |         List<WkOrderItem> wkOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<WkOrderItem>() | 
 |  |  |                 .eq(WkOrderItem::getOrderCode, params.getAsnCode()) | 
 |  |  |                 .eq(!Objects.isNull(params.getTrackCode()), WkOrderItem::getTrackCode, params.getTrackCode()) | 
 |  |  |                 .eq(!Cools.isEmpty(params.getMatnrCode()), WkOrderItem::getMatnrCode, params.getMatnrCode()) | 
 |  |  |         ); | 
 |  |  |  | 
 |  |  |         if (Objects.isNull(asnOrderItem)) { | 
 |  |  |         if (Objects.isNull(wkOrderItem)) { | 
 |  |  |             throw new CoolException("单据明细不存在!!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<AsnOrderItem> items = new ArrayList<>(); | 
 |  |  |         for (AsnOrderItem record : asnOrderItem) { | 
 |  |  |         List<WkOrderItem> items = new ArrayList<>(); | 
 |  |  |         for (WkOrderItem record : wkOrderItem) { | 
 |  |  |             if (!Objects.isNull(record.getFieldsIndex())) { | 
 |  |  |                 Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex()); | 
 |  |  |                 record.setExtendFields(fields); | 
 |  |  | 
 |  |  |         } | 
 |  |  |         InspectDetlDto detlDto = new InspectDetlDto(); | 
 |  |  |         detlDto.setCode(wkOrders.getCode()).setId(wkOrders.getId()).setPoCode(wkOrders.getPoCode()); | 
 |  |  |         List<AsnOrderItem> orderItems = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnCode, code)); | 
 |  |  |         List<WkOrderItem> orderItems = asnOrderItemMapper.selectList(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderCode, code)); | 
 |  |  |         if (orderItems.isEmpty()) { | 
 |  |  |             detlDto.setItems(new ArrayList<>()); | 
 |  |  |         } else { | 
 |  |  | 
 |  |  |         } | 
 |  |  |         WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() | 
 |  |  |                 .eq(WaitPakin::getBarcode, params.getBarcode()) | 
 |  |  |                 .eq(WaitPakin::getIoStatus,PakinIOStatus.PAKIN_IO_STATUS_DONE.val) | 
 |  |  |                 .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val) | 
 |  |  |         ); | 
 |  |  |         if (Cools.isEmpty(waitPakin)){ | 
 |  |  |         if (Cools.isEmpty(waitPakin)) { | 
 |  |  |             throw new CoolException("未找到组托数据,请检查状态"); | 
 |  |  |         } | 
 |  |  |         List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId())); | 
 |  |  |         if (Cools.isEmpty(waitPakinItems)){ | 
 |  |  |         if (Cools.isEmpty(waitPakinItems)) { | 
 |  |  |             throw new CoolException("数据错误,未找到组托明细"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (Objects.isNull(params.getItemList()) || params.getItemList().isEmpty()) { | 
 |  |  |             throw new CoolException("单据明细不能为空!!"); | 
 |  |  |         } | 
 |  |  |         Long OrderId = params.getItemList().stream().findFirst().get().getAsnId(); | 
 |  |  |         Long OrderId = params.getItemList().stream().findFirst().get().getOrderId(); | 
 |  |  |         /**获取平库订单*/ | 
 |  |  |         WkOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<WkOrder>() | 
 |  |  |                 .eq(WkOrder::getId, OrderId) | 
 |  |  |                         .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type) | 
 |  |  |                 .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type) | 
 |  |  |                 .eq(WkOrder::getType, OrderType.ORDER_IN.type)); | 
 |  |  |         if (Objects.isNull(order)) { | 
 |  |  |             throw new CoolException("非平库单据不可执行人工上架!!"); | 
 |  |  | 
 |  |  |         if (StringUtils.isBlank(ruleCode)) { | 
 |  |  |             throw new CoolException("当前业务:" + SerialRuleCode.SYS_STOCK_CODE + ",编码规则不存在!!"); | 
 |  |  |         } | 
 |  |  |         List<AsnOrderItem> itemList = params.getItemList(); | 
 |  |  |         double sum = itemList.stream().mapToDouble(AsnOrderItem::getAnfme).sum(); | 
 |  |  |         List<WkOrderItem> itemList = params.getItemList(); | 
 |  |  |         double sum = itemList.stream().mapToDouble(WkOrderItem::getAnfme).sum(); | 
 |  |  |         stock.setAnfme(sum) | 
 |  |  |                 .setSourceId(order.getId()) | 
 |  |  |                 .setType(order.getType()) | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public R getUnItemByContainer(Map<String, Object> params) { | 
 |  |  |         if (Cools.isEmpty(params.get("barcode")) && Cools.isEmpty(params.get("code"))){ | 
 |  |  |         if (Cools.isEmpty(params.get("barcode")) && Cools.isEmpty(params.get("code"))) { | 
 |  |  |             throw new CoolException("容器号与组托档编码不能全为空"); | 
 |  |  |         } | 
 |  |  |         //获取组拖未生成任务的组拖档 | 
 |  |  | //        List<Short> asList = Arrays.asList(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val), Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)); | 
 |  |  |  | 
 |  |  |         WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() | 
 |  |  |                 .eq(!Cools.isEmpty(params.get("barcode")),WaitPakin::getBarcode, params.get("barcode")) | 
 |  |  |                 .eq(!Cools.isEmpty(params.get("code")),WaitPakin::getCode, params.get("code")) | 
 |  |  |                 .eq(!Cools.isEmpty(params.get("barcode")), WaitPakin::getBarcode, params.get("barcode")) | 
 |  |  |                 .eq(!Cools.isEmpty(params.get("code")), WaitPakin::getCode, params.get("code")) | 
 |  |  |                 .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)); | 
 |  |  |         if (Objects.isNull(waitPakin)) { | 
 |  |  |             return R.error("未找到该容器码的组托明细,请检查组托状态"); | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public R defectProducts(String trackCode) { | 
 |  |  |         AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, trackCode)); | 
 |  |  |         WkOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getTrackCode, trackCode)); | 
 |  |  |         return R.ok(orderItem); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 获取ReceiptDetlsDtos | 
 |  |  |      */ | 
 |  |  |     private R getAsnOrderItem(List<AsnOrderItem> items) { | 
 |  |  |     private R getAsnOrderItem(List<WkOrderItem> items) { | 
 |  |  |         List<ReceiptDetlsDto> detlsDtos = new ArrayList<>(); | 
 |  |  |         items.forEach(asnOrderItem -> { | 
 |  |  |             ReceiptDetlsDto detlsDto = new ReceiptDetlsDto(); | 
 |  |  |  | 
 |  |  |             detlsDto.setAsnCode(asnOrderItem.getAsnCode()) | 
 |  |  |             detlsDto.setAsnCode(asnOrderItem.getOrderCode()) | 
 |  |  |                     .setId(asnOrderItem.getId()) | 
 |  |  |                     .setMaktx(asnOrderItem.getMaktx()) | 
 |  |  |                     .setFieldsIndex(asnOrderItem.getFieldsIndex()) |