@ -13,6 +13,10 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper ;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper ;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl ;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl ;
import lombok.SneakyThrows ;
import lombok.SneakyThrows ;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation ;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord ;
import org.nl.b_lms.pdm.subpackagerelation.service.IPdmBiSubpackagerelationrecordService ;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService ;
import org.nl.b_lms.pdm_manage.enums.SUBEnum ;
import org.nl.b_lms.pdm_manage.enums.SUBEnum ;
import org.nl.b_lms.sch.task.dao.SchBaseTask ;
import org.nl.b_lms.sch.task.dao.SchBaseTask ;
import org.nl.b_lms.sch.task.service.IschBaseTaskService ;
import org.nl.b_lms.sch.task.service.IschBaseTaskService ;
@ -37,6 +41,7 @@ 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.st.service.StIvtSectattrService ;
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.IdUtil ;
import org.nl.common.utils.IdUtil ;
import org.nl.common.utils.SecurityUtils ;
import org.nl.common.utils.SecurityUtils ;
@ -147,6 +152,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
private StIvtStructivtService structivtService ;
private StIvtStructivtService structivtService ;
@Autowired
@Autowired
private IschBaseTaskService ischBaseTaskService ;
private IschBaseTaskService ischBaseTaskService ;
@Autowired
private IpdmBiSubpackagerelationService subpackagerelationService ;
@Autowired
private IPdmBiSubpackagerelationrecordService subpackagerelationrecordService ;
@Autowired
private StIvtSectattrService sectattrService ;
@Override
@Override
@Transactional
@Transactional
@ -739,15 +750,6 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
@Override
@Override
@Transactional
@Transactional
public void confirm ( JSONObject whereJson ) {
public void confirm ( JSONObject whereJson ) {
// 子卷包装关系表
WQLObject subTab = WQLObject . getWQLObject ( "pdm_bi_subpackagerelation" ) ;
// 包装关系出入库记录表
WQLObject subRecordTab = WQLObject . getWQLObject ( "pdm_bi_subpackagerelationrecord" ) ;
// 任务表
WQLObject taskService = WQLObject . getWQLObject ( "sch_base_task" ) ;
// 库区表
WQLObject sectTab = WQLObject . getWQLObject ( "st_ivt_sectattr" ) ;
StIvtIostorinv mstDao = this . getById ( whereJson . getLongValue ( "iostorinv_id" ) ) ;
StIvtIostorinv mstDao = this . getById ( whereJson . getLongValue ( "iostorinv_id" ) ) ;
/ *
/ *
@ -792,20 +794,18 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
}
// 判断是否有未完成的任务
// 判断是否有未完成的任务
String task_in = disDaoList . stream ( )
List < String > taskIds = disDaoList . stream ( )
. filter ( row - > ObjectUtil . isNotEmpty ( row . getTask_id ( ) ) )
. filter ( row - > ObjectUtil . isNotEmpty ( row . getTask_id ( ) ) )
. map ( row - > row . getTask_id ( ) . toString ( ) )
. map ( row - > row . getTask_id ( ) )
. distinct ( )
. distinct ( )
. collect ( Collectors . joining ( "','" ) ) ;
. collect ( Collectors . toList ( ) ) ;
if ( taskIds . size ( ) > 0 ) {
JSONArray taskArr = taskService . query ( "task_id IN ('" + task_in + "') AND task_status <> '" + TaskStatusEnum . FINISHED . getCode ( ) + "' AND is_delete = '0'" )
List < SchBaseTask > tasks = ischBaseTaskService . list ( new LambdaQueryWrapper < SchBaseTask > ( ) . in ( SchBaseTask : : getTask_id , taskIds ) ) ;
. getResultJSONArray ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( tasks ) ) {
throw new BadRequestException ( "有任务未完成,不允许强制确认!" ) ;
if ( ObjectUtil . isNotEmpty ( taskArr ) ) {
}
throw new BadRequestException ( "有任务未完成,不允许强制确认!" ) ;
}
}
// 需要更新的库存集合
// 需要更新的库存集合
List < JSONObject > needUpdateIvtList = new ArrayList < > ( ) ;
List < JSONObject > needUpdateIvtList = new ArrayList < > ( ) ;
@ -871,17 +871,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
/ *
/ *
* 插入子卷包装关系出入记录
* 插入子卷包装关系出入记录
* /
* /
String pcsn_in = disDaoList . stream ( )
. map ( StIvtIostorinvdis : : getPcsn )
. collect ( Collectors . joining ( "','" ) ) ;
// 子卷包装集合
// 子卷包装集合
List < JSONObject > subList = subTab . query ( "container_name IN ('" + pcsn_in + "') AND status = '" + SUBEnum . STATUS . code ( "入库" ) + "'" )
List < String > pcsns = disDaoList . stream ( )
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
. map ( StIvtIostorinvdis : : getPcsn )
. collect ( Collectors . toList ( ) ) ;
List < JSONObject > subList = subpackagerelationService . getSubPackageInfoBySubRollsStatusObject ( pcsns , SUBEnum . STATUS . code ( "入库" ) ) ;
// 子卷包装出入记录集合
// 子卷包装出入记录集合
List < JSONObject > suRebList = subRecordTab . query ( "container_name IN ('" + pcsn_in + "') AND status = '" + SUBEnum . STATUS . code ( "入库" ) + "' AND bill_code = '" + mstDao . getBill_code ( ) + "'" )
List < JSONObject > suRebList = subpackagerelationrecordService . getSubPackageRecordInfoBySubRollsStatusObject ( pcsns , SUBEnum . STATUS . code ( "入库" ) , mstDao . getBill_code ( ) ) ;
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
for ( int i = 0 ; i < disDaoList . size ( ) ; i + + ) {
for ( int i = 0 ; i < disDaoList . size ( ) ; i + + ) {
StIvtIostorinvdis disDao = disDaoList . get ( i ) ;
StIvtIostorinvdis disDao = disDaoList . get ( i ) ;
@ -917,29 +913,32 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonSub . put ( "io_type" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
jsonSub . put ( "io_type" , IOSEnum . IO_TYPE . code ( "出库" ) ) ;
jsonSub . put ( "insert_time" , DateUtil . now ( ) ) ;
jsonSub . put ( "insert_time" , DateUtil . now ( ) ) ;
jsonSub . put ( "record_id" , cn . hutool . core . util . IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
jsonSub . put ( "record_id" , cn . hutool . core . util . IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
subRecordTab . insert ( jsonSub ) ;
PdmBiSubpackagerelationrecord subpackagerelationrecord = jsonSub . toJavaObject ( PdmBiSubpackagerelationrecord . class ) ;
subpackagerelationrecordService . save ( subpackagerelationrecord ) ;
}
}
/ *
/ *
* 更新子卷包装关系
* 更新子卷包装关系
* /
* /
JSONObject jsonSubParam = new JSONObject ( ) ;
LambdaUpdateWrapper < PdmBiSubpackagerelation > subLam = new LambdaUpdateWrapper < > ( ) ;
// 如果是拆箱出库和手工出库则为生成状态,否则为出库状态
// 如果是拆箱出库和手工出库则为生成状态,否则为出库状态
if ( mstDao . getBill_type ( ) . equals ( IOSEnum . OUT_TYPE . code ( "拆箱出库" ) ) | | mstDao . getBill_type ( ) . equals ( IOSEnum . OUT_TYPE . code ( "手工出库" ) ) ) {
if ( mstDao . getBill_type ( ) . equals ( IOSEnum . OUT_TYPE . code ( "拆箱出库" ) ) | | mstDao . getBill_type ( ) . equals ( IOSEnum . OUT_TYPE . code ( "手工出库" ) ) ) {
jsonSubParam . put ( "status" , SUBEnum . STATUS . code ( "生成" ) ) ;
subLam . set ( PdmBiSubpackagerelation : : getStatus , SUBEnum . STATUS . code ( "生成" ) ) ;
} else {
} else {
jsonSubParam . put ( "status" , SUBEnum . STATUS . code ( "出库" ) ) ;
subLam . set ( PdmBiSubpackagerelation : : getStatus , SUBEnum . STATUS . code ( "出库" ) ) ;
}
}
subLam . in ( PdmBiSubpackagerelation : : getContainer_name , pcsns ) ;
subTab . update ( jsonSubParam , "container_name IN ('" + pcsn_in + "')" ) ;
subpackagerelationService . update ( subLam ) ;
/ *
/ *
* 更新任务为完成
* 更新任务为完成
* /
* /
JSONObject jsonTaskParam = new JSONObject ( ) ;
if ( ObjectUtil . isNotEmpty ( needUpdateTaskList ) ) {
jsonTaskParam . put ( "task_status" , TaskStatusEnum . FINISHED . getCode ( ) ) ;
LambdaUpdateWrapper < SchBaseTask > taskLam = new LambdaUpdateWrapper < > ( ) ;
taskLam . set ( SchBaseTask : : getTask_status , TaskStatusEnum . FINISHED . getCode ( ) )
taskService . update ( jsonTaskParam , "task_id IN ('" + String . join ( "','" , needUpdateTaskList ) + "')" ) ;
. in ( SchBaseTask : : getTask_id , needUpdateTaskList ) ;
ischBaseTaskService . update ( taskLam ) ;
}
/ *
/ *
* 如果是调拨出库则生成调拨入库单
* 如果是调拨出库则生成调拨入库单
@ -956,13 +955,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
) {
) {
// 查询库区
// 查询库区
String sect_in = disDaoList . stream ( )
List < String > sects = disDaoList . stream ( )
. map ( row - > row . getSect_id ( ) . toString ( ) )
. map ( row - > row . getSect_id ( ) )
. collect ( Collectors . joining ( "','" ) ) ;
. collect ( Collectors . toList ( ) ) ;
List < JSONObject > sectList = sectTab . query ( "sect_id IN ('" + sect_in + "')" )
. getResultJSONArray ( 0 ) . toJavaList ( JSONObject . class ) ;
List < JSONObject > sectList = sectattrService . getByIdsObject ( sects ) ;
for ( int i = 0 ; i < disDaoList . size ( ) ; i + + ) {
for ( int i = 0 ; i < disDaoList . size ( ) ; i + + ) {
StIvtIostorinvdis disDao = disDaoList . get ( i ) ;
StIvtIostorinvdis disDao = disDaoList . get ( i ) ;
@ -972,12 +969,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
//如果是虚拟区的出库,直接把包装关系删除;如果为立库的包装关系,将解绑删除标识置为1。当发货区解绑时,删除包装关系
//如果是虚拟区的出库,直接把包装关系删除;如果为立库的包装关系,将解绑删除标识置为1。当发货区解绑时,删除包装关系
if ( jsonSect . getString ( "sect_type_attr" ) . equals ( IOSEnum . SECT_TYPE . code ( "虚拟区" ) ) ) {
if ( jsonSect . getString ( "sect_type_attr" ) . equals ( IOSEnum . SECT_TYPE . code ( "虚拟区" ) ) ) {
subTab . delete ( "container_name = '" + disDao . getPcsn ( ) + "'" ) ;
subpackagerelationService . remove ( new LambdaQueryWrapper < PdmBiSubpackagerelation > ( )
. eq ( PdmBiSubpackagerelation : : getContainer_name , disDao . getPcsn ( ) ) ) ;
} else {
} else {
HashMap < String , String > map = new HashMap < > ( ) ;
subpackagerelationService . update ( new LambdaUpdateWrapper < PdmBiSubpackagerelation > ( )
map . put ( "need_delete" , "1" ) ;
. set ( PdmBiSubpackagerelation : : getNeed_delete , "1" )
. eq ( PdmBiSubpackagerelation : : getContainer_name , disDao . getPcsn ( ) ) ) ;
subTab . update ( map , "container_name = '" + disDao . getPcsn ( ) + "'" ) ;
}
}
}
}
}
}