代码更新:
1. 增加库存更新功能 2. 增加任务状态修改功能
This commit is contained in:
parent
fdfebcd544
commit
e6e8e0217e
|
|
@ -9,8 +9,6 @@ public enum WmsTaskStatus {
|
||||||
NEW(0, "任务新建,待下发"),
|
NEW(0, "任务新建,待下发"),
|
||||||
WAIT(1, "任务已下发"),
|
WAIT(1, "任务已下发"),
|
||||||
RUN(2, "任务开始执行"),
|
RUN(2, "任务开始执行"),
|
||||||
OUT_FINISHED(3, "出库完成"),
|
|
||||||
TRANS(4, "环线运输"),
|
|
||||||
PICKING(8, "拣选中"),
|
PICKING(8, "拣选中"),
|
||||||
INVENTORY(9, "盘点中"),
|
INVENTORY(9, "盘点中"),
|
||||||
FINISH(100, "任务完成"),
|
FINISH(100, "任务完成"),
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,23 @@ package com.wms.controller;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.wms.annotation.MyLog;
|
import com.wms.annotation.MyLog;
|
||||||
import com.wms.constants.enums.ResponseCode;
|
import com.wms.constants.enums.ResponseCode;
|
||||||
import com.wms.entity.app.ResponseEntity;
|
import com.wms.entity.app.ResponseEntity;
|
||||||
import com.wms.entity.app.dto.PageDto;
|
import com.wms.entity.app.dto.PageDto;
|
||||||
import com.wms.entity.app.dto.StockDto;
|
import com.wms.entity.app.dto.StockDto;
|
||||||
|
import com.wms.entity.app.dto.extend.StockDetailInfo;
|
||||||
import com.wms.entity.app.request.StockQuery;
|
import com.wms.entity.app.request.StockQuery;
|
||||||
import com.wms.entity.app.vo.StockVo;
|
import com.wms.entity.app.vo.StockVo;
|
||||||
|
import com.wms.entity.table.Location;
|
||||||
import com.wms.entity.table.Stock;
|
import com.wms.entity.table.Stock;
|
||||||
|
import com.wms.entity.table.Vehicle;
|
||||||
import com.wms.service.IStockUpdateRecordService;
|
import com.wms.service.IStockUpdateRecordService;
|
||||||
|
import com.wms.service.LocationService;
|
||||||
import com.wms.service.StockService;
|
import com.wms.service.StockService;
|
||||||
|
import com.wms.service.VehicleService;
|
||||||
import com.wms.utils.HttpUtils;
|
import com.wms.utils.HttpUtils;
|
||||||
import com.wms.utils.StringUtils;
|
import com.wms.utils.StringUtils;
|
||||||
import com.wms.utils.WmsUtils;
|
import com.wms.utils.WmsUtils;
|
||||||
|
|
@ -30,6 +36,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -57,6 +64,14 @@ public class StockController {
|
||||||
* 库存更新记录服务
|
* 库存更新记录服务
|
||||||
*/
|
*/
|
||||||
private final IStockUpdateRecordService stockUpdateRecordService;
|
private final IStockUpdateRecordService stockUpdateRecordService;
|
||||||
|
/**
|
||||||
|
* 库位服务
|
||||||
|
*/
|
||||||
|
private final LocationService locationService;
|
||||||
|
/**
|
||||||
|
* 料箱服务
|
||||||
|
*/
|
||||||
|
private final VehicleService vehicleService;
|
||||||
/**
|
/**
|
||||||
* 请求头部信息
|
* 请求头部信息
|
||||||
*/
|
*/
|
||||||
|
|
@ -148,29 +163,39 @@ public class StockController {
|
||||||
/**
|
/**
|
||||||
* 更新库存信息
|
* 更新库存信息
|
||||||
*
|
*
|
||||||
* @param stock 库存
|
* @param stockQuery 库存
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@PostMapping("/updateStockInfo")
|
@PostMapping("/updateStockInfo")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||||
@MyLog(logTitle = "更新库存信息", logMethod = "updateStockInfo")
|
@MyLog(logTitle = "更新库存信息", logMethod = "updateStockInfo")
|
||||||
public String updateStockInfo(@RequestBody StockDto stock) {
|
public String updateStockInfo(@RequestBody StockQuery stockQuery) {
|
||||||
logger.info("接收到更新库存信息请求:{},请求ip:{}", convertJsonString(stock), HttpUtils.getIpAddr(servletRequest));
|
logger.info("接收到更新库存信息请求:{},请求ip:{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest));
|
||||||
// 创建响应信息
|
// 创建响应信息
|
||||||
ResponseEntity rsp = new ResponseEntity();
|
ResponseEntity rsp = new ResponseEntity();
|
||||||
try {
|
try {
|
||||||
if (StringUtils.isEmpty(stock.getStockId())) {// 库存编号为空,不允许执行
|
if (StringUtils.isEmpty(stockQuery.getStockId())) {// 库存编号为空,不允许执行
|
||||||
logger.error("请求的库存编号为空,不允许修改");
|
logger.error("请求的库存编号为空,不允许修改");
|
||||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
rsp.setMessage("请求的库存编号为空,不允许修改");
|
rsp.setMessage("请求的库存编号为空,不允许修改");
|
||||||
return convertJsonString(rsp);
|
return convertJsonString(rsp);
|
||||||
}
|
}
|
||||||
Stock stockBefore = stockService.getOne(new LambdaQueryWrapper<Stock>().eq(Stock::getStockId, stock.getStockId()));
|
LambdaQueryWrapper<Stock> stockLambdaQueryWrapper = new LambdaQueryWrapper<Stock>().eq(Stock::getStockId, stockQuery.getStockId());
|
||||||
LambdaQueryWrapper<Stock> stockLambdaQueryWrapper = new LambdaQueryWrapper<Stock>().eq(Stock::getStockId, stock.getStockId());
|
// 查询原有库存
|
||||||
if (stock.getGoodsRelated().getRemainNum().compareTo(BigDecimal.ZERO) <= 0) {
|
Stock stockBefore = stockService.getOne(stockLambdaQueryWrapper);
|
||||||
|
if (stockQuery.getRemainNum().compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
if (stockService.remove(stockLambdaQueryWrapper)) {
|
if (stockService.remove(stockLambdaQueryWrapper)) {
|
||||||
stockUpdateRecordService.addStockUpdateRecord(stockBefore, null, "删除库存", "前端界面");
|
// 判断这个箱子是否变成空箱
|
||||||
|
if (!stockService.exists(new LambdaQueryWrapper<Stock>()
|
||||||
|
.eq(Stock::getVehicleId, stockBefore.getVehicleId())
|
||||||
|
.ne(Stock::getStockId, stockBefore.getStockId()))) {
|
||||||
|
vehicleService.update(new LambdaUpdateWrapper<Vehicle>()
|
||||||
|
.set(Vehicle::getIsEmpty, 1)
|
||||||
|
.eq(Vehicle::getVehicleId, stockBefore.getVehicleId())
|
||||||
|
.eq(Vehicle::getIsEmpty, 0));
|
||||||
|
}
|
||||||
|
stockUpdateRecordService.addStockUpdateRecord(stockBefore, null, "删除库存", stockQuery.getUserName());
|
||||||
// 返回成功
|
// 返回成功
|
||||||
logger.info("数量为0,删除库存成功");
|
logger.info("数量为0,删除库存成功");
|
||||||
rsp.setCode(ResponseCode.OK.getCode());
|
rsp.setCode(ResponseCode.OK.getCode());
|
||||||
|
|
@ -182,8 +207,23 @@ public class StockController {
|
||||||
rsp.setMessage("数量为0,删除库存失败");
|
rsp.setMessage("数量为0,删除库存失败");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (stockService.update(BeanUtil.copyProperties(stock, Stock.class), stockLambdaQueryWrapper)) {
|
// 更新库存---只能更新一部分列
|
||||||
stockUpdateRecordService.addStockUpdateRecord(stockBefore, BeanUtil.copyProperties(stock, Stock.class), "修改库存", "前端界面");
|
Stock updatingStock = BeanUtil.copyProperties(stockBefore, Stock.class);
|
||||||
|
updatingStock.setStockStatus(stockQuery.getStockStatus());
|
||||||
|
if (StringUtils.isNotEmpty(stockQuery.getLocationId()) && locationService.exists(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, stockQuery.getLocationId()))) {
|
||||||
|
updatingStock.setLocationId(stockQuery.getLocationId());
|
||||||
|
}
|
||||||
|
updatingStock.setLastUpdateTime(LocalDateTime.now());
|
||||||
|
updatingStock.setLastUpdateUser(stockQuery.getUserName());
|
||||||
|
if (StringUtils.isNotEmpty(stockQuery.getGoodsId())) {
|
||||||
|
StockDetailInfo goodsRelated = updatingStock.getGoodsRelated();
|
||||||
|
goodsRelated.setRemainNum(stockQuery.getRemainNum());
|
||||||
|
goodsRelated.setGoodsStatus(stockQuery.getGoodsStatus());
|
||||||
|
updatingStock.setGoodsRelated(goodsRelated);
|
||||||
|
}
|
||||||
|
// 更新库存
|
||||||
|
if (stockService.update(updatingStock, stockLambdaQueryWrapper)) {
|
||||||
|
stockUpdateRecordService.addStockUpdateRecord(stockBefore, updatingStock, "修改库存", stockQuery.getUserName());
|
||||||
// 返回成功
|
// 返回成功
|
||||||
logger.info("更新库存信息成功");
|
logger.info("更新库存信息成功");
|
||||||
rsp.setCode(ResponseCode.OK.getCode());
|
rsp.setCode(ResponseCode.OK.getCode());
|
||||||
|
|
@ -210,22 +250,29 @@ public class StockController {
|
||||||
/**
|
/**
|
||||||
* 新增库存
|
* 新增库存
|
||||||
*
|
*
|
||||||
* @param stock 库存
|
* @param stockQuery 库存
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@PostMapping("/addNewStock")
|
@PostMapping("/addNewStock")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||||
@MyLog(logTitle = "添加库存信息", logMethod = "addNewStock")
|
@MyLog(logTitle = "添加库存信息", logMethod = "addNewStock")
|
||||||
public String addNewStock(@RequestBody StockDto stock) {
|
public String addNewStock(@RequestBody StockQuery stockQuery) {
|
||||||
logger.info("接收到添加信息请求:{},请求ip:{}", convertJsonString(stock), HttpUtils.getIpAddr(servletRequest));
|
logger.info("接收到添加信息请求:{},请求ip:{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest));
|
||||||
// 创建响应信息
|
// 创建响应信息
|
||||||
ResponseEntity rsp = new ResponseEntity();
|
ResponseEntity rsp = new ResponseEntity();
|
||||||
try {
|
try {
|
||||||
StockDto tempStock = new StockDto();
|
Stock stockPo = stockQuery.toStockPo();
|
||||||
tempStock.setStockId(WmsUtils.generateId("ST"));
|
stockPo.setStockId(WmsUtils.generateId("ST"));
|
||||||
if (stockService.save(BeanUtil.copyProperties(stock, Stock.class))) {
|
stockPo.setCreateTime(LocalDateTime.now());
|
||||||
stockUpdateRecordService.addStockUpdateRecord(null, BeanUtil.copyProperties(stock, Stock.class), "新增库存", "前端界面");
|
stockPo.setLastUpdateUser(stockQuery.getUserName());
|
||||||
|
if (stockService.save(stockPo)) {
|
||||||
|
// 如果这个箱子本来是空箱,那么设置为非空箱
|
||||||
|
vehicleService.update(new LambdaUpdateWrapper<Vehicle>()
|
||||||
|
.set(Vehicle::getIsEmpty, 0)
|
||||||
|
.eq(Vehicle::getVehicleId, stockPo.getVehicleId())
|
||||||
|
.eq(Vehicle::getIsEmpty, 1));
|
||||||
|
stockUpdateRecordService.addStockUpdateRecord(null, stockPo, "新增库存", stockQuery.getUserName());
|
||||||
// 返回成功
|
// 返回成功
|
||||||
logger.info("添加库存信息成功");
|
logger.info("添加库存信息成功");
|
||||||
rsp.setCode(ResponseCode.OK.getCode());
|
rsp.setCode(ResponseCode.OK.getCode());
|
||||||
|
|
@ -240,7 +287,7 @@ public class StockController {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// 回滚事务
|
// 回滚事务
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
logger.info("发生异常:{}", e.getMessage());
|
logger.info("新增库存发生异常:{}", e.getMessage());
|
||||||
// 返回其他异常
|
// 返回其他异常
|
||||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
rsp.setMessage(e.getMessage());
|
rsp.setMessage(e.getMessage());
|
||||||
|
|
|
||||||
|
|
@ -1908,6 +1908,14 @@ public class TaskController {
|
||||||
boolean hasPickTasks = pickTaskService.exists(new LambdaQueryWrapper<PickTask>()
|
boolean hasPickTasks = pickTaskService.exists(new LambdaQueryWrapper<PickTask>()
|
||||||
.eq(PickTask::getVehicleId, requestBackQuery.getVehicleId()));
|
.eq(PickTask::getVehicleId, requestBackQuery.getVehicleId()));
|
||||||
if (!hasPickTasks) {
|
if (!hasPickTasks) {
|
||||||
|
// 验证载具号是否重复入库
|
||||||
|
if (vehicleService.exists(new LambdaQueryWrapper<Vehicle>().eq(Vehicle::getVehicleId, requestBackQuery.getVehicleId())
|
||||||
|
.and(wrapper -> wrapper.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())))) {
|
||||||
|
logger.error("当前箱子{}已在库中,无法回库。", requestBackQuery.getVehicleId());
|
||||||
|
response.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
response.setMessage("当前箱子" + requestBackQuery.getVehicleId() + "已在库中,无法回库。");
|
||||||
|
return convertJsonString(response);
|
||||||
|
}
|
||||||
// 判断当前载具是否有回库任务
|
// 判断当前载具是否有回库任务
|
||||||
boolean hasBackTask = taskService.exists(new LambdaQueryWrapper<Task>()
|
boolean hasBackTask = taskService.exists(new LambdaQueryWrapper<Task>()
|
||||||
.eq(Task::getVehicleId, requestBackQuery.getVehicleId())
|
.eq(Task::getVehicleId, requestBackQuery.getVehicleId())
|
||||||
|
|
@ -2479,7 +2487,6 @@ public class TaskController {
|
||||||
logger.info("直接物料非计划领料确认回库:{},ip地址:{}", convertJsonString(pickNumQuery), HttpUtils.getIpAddr(servletRequest));
|
logger.info("直接物料非计划领料确认回库:{},ip地址:{}", convertJsonString(pickNumQuery), HttpUtils.getIpAddr(servletRequest));
|
||||||
ResponseEntity response = new ResponseEntity();
|
ResponseEntity response = new ResponseEntity();
|
||||||
try {
|
try {
|
||||||
// TODO 确认拣货完成回库
|
|
||||||
// 判断信息是否完备
|
// 判断信息是否完备
|
||||||
if (StringUtils.isEmpty(pickNumQuery.getGoodsId())
|
if (StringUtils.isEmpty(pickNumQuery.getGoodsId())
|
||||||
|| StringUtils.isEmpty(pickNumQuery.getVehicleId())
|
|| StringUtils.isEmpty(pickNumQuery.getVehicleId())
|
||||||
|
|
@ -2513,6 +2520,14 @@ public class TaskController {
|
||||||
.eq(Task::getTaskType, TaskType.IN.getCode())
|
.eq(Task::getTaskType, TaskType.IN.getCode())
|
||||||
.likeRight(Task::getTaskId, "HK_"));
|
.likeRight(Task::getTaskId, "HK_"));
|
||||||
if (!hasBackTask) {
|
if (!hasBackTask) {
|
||||||
|
// 验证载具号是否重复入库
|
||||||
|
if (vehicleService.exists(new LambdaQueryWrapper<Vehicle>().eq(Vehicle::getVehicleId, pickNumQuery.getVehicleId())
|
||||||
|
.and(wrapper -> wrapper.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())))) {
|
||||||
|
logger.error("当前箱子{}已在库中,无法回库。", pickNumQuery.getVehicleId());
|
||||||
|
response.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
response.setMessage("当前箱子" + pickNumQuery.getVehicleId() + "已在库中,无法回库。");
|
||||||
|
return convertJsonString(response);
|
||||||
|
}
|
||||||
// 判断当前载具是否有入库任务
|
// 判断当前载具是否有入库任务
|
||||||
boolean hasInTask = taskService.exists(new LambdaQueryWrapper<Task>()
|
boolean hasInTask = taskService.exists(new LambdaQueryWrapper<Task>()
|
||||||
.eq(Task::getVehicleId, pickNumQuery.getVehicleId())
|
.eq(Task::getVehicleId, pickNumQuery.getVehicleId())
|
||||||
|
|
|
||||||
|
|
@ -3,20 +3,21 @@ package com.wms.controller;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.wms.annotation.MyLog;
|
import com.wms.annotation.MyLog;
|
||||||
import com.wms.constants.enums.ResponseCode;
|
import com.wms.constants.enums.ResponseCode;
|
||||||
|
import com.wms.constants.enums.WmsTaskStatus;
|
||||||
import com.wms.entity.app.ResponseEntity;
|
import com.wms.entity.app.ResponseEntity;
|
||||||
import com.wms.entity.app.dto.PageDto;
|
import com.wms.entity.app.dto.PageDto;
|
||||||
import com.wms.entity.app.request.PickTaskQuery;
|
import com.wms.entity.app.request.PickTaskQuery;
|
||||||
import com.wms.entity.app.request.TaskQuery;
|
import com.wms.entity.app.request.TaskQuery;
|
||||||
import com.wms.entity.app.request.VehicleQuery;
|
|
||||||
import com.wms.entity.app.vo.PickTaskVo;
|
import com.wms.entity.app.vo.PickTaskVo;
|
||||||
import com.wms.entity.app.vo.TaskVO;
|
import com.wms.entity.app.wcs.WcsTaskResultRequest;
|
||||||
import com.wms.entity.table.PickTask;
|
import com.wms.entity.table.PickTask;
|
||||||
import com.wms.entity.table.Task;
|
import com.wms.entity.table.Task;
|
||||||
import com.wms.entity.table.Vehicle;
|
|
||||||
import com.wms.service.PickTaskService;
|
import com.wms.service.PickTaskService;
|
||||||
|
import com.wms.service.TaskService;
|
||||||
import com.wms.utils.HttpUtils;
|
import com.wms.utils.HttpUtils;
|
||||||
import com.wms.utils.StringUtils;
|
import com.wms.utils.StringUtils;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
@ -31,6 +32,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import static com.wms.utils.StringUtils.convertJsonString;
|
import static com.wms.utils.StringUtils.convertJsonString;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -50,6 +53,14 @@ public class TaskMonitorController {
|
||||||
* 拣选任务服务
|
* 拣选任务服务
|
||||||
*/
|
*/
|
||||||
private final PickTaskService pickTaskService;
|
private final PickTaskService pickTaskService;
|
||||||
|
/**
|
||||||
|
* 任务服务
|
||||||
|
*/
|
||||||
|
private final TaskService taskService;
|
||||||
|
/**
|
||||||
|
* 任务控制类
|
||||||
|
*/
|
||||||
|
private final TaskController taskController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询拣选任务---分页
|
* 查询拣选任务---分页
|
||||||
|
|
@ -92,7 +103,7 @@ public class TaskMonitorController {
|
||||||
/**
|
/**
|
||||||
* 更新拣选任务信息
|
* 更新拣选任务信息
|
||||||
*
|
*
|
||||||
* @param pickTaskQuery 拣选任务请求
|
* @param pickTaskQuery 拣选任务请求
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@PostMapping("/updatePickTaskInfo")
|
@PostMapping("/updatePickTaskInfo")
|
||||||
|
|
@ -133,4 +144,95 @@ public class TaskMonitorController {
|
||||||
return JSON.toJSONString(rsp);
|
return JSON.toJSONString(rsp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改任务信息
|
||||||
|
*
|
||||||
|
* @param taskQuery 任务信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@PostMapping("/updateTaskInfo")
|
||||||
|
@ResponseBody
|
||||||
|
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||||
|
@MyLog(logTitle = "修改任务信息", logMethod = "updateTaskInfo")
|
||||||
|
public String updateTaskInfo(@RequestBody TaskQuery taskQuery) {
|
||||||
|
logger.info("接收到修改任务信息请求:{},请求ip:{}", convertJsonString(taskQuery), HttpUtils.getIpAddr(servletRequest));
|
||||||
|
// 创建响应信息
|
||||||
|
ResponseEntity rsp = new ResponseEntity();
|
||||||
|
try {
|
||||||
|
if (StringUtils.isEmpty(taskQuery.getTaskId())) {// 任务号为空
|
||||||
|
logger.error("缺少任务号。");
|
||||||
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
rsp.setMessage("缺少任务号。");
|
||||||
|
return convertJsonString(rsp);
|
||||||
|
}
|
||||||
|
// 只支持修改任务状态
|
||||||
|
if (taskQuery.getTaskStatus() != null) {
|
||||||
|
// 查询对应的任务
|
||||||
|
Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskId, taskQuery.getTaskId()).last("limit 1"));
|
||||||
|
if (task == null) {
|
||||||
|
logger.error("任务号错误:没有任务。");
|
||||||
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
rsp.setMessage("任务号错误:没有任务。");
|
||||||
|
return convertJsonString(rsp);
|
||||||
|
}
|
||||||
|
if (!Objects.equals(task.getTaskStatus(), taskQuery.getTaskStatus())) {
|
||||||
|
if (Objects.equals(taskQuery.getTaskStatus(), WmsTaskStatus.TEMP.getCode())
|
||||||
|
|| Objects.equals(taskQuery.getTaskStatus(), WmsTaskStatus.NEW.getCode())
|
||||||
|
|| Objects.equals(taskQuery.getTaskStatus(), WmsTaskStatus.PICKING.getCode())
|
||||||
|
|| Objects.equals(taskQuery.getTaskStatus(), WmsTaskStatus.INVENTORY.getCode())) {
|
||||||
|
if (taskService.update(new LambdaUpdateWrapper<Task>()
|
||||||
|
.set(Task::getTaskStatus, taskQuery.getTaskStatus())
|
||||||
|
.eq(Task::getTaskGroup, task.getTaskGroup())
|
||||||
|
.ne(Task::getTaskStatus, taskQuery.getTaskStatus()))) {
|
||||||
|
// 返回成功
|
||||||
|
logger.info("修改任务信息成功。");
|
||||||
|
rsp.setCode(ResponseCode.OK.getCode());
|
||||||
|
rsp.setMessage("修改任务信息成功。");
|
||||||
|
} else {
|
||||||
|
// 返回失败
|
||||||
|
logger.error("修改任务信息失败。");
|
||||||
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
rsp.setMessage("修改任务信息失败。");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
WcsTaskResultRequest taskResultRequest = new WcsTaskResultRequest();
|
||||||
|
taskResultRequest.setTaskId(task.getTaskGroup());
|
||||||
|
taskResultRequest.setTaskStatus(taskQuery.getTaskStatus());
|
||||||
|
taskResultRequest.setMessage("任务状态修改");
|
||||||
|
taskResultRequest.setUserName(taskQuery.getUserName());
|
||||||
|
taskResultRequest.setVehicleId(task.getVehicleId());
|
||||||
|
taskResultRequest.setDestination(task.getDestination());
|
||||||
|
ResponseEntity result = JSON.parseObject(taskController.receiveTaskResult(taskResultRequest), ResponseEntity.class);
|
||||||
|
if (result == null || !Objects.equals(result.getCode(), ResponseCode.OK.getCode())) {
|
||||||
|
logger.error("修改任务信息失败。");
|
||||||
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
rsp.setMessage(result == null ? "修改任务信息失败" : "修改任务信息失败:" + result.getMessage());
|
||||||
|
} else {
|
||||||
|
logger.info("修改任务信息成功。");
|
||||||
|
rsp.setCode(ResponseCode.OK.getCode());
|
||||||
|
rsp.setMessage("修改任务信息成功。");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.error("任务状态没有变化。");
|
||||||
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
rsp.setMessage("任务状态没有变化。");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.error("缺少任务状态。");
|
||||||
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
rsp.setMessage("缺少任务状态。");
|
||||||
|
}
|
||||||
|
return convertJsonString(rsp);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 回滚事务
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
logger.info("修改任务发生异常:{}", convertJsonString(e));
|
||||||
|
// 返回其他异常
|
||||||
|
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||||
|
rsp.setMessage("修改任务发生异常");
|
||||||
|
return JSON.toJSONString(rsp);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,8 +70,6 @@ public class WmsLogController {
|
||||||
response.setReturnData(pageDto);
|
response.setReturnData(pageDto);
|
||||||
return convertJsonString(response);
|
return convertJsonString(response);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// 回滚事务
|
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
||||||
logger.error("查询日志信息发生异常:{}", convertJsonString(e));
|
logger.error("查询日志信息发生异常:{}", convertJsonString(e));
|
||||||
response.setCode(ResponseCode.ERROR.getCode());
|
response.setCode(ResponseCode.ERROR.getCode());
|
||||||
response.setMessage("查询日志信息发生异常");
|
response.setMessage("查询日志信息发生异常");
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import java.time.LocalDateTime;
|
||||||
* 库存
|
* 库存
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class StockDto {
|
public class StockDto{
|
||||||
/**
|
/**
|
||||||
* 库存编号
|
* 库存编号
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
package com.wms.entity.app.request;
|
package com.wms.entity.app.request;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.wms.entity.app.dto.extend.StockDetailInfo;
|
import com.wms.entity.app.dto.extend.StockDetailInfo;
|
||||||
import com.wms.entity.table.Stock;
|
import com.wms.entity.table.Stock;
|
||||||
import com.wms.utils.StringUtils;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 库存查询请求
|
* 库存查询请求
|
||||||
|
|
@ -14,25 +18,65 @@ import lombok.EqualsAndHashCode;
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class StockQuery extends PageQuery {
|
public class StockQuery extends PageQuery {
|
||||||
/**
|
/**
|
||||||
* 库存状态
|
* 库存编号
|
||||||
*/
|
*/
|
||||||
@JsonProperty("stockStatus")
|
@JsonProperty("stockId")
|
||||||
private Integer stockStatus;
|
private String stockId;
|
||||||
/**
|
/**
|
||||||
* 物料状态
|
* 库位ID
|
||||||
*/
|
|
||||||
@JsonProperty("goodsStatus")
|
|
||||||
private Integer goodsStatus;
|
|
||||||
/**
|
|
||||||
* 库位
|
|
||||||
*/
|
*/
|
||||||
@JsonProperty("locationId")
|
@JsonProperty("locationId")
|
||||||
private String locationId;
|
private String locationId;
|
||||||
/**
|
/**
|
||||||
* 载具号
|
* 托盘号
|
||||||
*/
|
*/
|
||||||
@JsonProperty("vehicleId")
|
@JsonProperty("vehicleId")
|
||||||
private String vehicleId;
|
private String vehicleId;
|
||||||
|
/**
|
||||||
|
* 重量
|
||||||
|
*/
|
||||||
|
@JsonProperty("weight")
|
||||||
|
private BigDecimal weight;
|
||||||
|
/**
|
||||||
|
* 库存状态
|
||||||
|
* 正常、出库中、锁定 等
|
||||||
|
*/
|
||||||
|
@JsonProperty("stockStatus")
|
||||||
|
private Integer stockStatus;
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@JsonProperty("createTime")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
/**
|
||||||
|
* 最后更新时间
|
||||||
|
*/
|
||||||
|
@JsonProperty("lastUpdateTime")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime lastUpdateTime;
|
||||||
|
/**
|
||||||
|
* 最后更新用户
|
||||||
|
*/
|
||||||
|
@JsonProperty("lastUpdateUser")
|
||||||
|
private String lastUpdateUser;
|
||||||
|
/**
|
||||||
|
* 是否盘点
|
||||||
|
*/
|
||||||
|
@JsonProperty("isInventory")
|
||||||
|
private Integer isInventory;
|
||||||
|
/**
|
||||||
|
* 盘点任务号 盘点出库和盘点入库同样
|
||||||
|
*/
|
||||||
|
@JsonProperty("inventoryTaskId")
|
||||||
|
private String inventoryTaskId;
|
||||||
|
/**
|
||||||
|
* 呆滞天数
|
||||||
|
*/
|
||||||
|
@JsonProperty("noUseDays")
|
||||||
|
private Integer noUseDays;
|
||||||
/**
|
/**
|
||||||
* 物料编号
|
* 物料编号
|
||||||
*/
|
*/
|
||||||
|
|
@ -43,24 +87,46 @@ public class StockQuery extends PageQuery {
|
||||||
*/
|
*/
|
||||||
@JsonProperty("goodsName")
|
@JsonProperty("goodsName")
|
||||||
private String goodsName;
|
private String goodsName;
|
||||||
|
/**
|
||||||
|
* 物料状态
|
||||||
|
*/
|
||||||
|
@JsonProperty("goodsStatus")
|
||||||
|
private Integer goodsStatus;
|
||||||
|
/**
|
||||||
|
* 剩余数量
|
||||||
|
*/
|
||||||
|
@JsonProperty("remainNum")
|
||||||
|
private BigDecimal remainNum;
|
||||||
|
/**
|
||||||
|
* 入库库存总数
|
||||||
|
*/
|
||||||
|
@JsonProperty("totalNum")
|
||||||
|
private BigDecimal totalNum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据客户端查询生成数据库查询条件
|
* 转化为库存Po
|
||||||
* @return 数据库PO
|
* @return 转化结果
|
||||||
*/
|
*/
|
||||||
public Stock toStockPO() {
|
public Stock toStockPo() {
|
||||||
Stock stockPO = new Stock();
|
Stock stockPo = new Stock();
|
||||||
stockPO.setLocationId(locationId);// 库位号
|
stockPo.setStockId(this.stockId);
|
||||||
stockPO.setStockStatus(stockStatus);// 库存状态
|
stockPo.setLocationId(this.locationId);
|
||||||
stockPO.setVehicleId(vehicleId);// 载具号
|
stockPo.setVehicleId(this.vehicleId);
|
||||||
if (StringUtils.isNotEmpty(goodsId) || StringUtils.isNotEmpty(goodsName) || goodsStatus != null) {// 包含物料详细信息
|
stockPo.setWeight(this.weight);
|
||||||
StockDetailInfo goodsRelatedPO = new StockDetailInfo();
|
stockPo.setStockStatus(this.stockStatus);
|
||||||
goodsRelatedPO.setGoodsId(goodsId);
|
stockPo.setCreateTime(this.createTime);
|
||||||
goodsRelatedPO.setGoodsName(goodsName);
|
stockPo.setLastUpdateTime(this.lastUpdateTime);
|
||||||
goodsRelatedPO.setGoodsStatus(goodsStatus);
|
stockPo.setLastUpdateUser(this.lastUpdateUser);
|
||||||
stockPO.setGoodsRelated(goodsRelatedPO);
|
stockPo.setIsInventory(this.isInventory);
|
||||||
}
|
stockPo.setInventoryTaskId(this.inventoryTaskId);
|
||||||
|
stockPo.setNoUseDays(this.noUseDays);
|
||||||
return stockPO;
|
StockDetailInfo goodsRelated = new StockDetailInfo();
|
||||||
|
goodsRelated.setGoodsId(this.goodsId);
|
||||||
|
goodsRelated.setGoodsName(this.goodsName);
|
||||||
|
goodsRelated.setGoodsStatus(this.goodsStatus);
|
||||||
|
goodsRelated.setRemainNum(this.remainNum);
|
||||||
|
goodsRelated.setTotalNum(this.totalNum);
|
||||||
|
stockPo.setGoodsRelated(goodsRelated);
|
||||||
|
return stockPo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,10 @@ import lombok.EqualsAndHashCode;
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class TaskQuery extends PageQuery {
|
public class TaskQuery extends PageQuery {
|
||||||
|
@JsonProperty("taskId")
|
||||||
|
private String taskId;
|
||||||
|
@JsonProperty("taskGroup")
|
||||||
|
private String taskGroup;
|
||||||
@JsonProperty("taskType")
|
@JsonProperty("taskType")
|
||||||
private Integer taskType;
|
private Integer taskType;
|
||||||
@JsonProperty("vehicleId")
|
@JsonProperty("vehicleId")
|
||||||
|
|
@ -29,9 +33,12 @@ public class TaskQuery extends PageQuery {
|
||||||
*/
|
*/
|
||||||
public Task toTaskPO() {
|
public Task toTaskPO() {
|
||||||
Task taskPO = new Task();
|
Task taskPO = new Task();
|
||||||
|
taskPO.setTaskId(taskId);
|
||||||
|
taskPO.setTaskGroup(taskGroup);
|
||||||
taskPO.setTaskType(taskType);// 任务类型
|
taskPO.setTaskType(taskType);// 任务类型
|
||||||
taskPO.setVehicleId(vehicleId);// 载具号
|
taskPO.setVehicleId(vehicleId);// 载具号
|
||||||
taskPO.setIsPicking(isPicking);
|
taskPO.setIsPicking(isPicking);
|
||||||
|
taskPO.setTaskStatus(taskStatus);
|
||||||
if (StringUtils.isNotEmpty(goodsId) || StringUtils.isNotEmpty(goodsName)) {// 包含物料详细信息
|
if (StringUtils.isNotEmpty(goodsId) || StringUtils.isNotEmpty(goodsName)) {// 包含物料详细信息
|
||||||
TaskDetailInfo goodsRelatedPO = new TaskDetailInfo();
|
TaskDetailInfo goodsRelatedPO = new TaskDetailInfo();
|
||||||
goodsRelatedPO.setGoodsId(goodsId);
|
goodsRelatedPO.setGoodsId(goodsId);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.wms.entity.app.vo;
|
package com.wms.entity.app.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.wms.entity.app.dto.extend.TaskDetailInfo;
|
import com.wms.entity.app.dto.extend.TaskDetailInfo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -14,69 +15,86 @@ public class TaskVO {
|
||||||
/**
|
/**
|
||||||
* 任务号
|
* 任务号
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("taskId")
|
||||||
private String taskId;
|
private String taskId;
|
||||||
/**
|
/**
|
||||||
* 任务类型
|
* 任务类型
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("taskType")
|
||||||
private Integer taskType;
|
private Integer taskType;
|
||||||
/**
|
/**
|
||||||
* 任务状态
|
* 任务状态
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("taskStatus")
|
||||||
private Integer taskStatus;
|
private Integer taskStatus;
|
||||||
/**
|
/**
|
||||||
* 起点
|
* 起点
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("origin")
|
||||||
private String origin;
|
private String origin;
|
||||||
/**
|
/**
|
||||||
* 终点
|
* 终点
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("destination")
|
||||||
private String destination;
|
private String destination;
|
||||||
/**
|
/**
|
||||||
* 任务优先级
|
* 任务优先级
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("taskPriority")
|
||||||
private Integer taskPriority;
|
private Integer taskPriority;
|
||||||
/**
|
/**
|
||||||
* 任务组
|
* 任务组
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("taskGroup")
|
||||||
private String taskGroup;
|
private String taskGroup;
|
||||||
/**
|
/**
|
||||||
* 载具号
|
* 载具号
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("vehicleId")
|
||||||
private String vehicleId;
|
private String vehicleId;
|
||||||
/**
|
/**
|
||||||
* 重量
|
* 重量
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("weight")
|
||||||
private BigDecimal weight;
|
private BigDecimal weight;
|
||||||
/**
|
/**
|
||||||
* 载具尺寸
|
* 载具尺寸
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("vehicleSize")
|
||||||
private Integer vehicleSize;
|
private Integer vehicleSize;
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("createTime")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
/**
|
/**
|
||||||
* 完成时间
|
* 完成时间
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("finishTime")
|
||||||
private LocalDateTime finishTime;
|
private LocalDateTime finishTime;
|
||||||
/**
|
/**
|
||||||
* 用户名
|
* 用户名
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("userName")
|
||||||
private String userName;
|
private String userName;
|
||||||
/**
|
/**
|
||||||
* 物料相关
|
* 物料相关
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("goodsRelated")
|
||||||
private TaskDetailInfo goodsRelated;
|
private TaskDetailInfo goodsRelated;
|
||||||
/**
|
/**
|
||||||
* 前置任务号
|
* 前置任务号
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("preTask")
|
||||||
private String preTask;
|
private String preTask;
|
||||||
/**
|
/**
|
||||||
* 是否拣选
|
* 是否拣选
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("isPicking")
|
||||||
private Integer isPicking;
|
private Integer isPicking;
|
||||||
/**
|
/**
|
||||||
* 拣选站台
|
* 拣选站台
|
||||||
*/
|
*/
|
||||||
|
@JsonProperty("pickStand")
|
||||||
private String pickStand;
|
private String pickStand;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.wms.service;
|
package com.wms.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.wms.entity.app.dto.StockDto;
|
|
||||||
import com.wms.entity.app.dto.StockOfGoodsDto;
|
import com.wms.entity.app.dto.StockOfGoodsDto;
|
||||||
import com.wms.entity.table.Stock;
|
import com.wms.entity.table.Stock;
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user