@ -562,7 +562,7 @@ public class InvoiceServiceImpl implements InvoiceService {
/ / 抛送MES数据
untils . sendMaterialInfoToMES_NEW2 ( shipRequestName , " " , materialPackingKeyList , billCode , eventUser ) ;
WlySaveUnDoInfo ( billCode, commitDate ) ;
WlySaveUnDoInfo ( materialPackingKeyList, billCode, commitDate ) ;
}
else
{
@ -956,7 +956,18 @@ public class InvoiceServiceImpl implements InvoiceService {
return undoId ;
}
public void WlySaveUnDoInfo ( String undoid , String commitDate ) {
public void WlySaveUnDoInfo ( List < String > list , String undoid , String commitDate ) {
/ / 更新事件名
/ / 此SQL语句用于更新物料包装的最后事件名称 、 评论和时间
String sqlu = " UPDATE MATERIALPACKING m SET m.LASTEVENTNAME=:LASTEVENTNAME,m.LASTEVENTCOMMENT =:LASTEVENTCOMMENT,m.LASTEVENTTIME =SYSDATE \ r \ n " +
" WHERE m.SITENAME =:SITENAME AND m.MATERIALPACKINGNAME in (:BOXLIST) " ;
Map < String , Object > bpu = new HashMap < String , Object > ( ) ;
bpu . put ( " LASTEVENTNAME " , makeEventInfo . getEventName ( ) ) ;
bpu . put ( " LASTEVENTCOMMENT " , makeEventInfo . getEventComment ( ) ) ;
bpu . put ( " SITENAME " , " SDK " ) ;
bpu . put ( " BOXLIST " , list ) ;
IDMFrameServiceProxy . getSqlTemplate ( ) . update ( sqlu , bpu ) ;
String insertUnDOMaterialPackingInfo = " insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE, "
+ " SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE, "
@ -3428,6 +3439,7 @@ public class InvoiceServiceImpl implements InvoiceService {
" t.MATERIALSPECNAME, \ r \ n " +
" t.ERPFACTORY, \ r \ n " +
" t.ERPLOCATION, \ r \ n " +
" t.LOCATIONNAME, \ r \ n " +
" m2.SHIPREQUESTDETAILTYPE, \ r \ n " +
" t.UNIT, \ r \ n " +
" m1.COSTCENTER, \ r \ n " +
@ -3497,8 +3509,8 @@ public class InvoiceServiceImpl implements InvoiceService {
}
makeEventInfo . setEventName ( " 备货出库无来源转库 " ) ;
makeEventInfo . setEventComment ( " 备货出库无来源转库 " ) ;
/ / WlySaveUnDoInfo ( billCode , commitDate ) ;
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
WlySaveUnDoInfo ( materialPackingKeyList , billCode , commitDate ) ;
/ / untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
}
else
{
@ -3521,7 +3533,8 @@ public class InvoiceServiceImpl implements InvoiceService {
throw new GlobalException ( " 发送到mes失败! " ) ;
}
}
makeEventInfo . setEventName ( " 备货出库生产领料出库 " ) ;
makeEventInfo . setEventComment ( " 备货出库生产领料出库 " ) ;
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
}
}
@ -3804,4 +3817,650 @@ public class InvoiceServiceImpl implements InvoiceService {
}
return message ;
}
@Transactional
public String RepairStockUpOutSendSAPOrMES ( String shipRequestName , String siteName , String eventUser ,
List < MaterialPacking > list , String commitDate , String opCode ) throws Exception {
/ / 判断单据类型调用不同的NC接口
String sql = " SELECT m.SHIPREQUESTTYPE,m.SHIPREQUESTDETAILTYPE FROM MATERIALSHIPREQUEST m WHERE m.SHIPREQUESTNAME = :SHIPREQUESTNAME " ;
Map < String , Object > hashMap = new HashMap < String , Object > ( ) ;
hashMap . put ( " SHIPREQUESTNAME " , shipRequestName ) ;
List < String > materialPackingKeyList = new ArrayList < > ( ) ;
List < MaterialPackingKey > arrayList = new ArrayList < MaterialPackingKey > ( ) ;
List < Map < String , Object > > queryForList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( sql , hashMap ) ;
String shipRequestType = queryForList . get ( 0 ) . get ( " SHIPREQUESTTYPE " ) . toString ( ) ;
String detailype = queryForList . get ( 0 ) . get ( " SHIPREQUESTDETAILTYPE " ) . toString ( ) ;
if ( " 4C " . equals ( shipRequestType ) ) {
String sql222 = " SELECT SUM(m.REQUESTQUANTITY - m.ASSIGNEDQUANTITY) QTY,MATERIALSPECNAME FROM MATERIALSHIPREQUESTDETAIL m WHERE m.SHIPREQUESTNAME = :SHIPREQUESTNAME GROUP BY MATERIALSPECNAME " ;
List < Map < String , Object > > queryForList2 = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( sql222 , hashMap ) ;
for ( int i = 0 ; i < queryForList2 . size ( ) ; i + + ) {
String string = queryForList2 . get ( i ) . get ( " QTY " ) . toString ( ) ;
String MATERIALSPECNAME = queryForList2 . get ( i ) . get ( " MATERIALSPECNAME " ) . toString ( ) ;
BigDecimal bigDecimal = new BigDecimal ( string ) ;
if ( bigDecimal . compareTo ( BigDecimal . ZERO ) < 0 ) {
throw new CustomException ( MATERIALSPECNAME + " 销售不允许超发 " ) ;
}
}
}
/ / 备份过账条码表的信息 , 并删除
String bfSql = " INSERT \ r \ n " +
" INTO \ r \ n " +
" MATERIALPACKINGSUBHISTORY T (T.MATERIALPACKINGNAME, \ r \ n " +
" T.RECEIVEREQUESTNAME, \ r \ n " +
" T.RECEIVEREQUESTDETAILNAME, \ r \ n " +
" T.QTY) \ r \ n " +
" SELECT \ r \ n " +
" M.MATERIALPACKINGNAME, \ r \ n " +
" M.RECEIVEREQUESTNAME, \ r \ n " +
" M.RECEIVEREQUESTDETAILNAME, \ r \ n " +
" M.QTY \ r \ n " +
" FROM \ r \ n " +
" MATERIALPACKINGSUB M \ r \ n " +
" WHERE \ r \ n " +
" M.RECEIVEREQUESTNAME = :SHIPREQUESTNAME " ;
String scSql = " DELETE FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :SHIPREQUESTNAME " ;
IDMFrameServiceProxy . getSqlTemplate ( ) . update ( bfSql , hashMap ) ;
IDMFrameServiceProxy . getSqlTemplate ( ) . update ( scSql , hashMap ) ;
EventInfoUtil eventInfoUtil = new EventInfoUtil ( ) ;
EventInfo makeEventInfo = eventInfoUtil . makeEventInfo ( " CompletedShipRequest " , eventUser , " CompletedShipRequest " ) ;
/ / 循环过账批次
for ( int i = 0 ; i < list . size ( ) ; + + i ) {
String materialPackingName = list . get ( i ) . getMaterialPackingName ( ) ;
String sdk_ID = list . get ( i ) . getSDK_ID ( ) ;
String phase = list . get ( i ) . getPHASE ( ) ;
String materialSpecName = list . get ( i ) . getMaterialSpecName ( ) ;
/ / float materialQuantity = list . get ( i ) . getMaterialQuantity ( ) ;
/ / 重新获取下数量 , 通过sql查询取数
String SLsQL = " SELECT m.MATERIALPACKINGNAME,m.MATERIALQUANTITY, "
+ " DECODE(NVL(m.MATERIALQUANTITY2,0), 0 ,m.MATERIALQUANTITY,m.MATERIALQUANTITY2) MATERIALQUANTITY2 FROM MATERIALPACKING m "
+ " WHERE m.SHIPREQUESTNAME = :SHIPRQEUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME " ;
Map < String , Object > hashMap2 = new HashMap < String , Object > ( ) ;
hashMap2 . put ( " SHIPRQEUESTNAME " , shipRequestName ) ;
hashMap2 . put ( " MATERIALPACKINGNAME " , materialPackingName ) ;
String materialQuantity2 = list . get ( i ) . getMaterialQuantity2 ( ) + " " ;
List < Map < String , Object > > queryForList3 = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( SLsQL , hashMap2 ) ;
if ( queryForList3 ! = null & & queryForList3 . size ( ) > 0 ) {
materialQuantity2 = queryForList3 . get ( 0 ) . get ( " MATERIALQUANTITY2 " ) . toString ( ) ;
} else {
throw new CustomException ( " 单据 " + shipRequestName + " 库存 " + materialPackingName + " 绑定关系不存在 " ) ;
}
/ / 循环单据查询过帐表
String pcSql = " SELECT SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, \ r \ n " +
" m.MATERIALSPECNAME , \ r \ n " +
" m.PHASE , \ r \ n " +
" m.SDK_ID , \ r \ n " +
" m.REQUESTQUANTITY , \ r \ n " +
" m.ASSIGNEDQUANTITY , \ r \ n " +
" (m.REQUESTQUANTITY - nvl(m.SALEOUTQUANTITY, 0) ) SALEOUTQUANTITY \ r \ n " +
" FROM \ r \ n " +
" MATERIALSHIPREQUESTDETAIL m \ r \ n " +
" WHERE \ r \ n " +
" m.MATERIALSPECNAME = :MATERIALSPECNAME \ r \ n " +
" AND SHIPREQUESTNAME = :SHIPREQUESTNAME ORDER BY TO_NUMBER(SHIPREQUESTDETAILNAME) ASC " ;
hashMap . put ( " MATERIALSPECNAME " , materialSpecName ) ;
hashMap . put ( " SDK_ID " , sdk_ID ) ;
hashMap . put ( " PHASE " , phase ) ;
List < Map < String , Object > > queryForList2 = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( pcSql , hashMap ) ;
BigDecimal pcQty = new BigDecimal ( materialQuantity2 ) ; / / 批次数量
BigDecimal temp ;
for ( int j = 0 ; j < queryForList2 . size ( ) ; j + + ) {
String sq = queryForList2 . get ( j ) . get ( " SALEOUTQUANTITY " ) . toString ( ) ; / / 剩余发货数量
String shipRequestDetailName = queryForList2 . get ( j ) . get ( " SHIPREQUESTDETAILNAME " ) . toString ( ) ; / / 行项
BigDecimal saleQty = new BigDecimal ( sq ) ; / / 需要发货数量
if ( pcQty . compareTo ( BigDecimal . ZERO ) = = 0
| | ( saleQty . compareTo ( BigDecimal . ZERO ) = = 0 & & ( j ! = queryForList2 . size ( ) - 1 ) )
) {
continue ;
}
int compareTo = saleQty . compareTo ( pcQty ) ; / / 大于等于0则批次全发 , 小于0则需要拆分
int compareToZero = saleQty . compareTo ( BigDecimal . ZERO ) ;
if ( compareTo > = 0 ) {
untils . fahuoSplit ( materialPackingName , shipRequestName , shipRequestDetailName , pcQty ) ;
break ;
} else { / / 需要拆行
if ( ( j ! = queryForList2 . size ( ) - 1 ) & & compareToZero > 0 ) { / / 判断是否是最后一行 , 不是最后一行就不允许超发 , 发货数量等于请求数量即拆
untils . fahuoSplit ( materialPackingName , shipRequestName , shipRequestDetailName , saleQty ) ;
pcQty = pcQty . subtract ( saleQty ) ;
continue ;
} else {
untils . fahuoSplit ( materialPackingName , shipRequestName , shipRequestDetailName , pcQty ) ;
break ;
}
}
}
materialPackingKeyList . add ( materialPackingName ) ;
}
/ / 判断会有多少个仓库发货 , 不同仓库需要分开走账
StringBuffer cklx = new StringBuffer ( ) ;
cklx . append ( " SELECT m.MATERIALPACKINGNAME,m.SITENAME FROM MATERIALPACKING m WHERE m.MATERIALPACKINGNAME IN " ) ;
String str = " " ;
str + = " ( " ;
for ( String materialPacking : materialPackingKeyList ) {
str + = " ' " + materialPacking + " ', " ;
}
str + = " '') " ;
/ / 查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等 , 如果相等则未修改数量 , 不相等则修改数量
List < Map < String , Object > > packingQueryForList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( cklx . toString ( ) + str , hashMap ) ;
String billCode = " " ;
switch ( shipRequestType ) {
case " NLCC " : / / STO调拨出库
/ / 拆条码 , 查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等 , 如果相等则未修改了数量 , 不相等则修改了数量
/ / 如果已修改数量 , 则进行拆条码
for ( int z = 0 ; z < packingQueryForList . size ( ) ; z + + ) {
String MATERIALPACKINGNAME = packingQueryForList . get ( z ) . get ( " MATERIALPACKINGNAME " ) . toString ( ) ;
Object [ ] bindSet = { MATERIALPACKINGNAME } ;
String qtysql = " WHERE MATERIALPACKINGNAME = ? " ;
List < MaterialPacking > qtyQueryForList = MaterialPackingServiceProxy . getMaterialPackingService ( ) . select ( qtysql , bindSet ) ;
String qty = new Double ( qtyQueryForList . get ( 0 ) . getMaterialQuantity ( ) ) = = null ? " 0 " : String . valueOf ( qtyQueryForList . get ( 0 ) . getMaterialQuantity ( ) ) ;
String qty2 = new Double ( qtyQueryForList . get ( 0 ) . getMaterialQuantity2 ( ) ) = = null ? " 0 " : String . valueOf ( qtyQueryForList . get ( 0 ) . getMaterialQuantity2 ( ) ) ;
String materialPackingName = qtyQueryForList . get ( 0 ) . getMaterialPackingName ( ) ;
String charge = qtyQueryForList . get ( 0 ) . getCharge ( ) ;
BigDecimal bigQty = new BigDecimal ( qty ) ;
/ / 已拆数量
BigDecimal bigQty2 = new BigDecimal ( qty2 ) ;
/ / 如果已拆数量不等于原数量 , 并且已拆数量为0 ( 未拆分数量 )
if ( bigQty . compareTo ( bigQty2 ) ! = 0 & & ! " 0.0 " . equals ( qty2 ) ) {
/ / 剩余数量
BigDecimal restQty = bigQty . subtract ( bigQty2 ) ;
/ / 生成新的拆分条码
String stringBigQty2 = bigQty2 . toString ( ) ;
String newPalletNo = CodeGenerator . packingGenerateCode ( materialPackingName , stringBigQty2 , charge ) ;
/ / 写入拆分的新条码 , 更新原数据库
List < MaterialPacking > boxList = new ArrayList < MaterialPacking > ( ) ;
/ / MaterialPackingKey materialpackingKey = new MaterialPackingKey ( ) ;
MaterialPacking materialpackingNew = new MaterialPacking ( ) ;
/ / materialpackingKey . setSiteName ( " SDK " ) ;
/ / materialpackingKey . setMaterialPackingName ( newPalletNo ) ;
/ / materialpackingNew . setKey ( materialpackingKey ) ;
/ / 复制一个当前的原标签数据
materialpackingNew . setKey ( qtyQueryForList . get ( 0 ) . getKey ( ) ) ;
/ / MaterialPacking materialpackingNew = qtyQueryForList . get ( z ) ;
/ / 设置新为标签和数量
materialpackingNew . setMaterialPackingName ( newPalletNo ) ;
/ / bigQty2 转double类型
materialpackingNew . setMaterialQuantity ( bigQty2 . doubleValue ( ) ) ;
boxList . add ( qtyQueryForList . get ( 0 ) ) ;
boxList . add ( materialpackingNew ) ;
boolean moveTransformOut = packingChargeSplit ( boxList , eventUser ) ;
if ( moveTransformOut ! = true ) {
throw new RuntimeException ( " 修改数量拆分失败 " ) ;
}
/ / 记录到拆分表
String subsql = " SELECT RECEIVEREQUESTDETAILNAME FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME \ n " ;
Map < String , Object > subHashMap = new HashMap < String , Object > ( ) ;
subHashMap . put ( " RECEIVEREQUESTNAME " , shipRequestName ) ;
subHashMap . put ( " MATERIALPACKINGNAME " , MATERIALPACKINGNAME ) ;
List < Map < String , Object > > ZKqueryForList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( subsql , subHashMap ) ;
String preReceiverequestdetailname = ZKqueryForList . get ( 0 ) . get ( " RECEIVEREQUESTDETAILNAME " ) . toString ( ) ;
String shipRequestDetailName = qtyQueryForList . get ( 0 ) . getShipRequestDetailName ( ) = = null ? " " : qtyQueryForList . get ( 0 ) . getShipRequestDetailName ( ) . toString ( ) ;
untils . fahuoSplit ( newPalletNo , shipRequestName , preReceiverequestdetailname , bigQty2 ) ;
/ / 原条码扣减拆出的数量 , 用剩余数量更新原条码 , 条码不变 , 数量更新
SetEventInfo setEventInfo = new SetEventInfo ( ) ;
Map < String , Object > pakHashMap = new HashMap < > ( ) ;
pakHashMap . put ( " materialQuantity " , restQty . doubleValue ( ) ) ;
pakHashMap . put ( " materialQuantity2 " , 0 ) ;
pakHashMap . put ( " shipRequestName " , " " ) ;
pakHashMap . put ( " shipRequestDetailName " , " " ) ;
EventInfo eventInfo = new EventInfoUtil ( ) . makeEventInfo ( " 备货出库调拨出拆分条码 " , eventUser , " 拆分条码 " ) ;
setEventInfo . setUserColumns ( pakHashMap ) ;
MaterialPackingServiceProxy . getMaterialPackingService ( ) . setEvent ( new MaterialPackingKey ( " SDK " , MATERIALPACKINGNAME ) , eventInfo , setEventInfo ) ;
/ / 删除被拆分的原条码数据 , 用拆分出的新条码覆盖 , 进行后面的过账 , 现场仓过账只过账已拆分出的数量 , 剩余数量的原条码不过账
boolean deletePacking = materialPackingKeyList . remove ( MATERIALPACKINGNAME ) ;
if ( deletePacking ) {
materialPackingKeyList . add ( newPalletNo ) ;
}
}
}
makeEventInfo . setEventName ( " 调拨出库 " ) ;
makeEventInfo . setEventComment ( " 备货调拨出库 " ) ;
billCode = TransferStockOut_NLCC ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , commitDate ) ;
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
break ;
case " 01 " : / / 生产领料
case " 02 " : / / 生产补料
if ( " 01 " . equals ( shipRequestType ) ) {
makeEventInfo . setEventName ( " CompletedShipRequestLL " ) ;
makeEventInfo . setEventComment ( " CompletedShipRequestLL " ) ;
} else {
makeEventInfo . setEventName ( " CompletedShipRequestBL " ) ;
makeEventInfo . setEventComment ( " CompletedShipRequestBL " ) ;
}
/ / 判断是否是现场仓
String IsSql = " SELECT m.ERPRECEIVELOCATION,m.ERPLOCATION,m.ERPRECEIVEFACTORY FROM MATERIALSHIPREQUESTDETAIL m WHERE SHIPREQUESTNAME = :SHIPREQUESTNAME " ;
Map < String , Object > bpc = new HashMap < > ( ) ;
bpc . put ( " SHIPREQUESTNAME " , shipRequestName ) ;
List < Map < String , Object > > receiveList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( IsSql , bpc ) ;
String ERPRECEIVELOCATION = receiveList . get ( 0 ) . get ( " ERPRECEIVELOCATION " ) = = null ? " " : receiveList . get ( 0 ) . get ( " ERPRECEIVELOCATION " ) . toString ( ) ;
String ERPLOCATION = receiveList . get ( 0 ) . get ( " ERPLOCATION " ) = = null ? " " : receiveList . get ( 0 ) . get ( " ERPLOCATION " ) . toString ( ) ;
String ERPRECEIVEFACTORY = receiveList . get ( 0 ) . get ( " ERPRECEIVEFACTORY " ) = = null ? " " : receiveList . get ( 0 ) . get ( " ERPRECEIVEFACTORY " ) . toString ( ) ;
/ / 判断是否为MES需要二次接收的物料
/ * String sqlc = " SELECT e.ENUMVALUE FROM MES_ENUMDEFVALUE e \ r \ n " +
" WHERE e.ENUMNAME ='ConfirmReceiveArea' \ r \ n " +
" AND e.ENUMVALUE in( \ r \ n " +
" SELECT p.AREANAME FROM MES_PRODUCTREQUEST p \ r \ n " +
" WHERE p.PRODUCTREQUESTNAME =(SELECT m.RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m \ r \ n " +
" WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1)) " ; * /
List < Map < String , Object > > src = new ArrayList < Map < String , Object > > ( ) ;
String sqlQuery = " SELECT m.RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m " +
" WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1 " ;
List < Map < String , Object > > materialShipRequestDetailList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( sqlQuery , bpc ) ;
if ( null ! = materialShipRequestDetailList & & ! materialShipRequestDetailList . isEmpty ( ) ) {
String productRequestName = materialShipRequestDetailList . get ( 0 ) . get ( " RECEIVEPRODUCTIONORDERNUMBER " ) = = null ? " " : materialShipRequestDetailList . get ( 0 ) . get ( " RECEIVEPRODUCTIONORDERNUMBER " ) . toString ( ) . substring ( 4 ) ;
String sqlc = " SELECT e.ENUMVALUE FROM ENUMDEFVALUE@MES_PRODUCTREQUEST e \ r \ n " +
" WHERE e.ENUMNAME ='ConfirmReceiveArea' \ r \ n " +
" AND e.ENUMVALUE in( \ r \ n " +
" SELECT p.AREANAME FROM PRODUCTREQUEST@MES_PRODUCTREQUEST p \ r \ n " +
" WHERE p.PRODUCTREQUESTNAME =:PRODUCTREQUESTNAME) " ;
bpc . put ( " PRODUCTREQUESTNAME " , productRequestName ) ;
src = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( sqlc , bpc ) ;
}
/ / MES需要接收 , 则只抛送数据 。 或如果是现场仓 , 先移到现场仓
if ( src . size ( ) > 0 ) {
billCode = " Y " ;
String sqlZK = " SELECT \ r \ n " +
" t.MATERIALSPECNAME,m.MATERIALPACKINGNAME, \ r \ n " +
" t.ERPFACTORY, \ r \ n " +
" t.ERPLOCATION, \ r \ n " +
" m2.SHIPREQUESTDETAILTYPE, \ r \ n " +
" t.UNIT, \ r \ n " +
" m1.COSTCENTER, \ r \ n " +
" m1.SHIPREQUESTNAME, \ r \ n " +
" m1.SHIPREQUESTDETAILNAME, \ r \ n " +
" m1.ERPRECEIVELOCATION, \ r \ n " +
" m1.ERPRECEIVEFACTORY, \ r \ n " +
" m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO, \ r \ n " +
" CASE WHEN m1.SENDSALESORDER IS NOT NULL THEN 'E' ELSE '' END SOBKZ, \ r \ n " +
" ( \ r \ n " +
" SELECT \ r \ n " +
" RECEIVEPRODUCTIONORDERNUMBER \ r \ n " +
" FROM \ r \ n " +
" MATERIALSHIPREQUESTDETAIL m5 \ r \ n " +
" WHERE \ r \ n " +
" m5.SHIPREQUESTNAME =:SHIPREQUESTNAME \ r \ n " +
" AND m5.MATERIALSPECNAME = t.MATERIALSPECNAME \ r \ n " +
" ORDER BY \ r \ n " +
" m5.USEDATE, \ r \ n " +
" m5.SHIPREQUESTDETAILNAME FETCH FIRST ROW ONLY)RECEIVEPRODUCTIONORDERNUMBER, \ r \ n " +
" SUM(m.QTY) AS MATERIALQUANTITY \ r \ n " +
" FROM \ r \ n " +
" MATERIALPACKINGSUB m \ r \ n " +
" LEFT JOIN MATERIALPACKING T ON \ r \ n " +
" m.MATERIALPACKINGNAME = T.MATERIALPACKINGNAME \ r \ n " +
" AND m.RECEIVEREQUESTNAME = T.SHIPREQUESTNAME \ r \ n " +
" LEFT JOIN MATERIALSHIPREQUESTDETAIL M1 \ r \ n " +
" ON \ r \ n " +
" m.RECEIVEREQUESTNAME = M1.SHIPREQUESTNAME \ r \ n " +
" AND m.RECEIVEREQUESTDETAILNAME = M1.SHIPREQUESTDETAILNAME \ r \ n " +
" LEFT JOIN MATERIALSHIPREQUEST M2 \ r \ n " +
" ON \ r \ n " +
" M1.SHIPREQUESTNAME = M2.SHIPREQUESTNAME \ r \ n " +
" WHERE \ r \ n " +
" T.SHIPREQUESTNAME = :SHIPREQUESTNAME \ r \ n " +
" AND T.SITENAME = :SITENAME \ r \ n " +
" AND T.STOCKSTATE = 'Stocked' \ r \ n " +
" AND T.MATERIALPACKINGNAME IN (:BOXLIST) \ r \ n " +
" GROUP BY \ r \ n " +
" t.MATERIALSPECNAME, \ r \ n " +
" t.ERPFACTORY, \ r \ n " +
" t.ERPLOCATION, \ r \ n " +
" m2.SHIPREQUESTDETAILTYPE, \ r \ n " +
" t.UNIT, \ r \ n " +
" m1.COSTCENTER, \ r \ n " +
" m1.SHIPREQUESTNAME,m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO, \ r \ n " +
" m1.SHIPREQUESTDETAILNAME, \ r \ n " +
" m1.ERPRECEIVELOCATION, \ r \ n " +
" m1.ERPRECEIVEFACTORY,m.MATERIALPACKINGNAME " ;
/ / 转库到线边仓
Map < String , Object > hashMapZK = new HashMap < String , Object > ( ) ;
hashMapZK . put ( " BOXLIST " , materialPackingKeyList ) ;
hashMapZK . put ( " SHIPREQUESTNAME " , shipRequestName ) ;
hashMapZK . put ( " SITENAME " , siteName ) ;
List < Map < String , Object > > ZKqueryForList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( sqlZK . toString ( ) , hashMapZK ) ;
for ( int z = 0 ; z < ZKqueryForList . size ( ) ; z + + ) {
String materialPackingName = ZKqueryForList . get ( z ) . get ( " MATERIALPACKINGNAME " ) . toString ( ) ;
materialPackingKeyList . add ( materialPackingName ) ;
MaterialPackingKey materialPackingKey = new MaterialPackingKey ( " SDK " , materialPackingName ) ;
arrayList . add ( materialPackingKey ) ;
}
/ * List < MaterialPackingKey > mpKeyList = new ArrayList < MaterialPackingKey > ( ) ;
SetEventInfo setEventInfo = new SetEventInfo ( ) ;
for ( MaterialPackingKey materialPacking : arrayList ) {
MaterialPackingKey key = materialPacking ;
mpKeyList . add ( key ) ;
}
Map < String , Object > hashMapPack = new HashMap < String , Object > ( ) ;
hashMapPack . put ( " erpLocation " , ERPRECEIVELOCATION = = null ? " " : ERPRECEIVELOCATION ) ;
hashMapPack . put ( " erpFactory " , ERPRECEIVEFACTORY = = null ? " " : ERPRECEIVEFACTORY ) ;
hashMapPack . put ( " locationName " , " " ) ;
hashMapPack . put ( " lastEventUser " , eventUser ) ;
hashMapPack . put ( " unDoID " , billCode ) ;
setEventInfo . setUserColumns ( hashMapPack ) ;
MaterialPackingServiceProxy . getMaterialPackingService ( ) . setEvent ( mpKeyList , makeEventInfo , setEventInfo ) ;
* /
/ / 抛送MES数据
/ / untils . sendMaterialInfoToMES_NEW2 ( shipRequestName , " " , materialPackingKeyList ) ;
untils . StockOutSendMaterialInfoToMES ( shipRequestName , " " , materialPackingKeyList ) ;
/ / 更新BOX状态
EventInfo mesEventInfo = eventInfoUtil . makeEventInfo ( " CompletedShipRequestMES " , eventUser , " CompletedShipRequestMES " ) ;
SetEventInfo setEventInfo = new SetEventInfo ( ) ;
Map < String , Object > hashMapPack = new HashMap < String , Object > ( ) ;
hashMapPack . put ( " stockState " , GenericServiceProxy . getConstantMap ( ) . STOCKSTATE_STOCKPENDING ) ;
hashMapPack . put ( " oldStockState " , GenericServiceProxy . getConstantMap ( ) . STOCKSTATE_STOCKED ) ;
setEventInfo . setUserColumns ( hashMapPack ) ;
MaterialPackingServiceProxy . getMaterialPackingService ( ) . setEvent ( arrayList , mesEventInfo , setEventInfo ) ;
} else {
if ( ! ERPRECEIVELOCATION . isEmpty ( ) ) {
/ / 拆条码 , 查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等 , 如果相等则未修改了数量 , 不相等则修改了数量
/ / 如果已修改数量 , 则进行拆条码
for ( int z = 0 ; z < packingQueryForList . size ( ) ; z + + ) {
String MATERIALPACKINGNAME = packingQueryForList . get ( z ) . get ( " MATERIALPACKINGNAME " ) . toString ( ) ;
Object [ ] bindSet = { MATERIALPACKINGNAME } ;
String qtysql = " WHERE MATERIALPACKINGNAME = ? " ;
List < MaterialPacking > qtyQueryForList = MaterialPackingServiceProxy . getMaterialPackingService ( ) . select ( qtysql , bindSet ) ;
String qty = new Double ( qtyQueryForList . get ( 0 ) . getMaterialQuantity ( ) ) = = null ? " 0 " : String . valueOf ( qtyQueryForList . get ( 0 ) . getMaterialQuantity ( ) ) ;
String qty2 = new Double ( qtyQueryForList . get ( 0 ) . getMaterialQuantity2 ( ) ) = = null ? " 0 " : String . valueOf ( qtyQueryForList . get ( 0 ) . getMaterialQuantity2 ( ) ) ;
String materialPackingName = qtyQueryForList . get ( 0 ) . getMaterialPackingName ( ) ;
String charge = qtyQueryForList . get ( 0 ) . getCharge ( ) ;
BigDecimal bigQty = new BigDecimal ( qty ) ;
/ / 已拆数量
BigDecimal bigQty2 = new BigDecimal ( qty2 ) ;
/ / 如果已拆数量不等于原数量 , 并且已拆数量为0 ( 未拆分数量 )
if ( bigQty . compareTo ( bigQty2 ) ! = 0 & & ! " 0.0 " . equals ( qty2 ) ) {
/ / 剩余数量
BigDecimal restQty = bigQty . subtract ( bigQty2 ) ;
/ / 生成新的拆分条码
String stringBigQty2 = bigQty2 . toString ( ) ;
String newPalletNo = CodeGenerator . packingGenerateCode ( materialPackingName , stringBigQty2 , charge ) ;
/ / 写入拆分的新条码 , 更新原数据库
List < MaterialPacking > boxList = new ArrayList < MaterialPacking > ( ) ;
/ / MaterialPackingKey materialpackingKey = new MaterialPackingKey ( ) ;
MaterialPacking materialpackingNew = new MaterialPacking ( ) ;
/ / materialpackingKey . setSiteName ( " SDK " ) ;
/ / materialpackingKey . setMaterialPackingName ( newPalletNo ) ;
/ / materialpackingNew . setKey ( materialpackingKey ) ;
/ / 复制一个当前的原标签数据
materialpackingNew . setKey ( qtyQueryForList . get ( 0 ) . getKey ( ) ) ;
/ / MaterialPacking materialpackingNew = qtyQueryForList . get ( z ) ;
/ / 设置新为标签和数量
materialpackingNew . setMaterialPackingName ( newPalletNo ) ;
/ / bigQty2 转double类型
materialpackingNew . setMaterialQuantity ( bigQty2 . doubleValue ( ) ) ;
boxList . add ( qtyQueryForList . get ( 0 ) ) ;
boxList . add ( materialpackingNew ) ;
boolean moveTransformOut = packingChargeSplit ( boxList , eventUser ) ;
if ( moveTransformOut ! = true ) {
throw new RuntimeException ( " 修改数量拆分失败 " ) ;
}
/ / 记录到拆分表
String subsql = " SELECT RECEIVEREQUESTDETAILNAME FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME \ n " ;
Map < String , Object > subHashMap = new HashMap < String , Object > ( ) ;
subHashMap . put ( " RECEIVEREQUESTNAME " , shipRequestName ) ;
subHashMap . put ( " MATERIALPACKINGNAME " , MATERIALPACKINGNAME ) ;
List < Map < String , Object > > ZKqueryForList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( subsql , subHashMap ) ;
String preReceiverequestdetailname = ZKqueryForList . get ( 0 ) . get ( " RECEIVEREQUESTDETAILNAME " ) . toString ( ) ;
String shipRequestDetailName = qtyQueryForList . get ( 0 ) . getShipRequestDetailName ( ) = = null ? " " : qtyQueryForList . get ( 0 ) . getShipRequestDetailName ( ) . toString ( ) ;
untils . fahuoSplit ( newPalletNo , shipRequestName , preReceiverequestdetailname , bigQty2 ) ;
/ / 原条码扣减拆出的数量 , 用剩余数量更新原条码 , 条码不变 , 数量更新
SetEventInfo setEventInfo = new SetEventInfo ( ) ;
Map < String , Object > pakHashMap = new HashMap < > ( ) ;
pakHashMap . put ( " materialQuantity " , restQty . doubleValue ( ) ) ;
pakHashMap . put ( " materialQuantity2 " , 0 ) ;
pakHashMap . put ( " shipRequestName " , " " ) ;
pakHashMap . put ( " shipRequestDetailName " , " " ) ;
EventInfo eventInfo = new EventInfoUtil ( ) . makeEventInfo ( " 拆分条码 " , eventUser , " 备货出库拆分条码 " ) ;
setEventInfo . setUserColumns ( pakHashMap ) ;
MaterialPackingServiceProxy . getMaterialPackingService ( ) . setEvent ( new MaterialPackingKey ( " SDK " , MATERIALPACKINGNAME ) , eventInfo , setEventInfo ) ;
/ / 删除被拆分的原条码数据 , 用拆分出的新条码覆盖 , 进行后面的过账 , 现场仓过账只过账已拆分出的数量 , 剩余数量的原条码不过账
boolean deletePacking = materialPackingKeyList . remove ( MATERIALPACKINGNAME ) ;
if ( deletePacking ) {
materialPackingKeyList . add ( newPalletNo ) ;
}
}
}
/ / new MESServiceImpl ( ) . NeedReceiveMaterialInfoSend_NEW ( shipRequestName , " SDK " , materialPackingKeyList ) ;
billCode = " Y " ;
String sqlZK = " SELECT \ r \ n " +
" t.MATERIALSPECNAME,m.MATERIALPACKINGNAME, \ r \ n " +
" t.ERPFACTORY, \ r \ n " +
" t.ERPLOCATION, \ r \ n " +
" t.LOCATIONNAME, \ r \ n " +
" m2.SHIPREQUESTDETAILTYPE, \ r \ n " +
" t.UNIT, \ r \ n " +
" m1.COSTCENTER, \ r \ n " +
" m1.SHIPREQUESTNAME, \ r \ n " +
" m1.SHIPREQUESTDETAILNAME, \ r \ n " +
" m1.ERPRECEIVELOCATION, \ r \ n " +
" m1.ERPRECEIVEFACTORY, \ r \ n " +
" m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO, \ r \ n " +
" CASE WHEN m1.SENDSALESORDER IS NOT NULL THEN 'E' ELSE '' END SOBKZ, \ r \ n " +
" ( \ r \ n " +
" SELECT \ r \ n " +
" RECEIVEPRODUCTIONORDERNUMBER \ r \ n " +
" FROM \ r \ n " +
" MATERIALSHIPREQUESTDETAIL m5 \ r \ n " +
" WHERE \ r \ n " +
" m5.SHIPREQUESTNAME =:SHIPREQUESTNAME \ r \ n " +
" AND m5.MATERIALSPECNAME = t.MATERIALSPECNAME \ r \ n " +
" ORDER BY \ r \ n " +
" m5.USEDATE, \ r \ n " +
" m5.SHIPREQUESTDETAILNAME FETCH FIRST ROW ONLY)RECEIVEPRODUCTIONORDERNUMBER, \ r \ n " +
" SUM(m.QTY) AS MATERIALQUANTITY \ r \ n " +
" FROM \ r \ n " +
" MATERIALPACKINGSUB m \ r \ n " +
" LEFT JOIN MATERIALPACKING T ON \ r \ n " +
" m.MATERIALPACKINGNAME = T.MATERIALPACKINGNAME \ r \ n " +
" AND m.RECEIVEREQUESTNAME = T.SHIPREQUESTNAME \ r \ n " +
" LEFT JOIN MATERIALSHIPREQUESTDETAIL M1 \ r \ n " +
" ON \ r \ n " +
" m.RECEIVEREQUESTNAME = M1.SHIPREQUESTNAME \ r \ n " +
" AND m.RECEIVEREQUESTDETAILNAME = M1.SHIPREQUESTDETAILNAME \ r \ n " +
" LEFT JOIN MATERIALSHIPREQUEST M2 \ r \ n " +
" ON \ r \ n " +
" M1.SHIPREQUESTNAME = M2.SHIPREQUESTNAME \ r \ n " +
" WHERE \ r \ n " +
" T.SHIPREQUESTNAME = :SHIPREQUESTNAME \ r \ n " +
" AND T.SITENAME = :SITENAME \ r \ n " +
" AND T.STOCKSTATE = 'Stocked' \ r \ n " +
" AND T.MATERIALPACKINGNAME IN (:BOXLIST) \ r \ n " +
" GROUP BY \ r \ n " +
" t.MATERIALSPECNAME, \ r \ n " +
" t.ERPFACTORY, \ r \ n " +
" t.ERPLOCATION, \ r \ n " +
" t.LOCATIONNAME, \ r \ n " +
" m2.SHIPREQUESTDETAILTYPE, \ r \ n " +
" t.UNIT, \ r \ n " +
" m1.COSTCENTER, \ r \ n " +
" m1.SHIPREQUESTNAME,m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO, \ r \ n " +
" m1.SHIPREQUESTDETAILNAME, \ r \ n " +
" m1.ERPRECEIVELOCATION, \ r \ n " +
" m1.ERPRECEIVEFACTORY,m.MATERIALPACKINGNAME " ;
/ / 转库到线边仓
/ / String sqlZK = " SELECT b.MATERIALPACKINGNAME FROM MATERIALPACKINGSUB b WHERE b.MATERIALPACKINGNAME IN (:BOXLIST) " ;
Map < String , Object > hashMapZK = new HashMap < String , Object > ( ) ;
hashMapZK . put ( " BOXLIST " , materialPackingKeyList ) ;
hashMapZK . put ( " SHIPREQUESTNAME " , shipRequestName ) ;
hashMapZK . put ( " SITENAME " , siteName ) ;
List < Map < String , Object > > ZKqueryForList = IDMFrameServiceProxy . getSqlTemplate ( ) . queryForList ( sqlZK . toString ( ) , hashMapZK ) ;
List < String > SUBList = new ArrayList < > ( ) ;
for ( int z = 0 ; z < ZKqueryForList . size ( ) ; z + + ) {
String materialPackingName = ZKqueryForList . get ( z ) . get ( " MATERIALPACKINGNAME " ) . toString ( ) ;
SUBList . add ( materialPackingName ) ;
MaterialPackingKey materialPackingKey = new MaterialPackingKey ( " SDK " , materialPackingName ) ;
arrayList . add ( materialPackingKey ) ;
/ / 更新MATERIALPACKING表前仓库货位为现在货位和仓库数据 , 保存现仓库货位
Map < String , Object > row = ZKqueryForList . get ( z ) ;
String erpLocation = row . get ( " ERPLOCATION " ) = = null ? " " : row . get ( " ERPLOCATION " ) . toString ( ) ;
String locationName = row . get ( " LOCATIONNAME " ) = = null ? " " : row . get ( " LOCATIONNAME " ) . toString ( ) ;
String updSql = " UPDATE MATERIALPACKING SET PREERPLOCATION = :PREERPLOCATION, PRELOCATIONNAME = :PRELOCATIONNAME WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME " ;
Map < String , Object > updHashMap = new HashMap < > ( ) ;
updHashMap . put ( " PREERPLOCATION " , erpLocation ) ;
updHashMap . put ( " PRELOCATIONNAME " , locationName ) ;
updHashMap . put ( " MATERIALPACKINGNAME " , materialPackingName ) ;
try {
IDMFrameServiceProxy . getSqlTemplate ( ) . update ( updSql , updHashMap ) ;
} catch ( Exception e ) {
/ / 日志记录并抛出自定义异常 , 便于调试和事务回滚
throw new CustomException ( " 更新仓库货位信息失败: " + materialPackingName , e ) ;
}
}
billCode = UnSourcedChangeLocation ( arrayList , ERPRECEIVEFACTORY ,
ERPRECEIVELOCATION , " " , eventUser , commitDate ) ;
List < MaterialPackingKey > mpKeyList = new ArrayList < MaterialPackingKey > ( ) ;
SetEventInfo setEventInfo = new SetEventInfo ( ) ;
for ( MaterialPackingKey materialPacking : arrayList ) {
MaterialPackingKey key = materialPacking ;
mpKeyList . add ( key ) ;
}
Map < String , Object > hashMapPack = new HashMap < String , Object > ( ) ;
hashMapPack . put ( " erpLocation " , ERPRECEIVELOCATION = = null ? " " : ERPRECEIVELOCATION ) ;
hashMapPack . put ( " erpFactory " , ERPRECEIVEFACTORY = = null ? " " : ERPRECEIVEFACTORY ) ;
hashMapPack . put ( " locationName " , " " ) ;
hashMapPack . put ( " lastEventUser " , eventUser ) ;
hashMapPack . put ( " unDoID " , billCode ) ;
setEventInfo . setUserColumns ( hashMapPack ) ;
MaterialPackingServiceProxy . getMaterialPackingService ( ) . setEvent ( mpKeyList , makeEventInfo , setEventInfo ) ;
/ / 抛送MES数据
Boolean success = untils . sendMaterialInfoToMES_NEW2 ( shipRequestName , " " , SUBList , billCode , eventUser ) ;
if ( ! success ) {
String undo = cancelShipInter ( billCode , eventUser ) ;
if ( undo = = null | | undo . isEmpty ( ) ) {
throw new GlobalException ( " 下发mes失败后冲销失败! " ) ;
} else {
throw new GlobalException ( " 发送到mes失败! " ) ;
}
}
makeEventInfo . setEventName ( " 备货出库无来源转库 " ) ;
makeEventInfo . setEventComment ( " 备货出库无来源转库 " ) ;
/ / WlySaveUnDoInfo ( billCode , commitDate ) ;
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
}
else
{
/ / billCode = toSAPService . ProductionStockOut_NEW ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
billCode = ProductionStockOut_NEW ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , commitDate ) ;
if ( billCode . isEmpty ( ) ) {
throw new CustomException ( " SAP过账异常! " ) ;
}
/ /
/ / 抛送MES数据
Boolean success = untils . sendMaterialInfoToMES_NEW ( shipRequestName , " " , materialPackingKeyList , billCode , eventUser ) ;
/ / billCode = NCWServiceImpl . SaleOut2 ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , " " ) ;
/ / 如果mes发送失败 , 则进行sap过账冲销
if ( ! success ) {
String undo = cancelShipInter ( billCode , eventUser ) ;
if ( undo = = null | | undo . isEmpty ( ) ) {
throw new GlobalException ( " 下发mes失败后冲销失败! " ) ;
} else {
throw new GlobalException ( " 发送到mes失败! " ) ;
}
}
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
}
}
break ;
case " 06 " : / / 成本中心领料
/ / billCode = toSAPService . orderStockOut ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
billCode = orderStockOut ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , commitDate ) ;
/ / 抛送MES数据
Boolean success = untils . sendMaterialInfoToMES_NEW ( shipRequestName , " " , materialPackingKeyList , billCode , eventUser ) ;
if ( ! success ) {
String undo = cancelShipInter ( billCode , eventUser ) ;
if ( undo = = null | | undo . isEmpty ( ) ) {
throw new GlobalException ( " 下发mes失败后冲销失败! " ) ;
} else {
throw new GlobalException ( " 发送到mes失败! " ) ;
}
}
/ / 更新MES管芯数据
new MESServiceImpl ( ) . updateDurable_ByCostcenter ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
/ / billCode = NCWServiceImpl . SaleOut2 ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , " " ) ;
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
break ;
case " 09 " : / / 研发领料
/ / billCode = toSAPService . orderStockOut ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
/ / billCode = orderStockOut ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
/ / / / 更新MES管芯数据
/ / new MESServiceImpl ( ) . updateDurable_ByCostcenter ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
/ / / / billCode = NCWServiceImpl . SaleOut2 ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , " " ) ;
/ / untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
break ;
case " ZLF0 " : / / 销售出库确认 ( 单据类型ZLF0 ~ ZLF8 ) SD023 ( 销售回传 )
case " ZLF1 " :
case " ZLF2 " :
case " ZLF3 " :
case " ZLF4 " :
case " ZLF5 " :
case " ZLF6 " :
case " ZLF7 " :
case " ZLF8 " :
makeEventInfo . setEventName ( " CompletedShipRequestZL " ) ;
makeEventInfo . setEventComment ( " CompletedShipRequestZL " ) ;
/ / billCode = toSAPService . saleStockOut_NEW ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
billCode = saleStockOut_NEW ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , commitDate ) ;
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
/ / 单据类型等于ZLF0 - ZLF9 , 物料编码以7开头都属于成品胶水需要调用QMS质检接口
String message = checkShipRequestTypeSendIQC ( commitDate , siteName , shipRequestName , makeEventInfo , materialPackingKeyList ) ;
if ( StringUtils . isNotEmpty ( message ) ) {
throw new CustomException ( message ) ;
}
break ;
case " 08 " : / / 委外
case " OEM " : / / 委外
/ / billCode = toSAPService . oemStockOut_NEW ( shipRequestName , " SDK " , eventUser , materialPackingKeyList ) ;
billCode = oemStockOut_NEW ( shipRequestName , " SDK " , eventUser , materialPackingKeyList , commitDate ) ;
untils . SaveUnDoInfo_ForSap ( materialPackingKeyList , billCode , makeEventInfo ) ;
break ;
default :
break ;
}
return billCode ;
}
}