rev:出库浅货位阻挡没库存问题

This commit is contained in:
2025-02-06 14:12:31 +08:00
parent 3a312c34a3
commit 30c9f001c2
4 changed files with 72 additions and 11 deletions

View File

@@ -127,6 +127,11 @@ public enum IOSEnum {
"子卷下线行架任务", "16","退货入库行架任务", "14","RGV输送任务", "15",
"木箱堆叠行架任务", "17"
)),
// acs反馈异常出库
ACS_EXCEPTIONAL_TYPE(MapOf.of("入库满入", "1","浅货位有货(入库)", "4",
"出库空出", "2","浅货位有货(出库)", "3"
)),
;
private Map<String, String> code;

View File

@@ -138,4 +138,11 @@ public interface IStIvtIostorinvOutService extends IService<StIvtIostorinv> {
* @param whereJson: 任务对象
*/
void finishTask(JSONObject whereJson);
/**
* 出库浅货位有货阻挡异常处理
* @param whereJson /
* @return String 任务标识
*/
String taskExceptionalOut(JSONObject whereJson);
}

View File

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
import org.nl.b_lms.sch.tasks.TwoExcepionalMoveTask;
import org.nl.b_lms.sch.tasks.TwoOutExceptionalTask;
import org.nl.b_lms.sch.tasks.TwoOutTask;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
@@ -1051,6 +1052,45 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
}
@Override
@Transactional
public String taskExceptionalOut(JSONObject jsonObject) {
// 任务表
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("ST_IVT_StructAttr");
JSONObject jsonTask = taskService.query("task_code = '" + jsonObject.getString("task_code") + "'").uniqueResult(0);
// 找出对应的浅货位
JSONObject jsonAttrOrder = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
JSONObject jsonAttrNow = attrTab.query("row_num = '" + jsonAttrOrder.getString("row_num") + "' AND layer_num = '" + jsonAttrOrder.getString("layer_num") + "' AND col_num = '" + jsonAttrOrder.getString("col_num") + "' and zdepth = '" + IOSEnum.ZDEPTH_STRUCT.code("") + "' and stor_id = '" + jsonAttrOrder.getString("stor_id") + "' and is_delete = '0' and is_used = '1'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonAttrNow)) {
throw new BadRequestException("对应浅货位不存在或未启用!" + jsonTask.getString("point_code1"));
}
// 锁住仓位
jsonAttrNow.put("lock_type", IOSEnum.LOCK_TYPE.code("货位异常出库锁"));
attrTab.update(jsonAttrNow);
// 生成任务
JSONObject taskParam = new JSONObject();
taskParam.put("start_device_code", jsonAttrNow.getString("struct_code"));
taskParam.put("next_device_code", IOSEnum.OUT_POINT.code(jsonAttrNow.getString("row_num")));
taskParam.put("task_type", "010712");
taskParam.put("car_no", "此货位LMS系统未有库存请待出至【CK2001】点位后确认实物并重新手工入回库!");
taskParam.put("vehicle_code",IOSEnum.IS_NOTANDYES.code(""));
TwoExcepionalMoveTask taskBean = new TwoExcepionalMoveTask();
String task_id = taskBean.createTask(taskParam);
taskBean.immediateNotifyAcs(null);
return task_id;
}
/**
* 创建调拨入库单
* @param disDaoList出库分配明细集合

View File

@@ -35,6 +35,7 @@ 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.enums.TASKEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.*;
import org.nl.common.enums.NoticeTypeEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
@@ -162,6 +163,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private ProductOutTwoService productOutTwoService;
@Autowired
private IStIvtIostorinvOutService iStIvtIostorinvOutService;
/**
* task_id任务标识
@@ -2260,40 +2264,40 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 判断任务类型
if (taskDao.getTask_type().equals(TASKEnum.BOX_TYPE.code("木箱入库"))) {
// 木箱入库:满入、浅货位有货-放货时
if (type.equals("1") || type.equals("4")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("入库满入")) || type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(入库)"))) {
point_code = inBoxManageService.taskExceptional(whereJson);
}
} else if (taskDao.getTask_type().equals(TASKEnum.BOX_TYPE.code("木箱出库"))) {
// 木箱出库:空出、浅货位有货-取货时
if (type.equals("2")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("出库空出"))) {
point_code = outBoxManageService.taskExceptional(whereJson);
}
if (type.equals("3")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(出库)"))) {
String task_id = outBoxManageService.taskExceptionalOut(whereJson);
result.put("task_id", task_id);
}
} else if (taskDao.getTask_type().equals(TASKEnum.VEHICLE_TYPE.code("托盘入库"))) {
// 托盘入库:满入、浅货位有货-放货时
if (type.equals("1") || type.equals("4")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("入库满入")) || type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(入库)"))) {
point_code = inVehicleManageService.taskExceptional(whereJson);
}
} else if (taskDao.getTask_type().equals(TASKEnum.VEHICLE_TYPE.code("托盘出库"))) {
// 托盘出库:空出、浅货位有货-取货时
if (type.equals("2")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("出库空出"))) {
point_code = outVehicleManageService.taskExceptional(whereJson);
}
if (type.equals("3")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(出库)"))) {
String task_id = outVehicleManageService.taskExceptionalOut(whereJson);
result.put("task_id", task_id);
}
} else if (taskDao.getTask_type().equals(TASKEnum.PROUD_TYPE.code("成品入库"))) {
// 成品入库:满入、浅货位有货-放货时
if (type.equals("1") || type.equals("4")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("入库满入")) || type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(入库)"))) {
point_code = inBussManageService.taskExceptional(whereJson);
}
} else if (taskDao.getTask_type().equals(TASKEnum.PROUD_TYPE.code("成品出库"))) {
// 成品出库:空出
if (type.equals("2")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("出库空出"))) {
taskDao.setRemark("【空出】请检查货位库存!");
taskDao.setCar_no("【空出】请检查货位库存!");
taskService.updateById(taskDao);
@@ -2304,11 +2308,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("deviceApplyExceptional返回参数---------------------------------------------" + result.toString());
return result;
}
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(出库)"))) {
// 浅货位阻挡-取货时
String task_id = iStIvtIostorinvOutService.taskExceptionalOut(whereJson);
result.put("task_id", task_id);
}
} else if (taskDao.getTask_type().equals(TASKEnum.PROUD_TYPE.code("立库转库"))) {
// 立库转库:满入、浅货位有货-放货时
if (type.equals("1") || type.equals("4")) {
if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("入库满入")) || type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(入库)"))) {
point_code = outBussManageService.taskExceptional(whereJson);
} else if (type.equals("2")) {
} else if (type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("出库空出"))) {
// 立库转库空出
taskDao.setRemark("【空出】请检查货位库存!");
taskDao.setCar_no("【空出】请检查货位库存!");
@@ -2322,7 +2331,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
}
if (!type.equals("3") && ObjectUtil.isEmpty(point_code)) {
if (!type.equals(IOSEnum.ACS_EXCEPTIONAL_TYPE.code("浅货位有货(出库)")) && ObjectUtil.isEmpty(point_code)) {
throw new BadRequestException("立库异常任务处理失败,仓位为空!");
}