diff --git a/youchain-system/src/main/java/com/youchain/appupdate/ReturnJson/ReturnTaskVo.java b/youchain-system/src/main/java/com/youchain/appupdate/ReturnJson/ReturnTaskVo.java new file mode 100644 index 0000000..1de3a05 --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/appupdate/ReturnJson/ReturnTaskVo.java @@ -0,0 +1,14 @@ +package com.youchain.appupdate.ReturnJson; + +import lombok.Data; + +@Data +public class ReturnTaskVo { + private Long taskId;//任务id + private String orderNumber;//箱号 + private String itemCode;//物料编码 + private String itemName;//物料名称 + private String srcPointCode;//起始点 + private String dstPointCode;//目标点 + private Double planQty;//待拣货数量 +} diff --git a/youchain-system/src/main/java/com/youchain/appupdate/inputJson/FbPick.java b/youchain-system/src/main/java/com/youchain/appupdate/inputJson/FbPick.java index 0bd635e..966c86e 100644 --- a/youchain-system/src/main/java/com/youchain/appupdate/inputJson/FbPick.java +++ b/youchain-system/src/main/java/com/youchain/appupdate/inputJson/FbPick.java @@ -8,6 +8,11 @@ import lombok.Data; */ @Data public class FbPick { + + @ApiModelProperty(value = "task任务id") + Long taskId; + + @ApiModelProperty(value = "原托盘") String srcStockCode; diff --git a/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java b/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java index 51ee2f9..2301cac 100644 --- a/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java +++ b/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java @@ -2,8 +2,10 @@ package com.youchain.appupdate.rest; import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.Log; +import com.youchain.appupdate.ReturnJson.ReturnTaskVo; import com.youchain.appupdate.inputJson.*; import com.youchain.basicdata.service.StockService; +import com.youchain.businessdata.service.TaskService; import com.youchain.exception.handler.ApiResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -28,6 +30,8 @@ public class BydAppController { private final StockService stockService; + private final TaskService taskService; + @PostMapping("/scanMo") @Log("扫描Mo票") @ApiOperation("扫描Mo票") @@ -61,19 +65,34 @@ public class BydAppController { } + @PostMapping("/scanStock") + @Log("扫描托盘") + @ApiOperation("扫描托盘") + @AnonymousAccess + public ResponseEntity scanStock(@RequestBody FbPick fbPick) { + try { + String srcStockCode = fbPick.getSrcStockCode();//原托盘 + ReturnTaskVo taskVo = stockService.scanStock(srcStockCode); + return successResponse("扫描成功!", taskVo); + } catch (Exception e) { + return badRequest("扫描失败:" + e.getMessage()); + } + } + @PostMapping("/fbPicking") @Log("翻包拣货") @ApiOperation("翻包拣货") @AnonymousAccess public ResponseEntity fbPicking(@RequestBody FbPick fbPick) { try { - String srcStockCode = fbPick.getSrcStockCode();//原托盘 + Long taskId = fbPick.getTaskId();//任务id String orderNumber = fbPick.getOrderNumber();//箱号 String dstStockCode = fbPick.getDstStockCode();//目标托盘 + stockService.fbPicking(taskId, orderNumber, dstStockCode); + return successResponse("拣货成功!"); } catch (Exception e) { - return badRequest(e.getMessage()); + return badRequest("拣货失败:" + e.getMessage()); } - return successResponse("拣货成功!"); } diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java b/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java index b4c656c..6420782 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java @@ -15,6 +15,7 @@ */ package com.youchain.basicdata.service; +import com.youchain.appupdate.ReturnJson.ReturnTaskVo; import com.youchain.basicdata.domain.Item; import com.youchain.basicdata.domain.Point; import com.youchain.basicdata.domain.Stock; @@ -166,6 +167,7 @@ public interface StockService { /** * 呼叫容器 + * * @param itemCode * @param pointCode * @param scene @@ -174,11 +176,12 @@ public interface StockService { /** * 扫描Mo + * * @param mo * @param stockCode * @return */ - String scanMo(String stockCode,String mo); + String scanMo(String stockCode, String mo); /** * 原材料入库 @@ -187,8 +190,24 @@ public interface StockService { * @param boxNumbers * @param pointCode */ - void materialIn(String stockCode,Set boxNumbers,String pointCode); + void materialIn(String stockCode, Set boxNumbers, String pointCode); - Map findByCodes(Set stockCodes); + Map findByCodes(Set stockCodes); + + /** + * 扫描托盘 + * + * @param stockCode + */ + ReturnTaskVo scanStock(String stockCode); + + /** + * 翻包拣货 + * + * @param taskId + * @param orderNumber + * @param dstStockCode + */ + void fbPicking(Long taskId, String orderNumber, String dstStockCode); } diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java index 9cc18f5..c1a4fce 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java @@ -18,6 +18,7 @@ package com.youchain.basicdata.service.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.youchain.appupdate.ReturnJson.ReturnTaskVo; import com.youchain.basicdata.domain.Item; import com.youchain.basicdata.domain.Point; import com.youchain.basicdata.domain.Stock; @@ -25,8 +26,11 @@ import com.youchain.basicdata.service.ItemService; import com.youchain.basicdata.service.PointService; import com.youchain.businessdata.domain.*; import com.youchain.businessdata.repository.AsnDetailRepository; +import com.youchain.businessdata.repository.InventoryRepository; +import com.youchain.businessdata.repository.PickDetailRepository; import com.youchain.businessdata.repository.TaskRepository; import com.youchain.businessdata.service.*; +import com.youchain.businessdata.service.dto.TaskDto; import com.youchain.utils.*; import lombok.RequiredArgsConstructor; import com.youchain.basicdata.repository.StockRepository; @@ -63,15 +67,20 @@ public class StockServiceImpl implements StockService { private final StockRepository stockRepository; private final AsnDetailRepository asnDetailRepository; + private final PickDetailRepository pickDetailRepository; private final TaskRepository taskRepository; + private final InventoryRepository inventoryRepository; + private final AgvTaskService agvTaskService; private final ItemService itemService; private final InventoryService inventoryService; + private final InventoryLogService inventoryLogService; private final AsnDetailService asnDetailService; private final PickDetailService pickDetailService; private final ItemKeyService itemKeyService; private final PointService pointService; private final TaskService taskService; + private final StockTypeToAreaMap stockTypeToAreaMap; private final StockMapper stockMapper; private final EntityManager entityMapper; @@ -106,6 +115,11 @@ public class StockServiceImpl implements StockService { @Override @Transactional(rollbackFor = Exception.class) public StockDto create(Stock resources) { + if (resources.getPoint() != null) { + Point point = resources.getPoint(); + point.setStatus(BaseStatus.USED); + pointService.update(point); + } return stockMapper.toDto(stockRepository.save(resources)); } @@ -113,6 +127,16 @@ public class StockServiceImpl implements StockService { @Transactional(rollbackFor = Exception.class) public void update(Stock resources) { Stock stock = stockRepository.findById(resources.getId()).orElseGet(Stock::new); + if (stock.getPoint() != null) { + Point point = stock.getPoint(); + point.setStatus(BaseStatus.FREE); + pointService.update(point); + } + if (resources.getPoint() != null) { + Point point = resources.getPoint(); + point.setStatus(BaseStatus.USED); + pointService.update(point); + } ValidationUtil.isNull(stock.getId(), "Stock", "id", resources.getId()); stock.copy(resources); stockRepository.save(stock); @@ -393,6 +417,159 @@ public class StockServiceImpl implements StockService { return stockMap; } + @Override + public ReturnTaskVo scanStock(String stockCode) { + Task task = taskRepository.findBySrcStockCode(stockCode); + if (task == null) { + throw new RuntimeException("未找到" + stockCode + "托盘的翻包拣货任务!"); + } + ReturnTaskVo returnTaskVo = new ReturnTaskVo(); + returnTaskVo.setTaskId(task.getId()); + returnTaskVo.setOrderNumber(task.getItemKey().getOrderNumber()); + returnTaskVo.setItemCode(task.getItem().getCode()); + returnTaskVo.setItemName(task.getItem().getName()); + returnTaskVo.setSrcPointCode(task.getSrcPointCode()); + returnTaskVo.setDstPointCode(task.getDstPointCode()); + returnTaskVo.setPlanQty(task.getPlanQty()); + return returnTaskVo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void fbPicking(Long taskId, String orderNumber, String dstStockCode) { + /**验证任务*/ + Task task = validateTask(taskId, orderNumber); + + /**验证目标容器*/ + Stock dstStock = validatedstStock(dstStockCode); + + /**待拣货数量*/ + double moveQty = task.getPlanQty(); + + /**库存移位*/ + moveInventory(task, dstStock, moveQty); + + /**刷新拣货状态*/ + refreshPickStatus(task, moveQty); + + /**原托盘回库内*/ + returnFBAgvTask(task.getDstPoint(), task.getSrcStock(), task.getItem()); + } + + /** + * 验证任务 + * + * @param taskId + * @param orderNumber + * @return + */ + private Task validateTask(Long taskId, String orderNumber) { + TaskDto taskDto = taskService.findById(taskId); + if (taskDto == null) { + throw new RuntimeException("未找到相应任务记录!"); + } + Task task = taskService.toEntity(taskDto);//Dto转实体 + if (!orderNumber.equals(task.getItemKey().getOrderNumber())) { + throw new RuntimeException("扫描的箱号与分配的箱号不一致!"); + } + + return task; + } + + /** + * 验证目标容器 + * + * @param dstStockCode + * @return + */ + private Stock validatedstStock(String dstStockCode) { + if (StringUtils.isEmpty(dstStockCode)) { + throw new RuntimeException("请扫描目标托盘号!"); + } + Stock dstStock = stockRepository.findByCode(dstStockCode, null); + if (dstStock == null) { + throw new RuntimeException(dstStockCode + "目标托盘不存在,请扫描正确的托盘号!"); + } + if (BaseStatus.USED.equals(dstStock.getStatus())) { + throw new RuntimeException(dstStockCode + "目标托盘已使用,请更换新的托盘!"); + } + if (dstStock.getPoint() == null) { + throw new RuntimeException(dstStockCode + "目标托盘没有关联点位!"); + } + return dstStock; + } + + private void moveInventory(Task task, Stock dstStock, double moveQty) { + //将占用数量移位,原库存回库内 + Inventory inventory = task.getInventory(); + inventory.setQueuedQty(inventory.getQueuedQty() - moveQty); + inventory.setQuantity(inventory.getQuantity() - moveQty); + inventoryRepository.save(inventory); + + Inventory newInventory = new Inventory(); + newInventory.setItemKey(inventory.getItemKey()); + newInventory.setPoint(dstStock.getPoint()); + newInventory.setPointCode(dstStock.getPoint().getCode()); + newInventory.setStock(dstStock); + newInventory.setStockCode(dstStock.getCode()); + newInventory.setQuantity(moveQty); + newInventory.setQueuedQty(0d); + newInventory.setDept(inventory.getDept()); + inventoryRepository.save(newInventory); + task.setInventory(newInventory); + taskRepository.save(task); + if (inventory.getQuantity() <= 0) { + inventoryRepository.delete(inventory); + } + //库存日志 + inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, task.getPickDetail().getPo(), task.getItemKey(), task.getDstPoint(), dstStock.getPoint(), task.getSrcStock(), dstStock, 0d, moveQty, BizStatus.PICK, task.getId(), newInventory.getId(), ""); + + } + + private void refreshPickStatus(Task task, double moveQty) { + task.setTaskStatus(BizStatus.FINISH); + task.setMoveQty(moveQty); + taskRepository.save(task); + + PickDetail pickDetail = task.getPickDetail(); + pickDetail.setPickedQty(moveQty); + pickDetailRepository.save(pickDetail); + + //查询出库单的所有明细 + Pick pick = pickDetail.getPick(); + List allocatePickDetailList = pickDetailRepository.findByAllPickDetail(pick.getId()); + //判断是否全部拣货完成 + boolean allPICK_ALL = allocatePickDetailList.stream().allMatch(detail -> detail.getOrderQty().equals(detail.getPickedQty())); + //判断是否有部分拣货完成 + boolean anyPICKUP = allocatePickDetailList.stream().anyMatch(detail -> detail.getOrderQty().equals(detail.getPickedQty())); + // 当前状态 + String status = pick.getStatus(); + + //更新状态且点位占用 + if (allPICK_ALL) { + status = BizStatus.PICK_ALL; + } else if (anyPICKUP) { + status = BizStatus.PICKUP; + } + pick.setStatus(status); + } + + private void returnFBAgvTask(Point srcPoint, Stock stock, Item item) { + String areaCode = stockTypeToAreaMap.getValueByKey(stock.getStockType()); + Double itemHeight = null; + if (AreaNameDic.XJQ.equals(areaCode)) { + itemHeight = item.getExtendD2();//整托高度 + } + Point endPoint = pointService.findByCode(null, BaseStatus.FREE, BaseStatus.STORAGE, areaCode, null, itemHeight); + if (endPoint == null) { + throw new RuntimeException(areaCode + "没有空闲点位!"); + } + + AgvTask agvTask = new AgvTask(BizStatus.FB_RETURN, stock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, ""); + agvTaskService.create(agvTask); + agvTaskService.sendAgvTaskImpl(agvTask); + } + private Item validateItem(String itemCode) { Item item = itemService.existItem(itemCode); if (item == null) { diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java index 576213a..e303679 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java @@ -146,10 +146,12 @@ public class Task extends BaseEntity implements Serializable { @Column(name = "`put_code`") @ApiModelProperty(value = "上架号") private String putCode; + @OneToOne @JoinColumn(name = "inv_id") @ApiModelProperty(value = "库存ID") private Inventory inventory; + @OneToOne @JoinColumn(name = "dept_id") @ApiModelProperty(value = "仓库ID") diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java index 5cb0e4e..810596d 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java @@ -51,4 +51,8 @@ public interface TaskRepository extends JpaRepository, JpaSpecificat @Query(value = " select count(t.id) FROM Task t WHERE t.taskType='PICK' and t.taskStatus not in ('FINISH') and t.srcPoint.id=?1 ") int existsByTask(Long srcPointId); + + @Query(value = " from Task t WHERE t.taskType='PICK' and t.taskStatus='ARRIVED' and t.srcStock.code=:srcStockCode ") + Task findBySrcStockCode(String srcStockCode); + } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/TaskController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/TaskController.java index 82aabba..6ae0dd2 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/TaskController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/TaskController.java @@ -84,19 +84,7 @@ public class TaskController { public ResponseEntity queryPickTask(TaskQueryCriteria criteria){ return new ResponseEntity<>(taskService.queryAll(criteria),HttpStatus.OK); } - @PostMapping("/jhQr") - @Log("拣货确认") - @ApiOperation("拣货确认") - @AnonymousAccess - public ResponseEntity jhQr(@RequestBody Long[] ids){ - System.out.println("task:"+ids); - for (Long id:ids){ - taskService.invYw(id); - /* 更新Task状态*/ - } - ApiResult apiResult=ApiResult.fail(200,"操作成功",null); - return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus())); - } + @PostMapping @Log("新增task") @ApiOperation("新增task") diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java index a024fad..4b915ba 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java @@ -121,6 +121,7 @@ public interface TaskService { /** * 拣货 + * * @param taskId * @throws Exception */ @@ -128,16 +129,11 @@ public interface TaskService { /** * 退货 + * * @param taskId * @throws Exception */ void pickBarBack(long taskId, double pickedQuantity) throws Exception; - /** - * 库存移位 - * @param taskId - * @throws Exception - */ - void invYw(Long taskId); /** * 查询待拣货任务 diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/TaskDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/TaskDto.java index 6c6712d..986d755 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/TaskDto.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/TaskDto.java @@ -19,6 +19,7 @@ import com.youchain.basicdata.service.dto.ItemSmallDto; import com.youchain.basicdata.service.dto.PointDto; import com.youchain.basicdata.service.dto.StockDto; import com.youchain.basicdata.service.dto.StockSmallDto; +import com.youchain.businessdata.domain.Inventory; import com.youchain.modules.system.service.dto.DeptDto; import com.youchain.modules.system.service.dto.DeptSmallDto; import lombok.Data; @@ -106,8 +107,8 @@ public class TaskDto implements Serializable { /** 上架号 */ private String putCode; - /** 库存ID */ - private Long invId; + /** 库存 */ + private Inventory inventory; /** 仓库ID */ private DeptDto dept; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java index 6498136..fcb2b63 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java @@ -450,7 +450,7 @@ public class AgvTaskServiceImpl implements AgvTaskService { switch (endAreaName) { case AreaNameDic.XJQ: case AreaNameDic.DJQ: - handleXJDJ(taskList, stock);//入库 + handleXJDJ(agvTask, taskList, stock);//入库 break; case AreaNameDic.FBQ: handleFBQ(taskList, stock, endPoint);//备料完成 @@ -547,23 +547,26 @@ public class AgvTaskServiceImpl implements AgvTaskService { * @param taskList * @param stock */ - private void handleXJDJ(List taskList, Stock stock) { - //容器回存储区,新增库存、更新点位状态 - for (Task task : taskList) { - AsnDetail ad = task.getAsnDetail(); - ad.setReceivedQty(ad.getOrderQty()); - ad.setStatus(BizStatus.RECEIVED); - ad.setStock(stock); - asnDetailService.update(ad); + private void handleXJDJ(AgvTask agvTask, List taskList, Stock stock) { + if (BizStatus.ASN.equals(agvTask.getType())) { + //容器回存储区,新增库存、更新点位状态 + for (Task task : taskList) { + AsnDetail ad = task.getAsnDetail(); + ad.setReceivedQty(ad.getOrderQty()); + ad.setStatus(BizStatus.RECEIVED); + ad.setStock(stock); + asnDetailService.update(ad); - task.setTaskStatus(BizStatus.FINISH); - task.setMoveQty(task.getPlanQty()); - task.setSrcStock(stock); - task.setDstStock(stock); - taskService.update(task); + task.setTaskStatus(BizStatus.FINISH); + task.setMoveQty(task.getPlanQty()); + task.setSrcStock(stock); + task.setDstStock(stock); + taskService.update(task); - updateInventory(stock, task, ad); + updateInventory(stock, task, ad); + } } + } /** @@ -573,6 +576,8 @@ public class AgvTaskServiceImpl implements AgvTaskService { */ private void handleFBQ(List taskList, Stock stock, Point endPoint) { //将托盘的物料移动到备料库位 + stock.setPoint(endPoint); + stockRepository.save(stock); List inventoryList = inventoryService.queryInventory(stock); for (Inventory inventory : inventoryList) { inventory.setPoint(endPoint); @@ -580,7 +585,7 @@ public class AgvTaskServiceImpl implements AgvTaskService { } /* 更新Task任务状态*/ for (Task task : taskList) { - task.setTaskStatus(BizStatus.FINISH); + task.setTaskStatus(BizStatus.ARRIVED); taskRepository.save(task); } } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java index 0eb8b04..c9d5b2d 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java @@ -15,22 +15,19 @@ */ package com.youchain.businessdata.service.impl; -import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.youchain.basicdata.domain.Item; import com.youchain.basicdata.domain.Point; import com.youchain.basicdata.domain.Stock; import com.youchain.basicdata.repository.StockRepository; -import com.youchain.basicdata.service.dto.StockSmallDto; +import com.youchain.basicdata.service.PointService; import com.youchain.businessdata.ReturnJson.RPTaskList; import com.youchain.businessdata.domain.*; import com.youchain.businessdata.inputJson.IPTask; import com.youchain.businessdata.repository.*; +import com.youchain.businessdata.service.AgvTaskService; import com.youchain.businessdata.service.InventoryLogService; -import com.youchain.businessdata.service.InventoryService; -import com.youchain.businessdata.service.dto.InventoryDto; -import com.youchain.exception.BadRequestException; + import com.youchain.modules.system.domain.Dept; import com.youchain.utils.*; import lombok.RequiredArgsConstructor; @@ -41,7 +38,6 @@ import com.youchain.businessdata.service.mapstruct.TaskMapper; import lombok.extern.slf4j.Slf4j; import org.hibernate.SQLQuery; import org.hibernate.transform.AliasToEntityMapResultTransformer; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Page; @@ -67,12 +63,12 @@ public class TaskServiceImpl implements TaskService { private final TaskRepository taskRepository; private final TaskMapper taskMapper; private final InventoryRepository inventoryRepository; - private final InventoryService inventoryService; private final PickDetailRepository pickDetailRepository; - private final PickRepository pickRepository; private final InventoryLogService inventoryLogService; + private final PointService pointService; private final EntityManager entityMapper; private final StockRepository stockRepository; + private final StockTypeToAreaMap stockTypeToAreaMap; @Override public Map queryAll(TaskQueryCriteria criteria, Pageable pageable) { @@ -256,51 +252,6 @@ public class TaskServiceImpl implements TaskService { } } - @Override - public void invYw(Long taskId) { - Task task=taskRepository.getById(taskId); - ItemKey ik=task.getItemKey(); - Point endPoint = task.getDstPoint();//目标点位 - Double qty=task.getPlanQty();//拣货数量 - Stock stock = null; - List stockList=stockRepository.findByPointAndFb(endPoint.getId());//查询翻包容器 - if (stockList.size()<0){ - throw new BadRequestException(HttpStatus.INTERNAL_SERVER_ERROR, "目标位置没有翻包容器"); - }else { - stock=stockList.get(0); - } - // 扣除库存 - Inventory inventory=task.getInventory(); - inventory.setQueuedQty(inventory.getQueuedQty()-qty); - inventory.setQuantity(inventory.getQuantity()-qty); - inventoryRepository.save(inventory); - // 添加库存 - Inventory inv = inventoryService.getInventory(ik, endPoint, stock, UserUtils.isDept, BizStatus.RECEIVING_UP); - inv.setQuantity(qty); - inventoryRepository.save(inv); - // 添加库存日志 - inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, task.getPickDetail().getPick().getCode(), task.getItemKey(), task.getDstPoint(), task.getSrcPoint(), task.getSrcStock(), stock, 0d, qty, BizStatus.PICK, task.getId(), inv.getId(), ""); - - /* 更新Task状态*/ - task.setMoveQty(qty); - task.setTaskStatus(BizStatus.FINISH); - taskRepository.save(task); - /* 更新出库明细*/ - PickDetail pickDetail=task.getPickDetail(); - pickDetail.setPickedQty(pickDetail.getPickedQty()+qty); - if (pickDetail.getPickedQty()>=pickDetail.getAllocatedQty()){ - pickDetail.setStatus(BizStatus.PICK_ALL); - } - pickDetailRepository.save(pickDetail); - /* 更新出库单*/ - Pick pick=pickDetail.getPick(); - List pickDetailList=pickDetailRepository.findByPickNo(pick.getId()); - if (pickDetailList.size()==0){ - pick.setStatus(BizStatus.PICK_ALL); - pickRepository.save(pick); - } - } - @Transactional(readOnly = true) public List queryTaskApp(IPTask t) { String sql = "SELECT t.pick_detail_id pickDetailId, it.code itemCode,it.`name` itemName,t.plan_qty qty,ik.prop_c1 pch,t.src_point_code srcPointCode,t.src_stock_code stockCode,t.dst_point_code dstPointCode\n" + diff --git a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java index 926fed0..9df34c6 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java @@ -66,15 +66,20 @@ public interface BizStatus { */ public static String ATWORK = "ATWORK"; + /** + * 任务状态-已到站 + */ + public static String ARRIVED = "ARRIVED"; + /** * 任务状态-顶升 */ public static String UP_CONTAINER = "UP_CONTAINER"; /** - * 任务状态-返库中 + * 任务状态-翻包返库 */ - public static String RETURN = "RETURN"; + public static String FB_RETURN = "FB_RETURN";