opt:bug修复
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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("是"));
|
||||
|
||||
|
||||
@@ -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")));
|
||||
|
||||
// 判断长度
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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("录入上条码时,中条码不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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("是"));
|
||||
|
||||
@@ -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'");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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号巷道有出库任务,无法分配小托盘入库货位");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -93,6 +93,8 @@ var config = {
|
||||
"correspondingDeepLocationError": "对应的深货位错误!"
|
||||
},
|
||||
"common": {
|
||||
"overdueShipment":"是否超期发货('否'为正常库存发货)",
|
||||
"addNewRow":"添加新行",
|
||||
"sectType": "库区类型",
|
||||
"sectCapacity":"库区容量",
|
||||
"charge_against":"冲销",
|
||||
|
||||
Reference in New Issue
Block a user