代码更新

This commit is contained in:
梁州 2024-07-26 17:00:12 +08:00
parent 00837564e8
commit 3be86adb1a
5 changed files with 146 additions and 1 deletions

View File

@ -21,7 +21,7 @@ public class WmsConstants {
.put("LR02", "CLC一箱一料")
.put("UD01", "CLC一箱两料")
.put("FC01", "CLC一箱一料")
.put("FB01", "No-CLC一箱一料")
.put("FB01", "No-CLC")
.put("FB02", "间接物料")
.put("FB03", "间接物料")
.put("FB04", "间接物料")

View File

@ -1421,4 +1421,105 @@ public class TaskController {
return convertJsonString(response);
}
}
/**
* 呼叫空箱
*
* @param callEmptyVehicleRequest 请求信息
* @return 结果
*/
@PostMapping("/callEmptyVehicle")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "呼叫空箱", logMethod = "callEmptyVehicle")
public String callEmptyVehicle(@RequestBody CallEmptyVehicleRequest callEmptyVehicleRequest) {
logger.info("呼叫空箱:{}ip地址{}", convertJsonString(callEmptyVehicleRequest), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity();
try {
// 验证数量
if (callEmptyVehicleRequest.getNeedNum() == null || callEmptyVehicleRequest.getNeedNum() <= 0) {
logger.error("料箱数量必须为大于0的整数");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("料箱数量必须为大于0的整数");
return convertJsonString(response);
}
// 验证请求信息
if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "CLC一箱一料")) {
if (!Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "LR02") && !Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "FC01")) {
logger.error("料箱类型选择错误,{}与{}不对应。", callEmptyVehicleRequest.getVehicleType1(), callEmptyVehicleRequest.getVehicleType2());
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("料箱类型选择错误,与存放类型不对应。");
return convertJsonString(response);
}
} else if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "CLC一箱两料")) {
if (!Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "LR01") && !Objects.equals(callEmptyVehicleRequest.getVehicleType1(), "UD01")) {
logger.error("料箱类型选择错误,{}与{}不对应。", callEmptyVehicleRequest.getVehicleType1(), callEmptyVehicleRequest.getVehicleType2());
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("料箱类型选择错误,与存放类型不对应。");
return convertJsonString(response);
}
} else if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "间接物料")) {
if (StringUtils.isEmpty(callEmptyVehicleRequest.getGoodsId())) {
logger.error("间接物料必须输入物料号");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("间接物料必须输入物料号");
return convertJsonString(response);
}
// 查询物料是否是间接物料
Goods goods = goodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, callEmptyVehicleRequest.getGoodsId()).eq(Goods::getGoodsInVehicleType, "间接物料"));
if (goods == null) {
logger.error("当前物料不是间接物料");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("当前物料不是间接物料");
return convertJsonString(response);
}
callEmptyVehicleRequest.setVehicleType1(goods.getVehicleType());
} else if (Objects.equals(callEmptyVehicleRequest.getVehicleType2(), "No-CLC")) {
// 设定料箱类型
callEmptyVehicleRequest.setVehicleType1("FB01");
} else {
logger.error("请选择正确的存放类型");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("请选择正确的存放类型");
return convertJsonString(response);
}
// 生成料箱出库任务
int needNum = callEmptyVehicleRequest.getNeedNum();
List<Task> vehicleOutTasks = new ArrayList<>();
while (needNum > 0) {
// 先找空箱
Vehicle emptyVehicle = vehicleService.getOne(new LambdaQueryWrapper<Vehicle>()
.eq(Vehicle::getVehicleType, callEmptyVehicleRequest.getVehicleType1())
.eq(Vehicle::getIsEmpty, 1)
.orderByAsc(Vehicle::getLastInTime));
if (emptyVehicle != null) {// 有可用的空箱
// 创建一个空箱出库任务
Task emptyVehicleTask = new Task();
emptyVehicleTask.setTaskId("VCK_");
emptyVehicleTask.setTaskType(TaskType.OUT.getCode());
emptyVehicleTask.setTaskStatus(WmsTaskStatus.NEW.getCode());
emptyVehicleTask.setOrigin(emptyVehicle.getCurrentLocation());
// TODO 这里的终点与Wcs商量传不传
emptyVehicleTask.setDestination("");
} else {// 已经没有空箱可用了
break;
}
needNum--;
}
return convertJsonString(response);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("工作完成确认异常");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("工作完成确认异常");
return convertJsonString(response);
}
}
// TODO 接收Wcs询问是否回库的请求
}

View File

@ -3,6 +3,8 @@ package com.wms.entity.app.dto;
import com.wms.entity.app.dto.extend.VehicleDetailInfo;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 载具
*/
@ -32,4 +34,8 @@ public class VehicleDto {
* 额外信息
*/
private VehicleDetailInfo details;
/**
* 上次入库时间
*/
private LocalDateTime lastInTime;
}

View File

@ -0,0 +1,28 @@
package com.wms.entity.app.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class CallEmptyVehicleRequest {
/**
* 料箱类型
*/
@JsonProperty("vehicleType1")
private String vehicleType1;
/**
* 存放类型
*/
@JsonProperty("vehicleType2")
private String vehicleType2;
/**
* 料号
*/
@JsonProperty("goodsId")
private String goodsId;
/**
* 料箱数量
*/
@JsonProperty("needNum")
private Integer needNum;
}

View File

@ -1,7 +1,11 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wms.entity.app.dto.extend.VehicleDetailInfo;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* 载具VO
@ -32,4 +36,10 @@ public class VehicleVO {
* 额外信息
*/
private VehicleDetailInfo details;
/**
* 上次入库时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastInTime;
}