| | |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.controller.dto.LocStockDto; |
| | | import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto; |
| | | import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; |
| | | import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams; |
| | | import com.vincent.rsf.server.manager.controller.params.PakinItem; |
| | | import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; |
| | |
| | | BeanUtils.copyProperties(matnr, mat); |
| | | mat.setCode(matnr.getMatnr()).setName(matnr.getMaktx()); |
| | | if (!Objects.isNull(matnr.getGroupName())) { |
| | | MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>().eq(MatnrGroup::getName, matnr.getGroupName()), false); |
| | | MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>().eq(MatnrGroup::getName, matnr.getGroupName()).last("limit 1"), false); |
| | | if (Objects.isNull(matnrGroup)) { |
| | | mat.setGroupCode(matnrGroup.getCode()).setGroupId(matnrGroup.getId()); |
| | | } |
| | |
| | | @Override |
| | | public R queryOrderStatus(QueryOrderParam queryParams) { |
| | | WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getPoCode, queryParams.getOrderNo())); |
| | | .eq(WkOrder::getPoCode, queryParams.getOrderNo()).last("limit 1")); |
| | | if (Objects.isNull(wkOrders)) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("exceStatus", "-1"); |
| | | return R.ok("单据不存在 !!").add(map); |
| | | } |
| | | |
| | | AsnOrderLog orderLog = asnOrderLogService.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getCode, queryParams.getOrderNo())); |
| | | AsnOrderLog orderLog = asnOrderLogService.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getCode, queryParams.getOrderNo()).last("limit 1")); |
| | | if (!Objects.isNull(orderLog)) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("exceStatus", "4"); |
| | |
| | | if (Objects.isNull(companys.getCode())) { |
| | | throw new CoolException("企业编码不能为空!!"); |
| | | } |
| | | Companys one = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getName, param.getName())); |
| | | Companys one = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getName, param.getName()).last("limit 1")); |
| | | if (Objects.isNull(one)) { |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_COMPANYS_CODE, null); |
| | | companys.setCode(ruleCode); |
| | |
| | | public R syncCheckOrder(List<SyncOrderParams> syncOrders, Long loginUserId) { |
| | | if (!syncOrders.isEmpty()) { |
| | | syncOrders.forEach(syncOrder -> { |
| | | if (!syncOrder.getWkType().matches("\\d+")){ |
| | | syncOrder.setWkType(OrderWorkType.getOrderTypeUpdate(syncOrder.getWkType())); |
| | | } |
| | | WkOrder wkOrder = new WkOrder(syncOrder); |
| | | DictData one = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE) |
| | | .eq(DictData::getValue, syncOrder.getWkType()), false); |
| | |
| | | if (!Cools.isEmpty(palletId.get()) && StringUtils.isNotBlank(syncOrder.getOrderNo()) && !Cools.isEmpty(syncOrder.getStationId())) { |
| | | Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, palletId.get())); |
| | | if (!Cools.isEmpty(loc)) { |
| | | // outStockService.getOrderOutTaskItem(orderOutTaskParam,param.getOrderItemId()); |
| | | //出库 |
| | | List<OutStockToTaskParams> param = new ArrayList<>(); |
| | | for (WkOrderItem wkOrderItem : orderItems){ |
| | | OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(wkOrderItem); |
| | | outStockToTaskParams.setLocCode(loc.getCode()); |
| | | outStockToTaskParams.setSiteNo(syncOrder.getStationId()); |
| | | param.add(outStockToTaskParams); |
| | | } |
| | | // boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId); |
| | | // if (true) { |
| | | CompletableFuture.runAsync(() -> { |
| | | try { |
| | | asyncOutboundExecutionWcs(param, wkOrder.getId(), loginUserId); |
| | | asyncOutboundExecutionWcs(syncOrder.getStationId(), wkOrder.getId(), loginUserId); |
| | | } catch (Exception e) { |
| | | log.warn("订单 {} 开始自动出库", syncOrder.getOrderNo()); |
| | | } |
| | |
| | | } |
| | | |
| | | @Async |
| | | public void asyncOutboundExecutionWcs(List<OutStockToTaskParams> param, Long orderId, Long loginUserId) { |
| | | public void asyncOutboundExecutionWcs(String stationId ,Long orderId, Long loginUserId) { |
| | | try { |
| | | int i = 0; |
| | | |
| | | OrderOutTaskParam orderOutTaskParam = new OrderOutTaskParam(); |
| | | orderOutTaskParam.setOrderId(orderId); |
| | | orderOutTaskParam.setWaveId(16L); |
| | | List<OrderOutItemDto> orderOutTaskItemAuto = outStockService.getOrderOutTaskItemAuto(orderOutTaskParam); |
| | | |
| | | List<OutStockToTaskParams> tasks = new ArrayList<>(); |
| | | while (true) { |
| | | tasks = new ArrayList<>(); |
| | | i++; |
| | | if (i > 5) return; |
| | | Thread.sleep(3000); |
| | | for (OutStockToTaskParams taskParam : new OutStockToTaskParams[param.size()]) { |
| | | if (StringUtils.isNotBlank(taskParam.getLocCode())) { |
| | | tasks.add(taskParam); |
| | | } |
| | | for (OrderOutItemDto orderOutItemDto : orderOutTaskItemAuto){ |
| | | for (LocItem locItem : orderOutItemDto.getLocItemList()) { |
| | | OutStockToTaskParams outStockToTaskParams = new OutStockToTaskParams(orderOutItemDto,locItem); |
| | | outStockToTaskParams.setId(locItem.getId()); |
| | | outStockToTaskParams.setOutQty(locItem.getOutQty()); |
| | | outStockToTaskParams.setLocCode(locItem.getLocCode()); |
| | | outStockToTaskParams.setBarcode(locItem.getBarcode()); |
| | | outStockToTaskParams.setSiteNo(stationId); |
| | | tasks.add(outStockToTaskParams); |
| | | } |
| | | break; |
| | | } |
| | | if (tasks.isEmpty()){ |
| | | log.warn("订单ID {} 没有找到可出库明细,跳过自动出库", orderId); |
| | |
| | | } |
| | | outStockService.genOutStockTask(tasks, loginUserId, orderId); |
| | | |
| | | log.info("订单ID {} 自动出库,共处理 {} 个明细", orderId, param.size()); |
| | | log.info("订单ID {} 自动出库,共处理 {} 个明细", orderId, tasks.size()); |
| | | } catch (Exception e) { |
| | | log.error("订单ID {} 自动出库: {}", orderId, e.getMessage(), e); |
| | | } |