From b31e2f2e27a55c5b6c4ea99f8de28432e2a9da08 Mon Sep 17 00:00:00 2001 From: "HUOJIN\\92525" Date: Mon, 10 Mar 2025 12:30:26 +0800 Subject: [PATCH] no message --- .../repository/TaskRepository.java | 8 -- .../businessdata/rest/TaskController.java | 74 +++++++----- .../businessdata/service/TaskService.java | 12 +- .../service/impl/AgvTaskServiceImpl.java | 9 +- .../service/impl/InventoryServiceImpl.java | 7 +- .../service/impl/PickDetailServiceImpl.java | 6 +- .../service/impl/PickServiceImpl.java | 13 +- .../service/impl/TaskServiceImpl.java | 113 +++++++----------- 8 files changed, 118 insertions(+), 124 deletions(-) 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 511c11a..283763d 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 @@ -70,14 +70,6 @@ public interface TaskRepository extends JpaRepository, JpaSpecificat @Query("from Task t where t.pickDetail.id =:pickDetailId and t.planQty > t.moveQty") List findByPickDetailNotAllTask(Long pickDetailId); - /** - * 根据出库单明细查询已完成的Task集合 - * - * @param pickDetailId 出库明细ID - */ - @Query("from Task t where t.pickDetail.id =:pickDetailId and t.planQty = t.moveQty") - List findByPickDetailAllTask(Long pickDetailId); - /** * 查询任务列表 * 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 4348aad..d5e6765 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 @@ -1,18 +1,18 @@ /* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.youchain.businessdata.rest; import com.youchain.annotation.AnonymousAccess; @@ -20,6 +20,7 @@ import com.youchain.annotation.Log; import com.youchain.businessdata.domain.Task; import com.youchain.businessdata.service.TaskService; import com.youchain.businessdata.service.dto.TaskQueryCriteria; +import com.youchain.exception.handler.ApiResult; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Pageable; import lombok.RequiredArgsConstructor; @@ -29,14 +30,18 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.*; + import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import static org.springframework.http.HttpStatus.BAD_REQUEST; +import static org.springframework.http.HttpStatus.OK; + /** -* @website https://eladmin.vip -* @author houjianlan -* @date 2023-08-16 -**/ + * @author houjianlan + * @website https://eladmin.vip + * @date 2023-08-16 + **/ @RestController @RequiredArgsConstructor @Api(tags = "task管理") @@ -45,6 +50,7 @@ import javax.servlet.http.HttpServletResponse; public class TaskController { private final TaskService taskService; + @Log("导出数据") @ApiOperation("导出数据") @GetMapping(value = "/download") @@ -55,38 +61,38 @@ public class TaskController { @GetMapping @ApiOperation("查询task") - public ResponseEntity queryTask(TaskQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(taskService.queryAll(criteria,pageable),HttpStatus.OK); + public ResponseEntity queryTask(TaskQueryCriteria criteria, Pageable pageable) { + return new ResponseEntity<>(taskService.queryAll(criteria, pageable), HttpStatus.OK); } @GetMapping(value = "/queryAsnTask") @ApiOperation("查询task") - public ResponseEntity queryAsnTask(TaskQueryCriteria criteria){ - return new ResponseEntity<>(taskService.queryAll(criteria),HttpStatus.OK); + public ResponseEntity queryAsnTask(TaskQueryCriteria criteria) { + return new ResponseEntity<>(taskService.queryAll(criteria), HttpStatus.OK); } @GetMapping("/queryPickTask") @Log("拣货确认-拣货记录") @ApiOperation("拣货确认-拣货记录") @AnonymousAccess - public ResponseEntity queryPickTask(TaskQueryCriteria criteria){ - return new ResponseEntity<>(taskService.queryAll(criteria),HttpStatus.OK); + public ResponseEntity queryPickTask(TaskQueryCriteria criteria) { + return new ResponseEntity<>(taskService.queryAll(criteria), HttpStatus.OK); } @PostMapping @Log("新增task") @ApiOperation("新增task") @PreAuthorize("@el.check('task:add')") - public ResponseEntity createTask(@Validated @RequestBody Task resources){ - return new ResponseEntity<>(taskService.create(resources),HttpStatus.CREATED); + public ResponseEntity createTask(@Validated @RequestBody Task resources) { + return new ResponseEntity<>(taskService.create(resources), HttpStatus.CREATED); } @PutMapping @Log("修改task") @ApiOperation("修改task") @PreAuthorize("@el.check('task:edit')") - public ResponseEntity updateTask(@Validated @RequestBody Task resources){ + public ResponseEntity updateTask(@Validated @RequestBody Task resources) { taskService.update(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -99,4 +105,18 @@ public class TaskController { taskService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("/cancelAllocate") + @Log("手工取消") + @ApiOperation("手工取消") + @AnonymousAccess + public ResponseEntity cancelAllocate(long pickDetailId, double quantity) { + try { + taskService.cancelAllocate(pickDetailId, quantity); + return new ResponseEntity<>(ApiResult.success(OK.value(), "", ""), HttpStatus.OK); + } catch (Exception e) { + return new ResponseEntity<>(ApiResult.fail(BAD_REQUEST.value(), e.getMessage(), ""), HttpStatus.BAD_REQUEST); + } + + } } 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 78ba80c..5dd35ff 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 @@ -145,12 +145,6 @@ public interface TaskService { */ List findByPickDetailNotAllTask(Long pickDetailId); - /** - * 根据出库单明细查询已完成的Task集合 - * - * @param pickDetailId 明细ID - */ - List findByPickDetailAllTask(Long pickDetailId); /** * 查询任务集合 @@ -174,10 +168,6 @@ public interface TaskService { */ void materialPick(); - /** - * 定时任务轮询叫料反空车至备料缓存区 - */ - void callEmptyStock(Point point); /** * 定时任务轮询出库单叫料 @@ -215,7 +205,7 @@ public interface TaskService { * * @param taskId 任务ID */ - void pickBarBack(long taskId, double pickedQuantity) throws Exception; + void pickBarBack(long taskId, double pickedQuantity); /** 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 565c654..b5482d6 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 @@ -67,7 +67,11 @@ public class AgvTaskServiceImpl implements AgvTaskService { @Override public AgvTask findById(Long id) { - return agvTaskRepository.findById(id).orElseGet(AgvTask::new); + AgvTask agvTask = agvTaskRepository.findById(id).orElseGet(AgvTask::new); + if (agvTask.getId() == null) { + return null; + } + return agvTask; } @Override @@ -175,7 +179,7 @@ public class AgvTaskServiceImpl implements AgvTaskService { " and agv.status not in ('OPEN','FINISH','CANCEL') "; Query query = entityMapper.createQuery(hql); Long count = (Long) query.getSingleResult(); - return count<2; + return count < 2; } @Override @@ -206,7 +210,6 @@ public class AgvTaskServiceImpl implements AgvTaskService { } - @Override public Map queryWeeklyTaskCounts() { List objectList = agvTaskRepository.queryWeeklyTaskCounts(); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java index 596e353..d0ae63a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java @@ -25,6 +25,7 @@ import com.youchain.basicdata.service.ItemService; import com.youchain.basicdata.service.PointService; import com.youchain.basicdata.service.StockService; import com.youchain.businessdata.domain.Inventory; +import com.youchain.businessdata.domain.InventoryLog; import com.youchain.businessdata.domain.ItemKey; import com.youchain.businessdata.service.InventoryLogService; import com.youchain.businessdata.service.ItemKeyService; @@ -90,7 +91,11 @@ public class InventoryServiceImpl implements InventoryService { @Override public Inventory findById(Long id) { - return inventoryRepository.findById(id).orElseGet(Inventory::new); + Inventory inventory = inventoryRepository.findById(id).orElseGet(Inventory::new); + if (inventory.getId() == null) { + return null; + } + return inventory; } @Override diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java index b58f39a..9c53f47 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java @@ -57,7 +57,11 @@ public class PickDetailServiceImpl implements PickDetailService { @Override public PickDetail findById(Long id) { - return pickDetailRepository.findById(id).orElseGet(PickDetail::new); + PickDetail pickDetail = pickDetailRepository.findById(id).orElseGet(PickDetail::new); + if (pickDetail.getId() == null) { + return null; + } + return pickDetail; } @Override diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java index 8d0b147..c139579 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java @@ -76,9 +76,12 @@ public class PickServiceImpl implements PickService { } @Override - @Transactional public Pick findById(Long id) { - return pickRepository.findById(id).orElseGet(Pick::new); + Pick pick = pickRepository.findById(id).orElseGet(Pick::new); + if (pick.getId() == null) { + return null; + } + return pick; } @Override @@ -170,7 +173,7 @@ public class PickServiceImpl implements PickService { @Override public JSONObject returnPickJson(Task task) { - Pick pick=task.getPickDetail().getPick(); + Pick pick = task.getPickDetail().getPick(); int complete = getCompleteStatus(pick); JSONObject jsonObject = new JSONObject(new LinkedHashMap<>()); //需求工位 @@ -181,7 +184,7 @@ public class PickServiceImpl implements PickService { String itemCode = task.getPickDetail().getPropC3() == null ? task.getPickDetail().getItem().getCode() : task.getPickDetail().getPropC3(); jsonObject.put("MaterialCode", itemCode); //数量 - jsonObject.put("number", task.getMoveQty()== null ? 0 : task.getMoveQty().intValue()); + jsonObject.put("number", task.getMoveQty() == null ? 0 : task.getMoveQty().intValue()); //taskId jsonObject.put("taskId", task.getPickDetail().getPick().getTaskCode()); //complete 完成标识;0未完成;1完成 @@ -203,7 +206,7 @@ public class PickServiceImpl implements PickService { String message = null; String resultJson = null; Dict dict = dictRepository.findDictByName("OPEN"); - PickDetail pickDetail=task.getPickDetail(); + PickDetail pickDetail = task.getPickDetail(); if (dict == null) { pickDetail.setSourceId(1L); pickDetail.setSourceName("成功"); 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 64333ea..206c5b5 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 @@ -85,7 +85,11 @@ public class TaskServiceImpl implements TaskService { @Override public Task findById(Long id) { - return taskRepository.findById(id).orElseGet(Task::new); + Task task = taskRepository.findById(id).orElseGet(Task::new); + if (task.getId() == null) { + return null; + } + return task; } @Override @@ -155,11 +159,6 @@ public class TaskServiceImpl implements TaskService { return taskRepository.findByPickDetailNotAllTask(pickDetailId); } - @Override - public List findByPickDetailAllTask(Long pickDetailId) { - return taskRepository.findByPickDetailAllTask(pickDetailId); - } - @Override public List findTaskByContains(String taskType, String taskStatus, String srcStockCode) { return taskRepository.findTaskByContains(taskType, taskStatus, srcStockCode); @@ -223,39 +222,6 @@ public class TaskServiceImpl implements TaskService { } } - @Override - @Transactional(rollbackFor = Exception.class) - public void callEmptyStock(Point point) { - String dstAreaCode = AreaNameDic.XJJLQ.equals(point.getArea().getName()) ? AreaNameDic.XJFBCQ : AreaNameDic.DJFBCQ; - - //容器 - Stock stock = stockService.findByPointCode(point.getCode()); - if (stock == null) { - return; - } - //起点 - Point srcPoint = stock.getPoint(); - - //终点 - List pointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, dstAreaCode); - if (pointList.isEmpty()) { - return; - } - Point endPoint = pointList.get(0); - - //有任务则直接返回 - if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.JL_Back, "RACK_MOVE")) { - return; - } - - //终点占用 - pointService.usedPoint(endPoint); - - //创建任务 - agvTaskService.createAgvTask(BizStatus.JL_Back, stock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); - - - } @Override public void callJlTask(Pick pick) { @@ -434,17 +400,25 @@ public class TaskServiceImpl implements TaskService { for (Task task : tasks) { //根据task找到对应的库存 Inventory inv = inventoryService.findById(task.getInvId()); - inv.setQueuedQty(inv.getQueuedQty() - pd.getAllocatedQty()); - inventoryService.update(inv); + if (inv != null) { + inv.setQueuedQty(inv.getQueuedQty() - quantity); + inventoryService.update(inv); + } + + if(task.getAgvTask()!=null){ + AgvTask agvTask= agvTaskService.findById(task.getAgvTask().getId()); + if(agvTask!=null){ + agvTaskService.deleteAll(new Long[]{agvTask.getId()}); + } + } //删除Task taskRepository.delete(task); pd.setAllocatedQty(pd.getAllocatedQty() - quantity); - if (pd.getAllocatedQty() == 0) { - pd.setStatus(BizStatus.OPEN); - } pickDetailService.update(pd); + + pickService.refreshPickStatus(pd.getPick()); } @@ -497,33 +471,36 @@ public class TaskServiceImpl implements TaskService { public void pickBarBack(long taskId, double pickedQuantity) { Task task = findById(taskId); PickDetail pickDetail = task.getPickDetail(); - if (task.getInvId() == null) { - throw new BadRequestException("未找到库存相应记录!"); + double srcQty = 0; + Inventory inv = null; + if (task.getInvId() != null) { + inv = inventoryService.findById(task.getInvId()); + if (inv != null) { + //退回库存 + srcQty = inv.getQueuedQty(); + synchronized (inv) { + inv.setQueuedQty(inv.getQueuedQty() + pickedQuantity); + inv.setQuantity(inv.getQuantity() + pickedQuantity); + inventoryService.update(inv); + + } + } } - Inventory inv = inventoryService.findById(task.getInvId()); - //退回库存 - double srcQty = inv.getQueuedQty(); - synchronized (inv) { - inv.setQueuedQty(inv.getQueuedQty() + pickedQuantity); - inv.setQuantity(inv.getQuantity() + pickedQuantity); - inventoryService.update(inv); + //退回Task + task.setMoveQty(task.getMoveQty() - pickedQuantity); + taskRepository.save(task); + + //退回拣货数量 + pickDetail.setPickedQty(pickDetail.getPickedQty() - pickedQuantity); + pickDetailService.update(pickDetail); + + //更新出库单状态 + pickService.refreshPickStatus(pickDetail.getPick()); - //退回Task - task.setMoveQty(task.getMoveQty() - pickedQuantity); - taskRepository.save(task); - - //退回拣货数量 - pickDetail.setPickedQty(pickDetail.getPickedQty() - pickedQuantity); - pickDetailService.update(pickDetail); - - //更新出库单状态 - pickService.refreshPickStatus(pickDetail.getPick()); - - } //添加库存日志 - inventoryLogService.createInventoryLog(BizStatus.PICK_CANCEL, BizStatus.ADD, task.getPickDetail().getPo(), task.getItemKey(), task.getDstPoint(), task.getSrcPoint(), task.getSrcStock(), task.getDstStock(), srcQty, pickedQuantity, BizStatus.PICK, task.getId(), inv.getId(), ""); + inventoryLogService.createInventoryLog(BizStatus.PICK_CANCEL, BizStatus.ADD, task.getPickDetail().getPo(), task.getItemKey(), task.getDstPoint(), task.getSrcPoint(), task.getSrcStock(), task.getDstStock(), srcQty, pickedQuantity, BizStatus.PICK, task.getId(), inv == null ? null : inv.getId(), ""); } @@ -604,8 +581,8 @@ public class TaskServiceImpl implements TaskService { //更新Task double planQty = task.getPlanQty(); String status = task.getTaskStatus(); - task.setInvId(inventory==null?null:inventory.getId()); - task.setNewInvId(newInventory==null?null:newInventory.getId()); + task.setInvId(inventory == null ? null : inventory.getId()); + task.setNewInvId(newInventory == null ? null : newInventory.getId()); task.setMoveQty(task.getMoveQty() + moveQty); task.setDstStock(dstStock); task.setDstStockCode(dstStock.getCode());