fix:出库强制确认插入包装关系记录表、NG卷接口修改

This commit is contained in:
zhouz
2025-07-22 14:57:09 +08:00
parent a366af32dd
commit 741789d332
3 changed files with 113 additions and 94 deletions

View File

@@ -221,7 +221,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
throw new BadRequestException("反馈内容有误," + jsonObject.toString());
}
if (!jsonObject.getBoolean("result")) {
throw new BadRequestException("MES查询出当前子卷【" + whereJson.get("container_name") + "】检测结果不通过无法进行装箱MES反馈内容为" + jsonObject.getString("rtdat") + "");
throw new BadRequestException("MES查询出当前子卷【" + whereJson.get("container_name") + "】检测结果不通过无法进行装箱MES反馈内容为" + jsonObject.getString("rtdat") + "");
}
// if (ivtList.stream().noneMatch(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区")))) {
// throw new BadRequestException("该子卷不在待检区,请检查!");

View File

@@ -172,7 +172,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.map(row -> row.getBigDecimal("plan_qty"))
.reduce(BigDecimal.ZERO, BigDecimal::add)
.doubleValue();
whereJson.put("total_qty",total_qty);
whereJson.put("total_qty", total_qty);
StIvtIostorinv mstDao = updataMst(whereJson, null);
this.save(mstDao);
@@ -287,7 +287,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
StIvtIostorinvdtl dtlDao = dtlDaoList.get(i);
// 调用分配库存公共方法
List<StIvtIostorinvdis> disArr = outBussManageService.divIvt(dtlDao,ivtList);
List<StIvtIostorinvdis> disArr = outBussManageService.divIvt(dtlDao, ivtList);
disDaoList.addAll(disArr);
}
@@ -305,7 +305,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
outBussManageService.lockStruct(paramLockList,jsonLockParam);
outBussManageService.lockStruct(paramLockList, jsonLockParam);
// 插入分配明细
iStIvtIostorinvdisService.saveBatch(disDaoList);
@@ -315,7 +315,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
} else {
throw new BadRequestException("其他出库单当前正在分配货位,请等待几秒再进行操作!");
}
} finally {
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
@@ -347,7 +347,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
List<StIvtIostorinvdtl> dtlDaoList = iStIvtIostorinvdtlService.list(
new QueryWrapper<StIvtIostorinvdtl>().lambda()
.eq(StIvtIostorinvdtl::getIostorinv_id, mstDao.getIostorinv_id())
.eq(StIvtIostorinvdtl::getIostorinvdtl_id,jsonDtl.getString("iostorinvdtl_id"))
.eq(StIvtIostorinvdtl::getIostorinvdtl_id, jsonDtl.getString("iostorinvdtl_id"))
.le(StIvtIostorinvdtl::getBill_status, IOSEnum.BILL_STATUS.code("分配中"))
.gt(StIvtIostorinvdtl::getUnassign_qty, 0)
.orderByAsc(StIvtIostorinvdtl::getSeq_no)
@@ -363,7 +363,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.collect(Collectors.joining("','"));
List<JSONObject> ivtList = WQL.getWO("BST_OUTDIV").addParam("flag", "1").addParam("stor_id", mstDao.getStor_id().toString())
.addParam("box_in", "('"+box_in+"')")
.addParam("box_in", "('" + box_in + "')")
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
if (ObjectUtil.isEmpty(ivtList)) {
@@ -395,7 +395,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
} else {
// 调用分配库存公共方法
disDaoList = outBussManageService.manualDivIvt(dtlDaoList.get(0),ivtList);
disDaoList = outBussManageService.manualDivIvt(dtlDaoList.get(0), ivtList);
}
// 更新仓位
@@ -411,7 +411,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
outBussManageService.lockStruct(lockList,jsonLockParam);
outBussManageService.lockStruct(lockList, jsonLockParam);
// 插入分配明细
iStIvtIostorinvdisService.saveBatch(disDaoList);
@@ -492,7 +492,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
);
/*更新库存*/
outBussManageService.upateIvt(disList,mstDao,IOSEnum.IVT_CHANGE.code("减冻结"));
outBussManageService.upateIvt(disList, mstDao, IOSEnum.IVT_CHANGE.code("减冻结"));
/*
* 更新明细、主单据
@@ -538,7 +538,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
// 未分配重量 = 计划重量 则 明细状态为生成 否则 为分配中
if (dtlDao.getUnassign_qty().doubleValue() == dtlDao.getPlan_qty().doubleValue()){
if (dtlDao.getUnassign_qty().doubleValue() == dtlDao.getPlan_qty().doubleValue()) {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
} else {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
@@ -554,7 +554,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
this.updateMstStatus(mstDao.getIostorinv_id());
/*删除出库任务*/
String task_id_in = disList.stream()
String task_id_in = disList.stream()
.map(row -> row.getString("task_id"))
.distinct()
.collect(Collectors.joining("','"));
@@ -567,7 +567,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject taskParam = new JSONObject();
taskParam.put("is_delete", IOSEnum.IS_NOTANDYES.code(""));
taskService.update(taskParam,"task_id IN ('"+task_id_in+"')");
taskService.update(taskParam, "task_id IN ('" + task_id_in + "')");
/*
* 删除移库单、移库任务
@@ -590,7 +590,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
outBussManageService.lockStruct(paramLockList,jsonLockParam);
outBussManageService.lockStruct(paramLockList, jsonLockParam);
} else {
throw new BadRequestException("其他出库单当前正在取消分配,请等待几秒再进行操作!");
}
@@ -633,8 +633,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 定义一个函数,将需要分组的元素映射到一个建的集合里
Function<JSONObject, List<String>> compositeKey = row ->
Arrays.asList(row.getString("box_length"), row.getString("box_width"),
row.getString("box_high"),row.getString("sale_order_name"),
row.getString("material_id")
row.getString("box_high"), row.getString("sale_order_name"),
row.getString("material_id")
);
Map<List<String>, List<JSONObject>> groupingDisMap =
@@ -642,10 +642,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
for (List<JSONObject> disLikeList : groupingDisMap.values()) {
// 调用任务生成处理
List<JSONObject> taskMangeList = createTaskMange(disLikeList,mstDao.getIostorinv_id().toString());
List<JSONObject> taskMangeList = createTaskMange(disLikeList, mstDao.getIostorinv_id().toString());
// 创建任务并下发一组任务
createTask(taskMangeList,disLikeList,whereJson.getString("point_code"));
createTask(taskMangeList, disLikeList, whereJson.getString("point_code"));
}
// 下发任务:判断当前单据是否有正在执行的的任务
@@ -698,7 +698,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 定义一个函数,将需要分组的元素映射到一个建的集合里
Function<JSONObject, List<String>> compositeKey = row ->
Arrays.asList(row.getString("box_length"), row.getString("box_width"),
row.getString("box_high"),row.getString("sale_order_name"),
row.getString("box_high"), row.getString("sale_order_name"),
row.getString("material_id")
);
@@ -713,10 +713,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
for (List<JSONObject> disLikeList : groupingDisMap.values()) {
// 调用任务生成处理
List<JSONObject> taskMangeList = createTaskMange2(disLikeList,mstDao.getIostorinv_id().toString(),allTransactionConsumer);
List<JSONObject> taskMangeList = createTaskMange2(disLikeList, mstDao.getIostorinv_id().toString(), allTransactionConsumer);
// 创建任务并下发一组任务
createTask2(taskMangeList,disLikeList,whereJson.getString("point_code"),allTransactionConsumer);
createTask2(taskMangeList, disLikeList, whereJson.getString("point_code"), allTransactionConsumer);
allTransactionConsumer.accept("finish");
}
@@ -800,7 +800,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
if (ObjectUtil.isNotEmpty(taskArr)) {
throw new BadRequestException("有任务未完成,不允许强制确认!");
}
// 需要更新的库存集合
List<JSONObject> needUpdateIvtList = new ArrayList<>();
@@ -835,7 +835,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新库存
if (ObjectUtil.isNotEmpty(needUpdateIvtList)) {
outBussManageService.upateIvt(needUpdateIvtList,mstDao,IOSEnum.IVT_CHANGE.code("减库存"));
outBussManageService.upateIvt(needUpdateIvtList, mstDao, IOSEnum.IVT_CHANGE.code("减库存"));
}
// 更新仓位: 主存区仓位不更新
@@ -854,7 +854,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
if (ObjectUtil.isNotEmpty(paramLockList)) {
outBussManageService.lockStruct(paramLockList,jsonLockParam);
outBussManageService.lockStruct(paramLockList, jsonLockParam);
}
// 更新单据
@@ -872,11 +872,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.collect(Collectors.joining("','"));
// 子卷包装集合
List<JSONObject> subList = subTab.query("container_name IN ('" + pcsn_in + "') AND status = '"+SUBEnum.STATUS.code("入库")+"'")
List<JSONObject> subList = subTab.query("container_name IN ('" + pcsn_in + "') AND status = '" + SUBEnum.STATUS.code("入库") + "'")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 子卷包装出入记录集合
List<JSONObject> suRebList = subRecordTab.query("container_name IN ('" + pcsn_in + "') AND status = '"+SUBEnum.STATUS.code("入库")+"' AND bill_code = '"+mstDao.getBill_code()+"'")
List<JSONObject> suRebList = subRecordTab.query("container_name IN ('" + pcsn_in + "') AND status = '" + SUBEnum.STATUS.code("入库") + "' AND bill_code = '" + mstDao.getBill_code() + "'")
.getResultJSONArray(0).toJavaList(JSONObject.class);
for (int i = 0; i < disDaoList.size(); i++) {
@@ -906,14 +906,18 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
throw new BadRequestException("此子卷不存在或不为入库状态:" + disDao.getPcsn());
}
//插入包装关系出入库记录表
jsonSub.put("bill_code", mstDao.getBill_code());
jsonSub.put("bill_id", mstDao.getIostorinv_id());
jsonSub.put("bill_type", mstDao.getBill_type());
jsonSub.put("io_type", IOSEnum.IO_TYPE.code("出库"));
jsonSub.put("insert_time", DateUtil.now());
jsonSub.put("record_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId());
subRecordTab.insert(jsonSub);
JSONObject out_sub = subRecordTab.query("container_name = '" + disDao.getPcsn() + "' AND status = '" + SUBEnum.STATUS.code("出库") + "' AND bill_code = '" + mstDao.getBill_code() + "'").uniqueResult(0);
//存在任务正常完成,人工点击强制完成的情况
if (ObjectUtil.isEmpty(out_sub)) {
//插入包装关系出入库记录表
jsonSub.put("bill_code", mstDao.getBill_code());
jsonSub.put("bill_id", mstDao.getIostorinv_id());
jsonSub.put("bill_type", mstDao.getBill_type());
jsonSub.put("io_type", IOSEnum.IO_TYPE.code("出库"));
jsonSub.put("insert_time", DateUtil.now());
jsonSub.put("record_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId());
subRecordTab.insert(jsonSub);
}
}
/*
@@ -927,7 +931,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonSubParam.put("status", SUBEnum.STATUS.code("出库"));
}
subTab.update(jsonSubParam,"container_name IN ('"+pcsn_in+"')");
subTab.update(jsonSubParam, "container_name IN ('" + pcsn_in + "')");
/*
* 更新任务为完成
@@ -935,13 +939,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskService.update(jsonTaskParam,"task_id IN ('"+String.join("','", needUpdateTaskList)+"')");
taskService.update(jsonTaskParam, "task_id IN ('" + String.join("','", needUpdateTaskList) + "')");
/*
* 如果是调拨出库则生成调拨入库单
*/
if (mstDao.getBill_type().equals(IOSEnum.OUT_TYPE.code("调拨出库"))) {
createOutIos(disDaoList,mstDao);
createOutIos(disDaoList, mstDao);
}
/*
@@ -990,7 +994,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.uniqueResult(0);
if (jsonTask == null) {
throw new BadRequestException("查询不到操作的任务记录!"+whereJson.getString("task_id"));
throw new BadRequestException("查询不到操作的任务记录!" + whereJson.getString("task_id"));
}
// 查询分配明细
@@ -1022,7 +1026,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
needUpdateIvtList.add(jsonIvt);
}
outBussManageService.upateIvt(needUpdateIvtList,mstDao,IOSEnum.IVT_CHANGE.code("减库存"));
outBussManageService.upateIvt(needUpdateIvtList, mstDao, IOSEnum.IVT_CHANGE.code("减库存"));
// 更新仓位
List<String> paramLockList = new ArrayList<>();
@@ -1036,7 +1040,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
paramLockList.add(disDao.getStruct_code());
outBussManageService.lockStruct(paramLockList,jsonLockParam);
outBussManageService.lockStruct(paramLockList, jsonLockParam);
if (IOSEnum.OUT_TYPE.code("改切出库").equals(mstDao.getBill_type()) || IOSEnum.OUT_TYPE.code("返检出库").equals(mstDao.getBill_type())) {
HashMap<String, String> map = new HashMap<>();
@@ -1119,7 +1123,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
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(""));
taskParam.put("vehicle_code", IOSEnum.IS_NOTANDYES.code(""));
TwoExcepionalMoveTask taskBean = new TwoExcepionalMoveTask();
String task_id = taskBean.createTask(taskParam);
@@ -1130,8 +1134,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 创建调拨入库单
*
* @param disDaoList出库分配明细集合
* @param mstDao 出库单据对象
* @param mstDao 出库单据对象
*/
private void createOutIos(List<StIvtIostorinvdis> disDaoList, StIvtIostorinv mstDao) {
// 仓库表
@@ -1164,14 +1169,14 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.map(row -> BigDecimal.valueOf(row.getPlan_qty().doubleValue()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
paramMap.put("stor_id",jsonAttr.getString("stor_id"));
paramMap.put("bill_status",IOSEnum.BILL_STATUS.code("分配中"));
paramMap.put("total_qty",total_qty);
paramMap.put("detail_count",disDaoList.size());
paramMap.put("bill_type",IOSEnum.IN_TYPE.code("调拨入库"));
paramMap.put("biz_date",DateUtil.today());
paramMap.put("out_stor_id",mstDao.getStor_id());
paramMap.put("source_id",dtlDao.getVbeln());
paramMap.put("stor_id", jsonAttr.getString("stor_id"));
paramMap.put("bill_status", IOSEnum.BILL_STATUS.code("分配中"));
paramMap.put("total_qty", total_qty);
paramMap.put("detail_count", disDaoList.size());
paramMap.put("bill_type", IOSEnum.IN_TYPE.code("调拨入库"));
paramMap.put("biz_date", DateUtil.today());
paramMap.put("out_stor_id", mstDao.getStor_id());
paramMap.put("source_id", dtlDao.getVbeln());
paramMap.put("remark", "");
// 明细数据
@@ -1214,7 +1219,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
tableData.add(jsonDtl);
}
paramMap.put("tableData",tableData);
paramMap.put("tableData", tableData);
// 调用入库服务插入入库
iStIvtIostorinvService.insertMst(paramMap);
@@ -1222,16 +1227,17 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新子卷包装关系为包装
JSONObject jsonSub = new JSONObject();
jsonSub.put("status", SUBEnum.STATUS.code("包装"));
subTab.update(jsonSub,"container_name IN ('" + pcsn_in + "')");
subTab.update(jsonSub, "container_name IN ('" + pcsn_in + "')");
}
/**
* 生成任务前处理
* @param disLikeList 相同规格木箱、订单、物料的分配明细集合
*
* @param disLikeList 相同规格木箱、订单、物料的分配明细集合
* @param iostorinv_id 单据标识
* @return List<JSONObject> 生成任务的集合
*/
private List<JSONObject> createTaskMange(List<JSONObject> disLikeList, String iostorinv_id) {
private List<JSONObject> createTaskMange(List<JSONObject> disLikeList, String iostorinv_id) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
@@ -1267,7 +1273,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 判断是深位还是浅位
if (jsonAttr.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
// 深位:判断对应浅位是否阻挡
JSONObject jsonBoxStop = ifBoxStop(jsonAttr,attrRowList,iostorinv_id);
JSONObject jsonBoxStop = ifBoxStop(jsonAttr, attrRowList, iostorinv_id);
if (ObjectUtil.isNotEmpty(jsonBoxStop)) {
// 加入需要移库的集合
@@ -1286,11 +1292,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 生成任务前处理
* @param disLikeList 相同规格木箱、订单、物料的分配明细集合
*
* @param disLikeList 相同规格木箱、订单、物料的分配明细集合
* @param iostorinv_id 单据标识
* @return List<JSONObject> 生成任务的集合
*/
private List<JSONObject> createTaskMange2(List<JSONObject> disLikeList, String iostorinv_id, Consumer<String> allTransactionConsumer) {
private List<JSONObject> createTaskMange2(List<JSONObject> disLikeList, String iostorinv_id, Consumer<String> allTransactionConsumer) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
@@ -1326,7 +1333,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 判断是深位还是浅位
if (jsonAttr.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
// 深位:判断对应浅位是否阻挡
JSONObject jsonBoxStop = ifBoxStop2(jsonAttr,attrRowList,iostorinv_id,allTransactionConsumer);
JSONObject jsonBoxStop = ifBoxStop2(jsonAttr, attrRowList, iostorinv_id, allTransactionConsumer);
if (ObjectUtil.isNotEmpty(jsonBoxStop)) {
// 加入需要移库的集合
@@ -1338,15 +1345,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
// 创建移库单下发移库任务
outBussManageService.createMove2(needMoveAttrList,allTransactionConsumer);
outBussManageService.createMove2(needMoveAttrList, allTransactionConsumer);
return needCreateAttrList;
}
/**
* 判断是否阻挡
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
*
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
* @param iostorinv_id 单据标识
* @return JSONObject 需要移库的仓位
*/
@@ -1437,7 +1445,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 查询物料id
StIvtIostorinvdis disDao = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成"))
.ne(StIvtIostorinvdis::getWork_status, IOSEnum.BILL_STATUS.code("完成"))
.eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code"))
).get(0);
@@ -1449,7 +1457,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonVeExt = extTab.query("pcsn = '" + jsonLow.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonLow.getString("storagevehicle_code"));
throw new BadRequestException("此木箱没有绑定托盘号!" + jsonLow.getString("storagevehicle_code"));
}
// 生成任务
@@ -1471,7 +1479,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
attrTab.update(jsonLow);
// 更新移入货位为出库异常货位
jsonMove.put("lock_type",IOSEnum.LOCK_TYPE.code("出库异常锁"));
jsonMove.put("lock_type", IOSEnum.LOCK_TYPE.code("出库异常锁"));
jsonLow.put("task_code", task_id);
attrTab.update(jsonMove);
}
@@ -1484,8 +1492,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 判断是否阻挡
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
*
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
* @param iostorinv_id 单据标识
* @return JSONObject 需要移库的仓位
*/
@@ -1578,7 +1587,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 查询物料id
StIvtIostorinvdis disDao = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成"))
.ne(StIvtIostorinvdis::getWork_status, IOSEnum.BILL_STATUS.code("完成"))
.eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code"))
).get(0);
@@ -1590,7 +1599,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonVeExt = extTab.query("pcsn = '" + jsonLow.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonLow.getString("storagevehicle_code"));
throw new BadRequestException("此木箱没有绑定托盘号!" + jsonLow.getString("storagevehicle_code"));
}
// 生成任务
@@ -1612,7 +1621,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
attrTab.update(jsonLow);
// 更新移入货位为出库异常货位
jsonMove.put("lock_type",IOSEnum.LOCK_TYPE.code("出库异常锁"));
jsonMove.put("lock_type", IOSEnum.LOCK_TYPE.code("出库异常锁"));
jsonMove.put("inv_code", jsonLow.getString("storagevehicle_code"));
jsonLow.put("task_code", task_id);
attrTab.update(jsonMove);
@@ -1625,11 +1634,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 创建任务
*
* @param taskMangeList仓位集合
* @param disLikeList分配明细集合
* @param point_code 终点
* @param point_code 终点
*/
private void createTask(List<JSONObject> taskMangeList,List<JSONObject> disLikeList, String point_code) {
private void createTask(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code) {
// 任务表
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
// 点位表
@@ -1669,9 +1679,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 确定终点: 根据仓位所在排确定终点
String end_device_code = "";
if("1".equals(flag)){
if ("1".equals(flag)) {
end_device_code = IsEndCode2(json);
}else{
} else {
end_device_code = IsEndCode(json);
}
@@ -1691,7 +1701,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonTask = taskList.stream()
.filter(row -> row.getString("task_id").equals(json.getString("task_code")))
.collect(Collectors.toList()).get(0);
// 完成
if (jsonTask.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) {
@@ -1706,7 +1716,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
iStIvtIostorinvdisService.updateBatchById(disDaoList);
// 标记任务
jsonTask.put("is_auto_issue",IOSEnum.IS_SEND.code(""));
jsonTask.put("is_auto_issue", IOSEnum.IS_SEND.code(""));
taskService.update(jsonTask);
continue;
}
@@ -1716,7 +1726,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
throw new BadRequestException("此木箱没有绑定托盘号!" + json.getString("storagevehicle_code"));
}
// 生成任务
@@ -1739,8 +1749,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonTaskParam.put("table_fk", disDaoList.get(0).getIostorinv_id().toString());
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("")) ||
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("")))
{
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("")));
} else {
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("")));
@@ -1753,7 +1762,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新分配明细
JSONObject jsonPoint = schBasePointService.query("point_code = '" + end_device_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonPoint)) {
throw new BadRequestException("出库点位不存在:"+end_device_code);
throw new BadRequestException("出库点位不存在:" + end_device_code);
}
disDaoList.forEach(row -> {
@@ -1767,11 +1776,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 创建任务
*
* @param taskMangeList仓位集合
* @param disLikeList分配明细集合
* @param point_code 终点
* @param point_code 终点
*/
private void createTask2(List<JSONObject> taskMangeList,List<JSONObject> disLikeList, String point_code, Consumer<String> allTransactionConsumer) {
private void createTask2(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code, Consumer<String> allTransactionConsumer) {
// 任务表
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
// 点位表
@@ -1814,9 +1824,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 确定终点: 根据仓位所在排确定终点
String end_device_code = "";
if("1".equals(flag)){
if ("1".equals(flag)) {
end_device_code = IsEndCode2(json);
}else{
} else {
end_device_code = IsEndCode(json);
}
@@ -1852,7 +1862,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
iStIvtIostorinvdisService.updateBatchById(disDaoList);
// 标记任务
jsonTask.put("is_auto_issue",IOSEnum.IS_SEND.code(""));
jsonTask.put("is_auto_issue", IOSEnum.IS_SEND.code(""));
taskService.update(jsonTask);
continue;
}
@@ -1862,7 +1872,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
throw new BadRequestException("此木箱没有绑定托盘号!" + json.getString("storagevehicle_code"));
}
// 生成任务
@@ -1885,8 +1895,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonTaskParam.put("table_fk", disDaoList.get(0).getIostorinv_id().toString());
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("")) ||
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("")))
{
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("")));
} else {
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("")));
@@ -1899,7 +1908,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新分配明细
JSONObject jsonPoint = schBasePointService.query("point_code = '" + end_device_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonPoint)) {
throw new BadRequestException("出库点位不存在:"+end_device_code);
throw new BadRequestException("出库点位不存在:" + end_device_code);
}
disDaoList.forEach(row -> {
@@ -1913,6 +1922,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 确定终点:根据仓位所在排确定终点
*
* @param structDao仓位对象
* @return 终点
*/
@@ -1926,6 +1936,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 更新异常货位
*
* @param disDaoList所有分配明细集合
*/
private void UpdateExceptional(List<StIvtIostorinvdis> disDaoList) {
@@ -1969,11 +1980,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
jsonUpdate.put("task_code", "");
attrTab.update(jsonUpdate,"struct_code IN ('"+String.join("','",structCodeInList)+"')");
attrTab.update(jsonUpdate, "struct_code IN ('" + String.join("','", structCodeInList) + "')");
}
/**
* 更新主表状态
*
* @param iostorinv_id 主表标识
*/
public void updateMstStatus(Long iostorinv_id) {
@@ -2105,6 +2117,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 判断是否有异常货位 - 10
*
* @param disDaoList - 分配明细集合
* @return 仓位
*/
@@ -2115,7 +2128,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String result = "";
// 查找库内是否有异常货位
List<JSONObject> attrExceptionList = attrTab
.query("sect_code = 'BZC01' AND is_delete = '0' AND is_used = '1' and lock_type = '" + IOSEnum.LOCK_TYPE.code("出库异常锁") + "' and zdepth = '"+IOSEnum.ZDEPTH_STRUCT.code("")+"'")
.query("sect_code = 'BZC01' AND is_delete = '0' AND is_used = '1' and lock_type = '" + IOSEnum.LOCK_TYPE.code("出库异常锁") + "' and zdepth = '" + IOSEnum.ZDEPTH_STRUCT.code("") + "'")
.getResultJSONArray(0).toJavaList(JSONObject.class);
if (ObjectUtil.isEmpty(attrExceptionList)) {
@@ -2156,7 +2169,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(expJson)) {
return "货位【"+jsonObject.getString("struct_code")+"'】 对应的浅货位有出库异常任务,请检查!";
return "货位【" + jsonObject.getString("struct_code") + "'】 对应的浅货位有出库异常任务,请检查!";
}
// 查询对应的异常任务
@@ -2164,7 +2177,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.query("handle_class = '" + TwoOutExceptionalTask.class.getName() + "' AND is_delete = '0' and point_code2 = '" + expJson.getString("struct_code") + "' ORDER BY create_time DESC")
.uniqueResult(0);
result = "请先下发木箱号为【"+jsonTask.getString("vehicle_code")+"】的出库任务!";
result = "请先下发木箱号为【" + jsonTask.getString("vehicle_code") + "】的出库任务!";
}
return result;
@@ -2172,6 +2185,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/**
* 出库下发任务前校验:校验木箱类型数据是否都已经维护
*
* @param iostorinv_id 主表id
*/
private void boxCheck(String iostorinv_id) {
@@ -2219,7 +2233,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.map(MdpbBoxtype::getBox_type)
.collect(Collectors.joining("','"));
throw new BadRequestException("请先维护规格类型为【"+message+"】的木箱规格类型信息!");
throw new BadRequestException("请先维护规格类型为【" + message + "】的木箱规格类型信息!");
}
}
}

View File

@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -1252,6 +1253,10 @@ public class LmsToMesServiceImpl implements LmsToMesService {
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
resultMsg = resultMsg
.replace("\\\"", "\"") // 移除字符串转义
.replace("\"[", "[") // 修复数组开头
.replace("]\"", "]"); // 修复数组结尾
result = JSONObject.parseObject(resultMsg);
log.info("GetChildWeightIsSamplePDA接口输出参数为-------------------" + result.toString());
@@ -1259,7 +1264,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
if ("E".equals(RTYPE)) {
throw new BadRequestException(result.getString("RTMSG"));
}
JSONObject rtdat = result.getJSONObject("RTDAT");
JSONObject rtdat = result.getJSONArray("RTDAT").getJSONObject(0);
result.put("result", false);
result.put("rtdat", rtdat);
if (ObjectUtil.isNotEmpty(rtdat.getString("IsSampleTest")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleCount")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleTestResult"))) {