代码更新
This commit is contained in:
parent
d8c89b156b
commit
54e6bdff63
|
|
@ -991,4 +991,142 @@ public class TaskController {
|
||||||
return convertJsonString(response);
|
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;
|
package com.wms.entity.app.request;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,15 @@ spring:
|
||||||
# password: coder
|
# password: coder
|
||||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
# 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
|
username: coder
|
||||||
password: coder
|
password: coder
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
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:
|
# slave_1:
|
||||||
# url: jdbc:mysql://localhost:3306/wms_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
|
# 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