opt:bug修复

This commit is contained in:
2026-09-01 08:46:14 +07:00
parent 2564d993ac
commit 433c12405e
15 changed files with 105 additions and 42 deletions

View File

@@ -443,17 +443,27 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
String vehicleCode2 = whereJson.getString("vehicle_code");
String deviceCode2 = whereJson.getString("point_code");
if (aisleConflictHelper.isSecondFloor(deviceCode2)) {
if(vehicleCode2.startsWith("YNX")) {
if (vehicleCode2.startsWith("YNX")) {
Integer recommendedBlock = aisleConflictHelper.getRecommendedBlockForInbound(vehicleCode2);
if (recommendedBlock == null) {
throw new BadRequestException("当前所有大托盘巷道都有出库任务,无法分配入库货位");
}
} else if(vehicleCode2.startsWith("YNY")) {
} else if (vehicleCode2.startsWith("YNY")) {
if (aisleConflictHelper.hasOutboundTask("4")) {
throw new BadRequestException("4号巷道有出库任务无法分配小托盘入库货位");
}
}
}
//一楼空盘入库需要判断是否有桁架任务是否有1楼出库到任务
else {
if (aisleConflictHelper.hasOneFloorReturnOutboundTask()) {
throw new BadRequestException("1楼退货口有出库任务无法下发空托盘入库任务");
}
if (aisleConflictHelper.hasOneFloorTwoInBoxTrussTask()) {
throw new BadRequestException("1楼退货口有行架任务无法下发空托盘入库任务");
}
}
// if(!IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type).equals(point_code)){
@@ -514,26 +524,28 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
wmsToAcsService.action(rows);
JSONObject param = new JSONObject();
param.put("type", "3");
param.put("container_type", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
param.put("material_barcode", whereJson.getString("vehicle_code") + "-" + "0");
param.put("barcode", whereJson.getString("vehicle_code"));
if(aisleConflictHelper.isSecondFloor(point_code)) {
JSONObject jsonParam = new JSONObject();
jsonParam.put("start_device_code", whereJson.getString("point_code"));
jsonParam.put("next_device_code", "RK2011");
jsonParam.put("vehicle_code2", mdPdStorageVehicleInfo.getStoragevehicle_code());
jsonParam.put("vehicle_code", mdPdStorageVehicleInfo.getStoragevehicle_code());
jsonParam.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
jsonParam.put("task_type", "010713");
jsonParam.put("request_param", param.toString());
boxSSXTask.createTask(jsonParam);
boxSSXTask.immediateNotifyAcs(null);
JSONObject param = new JSONObject();
param.put("type", "3");
param.put("container_type", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
param.put("material_barcode", whereJson.getString("vehicle_code") + "-" + "0");
param.put("barcode", whereJson.getString("vehicle_code"));
JSONObject jsonParam = new JSONObject();
jsonParam.put("start_device_code", whereJson.getString("point_code"));
jsonParam.put("next_device_code", "RK2011");
jsonParam.put("vehicle_code2", mdPdStorageVehicleInfo.getStoragevehicle_code());
jsonParam.put("vehicle_code", mdPdStorageVehicleInfo.getStoragevehicle_code());
jsonParam.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
jsonParam.put("task_type", "010713");
jsonParam.put("request_param", param.toString());
boxSSXTask.createTask(jsonParam);
boxSSXTask.immediateNotifyAcs(null);
redisUtils.set(whereJson.getString("vehicle_code") + "InVehicleInHeightLevel", height);
redisUtils.set(whereJson.getString("vehicle_code") + "InVehicleInHeightLevel", height);
}
result.put("message", "入库成功!");
return result;
}

View File

@@ -113,6 +113,7 @@ public class TwoInEmpTask extends AbstractAcsTask {
// 更新仓位
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
jsonAttr.put("update_time", DateUtil.now());
jsonAttr.put("storagevehicle_code",jsonTask.getString("vehicle_code"));
jsonAttr.put("is_emptyvehicle",IOSEnum.IS_NOTANDYES.code(""));

View File

@@ -103,6 +103,7 @@ public class TwoOutTask extends AbstractAcsTask {
.getResultJSONArray(0).toJavaList(JSONObject.class);
Map<String, List<JSONObject>> likeArr = likeAllArr.stream()
.filter(row -> !aisleConflictHelper.isSecondFloor(row.getString("point_code2")))
.collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
// 判断长度

View File

@@ -1302,7 +1302,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
end_device_code = where.getString("point_code");
} else {
throw new BadRequestException("异常出库点位只能选择【RK2009】");
throw new BadRequestException("异常出库点位只能选择异常点位");
}
} else {
if ("RK2009".equals(where.getString("point_code"))

View File

@@ -22,10 +22,14 @@ public class AisleConflictHelper {
private static final String TWO_OUT_TASK_CLASS = "org.nl.b_lms.sch.tasks.TwoOutTask";
private static final String TWO_OUT_EMP_TASK_CLASS = "org.nl.b_lms.sch.tasks.TwoOutEmpTask";
private static final String BOX_SSX_TASK_CLASS = "org.nl.b_lms.sch.tasks.boxstack.BoxSSXTask";
private static final String TWO_IN_BOX_TRUSS_TASK = "org.nl.b_lms.sch.tasks.TwoInBoxTrussTask";
private static final String LARGE_PALLET = "large";
private static final String SMALL_PALLET = "small";
//返回0则表示不受出入库堆积自动分配
private static final String AUTO_PALLET = "0";
private static final List<String> LARGE_PALLET_AISLES = Arrays.asList("1", "2", "3");
private static final String SMALL_PALLET_AISLE = "4";
@@ -220,6 +224,43 @@ public class AisleConflictHelper {
return occupiedAisles;
}
/**
* 判断1楼是否有桁架任务
*/
public boolean hasOneFloorTwoInBoxTrussTask() {
Set<String> pointSet = new HashSet<>();
pointSet.add("RK1012");
pointSet.add("RK1005");
List<SchBaseTask> tasks = schBaseTaskMapper.selectList(
new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getHandle_class, TWO_IN_BOX_TRUSS_TASK)
.in(SchBaseTask::getPoint_code2, pointSet)
.in(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode(), TaskStatusEnum.EXECUTING.getCode())
.eq(SchBaseTask::getIs_delete, "0")
);
return !tasks.isEmpty();
}
/**
* 判断否有出到1楼退货口的任务
*/
public boolean hasOneFloorReturnOutboundTask() {
Set<String> pointSet = new HashSet<>();
pointSet.add("RK1012");
pointSet.add("RK1005");
pointSet.add("RK1010");
pointSet.add("RK1003");
List<SchBaseTask> tasks = schBaseTaskMapper.selectList(
new LambdaQueryWrapper<SchBaseTask>()
.in(SchBaseTask::getHandle_class, OUTBOUND_TASK_CLASSES)
.in(SchBaseTask::getPoint_code2, pointSet)
.in(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode(), TaskStatusEnum.EXECUTING.getCode())
.eq(SchBaseTask::getIs_delete, "0")
);
return !tasks.isEmpty();
}
/**
* 获取大托盘可用的入库巷道列表(排除有出库任务的巷道)
* 包含 TwoOutTask 和 TwoOutEmpTask
@@ -255,6 +296,9 @@ public class AisleConflictHelper {
if (availableAisles == null || availableAisles.isEmpty()) {
return null;
}
if( availableAisles.size() == 3){
return AUTO_PALLET;
}
int index = new Random().nextInt(availableAisles.size());
return availableAisles.get(index);
}

View File

@@ -356,15 +356,10 @@ public class InBoxManageServiceImpl implements InBoxManageService {
boolean middleNotBlank = StringUtils.isNotBlank(middle_box_no);
boolean upNotBlank = StringUtils.isNotBlank(up_box_no);
if (middleNotBlank) {
// 有条码,条码必填
if (!upNotBlank) {
throw new BadRequestException("录入条码时,条码不能为空");
}
} else {
// 中条码为空,上条码必须也为空
if (upNotBlank) {
throw new BadRequestException("未录入中条码,不允许填写上条码");
if (upNotBlank) {
// 有条码,条码必填
if (!middleNotBlank) {
throw new BadRequestException("录入条码时,条码不能为空");
}
}

View File

@@ -409,7 +409,7 @@ public class InBussManageServiceImpl implements InBussManageService {
jsonDiv.put("tableMater", disList);
jsonDiv.put("checked", true);
jsonDiv.put("is_send", IOSEnum.IS_SEND.code(""));
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("二期主存区"));
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("印尼主存区"));
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("印尼仓库"));
jsonDiv.put("move_block_num", jsonAttr.getString("block_num"));
jsonDiv.put("in_buss", IOSEnum.IS_NOTANDYES.code(""));

View File

@@ -802,7 +802,7 @@ public class StructattrServiceImpl implements StructattrService {
JSONObject param = new JSONObject();
param.put("is_used", json.getString("is_used"));
tab.update(param,"sect_id = '"+IOSEnum.SECT_ID.code("二期主存区")+"' AND block_num = '"+json.getString("block_num")+"' AND is_delete = '0'");
tab.update(param,"sect_id = '"+IOSEnum.SECT_ID.code("印尼主存区")+"' AND block_num = '"+json.getString("block_num")+"' AND is_delete = '0'");
}

View File

@@ -1335,7 +1335,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (recommendedBlock == null) {
errorMsg.add("当前所有大托盘巷道都有出库任务,无法分配入库货位");
}
whereJson.put("move_block_num", String.valueOf(recommendedBlock));
if (recommendedBlock != 0) {
whereJson.put("move_block_num", String.valueOf(recommendedBlock));
}
} else if(vehicleCode.startsWith("YNY")) {
if (aisleConflictHelper.hasOutboundTask("4")) {
errorMsg.add("4号巷道有出库任务无法分配小托盘入库货位");
@@ -1394,7 +1396,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (recommendedBlock == null) {
throw new BadRequestException("当前所有大托盘巷道都有出库任务,无法分配空托盘入库货位");
}
whereJson.put("move_block_num", String.valueOf(recommendedBlock));
if (recommendedBlock != 0) {
whereJson.put("move_block_num", String.valueOf(recommendedBlock));
}
} else if(empVehicleCode.startsWith("YNY")) {
if (aisleConflictHelper.hasOutboundTask("4")) {
throw new BadRequestException("4号巷道有出库任务无法分配空托盘入库货位");
@@ -1533,7 +1537,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (recommendedBlock == null) {
throw new BadRequestException("当前所有大托盘巷道都有出库任务,无法分配入库货位");
}
whereJson.put("move_block_num", String.valueOf(recommendedBlock));
if (recommendedBlock != 0) {
whereJson.put("move_block_num", String.valueOf(recommendedBlock));
}
} else if(vehicleCode2.startsWith("YNY")) {
if (aisleConflictHelper.hasOutboundTask("4")) {
throw new BadRequestException("4号巷道有出库任务无法分配小托盘入库货位");

View File

@@ -325,7 +325,7 @@ public class ProductInstorServiceImpl implements ProductInstorService {
JSONObject param = new JSONObject();
param.put("type", "4");
param.put("container_type", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
param.put("material_barcode", whereJson.getString("box_no") + "-" + mst_jo.getString("bill_type").replace("0", ""));
param.put("material_barcode", whereJson.getString("box_no"));
param.put("barcode", whereJson.getString("vehicle_code"));
String vehicleCode2 = whereJson.getString("vehicle_code");
@@ -366,7 +366,7 @@ public class ProductInstorServiceImpl implements ProductInstorService {
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("device_code", whereJson.getString("device_code"));
jsonObject2.put("code", "material_barcode");
jsonObject2.put("value", whereJson.getString("box_no") + "-" + "1");
jsonObject2.put("value", whereJson.getString("box_no"));
jsonObject2.put("product_area", "BLK");
rows.add(jsonObject2);

View File

@@ -58,6 +58,9 @@ public class AcsUtil {
throw new BadRequestException("未查询到区域对应的acs地址");
}
String url =acs_url + api;
log.info("下发ACSURL参数----------------------------------------+" + url + ",---");
try {
JSONArray rows = new JSONArray();
rows.add(jo);
@@ -125,6 +128,7 @@ public class AcsUtil {
}
String url = acs_url + api;
log.info("下发ACSURL参数----------------------------------------+" + url + ",---");
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(list))

View File

@@ -149,12 +149,6 @@ public abstract class AbstractAcsTask {
public JSONObject immediateNotifyAcsList(List<AcsTaskDto> taskList) {
try {
Thread.sleep(1000);
} catch (Exception ex) {
}
//查询正在执行中的任务
List<String> status = Stream.of("05","06")
.collect(Collectors.toList());

View File

@@ -49,6 +49,8 @@ var config = {
"mesErrorTitle": "MES Error"
},
"common": {
"overdueShipment":"overdueShipment",
"addNewRow":"addNewRow",
"sectType": "Warehouse Area Type",
"sectCapacity": "Warehouse Area Capacity",
"charge_against":"charge against",

View File

@@ -48,6 +48,8 @@ var config = {
"load_text5": "Hanya dapat mengunggah satu file excel!"
},
"common": {
"overdueShipment":"Apakah pengiriman terlambat",
"addNewRow":"Tambahkan Baris Baru",
"sectType": "Tipe Area Gudang",
"sectCapacity": "Kapasitas Area Gudang",
"charge_against":"Penutupan",

View File

@@ -93,6 +93,8 @@ var config = {
"correspondingDeepLocationError": "对应的深货位错误!"
},
"common": {
"overdueShipment":"是否超期发货('否'为正常库存发货)",
"addNewRow":"添加新行",
"sectType": "库区类型",
"sectCapacity":"库区容量",
"charge_against":"冲销",