package com.vincent.rsf.server.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.entity.dto.ContainerWaveDto; import com.vincent.rsf.server.api.service.PdaOutStockService; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @Service public class PdaOutStockServiceImpl implements PdaOutStockService { @Resource private TaskService taskService; @Resource private TaskItemService taskItemService; @Autowired private WaveService waveService; @Autowired private AsnOrderService asnOrderService; @Autowired private AsnOrderItemService asnOrderItemService; @Override public R getOutStockTaskItem(String barcode) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Task::getBarcode, barcode); Task task = taskService.getOne(lambdaQueryWrapper); if (null == task){ return R.error("未查询到相关任务"); } List taskItems = taskItemService.list(new LambdaQueryWrapper().eq(TaskItem::getTaskId, task.getId())); if (null == taskItems || taskItems.size() <= 0){ return R.error("任务出错,未查询到相关任务明细"); } return R.ok(taskItems); } @Override public R getWaveListItem(String barcode) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(!Cools.isEmpty(barcode),Wave::getCode,barcode); List waveList = waveService.list(lambdaQueryWrapper); return R.ok(waveList); } @Override public R getContainerWaveList(Map map) { String barcode = map.get("barcode"); if (Cools.isEmpty(barcode) ){ throw new CoolException("参数有误"); } Task task = taskService.getOne(new LambdaQueryWrapper().eq(Task::getBarcode, barcode)); if (null == task){ throw new CoolException("未找到容器号对应任务"); } ArrayList containerWaveDtos = new ArrayList<>(); List taskItems = taskItemService.list(new LambdaQueryWrapper().eq(TaskItem::getTaskId, task.getId())); for (TaskItem taskItem : taskItems) { ContainerWaveDto containerWaveDto = new ContainerWaveDto(); containerWaveDto.setTaskItem(taskItem); Wave wave = waveService.getById(taskItem.getSourceId()); if (null == wave){ throw new CoolException("未找到容器号对应波次"); } ArrayList list = new ArrayList<>(); List asnOrderList = asnOrderService.list(new LambdaQueryWrapper().eq(AsnOrder::getWaveId, wave.getId())); for (AsnOrder asnOrder : asnOrderList) { AsnOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper() .eq(AsnOrderItem::getAsnId, asnOrder.getId()) .eq(AsnOrderItem::getMatnrCode, taskItem.getMatnrCode()) .eq(AsnOrderItem::getBatch, taskItem.getBatch()) ); if (null != orderItem){ list.add(orderItem); } } containerWaveDto.setAsnOrderItems(list); containerWaveDtos.add(containerWaveDto); } return R.ok(containerWaveDtos); } }