@ -1,11 +1,13 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl ;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.util.ObjectUtil ;
import com.alibaba.fastjson.JSONArray ;
import com.alibaba.fastjson.JSONObject ;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import lombok.extern.log4j.Log4j ;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper ;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum ;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry ;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService ;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr ;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper ;
@ -17,10 +19,8 @@ import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
import java.util.ArrayList ;
import java.util.Arrays ;
import java.util.Comparator ;
import java.util.List ;
import java.math.BigDecimal ;
import java.util.* ;
import java.util.stream.Collectors ;
@Service
@ -34,6 +34,8 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
@Autowired
private StIvtStructattrMapper stIvtStructattrMapper ;
@Autowired
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper ;
@Override
public JSONObject getOneStruct ( JSONObject jsonObject ) {
@ -66,45 +68,27 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
// 是否是移库: 提前确定的巷道
String block_num = jsonObject . getString ( "move_block_num" ) ;
JSONArray attrArry = new JSONArray ( ) ;
String input = jsonObject . getString ( "height" ) ;
List < String > result = Arrays . asList ( input . split ( "','" ) ) ;
//
if ( ObjectUtil . isEmpty ( block_num ) ) {
attrArry = attrTab . query ( "IFNULL(storagevehicle_code,'') = '' " +
"AND is_used = '" + IOSEnum . IS_NOTANDYES . code ( "是" ) + "' AND is_delete = '" + IOSEnum . IS_NOTANDYES . code ( "否" ) + "' " +
"AND lock_type = '" + IOSEnum . LOCK_TYPE . code ( "未锁定" ) + "' AND stor_id = '" + jsonObject . getString ( "stor_id" ) + "' " +
"AND storagevehicle_type = '" + jsonObject . getString ( "vehicle_type" ) + "'" +
"AND height IN " + jsonObject . getString ( "height" ) +
"AND sect_id = '" + jsonObject . getString ( "sect_id" ) + "'" ) . getResultJSONArray ( 0 ) ;
LambdaQueryWrapper < StIvtStructattr > stIvtStructattrLambdaQueryWrapper = new LambdaQueryWrapper < > ( ) ;
stIvtStructattrLambdaQueryWrapper . eq ( StIvtStructattr : : getIs_delete , IOSEnum . IS_NOTANDYES . code ( "否" ) )
. eq ( StIvtStructattr : : getIs_used , IOSEnum . IS_NOTANDYES . code ( "是" ) ) . eq ( StIvtStructattr : : getSect_id , jsonObject . getString ( "sect_id" ) )
. eq ( StIvtStructattr : : getLock_type , IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) . eq ( StIvtStructattr : : getStor_id , jsonObject . getString ( "stor_id" ) )
. in ( StIvtStructattr : : getHeight , result ) ;
if ( ) {
//小托盘均入四个巷道(不分类型),大托盘均入三个巷道
if ( "2" . equals ( jsonObject . getString ( "vehicle_type" ) ) ) {
stIvtStructattrLambdaQueryWrapper . eq ( StIvtStructattr : : getStoragevehicle_type , "2" ) ;
}
stIvtStructattrMapper . selectList ( )
} else {
attrArry = attrTab . query ( "IFNULL(storagevehicle_code,'') = '' " +
"AND is_used = '" + IOSEnum . IS_NOTANDYES . code ( "是" ) + "' AND is_delete = '" + IOSEnum . IS_NOTANDYES . code ( "否" ) + "' " +
"AND lock_type = '" + IOSEnum . LOCK_TYPE . code ( "未锁定" ) + "' AND stor_id = '" + jsonObject . getString ( "stor_id" ) + "' " +
"AND storagevehicle_type = '" + jsonObject . getString ( "vehicle_type" ) + "'" +
"AND height IN " + jsonObject . getString ( "height" ) +
"AND sect_id = '" + jsonObject . getString ( "sect_id" ) + "' AND block_num = '" + block_num + "'" )
. getResultJSONArray ( 0 ) ;
if ( ! ObjectUtil . isEmpty ( block_num ) ) {
stIvtStructattrLambdaQueryWrapper . eq ( StIvtStructattr : : getBlock_num , block_num ) ;
}
List < StIvtStructattr > stIvtStructattrs = stIvtStructattrMapper . selectList ( stIvtStructattrLambdaQueryWrapper ) ;
if ( ObjectUtil . isEmpty ( attrArry ) ) {
if ( ObjectUtil . isEmpty ( stIvtStructattrs ) ) {
throw new BadRequestException ( "仓位不足!" ) ;
}
@ -112,23 +96,25 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
* 确定巷道 : 查看每个巷道相同木箱规格等 的数量 , 找到数量最小的那个巷道
* /
// 获取木箱入库巷道
JSONObject jsonSub = subTab . query ( "package_box_sn = '" + jsonObject . getString ( "box_no" ) + "'" ) . uniqueResult ( 0 ) ;
jsonSub . put ( "stor_id" , jsonObject . getString ( "stor_id" ) ) ;
jsonSub . put ( "sect_id" , jsonObject . getString ( "sect_id" ) ) ;
jsonSub . put ( "material_id" , jsonObject . getString ( "material_id" ) ) ;
jsonSub . put ( "vehicle_type" , jsonObject . getString ( "vehicle_type" ) ) ;
jsonSub . put ( "height" , jsonObject . getString ( "height" ) ) ;
StructattrQuerry structattrQuerry = pdmBiSubpackagerelationMapper . selectSubpackagerelationInser ( jsonObject . getString ( "box_no" ) ) ;
structattrQuerry . setStor_id ( jsonObject . getString ( "stor_id" ) ) ;
structattrQuerry . setSect_id ( jsonObject . getString ( "sect_id" ) ) ;
structattrQuerry . setMaterial_id ( jsonObject . getString ( "material_id" ) ) ;
structattrQuerry . setStor_id ( jsonObject . getString ( "vehicle_type" ) ) ;
structattrQuerry . setHeight ( result ) ;
// 不是移库则需要找新巷道
if ( ObjectUtil . isEmpty ( block_num ) ) {
block_num = getMinBlock ( jsonSub ) ;
block_num = getMinBlock ( structattrQuerry ) ;
}
jsonSub . put ( "block_num" , block_num ) ;
structattrQuerry . setBlock_num ( block_num ) ;
/ *
* 找仓位
* /
JSONObject jsonAttr = getStruct ( jsonSub ) ;
JSONObject jsonAttr = getStruct ( structattrQuerry ) ;
// 如果是移库空并且仓位为空则报错
if ( ObjectUtil . isNotEmpty ( jsonObject . getString ( "move_block_num" ) ) & & ObjectUtil . isEmpty ( jsonAttr ) ) {
@ -138,20 +124,15 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
// 为空则新找巷道
if ( ObjectUtil . isEmpty ( jsonAttr ) ) {
jsonSub . put ( "flag" , "1" ) ;
notInBlockList . add ( jsonSub . getString ( "block_num" ) ) ;
String join = "('" + String . join ( "','" , notInBlockList ) + "')" ;
jsonSub . put ( "not_block" , join ) ;
List < JSONObject > blockList = WQL . getWO ( "BST_INRULE" ) . addParamMap ( jsonSub )
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
notInBlockList . add ( structattrQuerry . getBlock_num ( ) ) ;
structattrQuerry . setNot_block ( notInBlockList ) ;
List < String > block = stIvtStructattrMapper . getBlock ( structattrQuerry ) ;
for ( int i = 0 ; i < blockList . size ( ) ; i + + ) {
J SONObjec t j son = blockList . get ( i ) ;
jsonSub . put ( "block_num" , json . getString ( "block_num" ) ) ;
for ( int i = 0 ; i < block . size ( ) ; i + + ) {
String s = block . get ( i ) ;
structattrQuerry . setBlock_num ( s ) ;
JSONObject jsonAttr_2 = getStruct ( jsonSub ) ;
JSONObject jsonAttr_2 = getStruct ( structattrQuerry ) ;
if ( ObjectUtil . isNotEmpty ( jsonAttr_2 ) ) {
jsonAttr = jsonAttr_2 ;
break ;
@ -169,7 +150,7 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
/ * *
* 获取最小巷道
*
* @param jsonSub {
* @param structattrQuerry {
* jsonSub : 木箱信息
* sect_id : 库区
* stor_id : 仓库
@ -177,46 +158,35 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
* }
* @return String : 巷道
* /
private String getMinBlock ( JSONObject jsonSub ) {
private String getMinBlock ( StructattrQuerry structattrQuerry ) {
// 获取系统参数不入哪个巷道
String not_in_block_num = SpringContextHolder . getBean ( SysParamServiceImpl . class ) . findByCode ( "not_in_block_num" ) . getValue ( ) ;
if ( ! not_in_block_num . equals ( IOSEnum . IS_NOTANDYES . code ( "否" ) ) ) {
jsonSub . put ( "not_in_block_num" , not_in_block_num ) ;
structattrQuerry . setNot_in_block_num ( not_in_block_num ) ;
}
jsonSub . put ( "flag" , "1" ) ;
// 获取仓库、库区有空位的巷道
List < JSONObject > blockList = WQL . getWO ( "BST_INRULE" ) . addParamMap ( jsonSub )
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < String > block = stIvtStructattrMapper . getBlock ( structattrQuerry ) ;
/ *
* 查询所属巷道所有木箱
* /
String block_in = blockList . stream ( )
. map ( row - > row . getString ( "block_num" ) )
. collect ( Collectors . joining ( "','" ) ) ;
jsonSub . put ( "flag" , "2" ) ;
jsonSub . put ( "block_in" , "('" + block_in + "')" ) ;
List < JSONObject > boxAllList = WQL . getWO ( "BST_INRULE" ) . addParamMap ( jsonSub )
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
structattrQuerry . setBlock_in ( block ) ;
List < StIvtStructattr > boxAllList = stIvtStructattrMapper . getBoxAllList ( structattrQuerry ) ;
// 为空说明没有木箱,返回最小巷道
if ( Object Util. isEmpty ( boxAllList ) ) {
return blockList . get ( 0 ) . getString ( "block_num" ) ;
if ( CollUtil . isEmpty ( boxAllList ) ) {
return block . get ( 0 ) ;
}
// 不区分木箱规格:最小木箱数的巷道
JSONObject jsonBlockMin = sumBlockMinNum ( blockList , boxAllList ) ;
JSONObject jsonBlockMin = sumBlockMinNum ( block , boxAllList ) ;
/ *
* 查询所属巷道所有相同规格的木箱
* /
jsonSub . put ( "flag" , "3" ) ;
List < JSONObject > boxAllLikeList = WQL . getWO ( "BST_INRULE" ) . addParamMap ( jsonSub )
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < StIvtStructattr > boxAllLikeList = stIvtStructattrMapper . getBoxAllLikeList ( structattrQuerry ) ;
// 为空说明库内没有相同规格的木箱,则返回不区分木箱规格的最小巷道
if ( ObjectUtil . isEmpty ( boxAllLikeList ) ) {
@ -224,7 +194,7 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
}
// 区分木箱规格:最小木箱的巷道
JSONObject jsonBlockLikeMin = sumBlockMinNum ( blockList , boxAllLikeList ) ;
JSONObject jsonBlockLikeMin = sumBlockMinNum ( block , boxAllLikeList ) ;
return jsonBlockLikeMin . getString ( "block_num" ) ;
}
@ -235,35 +205,32 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
* @param boxAllList : 所有木箱
* @return JSONObject : 最小木箱数的巷道 JSONObject { block_num , box_num }
* /
private JSONObject sumBlockMinNum ( List < J SONObjec t> blockList , List < JSONObject > boxAllList ) {
private JSONObject sumBlockMinNum ( List < String > blockList , List < StIvtStructattr > boxAllList ) {
// 统计各巷道木箱数
ArrayList < JSONObject > blockBoxList = new ArrayList < > ( ) ;
Map < BigDecimal , List < StIvtStructattr > > boxGroupedByBlock = boxAllList . stream ( )
. collect ( Collectors . groupingBy ( row - > row . getBlock_num ( ) ) ) ;
for ( int i = 0 ; i < blockList . size ( ) ; i + + ) {
JSONObject jsonBlock = blockList . get ( i ) ;
List < JSONObject > box_num = boxAllList . stream ( )
. filter ( row - > row . getString ( "block_num" ) . equals ( jsonBlock . getString ( "block_num" ) ) )
. collect ( Collectors . toList ( ) ) ;
ArrayList < JSONObject > blockBoxList = new ArrayList < > ( ) ;
jsonBlock . put ( "box_num" , String . valueOf ( box_num . size ( ) ) ) ;
blockBoxList . add ( jsonBlock ) ;
for ( String jsonBlock : blockList ) {
JSONObject jsonObject = new JSONObject ( ) ;
int count = boxGroupedByBlock . getOrDefault ( jsonBlock , Collections . emptyList ( ) ) . size ( ) ;
jsonObject . put ( "box_num" , String . valueOf ( count ) ) ;
blockBoxList . add ( jsonObject ) ;
}
// 最小木箱数的巷道
List < JSONObject > boxNumList = blockBoxList . stream ( )
. sorted ( Comparator . comparing ( row - > row . getIntValue ( "box_num" ) ) )
. collect ( Collectors . toList ( ) ) ;
return boxNumList . get ( 0 ) ;
// 获取木箱数最少的巷道
return blockBoxList . stream ( )
. min ( Comparator . comparingInt ( row - > Integer . parseInt ( row . getString ( "box_num" ) ) ) )
. orElse ( null ) ;
}
/ * *
* 获取一个货位公共方法
*
* @param jsonSub {
* @param structattrQuerry {
* jsonSub : 木箱信息
* sect_id : 库区
* stor_id : 仓库
@ -273,100 +240,88 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
* }
* @return JSONObject : 仓位
* /
private JSONObject getStruct ( JSONObject jsonSub ) {
private JSONObject getStruct ( StructattrQuerry structattrQuerry ) {
// 根据巷道找这一巷道相同订单号、物料的仓位
JSONObject jsonLikeBox = queryEqualBox ( jsonSub ) ;
JSONObject jsonLikeBox = queryEqualBox ( structattrQuerry ) ;
if ( ObjectUtil . isNotEmpty ( jsonLikeBox ) ) {
return jsonLikeBox ;
}
// 获取此仓库、库区、巷道、排的所有空位 根据列、层、深度排序
jsonSub . put ( "flag" , "55" ) ;
List < JSONObject > rowStructList = WQL . getWO ( "BST_INRULE" ) . addParamMap ( jsonSub )
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < StIvtStructattr > stIvtStructattrs = stIvtStructattrMapper . getstructRow ( structattrQuerry ) ;
// 获取此仓库、库区、巷道、排的所有仓位
jsonSub . put ( "flag" , "66" ) ;
List < JSONObject > structAllList = WQL . getWO ( "BST_INRULE" ) . addParamMap ( jsonSub )
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
JSONObject jsonAttr = new JSONObject ( ) ;
for ( int i = 0 ; i < rowStructList . size ( ) ; i + + ) {
JSONObject json = rowStructList . get ( i ) ;
List < StIvtStructattr > allStruct = stIvtStructattrMapper . getAllStruct ( structattrQuerry ) ;
StIvtStructattr stIvtStructattrReturn = new StIvtStructattr ( ) ;
for ( int i = 0 ; i < stIvtStructattrs . size ( ) ; i + + ) {
StIvtStructattr stIvtStructattr = stIvtStructattrs . get ( i ) ;
// 判断伸位
if ( json . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "无" ) ) ) {
if ( stIvtStructattr . getZdepth ( ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "无" ) ) ) {
// 无需深度
jsonAttr = json ;
stIvtStructattrReturn = stIvtStructattr ;
break ;
} else if ( json . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) {
} else if ( stIvtStructattr . getZdepth ( ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) {
/ *
* 深货位 : 判断浅是否阻挡
* /
// 获取此货位对应的浅货位
List < JSONObject > lowAttr = structAllList . stream ( )
. filter ( row - > row . getString ( "col_num" ) . equals ( json . getString ( "col_num" ) ) & &
row . getString ( "layer_num" ) . equals ( json . getString ( "layer_num" ) ) & &
row . getString ( "row_num" ) . equals ( json . getString ( "row_num" ) ) & &
row . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) )
. collect ( Collectors . toList ( ) ) ;
List < StIvtStructattr > lowAttr = allStruct . stream ( )
. filter ( row - > row . getCol_num ( ) . equals ( String . valueOf ( stIvtStructattr . getCol_num ( ) ) ) & &
row . getLayer_num ( ) . equals ( String . valueOf ( stIvtStructattr . getLayer_num ( ) ) ) & &
row . getRow_num ( ) . equals ( String . valueOf ( stIvtStructattr . getRow_num ( ) ) ) & &
row . getZdepth ( ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( ObjectUtil . isEmpty ( lowAttr ) | | lowAttr . size ( ) ! = 1 ) {
notInBlockList . clear ( ) ;
throw new BadRequestException ( "匹配仓位时:" + json . getString ( "struct_code" ) + "对应的浅货位错误!" ) ;
throw new BadRequestException ( "匹配仓位时:" + stIvtStructattr . getStruct_code ( ) + "对应的浅货位错误!" ) ;
}
// 判断是否有木箱
JSONObject jsonAttrLow = lowAttr . get ( 0 ) ;
if ( ObjectUtil . isEmpty ( jsonAttrLow . getString ( "storagevehicle_code" ) ) & & jsonAttrLow . getString ( "lock_type" ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ) {
StIvtStructattr jsonAttrLow = lowAttr . get ( 0 ) ;
if ( ObjectUtil . isEmpty ( jsonAttrLow . getStoragevehicle_code ( ) ) & & jsonAttrLow . getLock_type ( ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ) {
// 没有木箱
jsonAttr = json ;
stIvtStructattrReturn = stIvtStructattr ;
break ;
} else {
continue ;
}
} else if ( json . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) ) {
} else if ( stIvtStructattr . getZdepth ( ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) ) {
/ *
* 浅货位 : 判断深货位是否空洞
* /
// 获取此货位对应的深货位
List < JSONObject > darkAttr = structAllList . stream ( )
. filter ( row - > row . getString ( "col_num" ) . equals ( json . getString ( "col_num" ) ) & &
row . getString ( "layer_num" ) . equals ( json . getString ( "layer_num" ) ) & &
row . getString ( "row_num" ) . equals ( json . getString ( "row_num" ) ) & &
row . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) )
. collect ( Collectors . toList ( ) ) ;
List < StIvtStructattr > darkAttr = allStruct . stream ( )
. filter ( row - > row . getCol_num ( ) . equals ( String . valueOf ( stIvtStructattr . getCol_num ( ) ) ) & &
row . getLayer_num ( ) . equals ( String . valueOf ( stIvtStructattr . getLayer_num ( ) ) ) & &
row . getRow_num ( ) . equals ( String . valueOf ( stIvtStructattr . getRow_num ( ) ) ) & &
row . getZdepth ( ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( ObjectUtil . isEmpty ( darkAttr ) | | darkAttr . size ( ) ! = 1 ) {
notInBlockList . clear ( ) ;
throw new BadRequestException ( "匹配仓位时:" + json . getString ( "struct_code" ) + "对应的深货位错误!" ) ;
throw new BadRequestException ( "匹配仓位时:" + stIvtStructattr . getStruct_code ( ) + "对应的深货位错误!" ) ;
}
// 判断是否有木箱
JSONObject jsonAttrDark = darkAttr . get ( 0 ) ;
StIvtStructattr jsonAttrDark = darkAttr . get ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( jsonAttrDark . getString ( "storagevehicle_code" ) ) ) {
if ( ObjectUtil . isNotEmpty ( jsonAttrDark . getStoragevehicle_code ( ) ) ) {
// 判断是否是成品箱,判断内容:是否空托盘、是否空木箱
if ( jsonAttrDark . getString ( "is_vehicle" ) . equals ( IOSEnum . IS_NOTANDYES . code ( "是" ) ) | |
jsonAttrDark . getString ( "is_packing" ) . equals ( IOSEnum . IS_NOTANDYES . code ( "否" ) )
if ( jsonAttrDark . getIs_vehicle ( ) . equals ( IOSEnum . IS_NOTANDYES . code ( "是" ) ) | |
jsonAttrDark . getIs_packing ( ) . equals ( IOSEnum . IS_NOTANDYES . code ( "否" ) )
) {
continue ;
}
if ( jsonAttrDark . getString ( "lock_type" ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ) {
jsonAttr = json ;
if ( jsonAttrDark . getLock_type ( ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ) {
stIvtStructattrReturn = stIvtStructattr ;
break ;
} else {
continue ;
}
} else {
if ( jsonAttrDark . getString ( "lock_type" ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ) {
jsonAttr = jsonAttrDark ;
if ( jsonAttrDark . getLock_type ( ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ) {
stIvtStructattrReturn = jsonAttrDark ;
break ;
} else {
continue ;
@ -376,56 +331,59 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
}
return jsonAttr ;
JSONObject jsonObject = ( JSONObject ) JSONObject . toJSON ( stIvtStructattrReturn ) ;
return jsonObject ;
}
/ * *
* 匹配相同订单 、 物料的仓位
* @param jsonSub { 子卷包装关系 }
*
* @param structattrQuerry { 子卷包装关系 }
* @return JSONObject : 要入库的仓位
* /
private JSONObject queryEqualBox ( JSONObject jsonSub ) {
private JSONObject queryEqualBox ( StructattrQuerry structattrQuerry ) {
// 需要返回的仓位
JSONObject result = new JSONObject ( ) ;
// 1.匹配相同订单号、物料的排(row_num)
jsonSub . put ( "flag" , "77" ) ;
List < JSONObject > rowList = WQL . getWO ( "BST_INRULE" ) . addParamMap ( jsonSub )
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < StIvtStructattr > likeOrder = stIvtStructattrMapper . getLikeOrder ( structattrQuerry ) ;
StructattrQuerry structattrQuerry2 = new StructattrQuerry ( ) ;
structattrQuerry2 . setBlock_num ( structattrQuerry . getBlock_num ( ) ) ;
structattrQuerry2 . setSect_id ( structattrQuerry . getSect_id ( ) ) ;
// 查询此巷道的所有仓位
List < JSONObject > attrRowAllList = WQL . getWO ( "BST_INRULE" ) . addParam ( "flag" , "88" )
. addParam ( "sect_id" , jsonSub . getString ( "sect_id" ) )
. addParam ( "block_num" , jsonSub . getString ( "block_num" ) ) . process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < StIvtStructattr > stIvtStructattrs = stIvtStructattrMapper . getallStruct ( structattrQuerry2 ) ;
for ( JSONObject json : rowList ) {
for ( StIvtStructattr json : likeOrder ) {
// 判断此深仓位是否有货、是否被锁住
if ( ObjectUtil . isEmpty ( json . getString ( "storagevehicle_code" ) )
| | ! json . getString ( "lock_type" ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) )
if ( ObjectUtil . isEmpty ( json . getStoragevehicle_code ( ) )
| | ! json . getLock_type ( ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) )
) {
continue ;
}
// 找对应的浅货位
JSONObject darkJson = attrRowAllLi st . stream ( )
. filter ( row - > row . getString ( "col_num" ) . equals ( json . getString ( "col_num" ) ) & &
row . getString ( "layer_num" ) . equals ( json . getString ( "layer_num" ) ) & &
row . getString ( "row_num" ) . equals ( json . getString ( "row_num" ) ) & &
row . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) )
StIvtStructattr darkJson = stIvtStruct attrs. stream ( )
. filter ( row - > row . getCol_num ( ) . equals ( json . getCol_num ( ) ) & &
row . getLayer_num ( ) . equals ( json . getLayer_num ( ) ) & &
row . getRow_num ( ) . equals ( json . getRow_num ( ) ) & &
row . getZdepth ( ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) )
. findFirst ( ) . orElse ( null ) ;
if ( ObjectUtil . isEmpty ( darkJson ) ) {
notInBlockList . clear ( ) ;
throw new BadRequestException ( "匹配相同木箱规格仓位时:" + json . getString ( "struct_code" ) + "对应的深货位错误!" ) ;
throw new BadRequestException ( "匹配相同木箱规格仓位时:" + darkJson . getStruct_code ( ) + "对应的深货位错误!" ) ;
}
// 判断浅货位是否有货、未锁定
if ( ObjectUtil . isNotEmpty ( darkJson . getString ( "storagevehicle_code" ) )
| | ! darkJson . getString ( "lock_type" ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) )
if ( ObjectUtil . isNotEmpty ( darkJson . getStoragevehicle_code ( ) )
| | ! darkJson . getLock_type ( ) . equals ( IOSEnum . LOCK_TYPE . code ( "未锁定" ) )
) {
continue ;
}
JSONObject jsonObject = ( JSONObject ) JSONObject . toJSON ( darkJson ) ;
result = darkJson ;
result = jsonObject ;
break ;
}
return result ;