代码更新:
1.增加非计划领料 2。修改部分拉货逻辑
This commit is contained in:
parent
4f7c0732e3
commit
f9b41b7ba2
|
|
@ -94,11 +94,11 @@ public class StockController {
|
|||
/**
|
||||
* 查询某个物料的库存总数
|
||||
*/
|
||||
@PostMapping("/getStocksByGoods")
|
||||
@PostMapping("/getStockNumByGoodsId")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
public String getStocksByGoods(@RequestBody StockQuery stockQuery) {
|
||||
logger.info("接收到查询物料库存数据请求:{},请求ip:{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
public String getStockNumByGoodsId(@RequestBody StockQuery stockQuery) {
|
||||
logger.info("接收到查询物料库存总数请求:{},请求ip:{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
if (StringUtils.isEmpty(stockQuery.getGoodsId())) {
|
||||
|
|
|
|||
|
|
@ -142,6 +142,10 @@ public class TaskController {
|
|||
* 站台要料服务
|
||||
*/
|
||||
private final GoodsToStationService goodsToStationService;
|
||||
/**
|
||||
* 非计划领料服务
|
||||
*/
|
||||
private final NoPlanRecordService noPlanRecordService;
|
||||
/**
|
||||
* Wcs服务
|
||||
*/
|
||||
|
|
@ -426,26 +430,30 @@ public class TaskController {
|
|||
continue;
|
||||
}
|
||||
if (outTask.getIsPicking() == 1) {
|
||||
// 当前载具上所有库存状态设置为拣选
|
||||
stockService.update(new LambdaUpdateWrapper<Stock>()
|
||||
.set(Stock::getStockStatus, StockStatus.PICKING.getCode())
|
||||
.eq(Stock::getVehicleId, outTask.getVehicleId())
|
||||
.ne(Stock::getStockStatus, StockStatus.PICKING.getCode()));
|
||||
// 当前载具设置为出库中状态
|
||||
vehicleService.update(new LambdaUpdateWrapper<Vehicle>()
|
||||
.set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode())
|
||||
.eq(Vehicle::getVehicleId, outTask.getVehicleId())
|
||||
.ne(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode()));
|
||||
if (StringUtils.isNotEmpty(outTask.getPickStand())) {
|
||||
// 当前载具上所有库存状态设置为拣选
|
||||
stockService.update(new LambdaUpdateWrapper<Stock>()
|
||||
.set(Stock::getStockStatus, StockStatus.PICKING.getCode())
|
||||
.eq(Stock::getVehicleId, outTask.getVehicleId())
|
||||
.ne(Stock::getStockStatus, StockStatus.PICKING.getCode()));
|
||||
// 将该载具对应的拣选任务设置为可发送状态
|
||||
pickTaskService.update(new LambdaUpdateWrapper<PickTask>()
|
||||
.set(PickTask::getPickStatus, PickTaskStatusEnum.NEW.getCode())
|
||||
.eq(PickTask::getVehicleId, outTask.getVehicleId())
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.TEMP.getCode()));
|
||||
}
|
||||
} else {// 代表整出
|
||||
// 删除当前载具上所有库存
|
||||
stockService.remove(new LambdaQueryWrapper<Stock>().eq(Stock::getVehicleId, outTask.getVehicleId()));
|
||||
// 删除载具
|
||||
vehicleService.remove(new LambdaQueryWrapper<Vehicle>().eq(Vehicle::getVehicleId, outTask.getVehicleId()));
|
||||
// 删除当前载具的所有拣选任务
|
||||
pickTaskService.remove(new LambdaQueryWrapper<PickTask>().eq(PickTask::getVehicleId, outTask.getVehicleId()));
|
||||
}
|
||||
// 添加任务记录
|
||||
outTask.setTaskStatus(WmsTaskStatus.FINISH.getCode());
|
||||
|
|
@ -2263,7 +2271,6 @@ public class TaskController {
|
|||
}
|
||||
// 查询库存
|
||||
List<Stock> stockList = stockService.list(new LambdaQueryWrapper<Stock>()
|
||||
.eq(Stock::getStockStatus, StockStatus.OK.getCode())
|
||||
.apply("goods_related ->> '$.goodsId' = {0}", noPlanRequest.getGoodsId())
|
||||
.apply("goods_related ->> '$.remainNum' > 0")
|
||||
.orderByAsc(Stock::getCreateTime));
|
||||
|
|
@ -2272,33 +2279,95 @@ public class TaskController {
|
|||
// 总数量
|
||||
BigDecimal stockNum = stockOfGoodsList.stream().map(StockOfGoodsDto::getRemainNumSum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
if (stockList != null && !stockList.isEmpty()) {
|
||||
// 需求数量
|
||||
BigDecimal needNum = noPlanRequest.getNeedNum();
|
||||
List<Stock> waitForOutStockList = new ArrayList<>();
|
||||
// TODO 生成出库任务
|
||||
// 出库任务列表
|
||||
List<Task> outTasks = new ArrayList<>();
|
||||
// 尝试生成出库任务
|
||||
// for (Stock tempStock : stockList) {
|
||||
// if (needNum.compareTo(BigDecimal.ZERO) <= 0) {// 需求数量小于等于0
|
||||
// break;
|
||||
// }
|
||||
// if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) > 0) {
|
||||
// // 当前箱子剩余物料数量多于需求数量
|
||||
// needNum = BigDecimal.ZERO;
|
||||
// // 设置剩余数量
|
||||
// StockDetailInfo goodsRelated = tempStock.getGoodsRelated();
|
||||
// goodsRelated.setRemainNum(goodsRelated.getRemainNum().subtract(needNum));
|
||||
// tempStock.setGoodsRelated(goodsRelated);
|
||||
// waitForOutStockList.add(tempStock);
|
||||
// break;
|
||||
// } else {
|
||||
// // 当前箱子物料剩余数量少于需求数量
|
||||
// needNum = needNum.subtract(tempStock.getGoodsRelated().getRemainNum());
|
||||
// // 设置剩余数量
|
||||
// StockDetailInfo goodsRelated = tempStock.getGoodsRelated();
|
||||
// goodsRelated.setRemainNum(BigDecimal.ZERO);
|
||||
// tempStock.setGoodsRelated(goodsRelated);
|
||||
// waitForOutStockList.add(tempStock);
|
||||
// }
|
||||
// }
|
||||
// createVehicleOutTaskAndPickTask(waitForOutStockList, workStation);
|
||||
for (Stock tempStock : stockList) {
|
||||
if (needNum.compareTo(BigDecimal.ZERO) <= 0) {// 需求数量小于等于0
|
||||
break;
|
||||
}
|
||||
if (Objects.equals(tempStock.getStockStatus(), StockStatus.OK.getCode())) {
|
||||
if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) > 0) {
|
||||
// 当前箱子剩余物料数量多于需求数量
|
||||
needNum = BigDecimal.ZERO;
|
||||
// 设置剩余数量
|
||||
StockDetailInfo goodsRelated = tempStock.getGoodsRelated();
|
||||
goodsRelated.setRemainNum(goodsRelated.getRemainNum().subtract(needNum));
|
||||
tempStock.setGoodsRelated(goodsRelated);
|
||||
waitForOutStockList.add(tempStock);
|
||||
break;
|
||||
} else {
|
||||
// 当前箱子物料剩余数量少于需求数量
|
||||
needNum = needNum.subtract(tempStock.getGoodsRelated().getRemainNum());
|
||||
// 设置剩余数量
|
||||
StockDetailInfo goodsRelated = tempStock.getGoodsRelated();
|
||||
goodsRelated.setRemainNum(BigDecimal.ZERO);
|
||||
tempStock.setGoodsRelated(goodsRelated);
|
||||
waitForOutStockList.add(tempStock);
|
||||
}
|
||||
// 创建出库任务
|
||||
Task tempOutTask = new Task();
|
||||
tempOutTask.setTaskId(generateId("CK_"));
|
||||
tempOutTask.setTaskType(TaskType.OUT.getCode());
|
||||
tempOutTask.setTaskGroup(generateId(""));
|
||||
tempOutTask.setTaskStatus(WmsTaskStatus.NEW.getCode());
|
||||
tempOutTask.setTaskPriority(2);
|
||||
tempOutTask.setVehicleId(tempStock.getVehicleId());
|
||||
tempOutTask.setUserName(noPlanRequest.getUserName());
|
||||
tempOutTask.setOrigin(tempStock.getLocationId());
|
||||
tempOutTask.setDestination("");
|
||||
tempOutTask.setCreateTime(LocalDateTime.now());
|
||||
tempOutTask.setIsPicking(1);
|
||||
outTasks.add(tempOutTask);
|
||||
} else if (Objects.equals(tempStock.getStockStatus(), StockStatus.OUT.getCode())) {
|
||||
// 判断这个料箱是否有拣选任务
|
||||
boolean hasPickTask = pickTaskService.exists(new LambdaQueryWrapper<PickTask>()
|
||||
.eq(PickTask::getVehicleId, tempStock.getVehicleId()));
|
||||
if (!hasPickTask) {
|
||||
// 有拣选任务时,不做处理
|
||||
if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) > 0) {
|
||||
// 当前箱子剩余物料数量多于需求数量
|
||||
needNum = BigDecimal.ZERO;
|
||||
// 设置剩余数量
|
||||
StockDetailInfo goodsRelated = tempStock.getGoodsRelated();
|
||||
goodsRelated.setRemainNum(goodsRelated.getRemainNum().subtract(needNum));
|
||||
tempStock.setGoodsRelated(goodsRelated);
|
||||
waitForOutStockList.add(tempStock);
|
||||
break;
|
||||
} else {
|
||||
// 当前箱子物料剩余数量少于需求数量
|
||||
needNum = needNum.subtract(tempStock.getGoodsRelated().getRemainNum());
|
||||
// 设置剩余数量
|
||||
StockDetailInfo goodsRelated = tempStock.getGoodsRelated();
|
||||
goodsRelated.setRemainNum(BigDecimal.ZERO);
|
||||
tempStock.setGoodsRelated(goodsRelated);
|
||||
waitForOutStockList.add(tempStock);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (waitForOutStockList.isEmpty()) {
|
||||
logger.error("所有库存在站台备料中。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("所有库存在站台备料中。");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 添加出库任务
|
||||
taskService.saveBatch(outTasks);
|
||||
List<String> vehicleIds = outTasks.stream().map(Task::getVehicleId).distinct().toList();
|
||||
// 更新库存状态
|
||||
stockService.update(new LambdaUpdateWrapper<Stock>()
|
||||
.set(Stock::getStockStatus, StockStatus.OUT.getCode())
|
||||
.in(Stock::getVehicleId, vehicleIds)
|
||||
.eq(Stock::getStockStatus, StockStatus.OK.getCode()));
|
||||
// 更新料箱状态
|
||||
vehicleService.update(new LambdaUpdateWrapper<Vehicle>()
|
||||
.set(Vehicle::getVehicleStatus, VehicleStatus.OUT.getCode())
|
||||
.in(Vehicle::getVehicleId, vehicleIds)
|
||||
.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode()));
|
||||
// 非计划领料记录生成
|
||||
NoPlanRecord noPlanRecord = new NoPlanRecord();
|
||||
noPlanRecord.setRecordId(generateId("CLC-NO-PLAN_"));
|
||||
|
|
@ -2306,23 +2375,26 @@ public class TaskController {
|
|||
noPlanRecord.setGoodsId(noPlanRequest.getGoodsId());
|
||||
noPlanRecord.setNeedNum(noPlanRequest.getNeedNum());
|
||||
noPlanRecord.setStockNum(stockNum);
|
||||
} else {
|
||||
if (stockNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||
logger.error("所有库存在站台备料中。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("所有库存在站台备料中。");
|
||||
noPlanRecord.setWorkOrder(noPlanRequest.getWorkOrder());
|
||||
noPlanRecord.setSmallVehicleNo(noPlanRequest.getSmallVehicleNo());
|
||||
noPlanRecord.setCallReason(noPlanRequest.getCallReason());
|
||||
noPlanRecord.setFlowNo(noPlanRequest.getFlowNo());
|
||||
noPlanRecord.setRemark(noPlanRequest.getRemark());
|
||||
noPlanRecord.setCallTime(LocalDateTime.now());
|
||||
noPlanRecord.setCallUser(noPlanRequest.getCallUser());
|
||||
noPlanRecord.setPickedNum(BigDecimal.ZERO);
|
||||
noPlanRecord.setPickStatus(0);// 未拣选
|
||||
noPlanRecordService.save(noPlanRecord);
|
||||
|
||||
logger.info("处理直接物料非计划领料请求成功。");
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("处理直接物料非计划领料请求成功。");
|
||||
} else {
|
||||
logger.error("非计划领料没有库存。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("非计划领料没有库存。");
|
||||
}
|
||||
return convertJsonString(response);
|
||||
}
|
||||
|
||||
logger.info("处理整理盒子请求成功。");
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("请根据灯光拣选盒子。");
|
||||
return convertJsonString(response);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
|
|
@ -2333,45 +2405,156 @@ public class TaskController {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前物料的待领料数量
|
||||
*
|
||||
* @param pickNumQuery 请求信息
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/getCurrentGoodsPickNum")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "获取当前物料的待领料数量", logMethod = "getCurrentGoodsPickNum")
|
||||
public String getCurrentGoodsPickNum(@RequestBody PickNumQuery pickNumQuery) {
|
||||
logger.info("获取当前物料的待领料数量:{},ip地址:{}", convertJsonString(pickNumQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
|
||||
logger.info("获取当前物料的待领料数量成功。");
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("获取当前物料的待领料数量成功。");
|
||||
return convertJsonString(response);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.error("获取当前物料的待领料数量异常,{}", convertJsonString(e));
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("获取当前物料的待领料数量异常。");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接物料非计划领料确认回库
|
||||
*
|
||||
* @param noPlanRequest 请求信息
|
||||
* @param pickNumQuery 请求信息
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/clcNoPlanConfirmBack")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "直接物料非计划领料确认回库", logMethod = "clcNoPlanConfirmBack")
|
||||
public String clcNoPlanConfirmBack(@RequestBody NoPlanRequest noPlanRequest) {
|
||||
logger.info("直接物料非计划领料确认回库:{},ip地址:{}", convertJsonString(noPlanRequest), HttpUtils.getIpAddr(servletRequest));
|
||||
public String clcNoPlanConfirmBack(@RequestBody PickNumQuery pickNumQuery) {
|
||||
logger.info("直接物料非计划领料确认回库:{},ip地址:{}", convertJsonString(pickNumQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
// 获取站台号
|
||||
Stand targetStand;
|
||||
if (StringUtils.isNotEmpty(noPlanRequest.getStandId())) {
|
||||
// 站台号从请求参数中获取
|
||||
targetStand = standService.getById(noPlanRequest.getStandId());
|
||||
} else {
|
||||
// 站台号从ip获取
|
||||
targetStand = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 1)
|
||||
.last("limit 1"));
|
||||
}
|
||||
if (targetStand == null) {
|
||||
logger.error("查询拣选站台错误。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("查询拣选站台错误。");
|
||||
// TODO 确认拣货完成回库
|
||||
// 判断信息是否完备
|
||||
if (StringUtils.isEmpty(pickNumQuery.getGoodsId())
|
||||
|| StringUtils.isEmpty(pickNumQuery.getVehicleId())
|
||||
|| pickNumQuery.getRealPickNum() == null) {
|
||||
logger.error("请求缺少必须参数,箱号、料号、数量不可缺少。");
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("请求缺少必须参数,箱号、料号、数量不可缺少。");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 查询库存
|
||||
// Task中的isPicking=1
|
||||
|
||||
|
||||
logger.info("处理整理盒子请求成功。");
|
||||
// 更新库存
|
||||
Stock existStock = stockService.getOne(new LambdaQueryWrapper<Stock>()
|
||||
.apply("goods_related -> '$.goodsId' = {0}", pickNumQuery.getGoodsId())
|
||||
.eq(Stock::getVehicleId, pickNumQuery.getVehicleId())
|
||||
.last("limit 1"));
|
||||
// 更新库存数量
|
||||
if (existStock != null && existStock.getGoodsRelated() != null) {
|
||||
StockDetailInfo goodsDetail = existStock.getGoodsRelated();
|
||||
goodsDetail.setRemainNum(goodsDetail.getRemainNum().subtract(pickNumQuery.getRealPickNum()));
|
||||
existStock.setGoodsRelated(goodsDetail);
|
||||
stockService.updateById(existStock);
|
||||
}
|
||||
// 判断这个箱子是否还有拣选任务
|
||||
boolean hasPickTasks = pickTaskService.exists(new LambdaQueryWrapper<PickTask>()
|
||||
.eq(PickTask::getVehicleId, pickNumQuery.getVehicleId()));
|
||||
if (!hasPickTasks) {
|
||||
// 判断当前载具是否有回库任务
|
||||
boolean hasBackTask = taskService.exists(new LambdaQueryWrapper<Task>()
|
||||
.eq(Task::getVehicleId, pickNumQuery.getVehicleId())
|
||||
.eq(Task::getTaskType, TaskType.IN.getCode())
|
||||
.likeRight(Task::getTaskId, "HK_"));
|
||||
if (!hasBackTask) {
|
||||
// 判断当前载具是否有入库任务
|
||||
boolean hasInTask = taskService.exists(new LambdaQueryWrapper<Task>()
|
||||
.eq(Task::getVehicleId, pickNumQuery.getVehicleId())
|
||||
.eq(Task::getTaskType, TaskType.IN.getCode())
|
||||
.eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode())
|
||||
.likeRight(Task::getTaskId, "RK_"));
|
||||
if (!hasInTask) {
|
||||
// 寻找库位
|
||||
String nextLocationId = "";
|
||||
for (int i = 0; i < locationService.count(new LambdaQueryWrapper<Location>().eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode())); i++) {
|
||||
Map<String, String> resultMap = locationService.getOneLocation("", "");
|
||||
if (resultMap.isEmpty() || !resultMap.containsKey("nextLocationId")) {
|
||||
logger.error("暂无可用库位");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("暂无可用库位!");
|
||||
return convertJsonString(response);
|
||||
} else {
|
||||
Location nextLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, resultMap.get("nextLocationId")).last("limit 1"));
|
||||
LambdaUpdateWrapper<Location> updateLocationWrapper = new LambdaUpdateWrapper<Location>()
|
||||
.set(Location::getLocationStatus, LocationStatus.OCCUPY.getCode())
|
||||
.set(Location::getVehicleId, pickNumQuery.getVehicleId())
|
||||
.eq(Location::getLocationId, nextLocation.getLocationId())
|
||||
.eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode());
|
||||
if (locationService.update(updateLocationWrapper)) {
|
||||
nextLocationId = resultMap.get("nextLocationId");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Objects.equals(nextLocationId, "")) {
|
||||
logger.error("暂无可用库位");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("暂无可用库位!");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 生成回库任务
|
||||
Task backTask = new Task();
|
||||
backTask.setTaskId(generateId("HK_"));
|
||||
backTask.setTaskGroup(generateId(""));
|
||||
backTask.setTaskType(TaskType.IN.getCode());
|
||||
backTask.setTaskStatus(WmsTaskStatus.NEW.getCode());
|
||||
backTask.setVehicleId(pickNumQuery.getVehicleId());
|
||||
backTask.setDestination(nextLocationId);
|
||||
backTask.setVehicleSize(1);
|
||||
backTask.setWeight(BigDecimal.ZERO);
|
||||
backTask.setTaskPriority(1);
|
||||
backTask.setUserName(pickNumQuery.getUserName());
|
||||
backTask.setCreateTime(LocalDateTime.now());
|
||||
if (taskService.save(backTask)) {
|
||||
// 设置库存状态为回库中
|
||||
stockService.update(new LambdaUpdateWrapper<Stock>()
|
||||
.set(Stock::getStockStatus, StockStatus.BACK.getCode())
|
||||
.eq(Stock::getVehicleId, pickNumQuery.getVehicleId()));
|
||||
} else {
|
||||
// 回退库位锁定
|
||||
locationService.update(new LambdaUpdateWrapper<Location>()
|
||||
.set(Location::getLocationStatus, LocationStatus.EMPTY.getCode())
|
||||
.set(Location::getVehicleId, "")
|
||||
.eq(Location::getLocationId, nextLocationId)
|
||||
.eq(Location::getLocationStatus, LocationStatus.OCCUPY.getCode()));
|
||||
logger.error("生成回库任务失败,箱号:{}", pickNumQuery.getVehicleId());
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("生成回库任务失败。");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("确认回库成功。");
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("请根据灯光拣选盒子。");
|
||||
response.setMessage("确认回库成功。");
|
||||
} else {
|
||||
logger.error("当前箱子还有拣选任务,不能回库,请将箱子置入拣货环线。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("当前箱子还有拣选任务,不能回库,请将箱子置入拣货环线。");
|
||||
}
|
||||
return convertJsonString(response);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
|
|
|
|||
30
src/main/java/com/wms/entity/app/request/PickNumQuery.java
Normal file
30
src/main/java/com/wms/entity/app/request/PickNumQuery.java
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
package com.wms.entity.app.request;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 拣货/领料数量确认
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class PickNumQuery extends PageQuery{
|
||||
/**
|
||||
* 箱号
|
||||
*/
|
||||
@JsonProperty("vehicleId")
|
||||
private String vehicleId;
|
||||
/**
|
||||
* 料号
|
||||
*/
|
||||
@JsonProperty("goodsId")
|
||||
private String goodsId;
|
||||
/**
|
||||
* 领料数量
|
||||
*/
|
||||
@JsonProperty("realPickNum")
|
||||
private BigDecimal realPickNum;
|
||||
}
|
||||
13
src/main/java/com/wms/entity/app/vo/PickNumOfGoodsVo.java
Normal file
13
src/main/java/com/wms/entity/app/vo/PickNumOfGoodsVo.java
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
package com.wms.entity.app.vo;
|
||||
|
||||
import com.wms.entity.app.request.PickNumQuery;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 非计划领料界面显示领料数量
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class PickNumOfGoodsVo extends PickNumQuery {
|
||||
}
|
||||
|
|
@ -74,4 +74,14 @@ public class NoPlanRecord {
|
|||
*/
|
||||
@TableField("call_user")
|
||||
private String callUser;
|
||||
/**
|
||||
* 已拣选数量
|
||||
*/
|
||||
@TableField("picked_num")
|
||||
private BigDecimal pickedNum;
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@TableField("pick_status")
|
||||
private Integer pickStatus;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -317,19 +317,19 @@ public class WmsTaskServiceImplements implements IWmsTaskService {
|
|||
.apply("goods_related ->> '$.remainNum' > 0")
|
||||
.last("limit 1"));
|
||||
if (stock == null) {
|
||||
// 没有库存,那么就要移除当前的outsideVehicles
|
||||
outsideVehiclesService.removeById(outsideVehicle.getOutsideId());
|
||||
// 没有库存,
|
||||
outsideVehicle.setRemainNum(BigDecimal.ZERO);
|
||||
outsideVehiclesService.updateById(outsideVehicle);
|
||||
} else {
|
||||
StockDetailInfo goodsRelated = stock.getGoodsRelated();
|
||||
if (goodsRelated.getRemainNum().compareTo(needNum) > 0) {
|
||||
if (outsideVehicle.getRemainNum().compareTo(needNum) > 0) {
|
||||
// 当前箱子剩余物料数量多于需求数量
|
||||
needNum = BigDecimal.ZERO;
|
||||
outsideVehicle.setRemainNum(goodsRelated.getRemainNum().subtract(needNum));
|
||||
outsideVehicle.setRemainNum(outsideVehicle.getRemainNum().subtract(needNum));
|
||||
usedOutsideVehiclesList.add(outsideVehicle);
|
||||
break;
|
||||
} else {
|
||||
// 当前箱子物料剩余数量少于需求数量
|
||||
needNum = needNum.subtract(goodsRelated.getRemainNum());
|
||||
needNum = needNum.subtract(outsideVehicle.getRemainNum());
|
||||
outsideVehicle.setRemainNum(BigDecimal.ZERO);
|
||||
usedOutsideVehiclesList.add(outsideVehicle);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,20 +8,20 @@ spring:
|
|||
# 主库
|
||||
master:
|
||||
# 卡特数据库服务器
|
||||
url: jdbc:mysql://10.90.36.71:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
username: developer
|
||||
password: developer
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# url: jdbc:mysql://10.90.36.71:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
# username: developer
|
||||
# password: developer
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# 宝开服务器--内网
|
||||
# url: jdbc:mysql://192.168.3.254:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
# username: coder
|
||||
# password: coder
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# # 本地环境
|
||||
# url: jdbc:mysql://localhost:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
# username: developer
|
||||
# password: developer
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://localhost:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
username: developer
|
||||
password: developer
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# 从库
|
||||
# slave_1:
|
||||
# url: jdbc:mysql://localhost:3306/wms_aaa?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user