| | |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.manager.service.impl.BasContainerServiceImpl; |
| | | import com.vincent.rsf.server.manager.service.impl.BasStationAreaServiceImpl; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | | import com.vincent.rsf.server.system.utils.SerialRuleUtils; |
| | | import lombok.Synchronized; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private WaitPakinItemService waitPakinItemService; |
| | | @Autowired |
| | | private BasStationAreaServiceImpl basStationAreaService; |
| | | |
| | | @Override |
| | | public R getOutStockTaskItem(String barcode) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public R getOrderItem(PdaGeneralParam param) { |
| | | WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getCode, param.getOrderNo()) |
| | | .eq(WkOrder::getType,OrderType.ORDER_OUT.type) |
| | | ); |
| | | if (null == order) { |
| | | throw new CoolException("未找到对应订单"); |
| | | } |
| | | if (!order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val) && !order.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) ) { |
| | | throw new CoolException("当前订单不在可执行状态"); |
| | | } |
| | | List<WkOrderItem> list = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>() |
| | | .eq(WkOrderItem::getOrderId, order.getId()) |
| | | .apply("anfme <> work_qty") |
| | | ); |
| | | |
| | | return R.ok(list); |
| | | } |
| | | |
| | | @Override |
| | | public R getStationArea(PdaGeneralParam param) { |
| | | return R.ok(basStationAreaService.list()); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R productionDirectDelivery(PdaGeneralParam param,Long loginUserId) { |
| | | WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getCode, param.getOrderNo()) |
| | | .eq(WkOrder::getType,OrderType.ORDER_OUT.type) |
| | | ); |
| | | if (null == order) { |
| | | throw new CoolException("未找到对应订单"); |
| | | } |
| | | ArrayList<String> arrayList = new ArrayList<>(); |
| | | arrayList.add(param.getStationAreaId().toString()); |
| | | Task task = new Task(); |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); |
| | | task.setTaskCode(ruleCode) |
| | | .setOrgSite(param.getSta1()) |
| | | .setSort(Constants.TASK_SORT_DEFAULT_VALUE) |
| | | .setUpdateBy(loginUserId) |
| | | .setCreateBy(loginUserId) |
| | | .setCreateTime(new Date()) |
| | | .setUpdateTime(new Date()) |
| | | .setTaskStatus(TaskStsType.MISSION_INITIAL.id) |
| | | .setBarcode(param.getContainerNo()) |
| | | .setTargSiteArea(arrayList) |
| | | .setTaskType(TaskType.TASK_TYPE_PDD.type); |
| | | |
| | | if (!taskService.save(task)) { |
| | | throw new CoolException("任务创建失败!!"); |
| | | } |
| | | List<TaskItem> taskItems = new ArrayList<>(); |
| | | param.getWkOrderItems().forEach(item -> { |
| | | TaskItem taskItem = new TaskItem(); |
| | | BeanUtils.copyProperties(item, taskItem); |
| | | taskItem.setTaskId(task.getId()) |
| | | .setAnfme(item.getDemandQty()) |
| | | .setWorkQty(0D) |
| | | .setBatch(item.getBatch()) |
| | | .setUpdateBy(loginUserId) |
| | | .setCreateBy(loginUserId) |
| | | .setCreateTime(new Date()) |
| | | .setUpdateTime(new Date()) |
| | | .setSplrBatch(item.getBatch()) |
| | | .setPlatWorkCode(item.getPlatWorkCode()) |
| | | .setPlatItemId(item.getPlatItemId()) |
| | | .setOrderType(OrderType.ORDER_OUT.type) |
| | | .setWkType(Short.parseShort(order.getWkType())) |
| | | .setSourceCode(order.getCode()) |
| | | .setSourceId(order.getId()); |
| | | taskItems.add(taskItem); |
| | | |
| | | item.setWorkQty(item.getWorkQty()+item.getDemandQty()); |
| | | }); |
| | | if (!taskItemService.saveBatch(taskItems)) { |
| | | throw new CoolException("任务明细生成失败!!"); |
| | | } |
| | | if (!order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val)) { |
| | | order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val); |
| | | order.setUpdateBy(loginUserId); |
| | | order.setUpdateTime(new Date()); |
| | | if (!asnOrderService.updateById(order)){ |
| | | throw new CoolException("单据状态更新失败!!"); |
| | | } |
| | | } |
| | | if (!asnOrderItemService.updateBatchById(param.getWkOrderItems())) { |
| | | throw new CoolException("单据明细更新失败!!"); |
| | | } |
| | | |
| | | return R.ok(); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R finishedProductDirectOutput(PdaGeneralParam param, Long loginUserId) { |
| | | WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getCode, param.getOrderNo()) |
| | | .eq(WkOrder::getType,OrderType.ORDER_OUT.type) |
| | | ); |
| | | if (null == order) { |
| | | throw new CoolException("未找到对应订单"); |
| | | } |
| | | ArrayList<String> arrayList = new ArrayList<>(); |
| | | arrayList.add(param.getStationAreaId().toString()); |
| | | Task task = new Task(); |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); |
| | | task.setTaskCode(ruleCode) |
| | | .setOrgSite(param.getSta1()) |
| | | .setSort(Constants.TASK_SORT_DEFAULT_VALUE) |
| | | .setUpdateBy(loginUserId) |
| | | .setCreateBy(loginUserId) |
| | | .setCreateTime(new Date()) |
| | | .setUpdateTime(new Date()) |
| | | .setTaskStatus(TaskStsType.MISSION_INITIAL.id) |
| | | .setBarcode(param.getContainerNo()) |
| | | .setTargSiteArea(arrayList) |
| | | .setTaskType(TaskType.TASK_TYPE_FPDO.type); |
| | | |
| | | if (!taskService.save(task)) { |
| | | throw new CoolException("任务创建失败!!"); |
| | | } |
| | | List<TaskItem> taskItems = new ArrayList<>(); |
| | | param.getWkOrderItems().forEach(item -> { |
| | | TaskItem taskItem = new TaskItem(); |
| | | BeanUtils.copyProperties(item, taskItem); |
| | | taskItem.setTaskId(task.getId()) |
| | | .setAnfme(item.getDemandQty()) |
| | | .setWorkQty(0D) |
| | | .setBatch(item.getBatch()) |
| | | .setUpdateBy(loginUserId) |
| | | .setCreateBy(loginUserId) |
| | | .setCreateTime(new Date()) |
| | | .setUpdateTime(new Date()) |
| | | .setSplrBatch(item.getBatch()) |
| | | .setPlatWorkCode(item.getPlatWorkCode()) |
| | | .setPlatItemId(item.getPlatItemId()) |
| | | .setOrderType(OrderType.ORDER_OUT.type) |
| | | .setWkType(Short.parseShort(order.getWkType())) |
| | | .setSourceCode(order.getCode()) |
| | | .setSourceId(order.getId()); |
| | | taskItems.add(taskItem); |
| | | |
| | | item.setWorkQty(item.getWorkQty()+item.getDemandQty()); |
| | | }); |
| | | if (!taskItemService.saveBatch(taskItems)) { |
| | | throw new CoolException("任务明细生成失败!!"); |
| | | } |
| | | if (!order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val)) { |
| | | order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val); |
| | | order.setUpdateBy(loginUserId); |
| | | order.setUpdateTime(new Date()); |
| | | if (!asnOrderService.updateById(order)){ |
| | | throw new CoolException("单据状态更新失败!!"); |
| | | } |
| | | } |
| | | if (!asnOrderItemService.updateBatchById(param.getWkOrderItems())) { |
| | | throw new CoolException("单据明细更新失败!!"); |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R getWaveListItem(String barcode) { |
| | | LambdaQueryWrapper<Wave> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | lambdaQueryWrapper.eq(!Cools.isEmpty(barcode), Wave::getCode, barcode); |