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") @Query("from Task t where t.pickDetail.id =:pickDetailId and t.planQty > t.moveQty")
List<Task> findByPickDetailNotAllTask(Long pickDetailId); 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

@ -20,6 +20,7 @@ import com.youchain.annotation.Log;
import com.youchain.businessdata.domain.Task; import com.youchain.businessdata.domain.Task;
import com.youchain.businessdata.service.TaskService; import com.youchain.businessdata.service.TaskService;
import com.youchain.businessdata.service.dto.TaskQueryCriteria; import com.youchain.businessdata.service.dto.TaskQueryCriteria;
import com.youchain.exception.handler.ApiResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -29,12 +30,16 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import java.io.IOException; import java.io.IOException;
import javax.servlet.http.HttpServletResponse; 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 * @author houjianlan
* @website https://eladmin.vip
* @date 2023-08-16 * @date 2023-08-16
**/ **/
@RestController @RestController
@ -45,6 +50,7 @@ import javax.servlet.http.HttpServletResponse;
public class TaskController { public class TaskController {
private final TaskService taskService; private final TaskService taskService;
@Log("导出数据") @Log("导出数据")
@ApiOperation("导出数据") @ApiOperation("导出数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@ -99,4 +105,18 @@ public class TaskController {
taskService.deleteAll(ids); taskService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK); 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); List<Task> findByPickDetailNotAllTask(Long pickDetailId);
/**
* Task
*
* @param pickDetailId ID
*/
List<Task> findByPickDetailAllTask(Long pickDetailId);
/** /**
* *
@ -174,10 +168,6 @@ public interface TaskService {
*/ */
void materialPick(); void materialPick();
/**
*
*/
void callEmptyStock(Point point);
/** /**
* *
@ -215,7 +205,7 @@ public interface TaskService {
* *
* @param taskId ID * @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 @Override
public AgvTask findById(Long id) { 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 @Override
@ -206,7 +210,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
} }
@Override @Override
public Map<String, Object> queryWeeklyTaskCounts() { public Map<String, Object> queryWeeklyTaskCounts() {
List<Object[]> objectList = agvTaskRepository.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.PointService;
import com.youchain.basicdata.service.StockService; import com.youchain.basicdata.service.StockService;
import com.youchain.businessdata.domain.Inventory; import com.youchain.businessdata.domain.Inventory;
import com.youchain.businessdata.domain.InventoryLog;
import com.youchain.businessdata.domain.ItemKey; import com.youchain.businessdata.domain.ItemKey;
import com.youchain.businessdata.service.InventoryLogService; import com.youchain.businessdata.service.InventoryLogService;
import com.youchain.businessdata.service.ItemKeyService; import com.youchain.businessdata.service.ItemKeyService;
@ -90,7 +91,11 @@ public class InventoryServiceImpl implements InventoryService {
@Override @Override
public Inventory findById(Long id) { 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 @Override

View File

@ -57,7 +57,11 @@ public class PickDetailServiceImpl implements PickDetailService {
@Override @Override
public PickDetail findById(Long id) { 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 @Override

View File

@ -76,9 +76,12 @@ public class PickServiceImpl implements PickService {
} }
@Override @Override
@Transactional
public Pick findById(Long id) { 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 @Override

View File

@ -85,7 +85,11 @@ public class TaskServiceImpl implements TaskService {
@Override @Override
public Task findById(Long id) { 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 @Override
@ -155,11 +159,6 @@ public class TaskServiceImpl implements TaskService {
return taskRepository.findByPickDetailNotAllTask(pickDetailId); return taskRepository.findByPickDetailNotAllTask(pickDetailId);
} }
@Override
public List<Task> findByPickDetailAllTask(Long pickDetailId) {
return taskRepository.findByPickDetailAllTask(pickDetailId);
}
@Override @Override
public List<Task> findTaskByContains(String taskType, String taskStatus, String srcStockCode) { public List<Task> findTaskByContains(String taskType, String taskStatus, String srcStockCode) {
return taskRepository.findTaskByContains(taskType, taskStatus, 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 @Override
public void callJlTask(Pick pick) { public void callJlTask(Pick pick) {
@ -434,17 +400,25 @@ public class TaskServiceImpl implements TaskService {
for (Task task : tasks) { for (Task task : tasks) {
//根据task找到对应的库存 //根据task找到对应的库存
Inventory inv = inventoryService.findById(task.getInvId()); Inventory inv = inventoryService.findById(task.getInvId());
inv.setQueuedQty(inv.getQueuedQty() - pd.getAllocatedQty()); if (inv != null) {
inv.setQueuedQty(inv.getQueuedQty() - quantity);
inventoryService.update(inv); inventoryService.update(inv);
}
if(task.getAgvTask()!=null){
AgvTask agvTask= agvTaskService.findById(task.getAgvTask().getId());
if(agvTask!=null){
agvTaskService.deleteAll(new Long[]{agvTask.getId()});
}
}
//删除Task //删除Task
taskRepository.delete(task); taskRepository.delete(task);
pd.setAllocatedQty(pd.getAllocatedQty() - quantity); pd.setAllocatedQty(pd.getAllocatedQty() - quantity);
if (pd.getAllocatedQty() == 0) {
pd.setStatus(BizStatus.OPEN);
}
pickDetailService.update(pd); pickDetailService.update(pd);
pickService.refreshPickStatus(pd.getPick());
} }
@ -497,18 +471,21 @@ public class TaskServiceImpl implements TaskService {
public void pickBarBack(long taskId, double pickedQuantity) { public void pickBarBack(long taskId, double pickedQuantity) {
Task task = findById(taskId); Task task = findById(taskId);
PickDetail pickDetail = task.getPickDetail(); PickDetail pickDetail = task.getPickDetail();
if (task.getInvId() == null) { double srcQty = 0;
throw new BadRequestException("未找到库存相应记录!"); Inventory inv = null;
} if (task.getInvId() != null) {
Inventory inv = inventoryService.findById(task.getInvId()); inv = inventoryService.findById(task.getInvId());
if (inv != null) {
//退回库存 //退回库存
double srcQty = inv.getQueuedQty(); srcQty = inv.getQueuedQty();
synchronized (inv) { synchronized (inv) {
inv.setQueuedQty(inv.getQueuedQty() + pickedQuantity); inv.setQueuedQty(inv.getQueuedQty() + pickedQuantity);
inv.setQuantity(inv.getQuantity() + pickedQuantity); inv.setQuantity(inv.getQuantity() + pickedQuantity);
inventoryService.update(inv); inventoryService.update(inv);
}
}
}
//退回Task //退回Task
task.setMoveQty(task.getMoveQty() - pickedQuantity); task.setMoveQty(task.getMoveQty() - pickedQuantity);
@ -521,9 +498,9 @@ public class TaskServiceImpl implements TaskService {
//更新出库单状态 //更新出库单状态
pickService.refreshPickStatus(pickDetail.getPick()); 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(), "");
} }