no message

main
HUOJIN\92525 2025-03-10 12:30:26 +08:00
parent 46236c69d9
commit b31e2f2e27
8 changed files with 118 additions and 124 deletions

View File

@ -70,14 +70,6 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat
@Query("from Task t where t.pickDetail.id =:pickDetailId and t.planQty > t.moveQty")
List<Task> findByPickDetailNotAllTask(Long pickDetailId);
/**
* Task
*
* @param pickDetailId ID
*/
@Query("from Task t where t.pickDetail.id =:pickDetailId and t.planQty = t.moveQty")
List<Task> findByPickDetailAllTask(Long pickDetailId);
/**
*
*

View File

@ -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<Object> queryTask(TaskQueryCriteria criteria, Pageable pageable){
return new ResponseEntity<>(taskService.queryAll(criteria,pageable),HttpStatus.OK);
public ResponseEntity<Object> queryTask(TaskQueryCriteria criteria, Pageable pageable) {
return new ResponseEntity<>(taskService.queryAll(criteria, pageable), HttpStatus.OK);
}
@GetMapping(value = "/queryAsnTask")
@ApiOperation("查询task")
public ResponseEntity<Object> queryAsnTask(TaskQueryCriteria criteria){
return new ResponseEntity<>(taskService.queryAll(criteria),HttpStatus.OK);
public ResponseEntity<Object> queryAsnTask(TaskQueryCriteria criteria) {
return new ResponseEntity<>(taskService.queryAll(criteria), HttpStatus.OK);
}
@GetMapping("/queryPickTask")
@Log("拣货确认-拣货记录")
@ApiOperation("拣货确认-拣货记录")
@AnonymousAccess
public ResponseEntity<Object> queryPickTask(TaskQueryCriteria criteria){
return new ResponseEntity<>(taskService.queryAll(criteria),HttpStatus.OK);
public ResponseEntity<Object> queryPickTask(TaskQueryCriteria criteria) {
return new ResponseEntity<>(taskService.queryAll(criteria), HttpStatus.OK);
}
@PostMapping
@Log("新增task")
@ApiOperation("新增task")
@PreAuthorize("@el.check('task:add')")
public ResponseEntity<Object> createTask(@Validated @RequestBody Task resources){
return new ResponseEntity<>(taskService.create(resources),HttpStatus.CREATED);
public ResponseEntity<Object> 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<Object> updateTask(@Validated @RequestBody Task resources){
public ResponseEntity<Object> 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<Object> 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);
}
}
}

View File

@ -145,12 +145,6 @@ public interface TaskService {
*/
List<Task> findByPickDetailNotAllTask(Long pickDetailId);
/**
* Task
*
* @param pickDetailId ID
*/
List<Task> 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);
/**

View File

@ -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<String, Object> queryWeeklyTaskCounts() {
List<Object[]> objectList = agvTaskRepository.queryWeeklyTaskCounts();

View File

@ -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

View File

@ -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

View File

@ -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("成功");

View File

@ -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<Task> findByPickDetailAllTask(Long pickDetailId) {
return taskRepository.findByPickDetailAllTask(pickDetailId);
}
@Override
public List<Task> 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<Point> 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());