代码更新
This commit is contained in:
parent
d8c89b156b
commit
54e6bdff63
|
|
@ -991,4 +991,142 @@ public class TaskController {
|
|||
return convertJsonString(response);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拣货完成确认回库
|
||||
*
|
||||
* @param finishPickingRequest 拣货完成确认回库请求
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/finishPickingAndBack")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "拣货完成确认回库", logMethod = "finishPickingAndBack")
|
||||
public String finishPickingAndBack(@RequestBody FinishPickingRequest finishPickingRequest) {
|
||||
logger.info("接收到拣货完成确认回库:{},ip地址:{}", JSON.toJSONString(finishPickingRequest), HttpUtils.getIpAddr(servletRequest));
|
||||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
String validateInfo = validateConfirmPickRequest(finishPickingRequest);
|
||||
if (!validateInfo.equals("")) {
|
||||
logger.error("拣货完成确认回库请求验证错误:{}", validateInfo);
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage(validateInfo);
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 查询到对应的任务
|
||||
Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskId, finishPickingRequest.getTaskId()));
|
||||
if (task == null) {
|
||||
logger.error("请勿重复操作");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("请勿重复操作");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 查询对应库存
|
||||
Stock stock = stockService.getOne(new LambdaQueryWrapper<Stock>()
|
||||
.eq(Stock::getVehicleId, finishPickingRequest.getVehicleId())
|
||||
.apply("goods_related ->> '$.goodsId' = {0}", finishPickingRequest.getGoodsId()));
|
||||
// 删除当前任务,并生成任务记录
|
||||
task.setFinishTime(LocalDateTime.now());
|
||||
task.setUserName(finishPickingRequest.getUserName());
|
||||
task.setTaskStatus(WmsTaskStatus.FINISH.getCode());
|
||||
taskRecordService.save(BeanUtil.copyProperties(task, TaskRecord.class));
|
||||
taskService.remove(new LambdaQueryWrapper<Task>().eq(Task::getTaskId, finishPickingRequest.getTaskId()));
|
||||
// 更新库存
|
||||
StockDetailInfo goodsInfo = stock.getGoodsRelated();
|
||||
goodsInfo.setRemainNum(BigDecimal.valueOf(finishPickingRequest.getOriginNum() - finishPickingRequest.getOpNum()));
|
||||
stock.setGoodsRelated(goodsInfo);
|
||||
stockService.update(stock, new LambdaUpdateWrapper<Stock>().eq(Stock::getStockId, stock.getStockId()));
|
||||
// 判断当前载具是否还有拣选任务
|
||||
LambdaQueryWrapper<Task> sameVehicleTaskQuery = new LambdaQueryWrapper<Task>()
|
||||
.eq(Task::getVehicleId, finishPickingRequest.getVehicleId());
|
||||
if (!taskService.exists(sameVehicleTaskQuery)) {
|
||||
// 生成回库任务
|
||||
Map<String, String> nextLocationMap = new HashMap<>();
|
||||
// 请求可用库位
|
||||
for (int i = 0; i < locationService.count(new LambdaQueryWrapper<Location>().eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode())); i++) {
|
||||
Map<String, String> resultMap = locationService.getOneLocation(task.getDestination(), null);
|
||||
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")));
|
||||
LambdaUpdateWrapper<Location> updateLocationWrapper = new LambdaUpdateWrapper<Location>()
|
||||
.set(Location::getLocationStatus, LocationStatus.OCCUPY.getCode())
|
||||
.set(Location::getVehicleId, task.getVehicleId())
|
||||
.eq(Location::getLocationId, nextLocation.getLocationId())
|
||||
.eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode());
|
||||
if (locationService.update(updateLocationWrapper)) {
|
||||
nextLocationMap = resultMap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nextLocationMap.isEmpty() || !nextLocationMap.containsKey("nextLocationId")) {
|
||||
logger.error("暂无可用库位");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("暂无可用库位!");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 生成入库任务
|
||||
Task tempInTask = new Task();
|
||||
tempInTask.setTaskId(generateId("HK_"));
|
||||
tempInTask.setTaskType(TaskType.IN.getCode());
|
||||
tempInTask.setTaskStatus(WmsTaskStatus.NEW.getCode());
|
||||
tempInTask.setTaskGroup(generateId(""));
|
||||
tempInTask.setTaskPriority(1);
|
||||
tempInTask.setVehicleId(task.getVehicleId());
|
||||
tempInTask.setOrigin(task.getDestination());
|
||||
tempInTask.setDestination(nextLocationMap.get("nextLocationId"));
|
||||
tempInTask.setVehicleSize(1);
|
||||
tempInTask.setWeight(BigDecimal.valueOf(0.0));
|
||||
tempInTask.setCreateTime(LocalDateTime.now());
|
||||
tempInTask.setUserName(finishPickingRequest.getUserName());
|
||||
tempInTask.setPreTask(nextLocationMap.get("preTaskId"));
|
||||
taskService.save(tempInTask);
|
||||
// 返回请求
|
||||
logger.info("处理拣货完成确认回库成功");
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("处理拣货完成确认回库成功");
|
||||
} else {
|
||||
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 finishPickingRequest 拣货完成确认回库的请求
|
||||
* @return 结果-----正确则为""
|
||||
*/
|
||||
private String validateConfirmPickRequest(FinishPickingRequest finishPickingRequest) {
|
||||
// 判断是否缺少必须信息
|
||||
if (StringUtils.isEmpty(finishPickingRequest.getTaskId()) || StringUtils.isEmpty(finishPickingRequest.getVehicleId())
|
||||
|| StringUtils.isEmpty(finishPickingRequest.getGoodsId())) {
|
||||
return "请求缺少必须信息,请检查任务号+载具+物料组合是否齐全。";
|
||||
}
|
||||
LambdaQueryWrapper<Task> taskLambdaQueryWrapperById = new LambdaQueryWrapper<Task>()
|
||||
.eq(Task::getTaskId, finishPickingRequest.getTaskId())
|
||||
.eq(Task::getVehicleId, finishPickingRequest.getVehicleId())
|
||||
.apply("goods_related ->> '$.goodsId' = {0}", finishPickingRequest.getGoodsId())
|
||||
.eq(Task::getTaskType, TaskType.OUT.getCode())
|
||||
.eq(Task::getTaskStatus, WmsTaskStatus.PICKING.getCode())
|
||||
.eq(Task::getIsPicking, 1);
|
||||
if (!taskService.exists(taskLambdaQueryWrapperById)) {
|
||||
return "当前的请求信息没有对应的可拣选任务";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package com.wms.entity.app.request;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 拣货完成确认回库请求
|
||||
*/
|
||||
@Data
|
||||
public class FinishPickingRequest {
|
||||
/**
|
||||
* 任务号
|
||||
*/
|
||||
@JsonProperty("taskId")
|
||||
private String taskId;
|
||||
/**
|
||||
* 载具号
|
||||
*/
|
||||
@JsonProperty("vehicleId")
|
||||
private String vehicleId;
|
||||
/**
|
||||
* 物料编号
|
||||
*/
|
||||
@JsonProperty("goodsId")
|
||||
private String goodsId;
|
||||
/**
|
||||
* 操作数量
|
||||
*/
|
||||
@JsonProperty("opNum")
|
||||
private Integer opNum;
|
||||
/**
|
||||
* 原库存数量
|
||||
*/
|
||||
@JsonProperty("originNum")
|
||||
private Integer originNum;
|
||||
/**
|
||||
* 操作人员
|
||||
*/
|
||||
@JsonProperty("userName")
|
||||
private String userName;
|
||||
}
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
package com.wms.entity.app.request;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
|
|
|
|||
|
|
@ -13,15 +13,15 @@ spring:
|
|||
# password: coder
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# 宝开服务器--内网
|
||||
url: jdbc:mysql://192.168.3.254:3306/wms_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
# url: jdbc:mysql://192.168.3.254:3306/wms_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
# username: coder
|
||||
# password: coder
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
# 上线环境
|
||||
url: jdbc:mysql://192.168.3.254:3306/wms_miniload_bk7_test?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_xizhou?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_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user