opt:印尼项目更新

This commit is contained in:
2026-08-19 15:19:58 +07:00
parent f0a9ae29cd
commit 6f5fea2b11
10 changed files with 213 additions and 37 deletions

View File

@@ -9,9 +9,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pda.service.VehicleTwoService;
import org.nl.b_lms.pdm.info.dao.PdmBiContainerinbound;
import org.nl.b_lms.pdm.info.service.IPdmBiContainerinboundService;
import org.nl.b_lms.pdm.productSpec.service.impl.PdmProductSpecServiceImpl;
import org.nl.b_lms.pdm.storagevehicleext.dao.MdPbStoragevehicleext;
import org.nl.b_lms.pdm.storagevehicleext.service.IMdPbStoragevehicleextService;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
@@ -25,6 +22,7 @@ import org.nl.b_lms.sch.tasks.boxstack.BoxSSXTask;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.AisleConflictHelper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBoxManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InVehicleManageService;
@@ -378,6 +376,8 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
@Transactional(rollbackFor = Exception.class)
public JSONObject InVehicleIn(JSONObject whereJson) {
AisleConflictHelper aisleConflictHelper = SpringContextHolder.getBean(AisleConflictHelper.class);
MdPdStorageVehicleInfo mdPdStorageVehicleInfo = mdStorageVehicleInfoMapper.selectOne(new QueryWrapper<MdPdStorageVehicleInfo>().eq("storagevehicle_code", whereJson.getString("vehicle_code")));
if (ObjectUtil.isEmpty(mdPdStorageVehicleInfo)) {
throw new BadRequestException("载具不存在!");
@@ -433,6 +433,23 @@ 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")) {
Integer recommendedBlock = aisleConflictHelper.getRecommendedBlockForInbound(vehicleCode2);
if (recommendedBlock == null) {
throw new BadRequestException("当前所有大托盘巷道都有出库任务,无法分配入库货位");
}
} else if(vehicleCode2.startsWith("YNY")) {
if (aisleConflictHelper.hasOutboundTask("4")) {
throw new BadRequestException("4号巷道有出库任务无法分配小托盘入库货位");
}
}
}
// if(!IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type).equals(point_code)){
// throw new BadRequestException("点位只能为" + IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type));
// }
@@ -453,6 +470,8 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
throw new BadRequestException("高度超高,无法入库");
}
JSONArray rows = new JSONArray();
JSONObject jsonObject = new JSONObject();
@@ -470,9 +489,45 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
rows.add(jsonObject1);
redisUtils.set(whereJson.getString("vehicle_code") + "InVehicleInHeightLevel", height);
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("device_code", point_code);
jsonObject2.put("code", "material_barcode");
jsonObject2.put("value", mdPdStorageVehicleInfo.getStoragevehicle_code() + "-0");
jsonObject2.put("product_area", "BLK");
rows.add(jsonObject2);
JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("device_code", point_code);
jsonObject3.put("code", "barcode");
jsonObject3.put("value", mdPdStorageVehicleInfo.getStoragevehicle_code());
jsonObject3.put("product_area", "BLK");
rows.add(jsonObject3);
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"));
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);
result.put("message", "入库成功!");
return result;
}
@@ -651,11 +706,14 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
}
/**
* 生产入库AGV未上线 临时方案
* 生产入库(退货口入库)AGV未上线 临时方案
* @param whereJson
* @return
*/
public JSONObject reBackIn(JSONObject whereJson) {
AisleConflictHelper aisleConflictHelper = SpringContextHolder.getBean(AisleConflictHelper.class);
//生成托盘和木箱的绑定关系
//下发acs任务确认
@@ -772,7 +830,60 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
param.put("container_type", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
param.put("material_barcode", whereJson.getString("box_no") + "-" + whereJson.getString("bill_type").replace("0", ""));
param.put("barcode", whereJson.getString("vehicle_code"));
param.put("isUncap",whereJson.getString("is_un_cap"));
String vehicleCode2 = whereJson.getString("vehicle_code");
String deviceCode2 = whereJson.getString("device_code");
if (aisleConflictHelper.isSecondFloor(deviceCode2)) {
if(vehicleCode2.startsWith("YNX")) {
Integer recommendedBlock = aisleConflictHelper.getRecommendedBlockForInbound(vehicleCode2);
if (recommendedBlock == null) {
throw new BadRequestException("当前所有大托盘巷道都有出库任务,无法分配入库货位");
}
} else if(vehicleCode2.startsWith("YNY")) {
if (aisleConflictHelper.hasOutboundTask("4")) {
throw new BadRequestException("4号巷道有出库任务无法分配小托盘入库货位");
}
}
}
param.put("isUncap", whereJson.getString("is_un_cap"));
if ("RK2026".equals(whereJson.getString("device_code"))) {
param.put("isUncap", "0");
JSONArray rows = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put("device_code", whereJson.getString("device_code"));
jsonObject.put("code", "to_back_up_1");
jsonObject.put("value", "4");
jsonObject.put("product_area", "BLK");
rows.add(jsonObject);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("device_code", whereJson.getString("device_code"));
jsonObject1.put("code", "to_container_type");
jsonObject1.put("value", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
jsonObject1.put("product_area", "BLK");
rows.add(jsonObject1);
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("device_code", whereJson.getString("device_code"));
jsonObject2.put("code", "material_barcode");
jsonObject2.put("value", whereJson.getString("box_no") + "-" + whereJson.getString("bill_type").replace("0", ""));
jsonObject2.put("product_area", "BLK");
rows.add(jsonObject2);
JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("device_code", whereJson.getString("device_code"));
jsonObject3.put("code", "barcode");
jsonObject3.put("value", whereJson.getString("vehicle_code"));
jsonObject3.put("product_area", "BLK");
rows.add(jsonObject3);
wmsToAcsService.action(rows);
}
JSONObject jsonParam = new JSONObject();
jsonParam.put("start_device_code", whereJson.getString("device_code"));

View File

@@ -6,7 +6,9 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
import org.nl.b_lms.sch.tasks.first_floor_area.auto.Prun;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.AisleConflictHelper;
import org.nl.common.utils.RedissonUtils;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +36,10 @@ public class AutoSendTask extends Prun {
try {
RedissonUtils.lock(c -> {
log.info("start_immediateNotifyAcs task......");
// 清除上一轮的ThreadLocal批次追踪数据
AisleConflictHelper aisleConflictHelper = SpringContextHolder.getBean(AisleConflictHelper.class);
aisleConflictHelper.clearCurrentBatch();
// 获取全部继承AbstractAcsTask的Bean
Map<String, AbstractAcsTask> allTaskBeans = applicationContext.getBeansOfType(AbstractAcsTask.class);
List<AcsTaskDto> totalAllTask = new ArrayList<>();
@@ -44,7 +50,11 @@ public class AutoSendTask extends Prun {
// 遍历采集所有业务任务
for (AbstractAcsTask task : allTaskBeans.values()) {
String cc = task.getClass().getSimpleName();
String cc = task.getClass().getName();
if(!cc.contains("org.nl.b_lms.sch.tasks.TwoOutTask")){
continue;
}
int count = (int) waitingTaskList.stream()
.filter(a -> !StringUtils.isEmpty(a.getHandle_class() )
&& task.getClass().getName().contains(a.getHandle_class()))
@@ -65,14 +75,19 @@ public class AutoSendTask extends Prun {
}
}
if (CollectionUtil.isEmpty(totalAllTask)) {
log.info("暂无ACS任务需要下发");
return;
}
try {
if (CollectionUtil.isEmpty(totalAllTask)) {
log.info("暂无ACS任务需要下发");
return;
}
// 取出任意一个任务实例调用父类下发过滤方法(父类通用逻辑,任意实例均可)
AbstractAcsTask anyTaskInstance = allTaskBeans.values().iterator().next();
anyTaskInstance.immediateNotifyAcsList(totalAllTask);
// 取出任意一个任务实例调用父类下发过滤方法(父类通用逻辑,任意实例均可)
AbstractAcsTask anyTaskInstance = allTaskBeans.values().iterator().next();
anyTaskInstance.immediateNotifyAcsList(totalAllTask);
} finally {
// 清除当前轮次的ThreadLocal批次追踪数据
aisleConflictHelper.clearCurrentBatch();
}
}, "AutoSendTask", 30, this);
} catch (Exception ex) {

View File

@@ -46,6 +46,7 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvOutMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdisMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.InventoryQueryParam;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.AisleConflictHelper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBussManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
@@ -698,6 +699,18 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// createTask(taskMange.getJSONArray("out").toJavaList(JSONObject.class),disLikeList,whereJson.getString("point_code"));
}
// for (List<JSONObject> outTaskMangeList : outTaskMangeMap.values()) {
// for (int i = 0; i < outTaskMangeList.size(); i++) {
// JSONObject json = outTaskMangeList.get(i);
// if(StringUtils.isBlank(json.getString("storagevehicle_code"))){
// throw new BadRequestException("货位不能为空!");
// }
//
// //计算载具和对应关系表中,有没有出现
//
// }
// }
// 下发移库任务
if (ObjectUtil.isNotEmpty(moveTaskMangeList)) {
outBussManageService.createMove2(moveTaskMangeList);
@@ -706,6 +719,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// TODO --
// 创建出库任务
try {
for (List<JSONObject> outTaskMangeList : outTaskMangeMap.values()) {
JSONObject jsonVeExt = mdPbStoragevehicleextService.getOneByPcsnToObject(outTaskMangeList.get(0).getString("storagevehicle_code"));
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!" + outTaskMangeList.get(0) .getString("storagevehicle_code"));
}
}
for (List<JSONObject> outTaskMangeList : outTaskMangeMap.values()) {
createTask(outTaskMangeList, disTaskMangeList, whereJson.getString("point_code"),whereJson.getString("checked"),whereJson.getString("bill_type"));
}
@@ -1248,7 +1267,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
*/
@Transactional
public void createForTask(JSONObject json, JSONObject where) {
AisleConflictHelper aisleConflictHelper = SpringContextHolder.getBean(AisleConflictHelper.class);
String flag = where.getString("flag");
String is_auto_issue = where.getString("is_auto_issue");
@@ -1278,7 +1297,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
throw new BadRequestException("点位没有大小托盘类型,请确认");
}
if (!IOSEnum.EXCEP_OUT.code(json.getString("storagevehicle_type")).equals(where.getString("point_code"))) {
if ( !aisleConflictHelper.isSecondFloor(where.getString("point_code")) &&!IOSEnum.EXCEP_OUT.code(json.getString("storagevehicle_type")).equals(where.getString("point_code"))) {
throw new BadRequestException("出库口选择有误,请确认起点的大小托盘类型与终点是否匹配");
}
end_device_code = where.getString("point_code");
@@ -1941,12 +1960,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
flag = jsonParam.getString("value");
}
IStIvtIostorinvOutService aopService = SpringContextHolder.getBean(IStIvtIostorinvOutService.class);
for (int i = 0; i < taskMangeList.size(); i++) {
JSONObject json = taskMangeList.get(i);
if(StringUtils.isBlank(json.getString("storagevehicle_code"))){
throw new BadRequestException("批次不能为空!");
}
}
for (int i = 0; i < taskMangeList.size(); i++) {
JSONObject json = taskMangeList.get(i);
// TODO ---

View File

@@ -32,6 +32,10 @@ public class AisleConflictHelper {
private static final List<String> INBOUND_TASK_CLASSES = Arrays.asList(TWO_IN_TASK_CLASS, TWO_IN_EMP_TASK_CLASS);
private static final List<String> OUTBOUND_TASK_CLASSES = Arrays.asList(TWO_OUT_TASK_CLASS, TWO_OUT_EMP_TASK_CLASS);
// ThreadLocal: 跟踪当前调度批次中已通过检查的巷道(解决同批次04状态任务互相不可见的问题)
private static final ThreadLocal<Set<String>> currentBatchOutboundAisles = ThreadLocal.withInitial(HashSet::new);
private static final ThreadLocal<Set<String>> currentBatchInboundAisles = ThreadLocal.withInitial(HashSet::new);
@Autowired
private SchBaseTaskMapper schBaseTaskMapper;
@@ -101,10 +105,20 @@ public class AisleConflictHelper {
return null;
}
/**
* 清除当前批次的巷道追踪记录
* 在AutoSendTask.run()和immediateNotifyAcs()结束时调用,防止下一次调度使用旧数据
*/
public void clearCurrentBatch() {
currentBatchOutboundAisles.remove();
currentBatchInboundAisles.remove();
}
/**
* 判断指定巷道是否有入库任务(已下发或执行中)
* 入库任务: handle_class in (TwoInTask, TwoInEmpTask), task_status < '07'
* 入库任务: handle_class in (TwoInTask, TwoInEmpTask), task_status in ('05','06')
* 入库任务通过 point_code2(货位) 关联巷道
* 注意: 不包含04状态(未下发)的任务04状态的同批次任务通过ThreadLocal追踪
*/
public boolean hasInboundTask(String blockNum) {
if (StrUtil.isBlank(blockNum)) {
@@ -113,7 +127,7 @@ public class AisleConflictHelper {
List<SchBaseTask> tasks = schBaseTaskMapper.selectList(
new LambdaQueryWrapper<SchBaseTask>()
.in(SchBaseTask::getHandle_class, INBOUND_TASK_CLASSES)
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.in(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode(), TaskStatusEnum.EXECUTING.getCode())
.eq(SchBaseTask::getIs_delete, "0")
);
for (SchBaseTask task : tasks) {
@@ -209,6 +223,7 @@ public class AisleConflictHelper {
/**
* 获取大托盘可用的入库巷道列表(排除有出库任务的巷道)
* 包含 TwoOutTask 和 TwoOutEmpTask
* 同时排除当前批次已通过检查的出库巷道(ThreadLocal)
*/
public List<String> getAvailableLargePalletAisles() {
List<SchBaseTask> tasks = schBaseTaskMapper.selectList(
@@ -225,6 +240,8 @@ public class AisleConflictHelper {
occupiedAisles.add(aisle);
}
}
// 加入当前批次已通过检查的出库巷道
occupiedAisles.addAll(currentBatchOutboundAisles.get());
List<String> availableAisles = new ArrayList<>(LARGE_PALLET_AISLES);
availableAisles.removeAll(occupiedAisles);
@@ -247,6 +264,7 @@ public class AisleConflictHelper {
* @param pointCode1 出库起点(货位位置, 如L1-01-01)
* @param pointCode2 出库终点(输送线点位, 如CK2009)
* @return true: 可以下发, false: 不可下发
* 注意: 通过检查后会自动将巷道记录到当前批次(ThreadLocal),供同批次后续任务检查
*/
public boolean canDispatchOutbound(String pointCode1, String pointCode2) {
// 通过输送线点位判断是否二楼
@@ -260,7 +278,8 @@ public class AisleConflictHelper {
return true;
}
if (hasInboundTask(blockNum)) {
// 检查入库任务: DB(05/06) + 当前批次已通过检查的入库巷道(ThreadLocal)
if (hasInboundTask(blockNum) || currentBatchInboundAisles.get().contains(blockNum)) {
log.info("巷道[{}]有入库任务,出库任务不下发", blockNum);
return false;
}
@@ -272,8 +291,9 @@ public class AisleConflictHelper {
return false;
}
} else if (LARGE_PALLET.equals(palletType)) {
// 获取当前有出库任务的巷道集合
// 获取当前有出库任务的巷道集合: DB(05/06) + 当前批次(ThreadLocal)
Set<String> occupiedAisles = getLargePalletOutboundAisles();
occupiedAisles.addAll(currentBatchOutboundAisles.get());
// 如果当前巷道不在已出库集合中且已有2个巷道在出库则不下发(保留至少一个巷道能入库)
if (!occupiedAisles.contains(blockNum) && occupiedAisles.size() >= 2) {
log.info("大托盘出库巷道数已达[{}]个,巷道[{}]出库任务不下发(保留至少一个巷道入库)", occupiedAisles.size(), blockNum);
@@ -281,6 +301,8 @@ public class AisleConflictHelper {
}
}
// 通过检查,记录当前批次的出库巷道
currentBatchOutboundAisles.get().add(blockNum);
return true;
}
@@ -289,6 +311,7 @@ public class AisleConflictHelper {
* @param pointCode1 入库起点(输送线点位, 如RK2011)
* @param pointCode2 入库终点(货位位置, 如L1-01-01)
* @return true: 可以下发, false: 不可下发
* 注意: 通过检查后会自动将巷道记录到当前批次(ThreadLocal),供同批次后续任务检查
*/
public boolean canDispatchInbound(String pointCode1, String pointCode2) {
// 通过输送线点位判断是否二楼
@@ -304,11 +327,13 @@ public class AisleConflictHelper {
String palletType = getPalletTypeByBlockNum(blockNum);
if (SMALL_PALLET.equals(palletType)) {
if (hasOutboundTask(SMALL_PALLET_AISLE)) {
// 检查出库任务: DB(05/06) + 当前批次已通过检查的出库巷道(ThreadLocal)
if (hasOutboundTask(SMALL_PALLET_AISLE) || currentBatchOutboundAisles.get().contains(SMALL_PALLET_AISLE)) {
log.info("小托盘巷道[{}]有出库任务,入库任务不下发", blockNum);
return false;
}
} else if (LARGE_PALLET.equals(palletType)) {
// getAvailableLargePalletAisles已包含ThreadLocal排除逻辑
List<String> availableAisles = getAvailableLargePalletAisles();
if (!availableAisles.contains(blockNum)) {
log.info("大托盘巷道[{}]有出库任务,入库任务不下发", blockNum);
@@ -316,6 +341,8 @@ public class AisleConflictHelper {
}
}
// 通过检查,记录当前批次的入库巷道
currentBatchInboundAisles.get().add(blockNum);
return true;
}

View File

@@ -1328,16 +1328,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
whereJson.put("material_barcode",containers);
String vehicleCode = whereJson.getString("vehicle_code");
String deviceCode = whereJson.getString("device_code");
if (aisleConflictHelper.isSecondFloor(deviceCode)) {
if(vehicleCode.startsWith("YNX")) {
Integer recommendedBlock = aisleConflictHelper.getRecommendedBlockForInbound(vehicleCode);
if (recommendedBlock == null) {
throw new BadRequestException("当前所有大托盘巷道都有出库任务,无法分配入库货位");
errorMsg.add("当前所有大托盘巷道都有出库任务,无法分配入库货位");
}
whereJson.put("move_block_num", String.valueOf(recommendedBlock));
} else if(vehicleCode.startsWith("YNY")) {
if (aisleConflictHelper.hasOutboundTask("4")) {
throw new BadRequestException("4号巷道有出库任务无法分配小托盘入库货位");
errorMsg.add("4号巷道有出库任务无法分配小托盘入库货位");
}
whereJson.put("move_block_num", "4");
}
@@ -1356,9 +1357,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject jsonTaskParam = new JSONObject();
//创建异常任务去异常入库口
//入库口
jsonTaskParam.put("point_code1", "RK1018");
jsonTaskParam.put("point_code1", "RK2011");
//异常位
jsonTaskParam.put("point_code2", "RK1003");
jsonTaskParam.put("point_code2", "RK2009");
jsonTaskParam.put("vehicle_code", jsonObject.getString("box_no"));
jsonTaskParam.put("vehicle_code2", whereJson.getString("vehicle_code"));
JSONObject request_param = new JSONObject();
@@ -2183,6 +2184,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonObject.put("boxHigh", boxDao.getBox_high());
jsonObject.put("desiccantTemplate", desiccantTemplate);
jsonObject.put("isUncap", isUncap);
jsonObject.put("quanlity_in_box", boxDao.getNum());
jsonObject.put("type", IOSEnum.ACSTOLMS_TYPE.code("木箱装箱开盒盖位"));
jsonObject.put("heightLevel", height);
jsonObject.put("material_barcode", boxDao.getBox_no());

View File

@@ -13,7 +13,7 @@ public enum RegionTypeEnum {
B_HKZC("10", "A2烘烤暂存区", "1587360656355627008"),
C_HKZC("11", "A3烘烤暂存区", "1587360700223852544"),
D_HKZC("12", "A4烘烤暂存区", "1587360741864902656"),
ZC01("13", "主存区", "1582991348217286656"),
ZC01("13", "主存区", "2071537527294136320"),
KTP01("14", "空托盘区", "1582991511971303424"),
ZZ01("15", "中转区", "1582995342054526976"),
LKRK("16", "密集库入库输送线", "1585164789083148288"),

View File

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.AisleConflictHelper;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.AcsUtil;
@@ -136,8 +137,14 @@ public abstract class AbstractAcsTask {
*/
public JSONObject immediateNotifyAcs(String task_id) {
List<AcsTaskDto> singleTaskList = this.schedule();
return immediateNotifyAcsList(singleTaskList);
AisleConflictHelper aisleConflictHelper = SpringContextHolder.getBean(AisleConflictHelper.class);
aisleConflictHelper.clearCurrentBatch();
try {
List<AcsTaskDto> singleTaskList = this.schedule();
return immediateNotifyAcsList(singleTaskList);
} finally {
aisleConflictHelper.clearCurrentBatch();
}
}
public JSONObject immediateNotifyAcsList(List<AcsTaskDto> taskList) {

View File

@@ -115,7 +115,7 @@ export default {
rows: [],
dialogDis: true,
lock: '',
defaultList: ['1582991156504039424', '1645705331612979200']
defaultList: ['1582991156504039424', '2071537527294136320']
}
},
watch: {

View File

@@ -404,7 +404,7 @@ export default {
crudPoint.getRegion().then(res => {
this.regionList = res
})
this.$set(this.query, 'region_id', '1582991348217286656')
this.$set(this.query, 'region_id', '2071537527294136320')
this.crud.toQuery()
},
methods: {

View File

@@ -151,7 +151,7 @@ export default {
opendtlParam: '',
sects: [],
rows: [],
defaultList: ['1582991156504039424', '1582991348217286656']
defaultList: ['1582991156504039424', '2071537527294136320']
}
},
watch: {