@ -44,14 +44,16 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.InventoryQueryParam
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 ;
import org.nl.b_lms.storage_manage.md.service.MdPbMeasureunitService ;
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr ;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr ;
import org.nl.b_lms.storage_manage.st.service.StIvtBsrealstorattrService ;
import org.nl.b_lms.storage_manage.st.service.StIvtSectattrService ;
import org.nl.b_lms.storage_manage.st.service.StIvtStructattrService ;
import org.nl.b_lms.storage_manage.st.service.StIvtStructivtService ;
import org.nl.common.utils.CodeUtil ;
import org.nl.common.utils.IdUtil ;
import org.nl.common.utils.SecurityUtils ;
import org.nl.modules.common.exception.BadRequestException ;
import org.nl.common.utils.CodeUtil ;
import org.nl.modules.wql.WQL ;
import org.nl.modules.wql.core.bean.WQLObject ;
import org.nl.system.service.param.ISysParamService ;
@ -72,7 +74,6 @@ import java.util.*;
import java.util.concurrent.TimeUnit ;
import java.util.function.Consumer ;
import java.util.function.Function ;
import java.util.stream.Collector ;
import java.util.stream.Collectors ;
/ * *
@ -156,6 +157,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
private RedissonClient redissonClient ;
@Autowired
private StIvtStructivtService structivtService ;
/** 仓位 */
@Autowired
private StIvtStructattrService structattrService ;
@Autowired
@ -168,10 +170,17 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
private StIvtSectattrService sectattrService ;
@Autowired
private ISysParamService paramService ;
/** 载具扩展属性表 */
@Autowired
private IMdPbStoragevehicleextService mdPbStoragevehicleextService ;
@Autowired
private IschBasePointService ischBasePointService ;
@Autowired
private TwoOutExceptionalTask twoOutExceptionalTask ;
/** 事物库区 */
@Autowired
private StIvtBsrealstorattrService bsrealstorattrService ;
@Override
@Transactional
public String insertMst ( JSONObject whereJson ) {
@ -277,6 +286,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ *
* 查询生成和未分配完的明细 , 条件 : 明细状态小于等于分配中 、 未分配数大于0
* 全部分配根据单据号去查 , 否者通过明细id或者木箱号获取
* /
// 查询条件
LambdaQueryWrapper < StIvtIostorinvdtl > dtlQuery = new QueryWrapper < StIvtIostorinvdtl > ( ) . lambda ( ) ;
@ -1138,16 +1148,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 创建调拨入库单
*
* @param disDaoList : 出库分配明细集合
* @param mstDao : 出库单据对象
* /
private void createOutIos ( List < StIvtIostorinvdis > disDaoList , StIvtIostorinv mstDao ) {
// 仓库表
WQLObject attrTab = WQLObject . getWQLObject ( "st_ivt_bsrealstorattr" ) ;
// 子卷包装表
WQLObject subTab = WQLObject . getWQLObject ( "pdm_bi_subpackagerelation" ) ;
// 插入调拨入库单参数
Map < String , Object > paramMap = new HashMap < > ( ) ;
@ -1155,9 +1160,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
* 准备数据
* /
// 查询移入仓库
JSONObject jsonAttr = attrTab . query ( "stor_id = '" + mstDao . getOut_stor_id ( ) . toString ( ) + "'" ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( jsonAttr ) ) {
StIvtBsrealstorattr ivtBsrealstorattr = bsrealstorattrService . getById ( mstDao . getOut_stor_id ( ) ) ;
if ( ObjectUtil . isEmpty ( ivtBsrealstorattr ) ) {
throw new BadRequestException ( "未查询到对应的移入仓库信息!" ) ;
}
@ -1169,10 +1173,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 计算总数量
BigDecimal total_qty = disDaoList . stream ( )
. map ( row - > BigDecimal . valueOf ( row . getPlan_qty ( ) . doubleValue ( ) ) )
. map ( StIvtIostorinvdis : : getPlan_qty )
. reduce ( BigDecimal . ZERO , BigDecimal : : add ) ;
paramMap . put ( "stor_id" , jsonAttr . getString ( "stor_id" ) ) ;
paramMap . put ( "stor_id" , ivtBsrealstorattr . getStor_id ( ) ) ;
paramMap . put ( "bill_status" , IOSEnum . BILL_STATUS . code ( "分配中" ) ) ;
paramMap . put ( "total_qty" , total_qty ) ;
paramMap . put ( "detail_count" , disDaoList . size ( ) ) ;
@ -1183,12 +1187,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
paramMap . put ( "remark" , "" ) ;
// 明细数据
String pcsn_in = disDaoList . stream ( )
List < String > pcsns = disDaoList . stream ( )
. map ( StIvtIostorinvdis : : getPcsn )
. collect ( Collectors . joining ( "','" ) ) ;
. collect ( Collectors . toList ( ) ) ;
List < JSONObject > subList = subTab . query ( "container_name IN ('" + pcsn_in + "')" )
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < JSONObject > subList = subpackagerelationService . getSubPackageInfoBySubRolls ( pcsns ) ;
// 明细集合
ArrayList < LinkedHashMap > tableData = new ArrayList < > ( ) ;
@ -1228,13 +1231,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
iStIvtIostorinvService . insertMst ( paramMap ) ;
// 更新子卷包装关系为包装
JSONObject jsonSub = new JSONObject ( ) ;
jsonSub . put ( "status" , SUBEnum . STATUS . code ( "包装" ) ) ;
subTab . update ( jsonSub , "container_name IN ('" + pcsn_in + "')" ) ;
LambdaUpdateWrapper < PdmBiSubpackagerelation > subLam = new LambdaUpdateWrapper < > ( ) ;
subLam . set ( PdmBiSubpackagerelation : : getStatus , SUBEnum . STATUS . code ( "包装" ) )
. in ( PdmBiSubpackagerelation : : getContainer_name , pcsns ) ;
subpackagerelationService . update ( subLam ) ;
}
/ * *
* 生成任务前处理
*
* @param disLikeList : 相同规格木箱 、 订单 、 物料的分配明细集合
* @param iostorinv_id : 单据标识
* @return List < JSONObject > 生成任务的集合
@ -1294,6 +1299,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 生成任务前处理
*
* @param disLikeList : 相同规格木箱 、 订单 、 物料的分配明细集合
* @param iostorinv_id : 单据标识
* @return List < JSONObject > 生成任务的集合
@ -1348,6 +1354,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 判断是否阻挡
*
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
* @param iostorinv_id 单据标识
@ -1487,21 +1494,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 判断是否阻挡
*
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
* @param iostorinv_id 单据标识
* @return JSONObject 需要移库的仓位
* /
private JSONObject ifBoxStop2 ( JSONObject jsonAttr , List < JSONObject > attrRowList , String iostorinv_id , Consumer < String > allTransactionConsumer ) {
// 仓位表
WQLObject attrTab = WQLObject . getWQLObject ( "st_ivt_structattr" ) ;
// 子卷包装关系表
WQLObject subTab = WQLObject . getWQLObject ( "pdm_bi_subpackagerelation" ) ;
// 任务表
WQLObject taskService = WQLObject . getWQLObject ( "sch_base_task" ) ;
// 载具扩展属性表
WQLObject extTab = WQLObject . getWQLObject ( "md_pb_storagevehicleext" ) ;
JSONObject result = new JSONObject ( ) ;
// 获取要出库仓位所对应的浅货位
@ -1546,7 +1545,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
taskLam . eq ( SchBaseTask : : getVehicle_code , jsonLow . getString ( "storagevehicle_code" ) )
. ne ( SchBaseTask : : getTask_status , "07" )
. eq ( SchBaseTask : : getIs_delete , "0" ) ;
JSONObject jsonTask = ischBaseTaskService . getTaskObject ( taskLam ) ;
JSONObject jsonTask = ischBaseTaskService . getTaskObject ( taskLam , false ) ;
if ( ObjectUtil . isNotEmpty ( jsonTask ) ) {
flag = false ;
}
@ -1593,8 +1592,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonMove = twoInBussManageService . getOneStruct ( moveParam ) ;
// 查询木箱对应的载具
JSONObject jsonVeExt = extTab . query ( "pcsn = '" + jsonLow . getString ( "storagevehicle_code" ) + "'" )
. uniqueResult ( 0 ) ;
JSONObject jsonVeExt = mdPbStoragevehicleextService . getOneByPcsnToObject ( jsonLow . getString ( "storagevehicle_code" ) ) ;
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
throw new BadRequestException ( "此木箱没有绑定托盘号!" + jsonLow . getString ( "storagevehicle_code" ) ) ;
}
@ -1608,20 +1606,19 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonTaskParam . put ( "vehicle_code2" , jsonVeExt . getString ( "storagevehicle_code" ) ) ;
jsonTaskParam . put ( "table_fk" , iostorinv_id ) ;
TwoOutExceptionalTask taskBean = new TwoOutExceptionalTask ( ) ;
String task_id = taskBean . createTask ( jsonTaskParam ) ;
taskBean . immediateNotifyAcs ( task_id ) ;
String task_id = twoOutExceptionalTask . createTask ( jsonTaskParam ) ;
twoOutExceptionalTask . immediateNotifyAcs ( task_id ) ;
// 锁定:标记货位为异常并生成异常移库任务
jsonLow . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库异常锁" ) ) ;
jsonLow . put ( "task_code" , task_id ) ;
attrTab . update ( jsonLow ) ;
structattrService . updateById ( jsonLow . toJavaObject ( StIvtStructattr . class ) ) ;
// 更新移入货位为出库异常货位
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 ) ;
jsonMove . put ( "task_code" , task_id ) ;
structattrService . updateById ( jsonMove . toJavaObject ( StIvtStructattr . class ) ) ;
}
}
@ -1631,6 +1628,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 创建任务
*
* @param taskMangeList : 仓位集合
* @param disLikeList : 分配明细集合
* @param point_code : 终点
@ -1745,8 +1743,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 ( "深" ) ) ) ;
@ -1773,6 +1770,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 创建任务 ( 通过仓位集合创建 )
* < p > 出库口 : IOSEnum # OUT_POINT / 2 < / p >
* @see IOSEnum # OUT_POINT2
* @see IOSEnum # OUT_POINT
* @param taskMangeList : 仓位集合
* @param disLikeList : 分配明细集合
* @param point_code : 终点
@ -1793,7 +1793,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String start_device_code = "" ;
// 是否自动下发
String is_auto_issue = IOSEnum . IS_SEND . code ( "是" ) ;
// 堆垛机出库口是否缓存货位(1个或者两个)
Param oneOrTwoStruct = paramService . findByCode ( "one_or_two_struct" ) ;
String flag = "0" ;
if ( ObjectUtil . isNotEmpty ( oneOrTwoStruct ) ) {
@ -1881,8 +1881,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
//设置单据类型,下发rgv任务时,终点不同
jsonTaskParam . put ( "bill_type" , mst . getBill_type ( ) ) ;
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 ( "深" ) ) ) ;
@ -1909,6 +1908,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 确定终点 : 根据仓位所在排确定终点
*
* @param structDao : 仓位对象
* @return 终点
* /
@ -1922,21 +1922,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 更新异常货位
*
* @param disDaoList : 所有分配明细集合
* /
private void UpdateExceptional ( List < StIvtIostorinvdis > disDaoList ) {
// 仓位表
WQLObject attrTab = WQLObject . getWQLObject ( "st_ivt_structattr" ) ;
// 任务表
WQLObject taskService = WQLObject . getWQLObject ( "sch_base_task" ) ;
// 获取仓位集合
String structCodeIn = disDaoList . stream ( )
List < String > structCodes = disDaoList . stream ( )
. map ( StIvtIostorinvdis : : getStruct_code )
. distinct ( ) . collect ( Collectors . joining ( "','" ) ) ;
List < JSONObject > attrList = attrTab . query ( "struct_code IN ('" + structCodeIn + "')" )
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
. distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < JSONObject > attrList = structattrService . getAttributeByCodesToObject ( structCodes ) ;
// 过滤异常货位
List < JSONObject > attrExcepList = attrList . stream ( )
@ -1944,32 +1938,31 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
. collect ( Collectors . toList ( ) ) ;
// 找所有异常任务
String taskCodeIn = attrExcepList . stream ( )
List < String > taskIds = attrExcepList . stream ( )
. map ( row - > row . getString ( "task_code" ) )
. distinct ( ) . collect ( Collectors . joining ( "','" ) ) ;
. distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < JSONObject > taskList = taskService . query ( "task_id IN ('" + taskCodeIn + "')" )
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < SchBaseTask > taskList = ischBaseTaskService . getTaskByIds ( taskIds , false ) ;
// 更新异常货位
List < String > structCodeInList = new ArrayList < > ( ) ;
for ( int i = 0 ; i < taskList . size ( ) ; i + + ) {
JSONObject json = taskList . get ( 0 ) ;
structCodeInList . add ( json . getString ( "point_code1" ) ) ;
structCodeInList . add ( json . getString ( "point_code2" ) ) ;
SchBaseTask task = taskList . get ( i ) ;
structCodeInList . add ( task . getPoint_code1 ( ) ) ;
structCodeInList . add ( task . getPoint_code2 ( ) ) ;
}
JSONObject jsonUpdate = new JSONObject ( ) ;
jsonUpdate . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ;
jsonUpdate . put ( "task_code" , "" ) ;
attrTab . update ( jsonUpdate , "struct_code IN ('" + String . join ( "','" , structCodeInList ) + "')" ) ;
LambdaUpdateWrapper < StIvtStructattr > strattLam = new LambdaUpdateWrapper < > ( ) ;
strattLam . set ( StIvtStructattr : : getLock_type , IOSEnum . LOCK_TYPE . code ( "未锁定" ) )
. set ( StIvtStructattr : : getTask_code , "" )
. in ( StIvtStructattr : : getStruct_code , structCodeInList ) ;
structattrService . update ( strattLam ) ;
}
/ * *
* 更新主表状态
*
* @param iostorinv_id 主表标识
* /
public void updateMstStatus ( String iostorinv_id ) {
@ -2101,19 +2094,25 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 判断是否有异常货位 - 10
*
* @param disDaoList - 分配明细集合
* @return 仓位
* /
private String exceptionPointCode ( List < JSONObject > disDaoList ) {
WQLObject attrTab = WQLObject . getWQLObject ( "st_ivt_structattr" ) ;
WQLObject TaskTab = WQLObject . getWQLObject ( "sch_base_task" ) ;
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 ( "浅" ) + "'" )
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
// 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("浅")+"'")
// .getResultJSONArray(0).toJavaList(JSONObject.class);
LambdaQueryWrapper < StIvtStructattr > structAttyLam = new LambdaQueryWrapper < > ( ) ;
structAttyLam . eq ( StIvtStructattr : : getSect_code , "BZC01" )
. eq ( StIvtStructattr : : getIs_delete , "0" )
. eq ( StIvtStructattr : : getIs_used , "1" )
. eq ( StIvtStructattr : : getLock_type , IOSEnum . LOCK_TYPE . code ( "出库异常锁" ) )
. eq ( StIvtStructattr : : getZdepth , IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) ;
List < JSONObject > attrExceptionList = structattrService . getAttributesByConditionsToObject ( structAttyLam ) ;
if ( ObjectUtil . isEmpty ( attrExceptionList ) ) {
return null ;
}
@ -2121,12 +2120,19 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
List < JSONObject > exceptionList = new ArrayList < > ( ) ;
// 查询异常货位对应的深货位
attrExceptionList . forEach ( row - > {
JSONObject json = attrTab . query ( "row_num = '" + row . getString ( "row_num" ) + "' AND col_num = '" + row . getString ( "col_num" ) + "' AND " +
"layer_num = '" + row . getString ( "layer_num" ) + "' AND zdepth = '" + IOSEnum . ZDEPTH_STRUCT . code ( "深" ) + "'"
) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( json ) ) {
exceptionList . add ( json ) ;
LambdaQueryWrapper < StIvtStructattr > lam = new LambdaQueryWrapper < > ( ) ;
lam . eq ( StIvtStructattr : : getRow_num , row . getString ( "row_num" ) )
. eq ( StIvtStructattr : : getCol_num , row . getString ( "col_num" ) )
. eq ( StIvtStructattr : : getLayer_num , row . getString ( "layer_num" ) )
. eq ( StIvtStructattr : : getZdepth , IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ;
JSONObject attribute = structattrService . getAttributeByConditionsToObject ( lam , true ) ;
// JSONObject json = attrTab.query("row_num = '" + row.getString("row_num")
// + "' AND col_num = '" + row.getString("col_num") + "' AND " +
// "layer_num = '" + row.getString("layer_num") + "' AND zdepth = '" + IOSEnum.ZDEPTH_STRUCT.code("深") + "'"
// ).uniqueResult(0);
if ( ObjectUtil . isNotEmpty ( attribute ) ) {
exceptionList . add ( attribute ) ;
}
} ) ;
@ -2156,11 +2162,18 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
// 查询对应的异常任务
JSONObject jsonTask = TaskTab
. 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" ) + "】的出库任务!" ;
// JSONObject jsonTask = TaskTab
// .query("handle_class = '" + TwoOutExceptionalTask.class.getName()
// + "' AND is_delete = '0' and point_code2 = '" + expJson.getString("struct_code")
// + "' ORDER BY create_time DESC")
// .uniqueResult(0);
LambdaQueryWrapper < SchBaseTask > taskLam = new QueryWrapper < SchBaseTask > ( ) . lambda ( ) ;
taskLam . eq ( SchBaseTask : : getHandle_class , TwoOutExceptionalTask . class . getName ( ) )
. eq ( SchBaseTask : : getIs_delete , "0" )
. eq ( SchBaseTask : : getPoint_code2 , expJson . getString ( "struct_code" ) )
. orderByDesc ( SchBaseTask : : getCreate_time ) ;
SchBaseTask task = ischBaseTaskService . getOne ( taskLam , false ) ;
result = "请先下发木箱号为【" + task . getVehicle_code ( ) + "】的出库任务!" ;
}
return result ;
@ -2168,6 +2181,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
* 出库下发任务前校验 : 校验木箱类型数据是否都已经维护
*
* @param iostorinv_id 主表id
* /
private void boxCheck ( String iostorinv_id ) {