@ -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.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.OutBussManageService ;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService ;
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.StIvtSectattrService ;
import org.nl.b_lms.storage_manage.st.service.StIvtStructattrService ;
import org.nl.b_lms.storage_manage.st.service.StIvtStructattrService ;
import org.nl.b_lms.storage_manage.st.service.StIvtStructivtService ;
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.IdUtil ;
import org.nl.common.utils.SecurityUtils ;
import org.nl.common.utils.SecurityUtils ;
import org.nl.modules.common.exception.BadRequestException ;
import org.nl.modules.common.exception.BadRequestException ;
import org.nl.common.utils.CodeUtil ;
import org.nl.modules.wql.WQL ;
import org.nl.modules.wql.WQL ;
import org.nl.modules.wql.core.bean.WQLObject ;
import org.nl.modules.wql.core.bean.WQLObject ;
import org.nl.system.service.param.ISysParamService ;
import org.nl.system.service.param.ISysParamService ;
@ -72,7 +74,6 @@ import java.util.*;
import java.util.concurrent.TimeUnit ;
import java.util.concurrent.TimeUnit ;
import java.util.function.Consumer ;
import java.util.function.Consumer ;
import java.util.function.Function ;
import java.util.function.Function ;
import java.util.stream.Collector ;
import java.util.stream.Collectors ;
import java.util.stream.Collectors ;
/ * *
/ * *
@ -156,6 +157,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
private RedissonClient redissonClient ;
private RedissonClient redissonClient ;
@Autowired
@Autowired
private StIvtStructivtService structivtService ;
private StIvtStructivtService structivtService ;
/** 仓位 */
@Autowired
@Autowired
private StIvtStructattrService structattrService ;
private StIvtStructattrService structattrService ;
@Autowired
@Autowired
@ -168,10 +170,17 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
private StIvtSectattrService sectattrService ;
private StIvtSectattrService sectattrService ;
@Autowired
@Autowired
private ISysParamService paramService ;
private ISysParamService paramService ;
/** 载具扩展属性表 */
@Autowired
@Autowired
private IMdPbStoragevehicleextService mdPbStoragevehicleextService ;
private IMdPbStoragevehicleextService mdPbStoragevehicleextService ;
@Autowired
@Autowired
private IschBasePointService ischBasePointService ;
private IschBasePointService ischBasePointService ;
@Autowired
private TwoOutExceptionalTask twoOutExceptionalTask ;
/** 事物库区 */
@Autowired
private StIvtBsrealstorattrService bsrealstorattrService ;
@Override
@Override
@Transactional
@Transactional
public String insertMst ( JSONObject whereJson ) {
public String insertMst ( JSONObject whereJson ) {
@ -206,7 +215,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
. map ( row - > row . getBigDecimal ( "plan_qty" ) )
. map ( row - > row . getBigDecimal ( "plan_qty" ) )
. reduce ( BigDecimal . ZERO , BigDecimal : : add )
. reduce ( BigDecimal . ZERO , BigDecimal : : add )
. doubleValue ( ) ;
. doubleValue ( ) ;
whereJson . put ( "total_qty" , total_qty ) ;
whereJson . put ( "total_qty" , total_qty ) ;
StIvtIostorinv mstDao = updataMst ( whereJson , null ) ;
StIvtIostorinv mstDao = updataMst ( whereJson , null ) ;
this . save ( mstDao ) ;
this . save ( mstDao ) ;
@ -277,6 +286,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ *
/ *
* 查询生成和未分配完的明细 , 条件 : 明细状态小于等于分配中 、 未分配数大于0
* 查询生成和未分配完的明细 , 条件 : 明细状态小于等于分配中 、 未分配数大于0
* 全部分配根据单据号去查 , 否者通过明细id或者木箱号获取
* /
* /
// 查询条件
// 查询条件
LambdaQueryWrapper < StIvtIostorinvdtl > dtlQuery = new QueryWrapper < StIvtIostorinvdtl > ( ) . lambda ( ) ;
LambdaQueryWrapper < StIvtIostorinvdtl > dtlQuery = new QueryWrapper < StIvtIostorinvdtl > ( ) . lambda ( ) ;
@ -321,7 +331,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
StIvtIostorinvdtl dtlDao = dtlDaoList . get ( i ) ;
StIvtIostorinvdtl dtlDao = dtlDaoList . get ( i ) ;
// 调用分配库存公共方法
// 调用分配库存公共方法
List < StIvtIostorinvdis > disArr = outBussManageService . divIvt ( dtlDao , ivtList ) ;
List < StIvtIostorinvdis > disArr = outBussManageService . divIvt ( dtlDao , ivtList ) ;
disDaoList . addAll ( disArr ) ;
disDaoList . addAll ( disArr ) ;
}
}
@ -339,7 +349,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库锁" ) ) ;
jsonLockParam . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库锁" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
outBussManageService . lockStruct ( paramLockList , jsonLockParam ) ;
outBussManageService . lockStruct ( paramLockList , jsonLockParam ) ;
// 插入分配明细
// 插入分配明细
iStIvtIostorinvdisService . saveBatch ( disDaoList ) ;
iStIvtIostorinvdisService . saveBatch ( disDaoList ) ;
@ -349,7 +359,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
} else {
} else {
throw new BadRequestException ( "其他出库单当前正在分配货位,请等待几秒再进行操作!" ) ;
throw new BadRequestException ( "其他出库单当前正在分配货位,请等待几秒再进行操作!" ) ;
}
}
} finally {
} finally {
if ( lock . isLocked ( ) & & lock . isHeldByCurrentThread ( ) ) {
if ( lock . isLocked ( ) & & lock . isHeldByCurrentThread ( ) ) {
lock . unlock ( ) ;
lock . unlock ( ) ;
}
}
@ -381,7 +391,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
List < StIvtIostorinvdtl > dtlDaoList = iStIvtIostorinvdtlService . list (
List < StIvtIostorinvdtl > dtlDaoList = iStIvtIostorinvdtlService . list (
new QueryWrapper < StIvtIostorinvdtl > ( ) . lambda ( )
new QueryWrapper < StIvtIostorinvdtl > ( ) . lambda ( )
. eq ( StIvtIostorinvdtl : : getIostorinv_id , mstDao . getIostorinv_id ( ) )
. 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 ( "分配中" ) )
. le ( StIvtIostorinvdtl : : getBill_status , IOSEnum . BILL_STATUS . code ( "分配中" ) )
. gt ( StIvtIostorinvdtl : : getUnassign_qty , 0 )
. gt ( StIvtIostorinvdtl : : getUnassign_qty , 0 )
. orderByAsc ( StIvtIostorinvdtl : : getSeq_no )
. orderByAsc ( StIvtIostorinvdtl : : getSeq_no )
@ -397,7 +407,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
. collect ( Collectors . joining ( "','" ) ) ;
. collect ( Collectors . joining ( "','" ) ) ;
List < JSONObject > ivtList = WQL . getWO ( "BST_OUTDIV" ) . addParam ( "flag" , "1" ) . addParam ( "stor_id" , mstDao . getStor_id ( ) . toString ( ) )
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 ) ;
. process ( ) . getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
if ( ObjectUtil . isEmpty ( ivtList ) ) {
if ( ObjectUtil . isEmpty ( ivtList ) ) {
@ -429,7 +439,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
}
} else {
} else {
// 调用分配库存公共方法
// 调用分配库存公共方法
disDaoList = outBussManageService . manualDivIvt ( dtlDaoList . get ( 0 ) , ivtList ) ;
disDaoList = outBussManageService . manualDivIvt ( dtlDaoList . get ( 0 ) , ivtList ) ;
}
}
// 更新仓位
// 更新仓位
@ -445,7 +455,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库锁" ) ) ;
jsonLockParam . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库锁" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
outBussManageService . lockStruct ( lockList , jsonLockParam ) ;
outBussManageService . lockStruct ( lockList , jsonLockParam ) ;
// 插入分配明细
// 插入分配明细
iStIvtIostorinvdisService . saveBatch ( disDaoList ) ;
iStIvtIostorinvdisService . saveBatch ( disDaoList ) ;
@ -523,7 +533,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
) ;
) ;
/*更新库存*/
/*更新库存*/
outBussManageService . upateIvt ( disList , mstDao , IOSEnum . IVT_CHANGE . code ( "减冻结" ) ) ;
outBussManageService . upateIvt ( disList , mstDao , IOSEnum . IVT_CHANGE . code ( "减冻结" ) ) ;
/ *
/ *
* 更新明细 、 主单据
* 更新明细 、 主单据
@ -569,7 +579,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 ( "生成" ) ) ;
dtlDao . setBill_status ( IOSEnum . BILL_STATUS . code ( "生成" ) ) ;
} else {
} else {
dtlDao . setBill_status ( IOSEnum . BILL_STATUS . code ( "分配中" ) ) ;
dtlDao . setBill_status ( IOSEnum . BILL_STATUS . code ( "分配中" ) ) ;
@ -585,7 +595,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
this . updateMstStatus ( mstDao . getIostorinv_id ( ) ) ;
this . updateMstStatus ( mstDao . getIostorinv_id ( ) ) ;
/*删除出库任务*/
/*删除出库任务*/
List < String > taskIds = disList . stream ( )
List < String > taskIds = disList . stream ( )
. map ( row - > row . getString ( "task_id" ) )
. map ( row - > row . getString ( "task_id" ) )
. distinct ( )
. distinct ( )
. collect ( Collectors . toList ( ) ) ;
. collect ( Collectors . toList ( ) ) ;
@ -617,7 +627,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ;
jsonLockParam . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
outBussManageService . lockStruct ( paramLockList , jsonLockParam ) ;
outBussManageService . lockStruct ( paramLockList , jsonLockParam ) ;
} else {
} else {
throw new BadRequestException ( "其他出库单当前正在取消分配,请等待几秒再进行操作!" ) ;
throw new BadRequestException ( "其他出库单当前正在取消分配,请等待几秒再进行操作!" ) ;
}
}
@ -660,8 +670,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 定义一个函数,将需要分组的元素映射到一个建的集合里
// 定义一个函数,将需要分组的元素映射到一个建的集合里
Function < JSONObject , List < String > > compositeKey = row - >
Function < JSONObject , List < String > > compositeKey = row - >
Arrays . asList ( row . getString ( "box_length" ) , row . getString ( "box_width" ) ,
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" )
row . getString ( "material_id" )
) ;
) ;
Map < List < String > , List < JSONObject > > groupingDisMap =
Map < List < String > , List < JSONObject > > groupingDisMap =
@ -669,10 +679,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
for ( List < JSONObject > disLikeList : groupingDisMap . values ( ) ) {
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" ) ) ;
}
}
// 下发任务:判断当前单据是否有正在执行的的任务
// 下发任务:判断当前单据是否有正在执行的的任务
@ -722,7 +732,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 定义一个函数,将需要分组的元素映射到一个建的集合里
// 定义一个函数,将需要分组的元素映射到一个建的集合里
Function < JSONObject , List < String > > compositeKey = row - >
Function < JSONObject , List < String > > compositeKey = row - >
Arrays . asList ( row . getString ( "box_length" ) , row . getString ( "box_width" ) ,
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" )
row . getString ( "material_id" )
) ;
) ;
@ -737,10 +747,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
for ( List < JSONObject > disLikeList : groupingDisMap . values ( ) ) {
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" ) ;
allTransactionConsumer . accept ( "finish" ) ;
}
}
@ -846,7 +856,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新库存
// 更新库存
if ( ObjectUtil . isNotEmpty ( needUpdateIvtList ) ) {
if ( ObjectUtil . isNotEmpty ( needUpdateIvtList ) ) {
outBussManageService . upateIvt ( needUpdateIvtList , mstDao , IOSEnum . IVT_CHANGE . code ( "减库存" ) ) ;
outBussManageService . upateIvt ( needUpdateIvtList , mstDao , IOSEnum . IVT_CHANGE . code ( "减库存" ) ) ;
}
}
// 更新仓位: 主存区仓位不更新
// 更新仓位: 主存区仓位不更新
@ -865,7 +875,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
if ( ObjectUtil . isNotEmpty ( paramLockList ) ) {
if ( ObjectUtil . isNotEmpty ( paramLockList ) ) {
outBussManageService . lockStruct ( paramLockList , jsonLockParam ) ;
outBussManageService . lockStruct ( paramLockList , jsonLockParam ) ;
}
}
// 更新单据
// 更新单据
@ -951,7 +961,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
* 如果是调拨出库则生成调拨入库单
* 如果是调拨出库则生成调拨入库单
* /
* /
if ( mstDao . getBill_type ( ) . equals ( IOSEnum . OUT_TYPE . code ( "调拨出库" ) ) ) {
if ( mstDao . getBill_type ( ) . equals ( IOSEnum . OUT_TYPE . code ( "调拨出库" ) ) ) {
createOutIos ( disDaoList , mstDao ) ;
createOutIos ( disDaoList , mstDao ) ;
}
}
/ *
/ *
@ -998,7 +1008,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
. uniqueResult ( 0 ) ;
. uniqueResult ( 0 ) ;
if ( jsonTask = = null ) {
if ( jsonTask = = null ) {
throw new BadRequestException ( "查询不到操作的任务记录!" + whereJson . getString ( "task_id" ) ) ;
throw new BadRequestException ( "查询不到操作的任务记录!" + whereJson . getString ( "task_id" ) ) ;
}
}
// 查询分配明细
// 查询分配明细
@ -1030,7 +1040,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
needUpdateIvtList . add ( jsonIvt ) ;
needUpdateIvtList . add ( jsonIvt ) ;
}
}
outBussManageService . upateIvt ( needUpdateIvtList , mstDao , IOSEnum . IVT_CHANGE . code ( "减库存" ) ) ;
outBussManageService . upateIvt ( needUpdateIvtList , mstDao , IOSEnum . IVT_CHANGE . code ( "减库存" ) ) ;
// 更新仓位
// 更新仓位
List < String > paramLockList = new ArrayList < > ( ) ;
List < String > paramLockList = new ArrayList < > ( ) ;
@ -1044,7 +1054,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
jsonLockParam . put ( "operate" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
paramLockList . add ( disDao . getStruct_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 ( ) ) ) {
if ( IOSEnum . OUT_TYPE . code ( "改切出库" ) . equals ( mstDao . getBill_type ( ) ) | | IOSEnum . OUT_TYPE . code ( "返检出库" ) . equals ( mstDao . getBill_type ( ) ) ) {
HashMap < String , String > map = new HashMap < > ( ) ;
HashMap < String , String > map = new HashMap < > ( ) ;
@ -1127,7 +1137,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
taskParam . put ( "next_device_code" , IOSEnum . OUT_POINT . code ( jsonAttrNow . getString ( "row_num" ) ) ) ;
taskParam . put ( "next_device_code" , IOSEnum . OUT_POINT . code ( jsonAttrNow . getString ( "row_num" ) ) ) ;
taskParam . put ( "task_type" , "010712" ) ;
taskParam . put ( "task_type" , "010712" ) ;
taskParam . put ( "car_no" , "此货位LMS系统未有库存,请待出至【CK2001】点位后确认实物并重新手工入回库!" ) ;
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 ( ) ;
TwoExcepionalMoveTask taskBean = new TwoExcepionalMoveTask ( ) ;
String task_id = taskBean . createTask ( taskParam ) ;
String task_id = taskBean . createTask ( taskParam ) ;
@ -1138,16 +1148,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 创建调拨入库单
* 创建调拨入库单
*
* @param disDaoList : 出库分配明细集合
* @param disDaoList : 出库分配明细集合
* @param mstDao : 出库单据对象
* @param mstDao : 出库单据对象
* /
* /
private void createOutIos ( List < StIvtIostorinvdis > disDaoList , StIvtIostorinv 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 < > ( ) ;
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 ) ;
StIvtBsrealstorattr ivtBsrealstorattr = bsrealstorattrService . getById ( mstDao . getOut_stor_id ( ) ) ;
if ( ObjectUtil . isEmpty ( ivtBsrealstorattr ) ) {
if ( ObjectUtil . isEmpty ( jsonAttr ) ) {
throw new BadRequestException ( "未查询到对应的移入仓库信息!" ) ;
throw new BadRequestException ( "未查询到对应的移入仓库信息!" ) ;
}
}
@ -1169,26 +1173,25 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 计算总数量
// 计算总数量
BigDecimal total_qty = disDaoList . stream ( )
BigDecimal total_qty = disDaoList . stream ( )
. map ( row - > BigDecimal . valueOf ( row . getPlan_qty ( ) . doubleValue ( ) ) )
. map ( StIvtIostorinvdis : : getPlan_qty )
. reduce ( BigDecimal . ZERO , BigDecimal : : add ) ;
. 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 ( "bill_status" , IOSEnum . BILL_STATUS . code ( "分配中" ) ) ;
paramMap . put ( "total_qty" , total_qty ) ;
paramMap . put ( "total_qty" , total_qty ) ;
paramMap . put ( "detail_count" , disDaoList . size ( ) ) ;
paramMap . put ( "detail_count" , disDaoList . size ( ) ) ;
paramMap . put ( "bill_type" , IOSEnum . IN_TYPE . code ( "调拨入库" ) ) ;
paramMap . put ( "bill_type" , IOSEnum . IN_TYPE . code ( "调拨入库" ) ) ;
paramMap . put ( "biz_date" , DateUtil . today ( ) ) ;
paramMap . put ( "biz_date" , DateUtil . today ( ) ) ;
paramMap . put ( "out_stor_id" , mstDao . getStor_id ( ) ) ;
paramMap . put ( "out_stor_id" , mstDao . getStor_id ( ) ) ;
paramMap . put ( "source_id" , dtlDao . getVbeln ( ) ) ;
paramMap . put ( "source_id" , dtlDao . getVbeln ( ) ) ;
paramMap . put ( "remark" , "" ) ;
paramMap . put ( "remark" , "" ) ;
// 明细数据
// 明细数据
String pcsn_in = disDaoList . stream ( )
List < String > pcsns = disDaoList . stream ( )
. map ( StIvtIostorinvdis : : getPcsn )
. map ( StIvtIostorinvdis : : getPcsn )
. collect ( Collectors . joining ( "','" ) ) ;
. collect ( Collectors . toList ( ) ) ;
List < JSONObject > subList = subTab . query ( "container_name IN ('" + pcsn_in + "')" )
List < JSONObject > subList = subpackagerelationService . getSubPackageInfoBySubRolls ( pcsns ) ;
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
// 明细集合
// 明细集合
ArrayList < LinkedHashMap > tableData = new ArrayList < > ( ) ;
ArrayList < LinkedHashMap > tableData = new ArrayList < > ( ) ;
@ -1222,24 +1225,26 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
tableData . add ( jsonDtl ) ;
tableData . add ( jsonDtl ) ;
}
}
paramMap . put ( "tableData" , tableData ) ;
paramMap . put ( "tableData" , tableData ) ;
// 调用入库服务插入入库
// 调用入库服务插入入库
iStIvtIostorinvService . insertMst ( paramMap ) ;
iStIvtIostorinvService . insertMst ( paramMap ) ;
// 更新子卷包装关系为包装
// 更新子卷包装关系为包装
JSONObject jsonSub = new JSONObject ( ) ;
LambdaUpdateWrapper < PdmBiSubpackagerelation > subLam = new LambdaUpdateWrapper < > ( ) ;
jsonSub . put ( "status" , SUBEnum . STATUS . code ( "包装" ) ) ;
subLam . set ( PdmBiSubpackagerelation : : getStatus , SUBEnum . STATUS . code ( "包装" ) )
subTab . update ( jsonSub , "container_name IN ('" + pcsn_in + "')" ) ;
. in ( PdmBiSubpackagerelation : : getContainer_name , pcsns ) ;
subpackagerelationService . update ( subLam ) ;
}
}
/ * *
/ * *
* 生成任务前处理
* 生成任务前处理
* @param disLikeList : 相同规格木箱 、 订单 、 物料的分配明细集合
*
* @param disLikeList : 相同规格木箱 、 订单 、 物料的分配明细集合
* @param iostorinv_id : 单据标识
* @param iostorinv_id : 单据标识
* @return List < JSONObject > 生成任务的集合
* @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" ) ;
WQLObject attrTab = WQLObject . getWQLObject ( "st_ivt_structattr" ) ;
@ -1275,7 +1280,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 判断是深位还是浅位
// 判断是深位还是浅位
if ( jsonAttr . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) {
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 ) ) {
if ( ObjectUtil . isNotEmpty ( jsonBoxStop ) ) {
// 加入需要移库的集合
// 加入需要移库的集合
@ -1294,11 +1299,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 生成任务前处理
* 生成任务前处理
* @param disLikeList : 相同规格木箱 、 订单 、 物料的分配明细集合
*
* @param disLikeList : 相同规格木箱 、 订单 、 物料的分配明细集合
* @param iostorinv_id : 单据标识
* @param iostorinv_id : 单据标识
* @return List < JSONObject > 生成任务的集合
* @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 ) {
// 获取仓位集合
// 获取仓位集合
List < String > structCodes = disLikeList . stream ( )
List < String > structCodes = disLikeList . stream ( )
@ -1329,7 +1335,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 判断是深位还是浅位
// 判断是深位还是浅位
if ( jsonAttr . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) {
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 ) ) {
if ( ObjectUtil . isNotEmpty ( jsonBoxStop ) ) {
// 加入需要移库的集合
// 加入需要移库的集合
@ -1341,15 +1347,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
}
// 创建移库单下发移库任务
// 创建移库单下发移库任务
outBussManageService . createMove2 ( needMoveAttrList , allTransactionConsumer ) ;
outBussManageService . createMove2 ( needMoveAttrList , allTransactionConsumer ) ;
return needCreateAttrList ;
return needCreateAttrList ;
}
}
/ * *
/ * *
* 判断是否阻挡
* 判断是否阻挡
* @param jsonAttr 要出库的仓位
*
* @param attrRowList 相同规格所在排所有仓位
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
* @param iostorinv_id 单据标识
* @param iostorinv_id 单据标识
* @return JSONObject 需要移库的仓位
* @return JSONObject 需要移库的仓位
* /
* /
@ -1440,7 +1447,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 查询物料id
// 查询物料id
StIvtIostorinvdis disDao = iStIvtIostorinvdisService . list (
StIvtIostorinvdis disDao = iStIvtIostorinvdisService . list (
new QueryWrapper < StIvtIostorinvdis > ( ) . lambda ( )
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" ) )
. eq ( StIvtIostorinvdis : : getBox_no , jsonLow . getString ( "storagevehicle_code" ) )
) . get ( 0 ) ;
) . get ( 0 ) ;
@ -1452,7 +1459,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonVeExt = extTab . query ( "pcsn = '" + jsonLow . getString ( "storagevehicle_code" ) + "'" )
JSONObject jsonVeExt = extTab . query ( "pcsn = '" + jsonLow . getString ( "storagevehicle_code" ) + "'" )
. uniqueResult ( 0 ) ;
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
throw new BadRequestException ( "此木箱没有绑定托盘号!" + jsonLow . getString ( "storagevehicle_code" ) ) ;
throw new BadRequestException ( "此木箱没有绑定托盘号!" + jsonLow . getString ( "storagevehicle_code" ) ) ;
}
}
// 生成任务
// 生成任务
@ -1474,7 +1481,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
attrTab . update ( jsonLow ) ;
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 ) ;
jsonLow . put ( "task_code" , task_id ) ;
attrTab . update ( jsonMove ) ;
attrTab . update ( jsonMove ) ;
}
}
@ -1487,21 +1494,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 判断是否阻挡
* 判断是否阻挡
* @param jsonAttr 要出库的仓位
*
* @param attrRowList 相同规格所在排所有仓位
* @param jsonAttr 要出库的仓位
* @param attrRowList 相同规格所在排所有仓位
* @param iostorinv_id 单据标识
* @param iostorinv_id 单据标识
* @return JSONObject 需要移库的仓位
* @return JSONObject 需要移库的仓位
* /
* /
private JSONObject ifBoxStop2 ( JSONObject jsonAttr , List < JSONObject > attrRowList , String iostorinv_id , Consumer < String > allTransactionConsumer ) {
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 ( ) ;
JSONObject result = new JSONObject ( ) ;
// 获取要出库仓位所对应的浅货位
// 获取要出库仓位所对应的浅货位
@ -1546,7 +1545,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
taskLam . eq ( SchBaseTask : : getVehicle_code , jsonLow . getString ( "storagevehicle_code" ) )
taskLam . eq ( SchBaseTask : : getVehicle_code , jsonLow . getString ( "storagevehicle_code" ) )
. ne ( SchBaseTask : : getTask_status , "07" )
. ne ( SchBaseTask : : getTask_status , "07" )
. eq ( SchBaseTask : : getIs_delete , "0" ) ;
. eq ( SchBaseTask : : getIs_delete , "0" ) ;
JSONObject jsonTask = ischBaseTaskService . getTaskObject ( taskLam ) ;
JSONObject jsonTask = ischBaseTaskService . getTaskObject ( taskLam , false ) ;
if ( ObjectUtil . isNotEmpty ( jsonTask ) ) {
if ( ObjectUtil . isNotEmpty ( jsonTask ) ) {
flag = false ;
flag = false ;
}
}
@ -1584,7 +1583,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 查询物料id
// 查询物料id
StIvtIostorinvdis disDao = iStIvtIostorinvdisService . list (
StIvtIostorinvdis disDao = iStIvtIostorinvdisService . list (
new QueryWrapper < StIvtIostorinvdis > ( ) . lambda ( )
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" ) )
. eq ( StIvtIostorinvdis : : getBox_no , jsonLow . getString ( "storagevehicle_code" ) )
) . get ( 0 ) ;
) . get ( 0 ) ;
@ -1593,10 +1592,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonMove = twoInBussManageService . getOneStruct ( moveParam ) ;
JSONObject jsonMove = twoInBussManageService . getOneStruct ( moveParam ) ;
// 查询木箱对应的载具
// 查询木箱对应的载具
JSONObject jsonVeExt = extTab . query ( "pcsn = '" + jsonLow . getString ( "storagevehicle_code" ) + "'" )
JSONObject jsonVeExt = mdPbStoragevehicleextService . getOneByPcsnToObject ( jsonLow . getString ( "storagevehicle_code" ) ) ;
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
throw new BadRequestException ( "此木箱没有绑定托盘号!" + jsonLow . getString ( "storagevehicle_code" ) ) ;
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 ( "vehicle_code2" , jsonVeExt . getString ( "storagevehicle_code" ) ) ;
jsonTaskParam . put ( "table_fk" , iostorinv_id ) ;
jsonTaskParam . put ( "table_fk" , iostorinv_id ) ;
TwoOutExceptionalTask taskBean = new TwoOutExceptionalTask ( ) ;
String task_id = twoOutExceptionalTask . createTask ( jsonTaskParam ) ;
String task_id = taskBean . createTask ( jsonTaskParam ) ;
twoOutExceptionalTask . immediateNotifyAcs ( task_id ) ;
taskBean . immediateNotifyAcs ( task_id ) ;
// 锁定:标记货位为异常并生成异常移库任务
// 锁定:标记货位为异常并生成异常移库任务
jsonLow . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库异常锁" ) ) ;
jsonLow . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库异常锁" ) ) ;
jsonLow . put ( "task_code" , task_id ) ;
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 ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "出库异常锁" ) ) ;
jsonMove . put ( "inv_code" , jsonLow . getString ( "storagevehicle_code" ) ) ;
jsonMove . put ( "inv_code" , jsonLow . getString ( "storagevehicle_code" ) ) ;
jsonLow . put ( "task_code" , task_id ) ;
jsonMove . put ( "task_code" , task_id ) ;
attrTab . update ( jsonMove ) ;
structattrService . updateById ( jsonMove . toJavaObject ( StIvtStructattr . class ) ) ;
}
}
}
}
@ -1631,11 +1628,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 创建任务
* 创建任务
*
* @param taskMangeList : 仓位集合
* @param taskMangeList : 仓位集合
* @param disLikeList : 分配明细集合
* @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" ) ;
WQLObject taskService = WQLObject . getWQLObject ( "sch_base_task" ) ;
// 点位表
// 点位表
@ -1675,9 +1673,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 确定终点: 根据仓位所在排确定终点
// 确定终点: 根据仓位所在排确定终点
String end_device_code = "" ;
String end_device_code = "" ;
if ( "1" . equals ( flag ) ) {
if ( "1" . equals ( flag ) ) {
end_device_code = IsEndCode2 ( json ) ;
end_device_code = IsEndCode2 ( json ) ;
} else {
} else {
end_device_code = IsEndCode ( json ) ;
end_device_code = IsEndCode ( json ) ;
}
}
@ -1712,7 +1710,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
iStIvtIostorinvdisService . updateBatchById ( disDaoList ) ;
iStIvtIostorinvdisService . updateBatchById ( disDaoList ) ;
// 标记任务
// 标记任务
jsonTask . put ( "is_auto_issue" , IOSEnum . IS_SEND . code ( "否" ) ) ;
jsonTask . put ( "is_auto_issue" , IOSEnum . IS_SEND . code ( "否" ) ) ;
taskService . update ( jsonTask ) ;
taskService . update ( jsonTask ) ;
continue ;
continue ;
}
}
@ -1722,7 +1720,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
JSONObject jsonVeExt = extTab . query ( "pcsn = '" + json . getString ( "storagevehicle_code" ) + "'" )
JSONObject jsonVeExt = extTab . query ( "pcsn = '" + json . getString ( "storagevehicle_code" ) + "'" )
. uniqueResult ( 0 ) ;
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
throw new BadRequestException ( "此木箱没有绑定托盘号!" + json . getString ( "storagevehicle_code" ) ) ;
throw new BadRequestException ( "此木箱没有绑定托盘号!" + json . getString ( "storagevehicle_code" ) ) ;
}
}
// 生成任务
// 生成任务
@ -1745,8 +1743,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonTaskParam . put ( "table_fk" , disDaoList . get ( 0 ) . getIostorinv_id ( ) . toString ( ) ) ;
jsonTaskParam . put ( "table_fk" , disDaoList . get ( 0 ) . getIostorinv_id ( ) . toString ( ) ) ;
if ( json . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) | |
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 ( "浅" ) ) ) ;
jsonTaskParam . put ( "sort_seq" , Integer . parseInt ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) ) ;
} else {
} else {
jsonTaskParam . put ( "sort_seq" , Integer . parseInt ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) ;
jsonTaskParam . put ( "sort_seq" , Integer . parseInt ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) ;
@ -1759,7 +1756,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新分配明细
// 更新分配明细
JSONObject jsonPoint = schBasePointService . query ( "point_code = '" + end_device_code + "'" ) . uniqueResult ( 0 ) ;
JSONObject jsonPoint = schBasePointService . query ( "point_code = '" + end_device_code + "'" ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( jsonPoint ) ) {
if ( ObjectUtil . isEmpty ( jsonPoint ) ) {
throw new BadRequestException ( "出库点位不存在:" + end_device_code ) ;
throw new BadRequestException ( "出库点位不存在:" + end_device_code ) ;
}
}
disDaoList . forEach ( row - > {
disDaoList . forEach ( row - > {
@ -1773,11 +1770,14 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 创建任务 ( 通过仓位集合创建 )
* 创建任务 ( 通过仓位集合创建 )
* < p > 出库口 : IOSEnum # OUT_POINT / 2 < / p >
* @see IOSEnum # OUT_POINT2
* @see IOSEnum # OUT_POINT
* @param taskMangeList : 仓位集合
* @param taskMangeList : 仓位集合
* @param disLikeList : 分配明细集合
* @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 ) {
// 查询异常货位任务集合
// 查询异常货位任务集合
List < String > taskIds = taskMangeList . stream ( )
List < String > taskIds = taskMangeList . stream ( )
. filter ( row - > row . getString ( "lock_type" ) . equals ( IOSEnum . LOCK_TYPE . code ( "出库异常锁" ) ) )
. filter ( row - > row . getString ( "lock_type" ) . equals ( IOSEnum . LOCK_TYPE . code ( "出库异常锁" ) ) )
@ -1793,7 +1793,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String start_device_code = "" ;
String start_device_code = "" ;
// 是否自动下发
// 是否自动下发
String is_auto_issue = IOSEnum . IS_SEND . code ( "是" ) ;
String is_auto_issue = IOSEnum . IS_SEND . code ( "是" ) ;
// 堆垛机出库口是否缓存货位(1个或者两个)
Param oneOrTwoStruct = paramService . findByCode ( "one_or_two_struct" ) ;
Param oneOrTwoStruct = paramService . findByCode ( "one_or_two_struct" ) ;
String flag = "0" ;
String flag = "0" ;
if ( ObjectUtil . isNotEmpty ( oneOrTwoStruct ) ) {
if ( ObjectUtil . isNotEmpty ( oneOrTwoStruct ) ) {
@ -1810,9 +1810,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 确定终点: 根据仓位所在排确定终点
// 确定终点: 根据仓位所在排确定终点
String end_device_code = "" ;
String end_device_code = "" ;
if ( "1" . equals ( flag ) ) {
if ( "1" . equals ( flag ) ) {
end_device_code = IsEndCode2 ( json ) ;
end_device_code = IsEndCode2 ( json ) ;
} else {
} else {
end_device_code = IsEndCode ( json ) ;
end_device_code = IsEndCode ( json ) ;
}
}
@ -1856,7 +1856,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 查询木箱对应的载具
// 查询木箱对应的载具
JSONObject jsonVeExt = mdPbStoragevehicleextService . getOneByPcsnToObject ( json . getString ( "storagevehicle_code" ) ) ;
JSONObject jsonVeExt = mdPbStoragevehicleextService . getOneByPcsnToObject ( json . getString ( "storagevehicle_code" ) ) ;
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
if ( ObjectUtil . isEmpty ( jsonVeExt ) ) {
throw new BadRequestException ( "此木箱没有绑定托盘号!" + json . getString ( "storagevehicle_code" ) ) ;
throw new BadRequestException ( "此木箱没有绑定托盘号!" + json . getString ( "storagevehicle_code" ) ) ;
}
}
// 生成任务
// 生成任务
@ -1881,8 +1881,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
//设置单据类型,下发rgv任务时,终点不同
//设置单据类型,下发rgv任务时,终点不同
jsonTaskParam . put ( "bill_type" , mst . getBill_type ( ) ) ;
jsonTaskParam . put ( "bill_type" , mst . getBill_type ( ) ) ;
if ( json . getString ( "zdepth" ) . equals ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) | |
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 ( "浅" ) ) ) ;
jsonTaskParam . put ( "sort_seq" , Integer . parseInt ( IOSEnum . ZDEPTH_STRUCT . code ( "浅" ) ) ) ;
} else {
} else {
jsonTaskParam . put ( "sort_seq" , Integer . parseInt ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) ;
jsonTaskParam . put ( "sort_seq" , Integer . parseInt ( IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ) ;
@ -1895,7 +1894,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新分配明细
// 更新分配明细
SchBasePoint point = ischBasePointService . findByCode ( end_device_code ) ;
SchBasePoint point = ischBasePointService . findByCode ( end_device_code ) ;
if ( ObjectUtil . isEmpty ( point ) ) {
if ( ObjectUtil . isEmpty ( point ) ) {
throw new BadRequestException ( "出库点位不存在:" + end_device_code ) ;
throw new BadRequestException ( "出库点位不存在:" + end_device_code ) ;
}
}
disDaoList . forEach ( row - > {
disDaoList . forEach ( row - > {
@ -1909,6 +1908,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 确定终点 : 根据仓位所在排确定终点
* 确定终点 : 根据仓位所在排确定终点
*
* @param structDao : 仓位对象
* @param structDao : 仓位对象
* @return 终点
* @return 终点
* /
* /
@ -1922,21 +1922,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 更新异常货位
* 更新异常货位
*
* @param disDaoList : 所有分配明细集合
* @param disDaoList : 所有分配明细集合
* /
* /
private void UpdateExceptional ( List < StIvtIostorinvdis > 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 )
. map ( StIvtIostorinvdis : : getStruct_code )
. distinct ( ) . collect ( Collectors . joining ( "','" ) ) ;
. distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < JSONObject > attrList = structattrService . getAttributeByCodesToObject ( structCodes ) ;
List < JSONObject > attrList = attrTab . query ( "struct_code IN ('" + structCodeIn + "')" )
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
// 过滤异常货位
// 过滤异常货位
List < JSONObject > attrExcepList = attrList . stream ( )
List < JSONObject > attrExcepList = attrList . stream ( )
@ -1944,32 +1938,31 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
. collect ( Collectors . toList ( ) ) ;
. collect ( Collectors . toList ( ) ) ;
// 找所有异常任务
// 找所有异常任务
String taskCodeIn = attrExcepList . stream ( )
List < String > taskIds = attrExcepList . stream ( )
. map ( row - > row . getString ( "task_code" ) )
. map ( row - > row . getString ( "task_code" ) )
. distinct ( ) . collect ( Collectors . joining ( "','" ) ) ;
. distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < JSONObject > taskList = taskService . query ( "task_id IN ('" + taskCodeIn + "')" )
List < SchBaseTask > taskList = ischBaseTaskService . getTaskByIds ( taskIds , false ) ;
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
// 更新异常货位
// 更新异常货位
List < String > structCodeInList = new ArrayList < > ( ) ;
List < String > structCodeInList = new ArrayList < > ( ) ;
for ( int i = 0 ; i < taskList . size ( ) ; i + + ) {
for ( int i = 0 ; i < taskList . size ( ) ; i + + ) {
JSONObject json = taskList . get ( 0 ) ;
SchBaseTask task = taskList . get ( i ) ;
structCodeInList . add ( task . getPoint_code1 ( ) ) ;
structCodeInList . add ( json . getString ( "point_code1" ) ) ;
structCodeInList . add ( task . getPoint_code2 ( ) ) ;
structCodeInList . add ( json . getString ( "point_code2" ) ) ;
}
}
JSONObject jsonUpdate = new JSONObject ( ) ;
LambdaUpdateWrapper < StIvtStructattr > strattLam = new LambdaUpdateWrapper < > ( ) ;
jsonUpdate . put ( "lock_type" , IOSEnum . LOCK_TYPE . code ( "未锁定" ) ) ;
strattLam . set ( StIvtStructattr : : getLock_type , IOSEnum . LOCK_TYPE . code ( "未锁定" ) )
jsonUpdate . put ( "task_code" , "" ) ;
. set ( StIvtStructattr : : getTask_code , "" )
. in ( StIvtStructattr : : getStruct_code , structCodeInList ) ;
attrTab . update ( jsonUpdate , "struct_code IN ('" + String . join ( "','" , structCodeInList ) + "')" ) ;
structattrService . update ( strattLam ) ;
}
}
/ * *
/ * *
* 更新主表状态
* 更新主表状态
*
* @param iostorinv_id 主表标识
* @param iostorinv_id 主表标识
* /
* /
public void updateMstStatus ( String iostorinv_id ) {
public void updateMstStatus ( String iostorinv_id ) {
@ -2101,19 +2094,25 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 判断是否有异常货位 - 10
* 判断是否有异常货位 - 10
*
* @param disDaoList - 分配明细集合
* @param disDaoList - 分配明细集合
* @return 仓位
* @return 仓位
* /
* /
private String exceptionPointCode ( List < JSONObject > disDaoList ) {
private String exceptionPointCode ( List < JSONObject > disDaoList ) {
WQLObject attrTab = WQLObject . getWQLObject ( "st_ivt_structattr" ) ;
WQLObject TaskTab = WQLObject . getWQLObject ( "sch_base_task" ) ;
String result = "" ;
String result = "" ;
// 查找库内是否有异常货位(主存区)
// 查找库内是否有异常货位(主存区)
List < JSONObject > attrExceptionList = attrTab
// 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 = '"
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
// + 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 ) ) {
if ( ObjectUtil . isEmpty ( attrExceptionList ) ) {
return null ;
return null ;
}
}
@ -2121,12 +2120,19 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
List < JSONObject > exceptionList = new ArrayList < > ( ) ;
List < JSONObject > exceptionList = new ArrayList < > ( ) ;
// 查询异常货位对应的深货位
// 查询异常货位对应的深货位
attrExceptionList . forEach ( row - > {
attrExceptionList . forEach ( row - > {
JSONObject json = attrTab . query ( "row_num = '" + row . getString ( "row_num" ) + "' AND col_num = '" + row . getString ( "col_num" ) + "' AND " +
LambdaQueryWrapper < StIvtStructattr > lam = new LambdaQueryWrapper < > ( ) ;
"layer_num = '" + row . getString ( "layer_num" ) + "' AND zdepth = '" + IOSEnum . ZDEPTH_STRUCT . code ( "深" ) + "'"
lam . eq ( StIvtStructattr : : getRow_num , row . getString ( "row_num" ) )
) . uniqueResult ( 0 ) ;
. eq ( StIvtStructattr : : getCol_num , row . getString ( "col_num" ) )
. eq ( StIvtStructattr : : getLayer_num , row . getString ( "layer_num" ) )
if ( ObjectUtil . isNotEmpty ( json ) ) {
. eq ( StIvtStructattr : : getZdepth , IOSEnum . ZDEPTH_STRUCT . code ( "深" ) ) ;
exceptionList . add ( json ) ;
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 ) ;
}
}
} ) ;
} ) ;
@ -2152,15 +2158,22 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
. findFirst ( ) . orElse ( null ) ;
. findFirst ( ) . orElse ( null ) ;
if ( ObjectUtil . isEmpty ( expJson ) ) {
if ( ObjectUtil . isEmpty ( expJson ) ) {
return "货位【" + jsonObject . getString ( "struct_code" ) + "'】 对应的浅货位有出库异常任务,请检查!" ;
return "货位【" + jsonObject . getString ( "struct_code" ) + "'】 对应的浅货位有出库异常任务,请检查!" ;
}
}
// 查询对应的异常任务
// 查询对应的异常任务
JSONObject jsonTask = TaskTab
// 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" )
// .query("handle_class = '" + TwoOutExceptionalTask.class.getName()
. uniqueResult ( 0 ) ;
// + "' AND is_delete = '0' and point_code2 = '" + expJson.getString("struct_code")
// + "' ORDER BY create_time DESC")
result = "请先下发木箱号为【" + jsonTask . getString ( "vehicle_code" ) + "】的出库任务!" ;
// .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 ;
return result ;
@ -2168,6 +2181,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ * *
/ * *
* 出库下发任务前校验 : 校验木箱类型数据是否都已经维护
* 出库下发任务前校验 : 校验木箱类型数据是否都已经维护
*
* @param iostorinv_id 主表id
* @param iostorinv_id 主表id
* /
* /
private void boxCheck ( String iostorinv_id ) {
private void boxCheck ( String iostorinv_id ) {
@ -2215,7 +2229,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
. map ( MdpbBoxtype : : getBox_type )
. map ( MdpbBoxtype : : getBox_type )
. collect ( Collectors . joining ( "','" ) ) ;
. collect ( Collectors . joining ( "','" ) ) ;
throw new BadRequestException ( "请先维护规格类型为【" + message + "】的木箱规格类型信息!" ) ;
throw new BadRequestException ( "请先维护规格类型为【" + message + "】的木箱规格类型信息!" ) ;
}
}
}
}
}
}