This commit is contained in:
陆一凡 2025-04-08 18:02:55 +08:00
parent b4cb27e7af
commit 75d7144ce7
4 changed files with 135 additions and 138 deletions

View File

@ -78,7 +78,7 @@ public class JobComponent extends BaseController {
private final VehicleMapper vehicleMapper; private final VehicleMapper vehicleMapper;
@Scheduled(fixedDelay = 1000) @Scheduled(fixedDelay = 2000)
public void sendTasksToWcs() { public void sendTasksToWcs() {
try { try {
// 查找待下发的任务 // 查找待下发的任务
@ -94,14 +94,14 @@ public class JobComponent extends BaseController {
sendTasksInToWcs(task); sendTasksInToWcs(task);
return; return;
} }
if(task.getTaskType().equals(TaskType.MOVE.getCode())){
sendTasksMoveToWcs(task);
return;
}
if(task.getTaskType().equals(TaskType.OUT.getCode()) || task.getTaskType().equals(TaskType.INVENTORY.getCode())){ if(task.getTaskType().equals(TaskType.OUT.getCode()) || task.getTaskType().equals(TaskType.INVENTORY.getCode())){
sendTasksOutToWcs(task); sendTasksOutToWcs(task);
return; return;
} }
if(task.getTaskType().equals(TaskType.MOVE.getCode())){
sendTasksMoveToWcs(task);
// return;
}
} }
}catch (Exception exception){ }catch (Exception exception){
logger.error("定时器下发任务发生异常:{}", exception.toString()); logger.error("定时器下发任务发生异常:{}", exception.toString());

View File

@ -145,7 +145,7 @@ public class TaskOperation {
addStock.setProviderId(""); addStock.setProviderId("");
addStock.setProviderName(""); addStock.setProviderName("");
addStock.setExpirationDate(null); addStock.setExpirationDate(null);
addStock.setStockStatus(0); addStock.setStockStatus(StockStatus.OK.getCode());
addStock.setGoodsStatus(null); addStock.setGoodsStatus(null);
addStock.setCreateTime(new Date()); addStock.setCreateTime(new Date());
addStock.setLastUpdateTime(null); addStock.setLastUpdateTime(null);

View File

@ -31,11 +31,12 @@ public class OrderInImplement implements IOrderInService {
/** /**
* 查询入库单 * 查询入库单
*
* @param request 查询参数 * @param request 查询参数
* @return 返回结果 * @return 返回结果
*/ */
public WmsApiResponse<List<AppOrderIn>> queryOrderIn(queryOrderInRequest request) { public WmsApiResponse<List<AppOrderIn>> queryOrderIn(queryOrderInRequest request) {
if(request.getOrderStatus() == null || request.getOrderStatus().isEmpty()) { if (request.getOrderStatus() == null || request.getOrderStatus().isEmpty()) {
return new WmsApiResponse<>(0, "查询成功", new ArrayList<>()); // 没有查询参数返回空 return new WmsApiResponse<>(0, "查询成功", new ArrayList<>()); // 没有查询参数返回空
} }
List<AppOrderIn> appOrderIns = appOrderInMapper.selectWithParams(request.getSearchStr(), request.getOrderStatus()); List<AppOrderIn> appOrderIns = appOrderInMapper.selectWithParams(request.getSearchStr(), request.getOrderStatus());
@ -43,14 +44,14 @@ public class OrderInImplement implements IOrderInService {
} }
/** /**
* 添加入库单 * 添加入库单
*
* @param request 入库单参数 * @param request 入库单参数
* @return 返回结果 * @return 返回结果
*/ */
public WmsApiResponse<Object> addOrderIn(downOrderInRequest request){ public WmsApiResponse<Object> addOrderIn(downOrderInRequest request) {
if (WmsConstants.EMPTY_STOCK_BATCH_NO.equals(request.getVehicleNo())){ if (WmsConstants.EMPTY_STOCK_BATCH_NO.equals(request.getVehicleNo())) {
log.info("托盘{}为空托盘入库", request.vehicleNo); log.info("托盘{}为空托盘入库", request.vehicleNo);
AppOrderIn appOrderIn = new AppOrderIn(); AppOrderIn appOrderIn = new AppOrderIn();
appOrderIn.setRowId(UUID.randomUUID().toString()); appOrderIn.setRowId(UUID.randomUUID().toString());
@ -69,13 +70,13 @@ public class OrderInImplement implements IOrderInService {
//appOrderIn.setProductionDate(request.abcSelect); //appOrderIn.setProductionDate(request.abcSelect);
appOrderInMapper.insert(appOrderIn); appOrderInMapper.insert(appOrderIn);
return new WmsApiResponse<>(0, "添加成功", appOrderIn); return new WmsApiResponse<>(0, "添加成功", appOrderIn);
}else{ }
AppOrderIn selectOrderIn = new AppOrderIn(); AppOrderIn selectOrderIn = new AppOrderIn();
selectOrderIn.setRemark("带物料托盘入库"); selectOrderIn.setRemark("带物料托盘入库");
selectOrderIn.setVehicleNo(request.vehicleNo); selectOrderIn.setVehicleNo(request.vehicleNo);
List<AppOrderIn> selEmpty = appOrderInMapper.select(selectOrderIn); List<AppOrderIn> selEmpty = appOrderInMapper.select(selectOrderIn);
if (selEmpty == null || selEmpty.isEmpty()){ if (selEmpty == null || selEmpty.isEmpty()) {
if (request.goodsNum <= 0){ if (request.goodsNum <= 0) {
return new WmsApiResponse<>(1, "数量必须大于0", null); return new WmsApiResponse<>(1, "数量必须大于0", null);
} }
/* 插入数据,插入记录表 */ /* 插入数据,插入记录表 */
@ -89,29 +90,25 @@ public class OrderInImplement implements IOrderInService {
appOrderIn.setGoodsId(request.goodsId); appOrderIn.setGoodsId(request.goodsId);
appOrderIn.setGoodsNum(BigDecimal.valueOf(request.goodsNum)); appOrderIn.setGoodsNum(BigDecimal.valueOf(request.goodsNum));
appOrderIn.setWareHouse(request.abcSelect); appOrderIn.setWareHouse(request.abcSelect);
if (Objects.equals(request.efSelect, "E")){ appOrderIn.setOrderStatus(OrderInStatusEnum.CREATE.getCode());
appOrderIn.setOrderStatus(0);
}else {
appOrderIn.setOrderStatus(2);
}
appOrderIn.setCreateTime(LocalDateTime.now()); appOrderIn.setCreateTime(LocalDateTime.now());
appOrderIn.setCreatePerson("WMS"); appOrderIn.setCreatePerson("WMS");
appOrderIn.setUpdateTime(LocalDateTime.now()); appOrderIn.setUpdateTime(LocalDateTime.now());
appOrderIn.setRemark(""); appOrderIn.setRemark("");
appOrderInMapper.insert(appOrderIn); appOrderInMapper.insert(appOrderIn);
return new WmsApiResponse<>(0, "添加成功", appOrderIn); return new WmsApiResponse<>(0, "添加成功", appOrderIn);
}else { } else {
return new WmsApiResponse<>(1, "必须先删除带物料托盘入库任务!", null); return new WmsApiResponse<>(1, "当前托盘已有任务!", null);
}
} }
} }
/** /**
* 修改数量 * 修改数量
*
* @param request 修改数量参数 * @param request 修改数量参数
* @return 返回结果 * @return 返回结果
*/ */
public WmsApiResponse<Object> updateForNum(updateNumRequest request){ public WmsApiResponse<Object> updateForNum(updateNumRequest request) {
// if (request.get){ // if (request.get){
// //
// } // }
@ -119,32 +116,33 @@ public class OrderInImplement implements IOrderInService {
AppOrderIn appOrderIn = new AppOrderIn(); AppOrderIn appOrderIn = new AppOrderIn();
appOrderIn.setRowId(request.getRowId()); appOrderIn.setRowId(request.getRowId());
List<AppOrderIn> appOrderIns = appOrderInMapper.select(appOrderIn); List<AppOrderIn> appOrderIns = appOrderInMapper.select(appOrderIn);
if (appOrderIns.get(0).getGoodsId() == null || appOrderIns.get(0).getGoodsId().isEmpty()){ if (appOrderIns.get(0).getGoodsId() == null || appOrderIns.get(0).getGoodsId().isEmpty()) {
return new WmsApiResponse<>(999, "空托盘不允许修改物料数量,修改失败", null); return new WmsApiResponse<>(999, "空托盘不允许修改物料数量,修改失败", null);
} }
appOrderIn.setGoodsNum(request.getRealNum()); appOrderIn.setGoodsNum(request.getRealNum());
int i = appOrderInMapper.update(appOrderIn); int i = appOrderInMapper.update(appOrderIn);
if(i > 0) { if (i > 0) {
return new WmsApiResponse<>(0, "修改成功", null); return new WmsApiResponse<>(0, "修改成功", null);
}else { } else {
return new WmsApiResponse<>(999, "修改失败", null); return new WmsApiResponse<>(999, "修改失败", null);
} }
} }
/** /**
* 绑定载具 * 绑定载具
*
* @param request 绑定参数 * @param request 绑定参数
* @return 返回结果 * @return 返回结果
*/ */
public WmsApiResponse<Object> bindingVehicle(bindingVehicleRequest request) { public WmsApiResponse<Object> bindingVehicle(bindingVehicleRequest request) {
String vehicleNo = request.getVehicleNo(); String vehicleNo = request.getVehicleNo();
String code = request.getCode(); String code = request.getCode();
if(StringUtils.isEmpty(vehicleNo) || StringUtils.isEmpty(code)) { if (StringUtils.isEmpty(vehicleNo) || StringUtils.isEmpty(code)) {
return new WmsApiResponse<>(999, "载具号或者条码为空", null); return new WmsApiResponse<>(999, "载具号或者条码为空", null);
} }
// 拆分条码 // 拆分条码
// 前八位是零件号后面六位是批次后面一位是班次最后五位是数量 // 前八位是零件号后面六位是批次后面一位是班次最后五位是数量
if(code.length() == 22) { if (code.length() == 22) {
//return new WmsApiResponse<>(999, "条码长度错误", null); //return new WmsApiResponse<>(999, "条码长度错误", null);
String goodsId = code.substring(0, 10); // 物料编码 String goodsId = code.substring(0, 10); // 物料编码
String productionDate = code.substring(10, 16); //生产日期 String productionDate = code.substring(10, 16); //生产日期
@ -159,12 +157,12 @@ public class OrderInImplement implements IOrderInService {
String batchNo = code.substring(0, 16); // 批次 ---- 这个批次应该是料号加中间六位 String batchNo = code.substring(0, 16); // 批次 ---- 这个批次应该是料号加中间六位
String shift = code.substring(17, 18); // 班次 String shift = code.substring(17, 18); // 班次
String goodsNumStr = code.substring(18, 22); // 数量字符串 String goodsNumStr = code.substring(18, 22); // 数量字符串
if(!goodsNumStr.matches("[0-9]+")) { if (!goodsNumStr.matches("[0-9]+")) {
return new WmsApiResponse<>(999, "数量错误", null); return new WmsApiResponse<>(999, "数量错误", null);
} }
BigDecimal goodsNum = new BigDecimal(goodsNumStr); // 数量 BigDecimal goodsNum = new BigDecimal(goodsNumStr); // 数量
List<AppOrderIn> selectRows = appOrderInMapper.select(new AppOrderIn(batchNo, goodsNum, OrderInStatusEnum.CREATE.getCode())); List<AppOrderIn> selectRows = appOrderInMapper.select(new AppOrderIn(batchNo, goodsNum, OrderInStatusEnum.CREATE.getCode()));
if(selectRows == null || selectRows.isEmpty()) { if (selectRows == null || selectRows.isEmpty()) {
return new WmsApiResponse<>(999, String.format("条码找不到入库单,无法绑定,条码:%s, 批次: %s, 数量: %s", code, batchNo, goodsNum), null); return new WmsApiResponse<>(999, String.format("条码找不到入库单,无法绑定,条码:%s, 批次: %s, 数量: %s", code, batchNo, goodsNum), null);
} }
AppOrderIn orderIn = selectRows.get(0); // 这条数据 AppOrderIn orderIn = selectRows.get(0); // 这条数据
@ -176,7 +174,7 @@ public class OrderInImplement implements IOrderInService {
bindingOrderIn.setUpdateTime(java.time.LocalDateTime.now()); bindingOrderIn.setUpdateTime(java.time.LocalDateTime.now());
//bindingOrderIn.setProductionDate(date); //bindingOrderIn.setProductionDate(date);
//bindingOrderIn.setUpdateTime(date); //bindingOrderIn.setUpdateTime(date);
if(appOrderInMapper.update(bindingOrderIn) > 0) { if (appOrderInMapper.update(bindingOrderIn) > 0) {
return new WmsApiResponse<>(0, "绑定成功", null); return new WmsApiResponse<>(0, "绑定成功", null);
} }
return new WmsApiResponse<>(999, "绑定失败,未知异常,请重试", null); return new WmsApiResponse<>(999, "绑定失败,未知异常,请重试", null);
@ -194,12 +192,12 @@ public class OrderInImplement implements IOrderInService {
String batchNo = code.substring(0, 14); // 批次 ---- 这个批次应该是料号加中间六位 String batchNo = code.substring(0, 14); // 批次 ---- 这个批次应该是料号加中间六位
//String shift = code.substring(17, 18); // 班次 //String shift = code.substring(17, 18); // 班次
String goodsNumStr = code.substring(16, 20); // 数量字符串 String goodsNumStr = code.substring(16, 20); // 数量字符串
if(!goodsNumStr.matches("[0-9]+")) { if (!goodsNumStr.matches("[0-9]+")) {
return new WmsApiResponse<>(999, "数量错误", null); return new WmsApiResponse<>(999, "数量错误", null);
} }
BigDecimal goodsNum = new BigDecimal(goodsNumStr); // 数量 BigDecimal goodsNum = new BigDecimal(goodsNumStr); // 数量
List<AppOrderIn> selectRows = appOrderInMapper.select(new AppOrderIn(batchNo, goodsNum, OrderInStatusEnum.CREATE.getCode())); List<AppOrderIn> selectRows = appOrderInMapper.select(new AppOrderIn(batchNo, goodsNum, OrderInStatusEnum.CREATE.getCode()));
if(selectRows == null || selectRows.isEmpty()) { if (selectRows == null || selectRows.isEmpty()) {
return new WmsApiResponse<>(999, String.format("条码找不到入库单,无法绑定,条码:%s, 批次: %s, 数量: %s", code, batchNo, goodsNum), null); return new WmsApiResponse<>(999, String.format("条码找不到入库单,无法绑定,条码:%s, 批次: %s, 数量: %s", code, batchNo, goodsNum), null);
} }
AppOrderIn orderIn = selectRows.get(0); // 这条数据 AppOrderIn orderIn = selectRows.get(0); // 这条数据
@ -211,7 +209,7 @@ public class OrderInImplement implements IOrderInService {
bindingOrderIn.setUpdateTime(java.time.LocalDateTime.now()); bindingOrderIn.setUpdateTime(java.time.LocalDateTime.now());
//bindingOrderIn.setProductionDate(date); //bindingOrderIn.setProductionDate(date);
//bindingOrderIn.setUpdateTime(date); //bindingOrderIn.setUpdateTime(date);
if(appOrderInMapper.update(bindingOrderIn) > 0) { if (appOrderInMapper.update(bindingOrderIn) > 0) {
return new WmsApiResponse<>(0, "绑定成功", null); return new WmsApiResponse<>(0, "绑定成功", null);
} }
return new WmsApiResponse<>(999, "绑定失败,未知异常,请重试", null); return new WmsApiResponse<>(999, "绑定失败,未知异常,请重试", null);
@ -221,22 +219,21 @@ public class OrderInImplement implements IOrderInService {
} }
/** /**
* 根据载具号查询入库单 * 根据载具号查询入库单
*
* @param vehicleNo 载具号 * @param vehicleNo 载具号
* @return 返回结果 * @return 返回结果
*/ */
public WmsApiResponse<List<AppOrderIn>> getOrderInWithVehicleNo(String vehicleNo) { public WmsApiResponse<List<AppOrderIn>> getOrderInWithVehicleNo(String vehicleNo) {
if(vehicleNo == null || vehicleNo.isEmpty()) { if (vehicleNo == null || vehicleNo.isEmpty()) {
return new WmsApiResponse<>(999, "载具号不能为空", null); return new WmsApiResponse<>(999, "载具号不能为空", null);
} }
AppOrderIn appOrderInQuery = new AppOrderIn(); AppOrderIn appOrderInQuery = new AppOrderIn();
appOrderInQuery.setVehicleNo(vehicleNo); appOrderInQuery.setVehicleNo(vehicleNo);
appOrderInQuery.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); appOrderInQuery.setOrderStatus(OrderInStatusEnum.BINDING.getCode());
List<AppOrderIn> appOrderIns = appOrderInMapper.select(appOrderInQuery); List<AppOrderIn> appOrderIns = appOrderInMapper.select(appOrderInQuery);
if(appOrderIns == null) { if (appOrderIns == null) {
return new WmsApiResponse<>(999, "查询失败,请重试", new ArrayList<>()); return new WmsApiResponse<>(999, "查询失败,请重试", new ArrayList<>());
} }
return new WmsApiResponse<>(0, "查询成功", appOrderIns); return new WmsApiResponse<>(0, "查询成功", appOrderIns);
@ -244,11 +241,12 @@ public class OrderInImplement implements IOrderInService {
/** /**
* 解绑载具 * 解绑载具
*
* @param rowId 入库单行号 * @param rowId 入库单行号
* @return 返回结果 * @return 返回结果
*/ */
public WmsApiResponse<Object> unBindingVehicle(String rowId) { public WmsApiResponse<Object> unBindingVehicle(String rowId) {
if(rowId == null || rowId.isEmpty()) { if (rowId == null || rowId.isEmpty()) {
return new WmsApiResponse<>(999, "入库单行号不能为空", null); return new WmsApiResponse<>(999, "入库单行号不能为空", null);
} }
AppOrderIn unBindingVehicle = new AppOrderIn(); AppOrderIn unBindingVehicle = new AppOrderIn();
@ -257,7 +255,7 @@ public class OrderInImplement implements IOrderInService {
unBindingVehicle.setVehicleNo(""); unBindingVehicle.setVehicleNo("");
unBindingVehicle.setUpdateTime(java.time.LocalDateTime.now()); unBindingVehicle.setUpdateTime(java.time.LocalDateTime.now());
int updateResult = appOrderInMapper.update(unBindingVehicle); int updateResult = appOrderInMapper.update(unBindingVehicle);
if(updateResult > 0) { if (updateResult > 0) {
return new WmsApiResponse<>(0, "解绑成功", null); return new WmsApiResponse<>(0, "解绑成功", null);
} }
return new WmsApiResponse<>(999, "解绑失败,请重试", null); return new WmsApiResponse<>(999, "解绑失败,请重试", null);
@ -276,7 +274,8 @@ public class OrderInImplement implements IOrderInService {
return new WmsApiResponse<>(0, "删除成功", true); return new WmsApiResponse<>(0, "删除成功", true);
} else { } else {
return new WmsApiResponse<>(1, "订单不存在", false); return new WmsApiResponse<>(1, "订单不存在", false);
} } catch (Exception e) { }
} catch (Exception e) {
// 记录异常 // 记录异常
return new WmsApiResponse<>(1, "删除失败", false); return new WmsApiResponse<>(1, "删除失败", false);
} }

View File

@ -84,7 +84,6 @@ public class ContainerImplement implements ContainerService {
* @param request 请求信息 * @param request 请求信息
* @return 响应信息 * @return 响应信息
*/ */
@Override @Override
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
public CreateInstoreTaskResponse createInstoreTask(CreateInstoreTaskRequest request) { public CreateInstoreTaskResponse createInstoreTask(CreateInstoreTaskRequest request) {
@ -156,13 +155,14 @@ public class ContainerImplement implements ContainerService {
success.setPalletNo(virtualPalletId); success.setPalletNo(virtualPalletId);
success.setFromCellNo(request.getFromCellNo()); success.setFromCellNo(request.getFromCellNo());
success.setToCellNo(useLocation.getLocationId()); success.setToCellNo(useLocation.getLocationId());
}else { return success;
}
// 查询待入库的批次号 // 查询待入库的批次号
AppOrderIn waitInStockQuery = new AppOrderIn(); AppOrderIn waitInStockQuery = new AppOrderIn();
waitInStockQuery.setVehicleNo(request.getPalletNo()); waitInStockQuery.setVehicleNo(request.getPalletNo());
List<AppOrderIn> waitInStockList = appOrderInMapper.select(waitInStockQuery); // 查找待入库的批次号 List<AppOrderIn> waitInStockList = appOrderInMapper.select(waitInStockQuery); // 查找待入库的批次号
if(waitInStockList.isEmpty()) { if(waitInStockList.isEmpty()) {
log.error("条码{} 不存在待入库的任务", request.getPalletNo()); log.error("托盘{} 不存在待入库的任务", request.getPalletNo());
return new CreateInstoreTaskResponse("400", String.format("条码:%s 不存在待入库的任务", request.getPalletNo())); return new CreateInstoreTaskResponse("400", String.format("条码:%s 不存在待入库的任务", request.getPalletNo()));
} }
AppOrderIn appOrderIn = waitInStockList.get(0); AppOrderIn appOrderIn = waitInStockList.get(0);
@ -175,7 +175,6 @@ public class ContainerImplement implements ContainerService {
if (WmsConstants.LOW_FLOOR.equals(request.getHeight())) { if (WmsConstants.LOW_FLOOR.equals(request.getHeight())) {
canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() == 1).toList(); canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() == 1).toList();
} }
if (WmsConstants.HIGH_FLOOR.equals(request.getHeight())) { if (WmsConstants.HIGH_FLOOR.equals(request.getHeight())) {
canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() != 1).toList(); canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() != 1).toList();
} }
@ -200,7 +199,7 @@ public class ContainerImplement implements ContainerService {
} }
newInTask.setWeight(Double.valueOf(request.getWeight())); newInTask.setWeight(Double.valueOf(request.getWeight()));
newInTask.setCreateTime(new java.util.Date()); newInTask.setCreateTime(new java.util.Date());
newInTask.setUserName("四向车API"); newInTask.setUserName("四向车请求");
newInTask.setVehicleSize(Integer.valueOf(request.getHeight())); newInTask.setVehicleSize(Integer.valueOf(request.getHeight()));
newInTask.setVehicleNo(request.getPalletNo()); newInTask.setVehicleNo(request.getPalletNo());
newInTask.setTaskPriority(1); newInTask.setTaskPriority(1);
@ -231,7 +230,6 @@ public class ContainerImplement implements ContainerService {
success.setPalletNo(request.getPalletNo()); success.setPalletNo(request.getPalletNo());
success.setFromCellNo(request.getFromCellNo()); success.setFromCellNo(request.getFromCellNo());
success.setToCellNo(useLocation.getLocationId()); success.setToCellNo(useLocation.getLocationId());
}
return success; return success;
} }