@ -1,20 +1,33 @@
package com.hw.wms.service.impl ;
import java.math.BigDecimal ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.Map ;
import java.util.* ;
import java.util.stream.Collectors ;
import com.alibaba.fastjson2.JSONObject ;
import com.hw.common.core.constant.SecurityConstants ;
import com.hw.common.core.constant.WmsConstants ;
import com.hw.common.core.domain.R ;
import com.hw.common.core.exception.ServiceException ;
import com.hw.common.core.utils.StringUtils ;
import com.hw.common.security.utils.SecurityUtils ;
import com.hw.mes.api.RemoteMesService ;
import com.hw.mes.api.domain.MesBaseBarcodeInfo ;
import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo ;
import com.hw.wms.domain.WmsBaseLocation ;
import com.hw.wms.domain.WmsProductStock ;
import com.hw.wms.domain.WmsRawStock ;
import com.hw.wms.domain.vo.WmsStockTotalTransferVo ;
import com.hw.wms.domain.vo.WmsStockTransferVo ;
import com.hw.wms.mapper.WmsBaseLocationMapper ;
import com.hw.wms.mapper.WmsProductStockMapper ;
import com.hw.wms.mapper.WmsRawStockMapper ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
import com.hw.wms.mapper.WmsStockTotalMapper ;
import com.hw.wms.domain.WmsStockTotal ;
import com.hw.wms.service.IWmsStockTotalService ;
import org.springframework.transaction.annotation.Transactional ;
/ * *
* 原 材 料 库 存 Service 业 务 层 处 理
@ -23,11 +36,25 @@ import com.hw.wms.service.IWmsStockTotalService;
* @date 2024 - 03 - 14
* /
@Service
public class WmsStockTotalServiceImpl implements IWmsStockTotalService
{
public class WmsStockTotalServiceImpl implements IWmsStockTotalService {
@Autowired
private WmsStockTotalMapper wmsStockTotalMapper ;
@Autowired
private WmsRawStockMapper wmsRawStockMapper ;
@Autowired
private WmsProductStockMapper wmsProductStockMapper ;
@Autowired
private WmsBaseLocationMapper wmsBaseLocationMapper ;
@Autowired
private RemoteMesService remoteMesService ;
public static final int TRANSFER_TYPE_RAW_STOCK = 1 ;
public static final int TRANSFER_TYPE_STOCK_TOTAL = 2 ;
/ * *
* 查 询 原 材 料 库 存
*
@ -35,8 +62,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 原 材 料 库 存
* /
@Override
public WmsStockTotal selectWmsStockTotalByStockTotalId ( Long stockTotalId )
{
public WmsStockTotal selectWmsStockTotalByStockTotalId ( Long stockTotalId ) {
return wmsStockTotalMapper . selectWmsStockTotalByStockTotalId ( stockTotalId ) ;
}
@ -47,8 +73,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 原 材 料 库 存
* /
@Override
public List < WmsStockTotal > selectWmsStockTotalList ( WmsStockTotal wmsStockTotal )
{
public List < WmsStockTotal > selectWmsStockTotalList ( WmsStockTotal wmsStockTotal ) {
return wmsStockTotalMapper . selectWmsStockTotalList ( wmsStockTotal ) ;
}
@ -59,8 +84,9 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 原 材 料 库 存
* /
@Override
public List < WmsStockTotal > selectWmsStockTotalJoinList ( WmsStockTotal wmsStockTotal )
{
public List < WmsStockTotal > selectWmsStockTotalJoinList ( WmsStockTotal wmsStockTotal ) {
wmsStockTotal . setMaterialSpec ( StringUtils . isNotEmpty ( wmsStockTotal . getMaterialSpec ( ) )
? wmsStockTotal . getMaterialSpec ( ) . replaceAll ( "\\s+" , "" ) : "" ) ;
return wmsStockTotalMapper . selectWmsStockTotalJoinList ( wmsStockTotal ) ;
}
@ -72,8 +98,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 结 果
* /
@Override
public int insertWmsStockTotal ( WmsStockTotal wmsStockTotal )
{
public int insertWmsStockTotal ( WmsStockTotal wmsStockTotal ) {
return wmsStockTotalMapper . insertWmsStockTotal ( wmsStockTotal ) ;
}
@ -84,8 +109,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 结 果
* /
@Override
public int updateWmsStockTotal ( WmsStockTotal wmsStockTotal )
{
public int updateWmsStockTotal ( WmsStockTotal wmsStockTotal ) {
return wmsStockTotalMapper . updateWmsStockTotal ( wmsStockTotal ) ;
}
@ -96,8 +120,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 结 果
* /
@Override
public int deleteWmsStockTotalByStockTotalIds ( Long [ ] stockTotalIds )
{
public int deleteWmsStockTotalByStockTotalIds ( Long [ ] stockTotalIds ) {
return wmsStockTotalMapper . deleteWmsStockTotalByStockTotalIds ( stockTotalIds ) ;
}
@ -108,17 +131,11 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 结 果
* /
@Override
public int deleteWmsStockTotalByStockTotalId ( Long stockTotalId )
{
public int deleteWmsStockTotalByStockTotalId ( Long stockTotalId ) {
return wmsStockTotalMapper . deleteWmsStockTotalByStockTotalId ( stockTotalId ) ;
}
/ * *
* 查 询 总 库 存 列 表 ( 根 据 销 售 订 单 查 询 库 存 , 以 及 根 据 plancode 和 plandetailcode 申 请 的 数 量 , 包 含 安 全 库 存 ) , Join material
*
@ -126,8 +143,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 总 库 存
* /
@Override
public List < WmsStockTotal > selectWmsStockTotalJoinListBySaleOrder ( WmsStockTotal wmsStockTotal )
{
public List < WmsStockTotal > selectWmsStockTotalJoinListBySaleOrder ( WmsStockTotal wmsStockTotal ) {
return wmsStockTotalMapper . selectWmsStockTotalJoinListBySaleOrder ( wmsStockTotal ) ;
}
@ -138,41 +154,39 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
* @return 总 库 存
* /
@Override
public JSONObject selectWmsStockTotalJoinRealListBySaleOrder ( WmsStockTotal wmsStockTotal )
{
List < WmsStockTotal > wmsStockTotals = wmsStockTotalMapper . selectWmsStockTotalJoinRealListBySaleOrder ( wmsStockTotal ) ;
public JSONObject selectWmsStockTotalJoinRealListBySaleOrder ( WmsStockTotal wmsStockTotal ) {
List < WmsStockTotal > wmsStockTotals = wmsStockTotalMapper . selectWmsStockTotalJoinRealListBySaleOrder ( wmsStockTotal ) ;
// 使用流处理合并所有列表并计数(计算每个物料总库存数量)
Map < Long , BigDecimal > totalAmountMap = wmsStockTotals . stream ( ) . filter ( w - > w . getTotalAmount ( ) ! = null )
Map < Long , BigDecimal > totalAmountMap = wmsStockTotals . stream ( ) . filter ( w - > w . getTotalAmount ( ) ! = null )
. collect ( Collectors . groupingBy (
WmsStockTotal : : getMaterialId , // 根据id分组
Collectors . reducing ( BigDecimal . ZERO , // 初始化求和值为0
WmsStockTotal : : getTotalAmount , BigDecimal : : add ) ) ) ;
// 使用流处理合并所有列表并计数(计算每个物料总占用数量)
Map < Long , BigDecimal > occupyAmountMap = wmsStockTotals . stream ( ) . filter ( w - > w . getOccupyAmount ( ) ! = null )
Map < Long , BigDecimal > occupyAmountMap = wmsStockTotals . stream ( ) . filter ( w - > w . getOccupyAmount ( ) ! = null )
. collect ( Collectors . groupingBy (
WmsStockTotal : : getMaterialId , // 根据id分组
Collectors . reducing ( BigDecimal . ZERO , // 初始化求和值为0
WmsStockTotal : : getOccupyAmount , BigDecimal : : add ) ) ) ;
// 使用流处理合并所有列表并计数(计算每个物料总使用数量)
Map < Long , BigDecimal > realOutstockAmountMap = wmsStockTotals . stream ( ) . filter ( w - > w . getOutstockAmount ( ) ! = null )
Map < Long , BigDecimal > realOutstockAmountMap = wmsStockTotals . stream ( ) . filter ( w - > w . getOutstockAmount ( ) ! = null )
. collect ( Collectors . groupingBy (
WmsStockTotal : : getMaterialId , // 根据id分组
Collectors . reducing ( BigDecimal . ZERO , // 初始化求和值为0
WmsStockTotal : : getOutstockAmount , BigDecimal : : add ) ) ) ;
JSONObject returnObj = new JSONObject ( ) ;
returnObj . put ( "totalAmountMap" , totalAmountMap ) ;
returnObj . put ( "occupyAmountMap" , occupyAmountMap ) ;
returnObj . put ( "outstockAmountMap" , realOutstockAmountMap ) ;
returnObj . put ( "totalAmountMap" , totalAmountMap ) ;
returnObj . put ( "occupyAmountMap" , occupyAmountMap ) ;
returnObj . put ( "outstockAmountMap" , realOutstockAmountMap ) ;
return returnObj ;
}
/ * *
* 根 据 销 售 订 单 查 询 成 品 库 存 列 表 Join material , warehouse , saleorder , totalAmount > 0
*
@ -192,4 +206,246 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService
}
/ * *
* 原 材 料 库 位 库 存 转 销 售 订 单 或 安 全 库 存
*
* @param wmsStockTransferVo
* /
@Override
@Transactional ( rollbackFor = Exception . class )
public int transferRaw ( WmsStockTransferVo wmsStockTransferVo ) {
String [ ] indexStockIds = wmsStockTransferVo . getIndexStockIds ( ) ;
String safeFlag = wmsStockTransferVo . getSafeFlag ( ) ;
Long saleOrderId = wmsStockTransferVo . getSaleOrderId ( ) ;
String saleorderCode = wmsStockTransferVo . getSaleorderCode ( ) ;
List < MesBaseBarcodeInfo > mesBaseBarcodeInfos = new ArrayList < > ( ) ;
for ( String indexStockId : indexStockIds ) {
String [ ] indexStockIdArr = indexStockId . split ( "-" ) ;
int index = Integer . parseInt ( indexStockIdArr [ 0 ] ) + 1 ;
Long rawStockId = Long . valueOf ( indexStockIdArr [ 1 ] ) ;
WmsRawStock wmsRawStock = wmsRawStockMapper . selectWmsRawStockByRawStockId ( rawStockId ) ;
if ( ! WmsConstants . WMS_RAW_STOCK_COMPLETE_FLAG_YES . equals ( wmsRawStock . getCompleteFlag ( ) ) ) {
throw new ServiceException ( String . format ( "序号%s,库存为拆分的物料,不能转" , index ) ) ;
}
MesBaseBarcodeInfo mesBaseBarcodeInfo = this . transferRawStock ( wmsRawStock , saleOrderId , saleorderCode , safeFlag , index , TRANSFER_TYPE_RAW_STOCK ) ;
mesBaseBarcodeInfos . add ( mesBaseBarcodeInfo ) ;
}
R < Boolean > transferBaseBarcodeInfosResult = remoteMesService . transferBaseBarcodeInfos ( mesBaseBarcodeInfos , SecurityConstants . INNER ) ;
if ( ! transferBaseBarcodeInfosResult . getData ( ) ) {
throw new RuntimeException ( "更新条码失败" ) ;
}
return 1 ;
}
public MesBaseBarcodeInfo transferRawStock ( WmsRawStock wmsRawStock , Long saleOrderId , String saleorderCode , String safeFlag , int index , int transferType ) {
if ( transferType = = TRANSFER_TYPE_RAW_STOCK ) {
Long dbSaleOrderId = wmsRawStock . getSaleOrderId ( ) ;
String dbSafeFlag = wmsRawStock . getSafeFlag ( ) ;
if ( dbSaleOrderId . equals ( saleOrderId ) ) {
if ( dbSafeFlag . equals ( WmsConstants . WMS_SAFE_FLAG_YES ) ) {
throw new ServiceException ( String . format ( "序号%s,库存已经是安全库存" , index ) ) ;
} else {
throw new ServiceException ( String . format ( "序号%s,库存销售订单跟转库存的销售订单相同" , index ) ) ;
}
}
}
BigDecimal stockOccupyAmount = wmsRawStock . getOccupyAmount ( ) = = null ? BigDecimal . ZERO : wmsRawStock . getOccupyAmount ( ) ;
BigDecimal stockFrozenAmount = wmsRawStock . getFrozenAmount ( ) = = null ? BigDecimal . ZERO : wmsRawStock . getFrozenAmount ( ) ;
if ( stockOccupyAmount . compareTo ( BigDecimal . ZERO ) > 0 | | stockFrozenAmount . compareTo ( BigDecimal . ZERO ) > 0 ) {
throw new ServiceException ( String . format ( "序号%s,库存有占用数量,不能转库存" , index ) ) ;
}
WmsStockTotal wmsStockTotal = this . getWmsStockTotalByUI ( wmsRawStock ) ;
BigDecimal stockTotalOccupyAmount = wmsStockTotal . getOccupyAmount ( ) = = null ? BigDecimal . ZERO : wmsStockTotal . getOccupyAmount ( ) ;
BigDecimal stockTotalFrozenAmount = wmsStockTotal . getFrozenAmount ( ) = = null ? BigDecimal . ZERO : wmsStockTotal . getFrozenAmount ( ) ;
if ( stockTotalOccupyAmount . compareTo ( BigDecimal . ZERO ) > 0 | | stockTotalFrozenAmount . compareTo ( BigDecimal . ZERO ) > 0 ) {
throw new ServiceException ( String . format ( "序号%s,库存有占用数量,不能转库存" , index ) ) ;
}
if ( transferType = = TRANSFER_TYPE_RAW_STOCK ) {
WmsBaseLocation baseLocation = wmsBaseLocationMapper . selectWmsBaseLocationByLocationCode ( wmsRawStock . getLocationCode ( ) ) ;
if ( ! baseLocation . getLocationStatus ( ) . equals ( WmsConstants . WMS_BASE_LOCATION_STATUS_NORMAL ) ) {
String statusPrompt = WmsConstants . LOCATION_STATUS_PROMPT_MAP . get ( baseLocation . getLocationStatus ( ) ) ;
throw new ServiceException ( String . format ( "序号%s,库位状态为%s" , index , statusPrompt ) ) ;
}
}
MesBaseBarcodeInfo mesBaseBarcodeInfo = new MesBaseBarcodeInfo ( ) ;
mesBaseBarcodeInfo . setSaleOrderId ( saleOrderId ) ;
mesBaseBarcodeInfo . setSaleorderCode ( saleorderCode ) ;
mesBaseBarcodeInfo . setSafeFlag ( safeFlag ) ;
mesBaseBarcodeInfo . setBarcodeInfo ( wmsRawStock . getInstockBatch ( ) ) ;
wmsRawStock . setSafeFlag ( safeFlag ) ;
wmsRawStock . setSaleOrderId ( saleOrderId ) ;
wmsRawStock . setSaleorderCode ( saleorderCode ) ;
wmsRawStock . setUpdateDate ( new Date ( ) ) ;
wmsRawStock . setUpdateBy ( SecurityUtils . getUsername ( ) ) ;
wmsRawStockMapper . updateWmsRawStock ( wmsRawStock ) ;
return mesBaseBarcodeInfo ;
}
private WmsStockTotal getWmsStockTotalByUI ( WmsRawStock wmsRawStock ) {
WmsStockTotal queryStockTotal = new WmsStockTotal ( ) ;
queryStockTotal . setWarehouseId ( wmsRawStock . getWarehouseId ( ) ) ;
queryStockTotal . setMaterialId ( wmsRawStock . getMaterialId ( ) ) ;
queryStockTotal . setSaleOrderId ( wmsRawStock . getSaleOrderId ( ) ) ;
List < WmsStockTotal > wmsStockTotals = wmsStockTotalMapper . selectOnlyWmsStockTotalList ( queryStockTotal ) ;
return wmsStockTotals ! = null & & ! wmsStockTotals . isEmpty ( ) ? wmsStockTotals . get ( 0 ) : null ;
}
/ * *
* 原 材 料 总 库 存 转 销 售 订 单 或 安 全 库 存
*
* @param wmsStockTotalTransferVo
* /
@Transactional ( rollbackFor = Exception . class )
@Override
public int transferRawStockTotal ( WmsStockTotalTransferVo wmsStockTotalTransferVo ) {
BigDecimal transferAmount = wmsStockTotalTransferVo . getTransferAmount ( ) ;
String safeFlag = wmsStockTotalTransferVo . getSafeFlag ( ) ;
Long saleOrderId = wmsStockTotalTransferVo . getSaleOrderId ( ) ;
String saleorderCode = wmsStockTotalTransferVo . getSaleorderCode ( ) ;
WmsStockTotal wmsStockTotal = wmsStockTotalMapper . selectWmsStockTotalByStockTotalId ( wmsStockTotalTransferVo . getStockTotalId ( ) ) ;
if ( ! wmsStockTotal . getStockType ( ) . equals ( WmsConstants . RWA_STOCK_STOCK_TYPE_RAW ) ) {
throw new ServiceException ( "物料类型不对" ) ;
}
BigDecimal totalAmount = wmsStockTotal . getTotalAmount ( ) ;
BigDecimal occupyAmount = wmsStockTotal . getOccupyAmount ( ) = = null ? BigDecimal . ZERO : wmsStockTotal . getOccupyAmount ( ) ;
BigDecimal frozenAmount = wmsStockTotal . getFrozenAmount ( ) = = null ? BigDecimal . ZERO : wmsStockTotal . getFrozenAmount ( ) ;
BigDecimal availableAmount = totalAmount . subtract ( occupyAmount ) . subtract ( frozenAmount ) ;
if ( transferAmount . compareTo ( availableAmount ) > 0 ) {
throw new ServiceException ( "转库存数量不能大于可用数量" + availableAmount ) ;
}
if ( wmsStockTotal . getSaleOrderId ( ) . equals ( saleOrderId ) ) {
if ( wmsStockTotal . getSafeFlag ( ) . equals ( WmsConstants . WMS_SAFE_FLAG_YES ) ) {
throw new ServiceException ( String . format ( "序号%s,库存已经是安全库存" , wmsStockTotalTransferVo . getIndex ( ) ) ) ;
} else {
throw new ServiceException ( String . format ( "序号%s,库存销售订单跟转库存的销售订单相同" , wmsStockTotalTransferVo . getIndex ( ) ) ) ;
}
}
Long warehouseId = wmsStockTotal . getWarehouseId ( ) ;
Long materialId = wmsStockTotal . getMaterialId ( ) ;
WmsRawStock queryRawStock = new WmsRawStock ( ) ;
queryRawStock . setMaterialId ( materialId ) ;
queryRawStock . setWarehouseId ( warehouseId ) ;
queryRawStock . setSaleOrderId ( wmsStockTotal . getSaleOrderId ( ) ) ;
Map < String , Object > params = new HashMap < > ( ) ;
params . put ( "limit" , transferAmount ) ;
queryRawStock . setParams ( params ) ;
//先找浅库位,再找浅库位对应的深库位
List < WmsRawStock > wmsRawStocks = wmsRawStockMapper . selectWmsRawStocks4Transfer ( queryRawStock ) ;
if ( wmsRawStocks = = null | | wmsRawStocks . isEmpty ( ) ) {
throw new ServiceException ( "没有可转库存明细" ) ;
}
if ( wmsRawStocks . size ( ) < transferAmount . intValue ( ) ) {
throw new ServiceException ( "可转库存明细数量为%s" , wmsRawStocks . size ( ) ) ;
}
List < MesBaseBarcodeInfo > mesBaseBarcodeInfos = new ArrayList < > ( ) ;
for ( WmsRawStock wmsRawStock : wmsRawStocks ) {
MesBaseBarcodeInfo mesBaseBarcodeInfo = this . transferRawStock ( wmsRawStock , saleOrderId , saleorderCode , safeFlag , wmsStockTotalTransferVo . getIndex ( ) , TRANSFER_TYPE_STOCK_TOTAL ) ;
mesBaseBarcodeInfos . add ( mesBaseBarcodeInfo ) ;
}
R < Boolean > transferBaseBarcodeInfosResult = remoteMesService . transferBaseBarcodeInfos ( mesBaseBarcodeInfos , SecurityConstants . INNER ) ;
if ( ! transferBaseBarcodeInfosResult . getData ( ) ) {
throw new RuntimeException ( "更新条码失败" ) ;
}
return 1 ;
}
/ * *
* 原 材 料 总 库 存 转 销 售 订 单 或 安 全 库 存
*
* @param wmsStockTotalTransferVo
* /
@Transactional ( rollbackFor = Exception . class )
@Override
public int transferProductStockTotal ( WmsStockTotalTransferVo wmsStockTotalTransferVo ) {
BigDecimal transferAmount = wmsStockTotalTransferVo . getTransferAmount ( ) ;
String safeFlag = wmsStockTotalTransferVo . getSafeFlag ( ) ;
Long saleOrderId = wmsStockTotalTransferVo . getSaleOrderId ( ) ;
String saleorderCode = wmsStockTotalTransferVo . getSaleorderCode ( ) ;
WmsStockTotal wmsStockTotal = wmsStockTotalMapper . selectWmsStockTotalByStockTotalId ( wmsStockTotalTransferVo . getStockTotalId ( ) ) ;
BigDecimal totalAmount = wmsStockTotal . getTotalAmount ( ) ;
BigDecimal occupyAmount = wmsStockTotal . getOccupyAmount ( ) = = null ? BigDecimal . ZERO : wmsStockTotal . getOccupyAmount ( ) ;
BigDecimal frozenAmount = wmsStockTotal . getFrozenAmount ( ) = = null ? BigDecimal . ZERO : wmsStockTotal . getFrozenAmount ( ) ;
BigDecimal availableAmount = totalAmount . subtract ( occupyAmount ) . subtract ( frozenAmount ) ;
if ( transferAmount . compareTo ( availableAmount ) > 0 ) {
throw new ServiceException ( "转库存数量不能大于可用数量" + availableAmount ) ;
}
if ( wmsStockTotal . getSaleOrderId ( ) . equals ( saleOrderId ) ) {
if ( wmsStockTotal . getSafeFlag ( ) . equals ( WmsConstants . WMS_SAFE_FLAG_YES ) ) {
throw new ServiceException ( String . format ( "序号%s,库存已经是安全库存" , wmsStockTotalTransferVo . getIndex ( ) ) ) ;
} else {
throw new ServiceException ( String . format ( "序号%s,库存销售订单跟转库存的销售订单相同" , wmsStockTotalTransferVo . getIndex ( ) ) ) ;
}
}
Long warehouseId = wmsStockTotal . getWarehouseId ( ) ;
Long materialId = wmsStockTotal . getMaterialId ( ) ;
WmsProductStock queryProductStock = new WmsProductStock ( ) ;
queryProductStock . setProductId ( materialId ) ;
queryProductStock . setWarehouseId ( warehouseId ) ;
queryProductStock . setSaleOrderId ( wmsStockTotal . getSaleOrderId ( ) ) ;
Map < String , Object > params = new HashMap < > ( ) ;
params . put ( "limit" , transferAmount ) ;
queryProductStock . setParams ( params ) ;
//先找浅库位,再找浅库位对应的深库位
List < WmsProductStock > wmsProductStocks = wmsProductStockMapper . selectWmsProductStocks4Transfer ( queryProductStock ) ;
if ( wmsProductStocks = = null | | wmsProductStocks . isEmpty ( ) ) {
throw new ServiceException ( "没有可转库存明细" ) ;
}
if ( wmsProductStocks . size ( ) < transferAmount . intValue ( ) ) {
throw new ServiceException ( "可转库存明细数量为%s" , wmsProductStocks . size ( ) ) ;
}
List < MesBaseBarcodeInfo > mesBaseBarcodeInfos = new ArrayList < > ( ) ;
for ( WmsProductStock wmsProductStock : wmsProductStocks ) {
MesBaseBarcodeInfo mesBaseBarcodeInfo = new MesBaseBarcodeInfo ( ) ;
mesBaseBarcodeInfo . setSaleOrderId ( saleOrderId ) ;
mesBaseBarcodeInfo . setSaleorderCode ( saleorderCode ) ;
mesBaseBarcodeInfo . setSafeFlag ( safeFlag ) ;
mesBaseBarcodeInfo . setBarcodeInfo ( wmsProductStock . getProductBatch ( ) ) ;
mesBaseBarcodeInfos . add ( mesBaseBarcodeInfo ) ;
wmsProductStock . setSafeFlag ( safeFlag ) ;
wmsProductStock . setSaleOrderId ( saleOrderId ) ;
wmsProductStock . setSaleorderCode ( saleorderCode ) ;
wmsProductStock . setUpdateDate ( new Date ( ) ) ;
wmsProductStock . setUpdateBy ( SecurityUtils . getUsername ( ) ) ;
wmsProductStockMapper . updateWmsProductStock ( wmsProductStock ) ;
}
MesSaleOrderTransferVo mesSaleOrderTransferVo = new MesSaleOrderTransferVo ( ) ;
mesSaleOrderTransferVo . setTransferAmount ( transferAmount ) ;
mesSaleOrderTransferVo . setOldSaleOrderId ( wmsStockTotal . getSaleOrderId ( ) ) ;
mesSaleOrderTransferVo . setNewSaleOrderId ( saleOrderId ) ;
mesSaleOrderTransferVo . setMesBaseBarcodeInfos ( mesBaseBarcodeInfos ) ;
R < Boolean > transferBaseBarcodeInfosResult = remoteMesService . transferSaleOrders ( mesSaleOrderTransferVo , SecurityConstants . INNER ) ;
if ( ! transferBaseBarcodeInfosResult . getData ( ) ) {
throw new RuntimeException ( "销售订单信息转换失败" ) ;
}
return 1 ;
}
}