2025-09-23 18:36:22 +08:00
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package nc.bs.bd.pfxx.plugin ;
import com.alibaba.fastjson.JSON ;
import com.alibaba.fastjson.JSONArray ;
import com.alibaba.fastjson.JSONObject ;
import com.alibaba.fastjson.serializer.SerializerFeature ;
import nc.bs.dao.BaseDAO ;
import nc.bs.dao.DAOException ;
import nc.bs.framework.common.NCLocator ;
import nc.bs.logging.Log ;
import nc.bs.pfxx.ISwapContext ;
import nc.bs.pfxx.plugin.AbstractPfxxPlugin ;
import nc.bs.trade.business.HYPubBO ;
import nc.bs.trade.business.HYSuperDMO ;
import nc.bs.uapbd.util.MyHelper ;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil ;
import nc.itf.bd.material.assign.IMaterialAssignService ;
import nc.itf.bd.material.plan.IMaterialPlanQueryService ;
import nc.itf.bd.material.plan.IMaterialPlanService ;
import nc.jdbc.framework.processor.MapProcessor ;
import nc.pubitf.uapbd.IMaterialPubService ;
import nc.util.mmf.framework.base.MMValueCheck ;
import nc.vo.bd.defdoc.DefdocVO ;
import nc.vo.bd.errorlog.ErrLogReturnValue ;
import nc.vo.bd.material.MaterialVO ;
import nc.vo.bd.material.plan.MaterialPlanVO ;
import nc.vo.bd.material.stock.MaterialReplVO ;
import nc.vo.bd.material.stock.MaterialStockVO ;
import nc.vo.pfxx.auxiliary.AggxsysregisterVO ;
import nc.vo.pfxx.util.PfxxPluginUtils ;
import nc.vo.pub.BusinessException ;
import java.util.* ;
import java.util.stream.Stream ;
public class MaterialPlanPfxxPlugin extends AbstractPfxxPlugin {
IMaterialPlanQueryService materialplanqueryservice = null ;
IMaterialPlanService materialplanservice = null ;
IMaterialAssignService assignservice = null ;
private static final String LOG_INFO_NAME = " qyMesLog " ;
private static final Log logger = Log . getInstance ( LOG_INFO_NAME ) ;
private static final String reqUrl = " /IF_QyErpApi.ashx?action=addwlxx " ;
private Map < String , String > configParams ;
public MaterialPlanPfxxPlugin ( ) {
}
protected Object processBill ( Object vo , ISwapContext swapContext , AggxsysregisterVO aggvo ) throws BusinessException {
MaterialPlanVO planvo = ( MaterialPlanVO ) vo ;
MaterialPlanVO [ ] pvos = this . getMaterialPlanQueryService ( ) . queryMaterialPlanVOs ( new String [ ] { planvo . getPk_org ( ) } , planvo . getPk_material ( ) ) ;
if ( pvos ! = null & & pvos . length ! = 0 ) {
planvo = this . updateMaterialPlan ( pvos , planvo ) ;
} else {
planvo = this . insertMaterialPlan ( planvo ) ;
PfxxPluginUtils . addDocIDVsPKContrast ( swapContext . getBilltype ( ) , swapContext . getDocID ( ) , planvo . getPrimaryKey ( ) ) ;
}
return planvo . getPrimaryKey ( ) ;
}
private MaterialPlanVO insertMaterialPlan ( MaterialPlanVO planvo ) throws BusinessException {
ErrLogReturnValue value = this . getService ( ) . assignByPks ( new String [ ] { planvo . getPk_material ( ) } , new String [ ] { planvo . getPk_org ( ) } , true ) ;
MaterialPlanVO [ ] pvos = this . getMaterialPlanQueryService ( ) . queryMaterialPlanVOs ( new String [ ] { planvo . getPk_org ( ) } , planvo . getPk_material ( ) ) ;
if ( pvos ! = null & & pvos . length > 0 ) {
planvo = this . updateMaterialPlan ( pvos , planvo ) ;
}
return planvo ;
}
private MaterialPlanVO updateMaterialPlan ( MaterialPlanVO [ ] pvos , MaterialPlanVO planvo ) throws BusinessException {
List < MaterialReplVO > list = new ArrayList ( ) ;
MaterialPlanVO vo = pvos [ 0 ] ;
String [ ] attrs = planvo . getAttributeNames ( ) ;
for ( String attr : attrs ) {
if ( planvo . getAttributeValue ( attr ) ! = null & & ! " materialrepl " . equals ( attr ) ) {
vo . setAttributeValue ( attr , planvo . getAttributeValue ( attr ) ) ;
}
}
if ( vo . getMaterialrepl ( ) ! = null & & vo . getMaterialrepl ( ) . length > 0 ) {
for ( MaterialReplVO replvo : vo . getMaterialrepl ( ) ) {
replvo . setStatus ( 3 ) ;
list . add ( replvo ) ;
}
}
if ( planvo . getMaterialrepl ( ) ! = null & & planvo . getMaterialrepl ( ) . length > 0 ) {
for ( MaterialReplVO replvo : planvo . getMaterialrepl ( ) ) {
replvo . setStatus ( 2 ) ;
list . add ( replvo ) ;
}
}
vo . setMaterialrepl ( ( MaterialReplVO [ ] ) list . toArray ( new MaterialReplVO [ 0 ] ) ) ;
vo = this . getMaterialPlanService ( ) . updateMaterialPlanVO ( vo ) ;
syncQMS ( vo ) ;
return vo ;
}
private IMaterialPlanQueryService getMaterialPlanQueryService ( ) {
if ( this . materialplanqueryservice = = null ) {
this . materialplanqueryservice = ( IMaterialPlanQueryService ) NCLocator . getInstance ( ) . lookup ( IMaterialPlanQueryService . class ) ;
}
return this . materialplanqueryservice ;
}
private IMaterialPlanService getMaterialPlanService ( ) {
if ( this . materialplanservice = = null ) {
this . materialplanservice = ( IMaterialPlanService ) NCLocator . getInstance ( ) . lookup ( IMaterialPlanService . class ) ;
}
return this . materialplanservice ;
}
private IMaterialAssignService getService ( ) {
if ( this . assignservice = = null ) {
this . assignservice = ( IMaterialAssignService ) NCLocator . getInstance ( ) . lookup ( IMaterialAssignService . class ) ;
}
return this . assignservice ;
}
private void syncQMS ( MaterialPlanVO planVO ) throws BusinessException {
// <20> <EFBFBD> <DEB8> <EFBFBD> <EFBFBD> ϼƻ<CFBC> <C6BB> <EFBFBD> Ϣ<EFBFBD> Ľӿ<C4BD> ִ<EFBFBD> <D6B4> ֮<EFBFBD> <D6AE> ͬ<EFBFBD> <CDAC> <EFBFBD> <EFBFBD> <DEB8> <EFBFBD> Դ<EFBFBD> <D4B4> <EFBFBD> <EFBFBD>
configParams = MyHelper . getConfigParams ( " jm-config " , null ) ;
buildSyncData ( planVO ) ;
}
/ * *
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* /
private void buildSyncData ( MaterialPlanVO planVO ) throws BusinessException {
String pkMaterial = planVO . getPk_material ( ) ;
String pkOrg = planVO . getPk_org ( ) ;
HYPubBO hyPub = new HYPubBO ( ) ;
MaterialVO vo = ( MaterialVO ) hyPub . queryByPrimaryKey ( MaterialVO . class , pkMaterial ) ;
// <20> ж<EFBFBD> <D0B6> <EFBFBD> <EFBFBD> ϵ<EFBFBD> ҵ<EFBFBD> <D2B5> <EFBFBD> <EFBFBD> Ԫ<EFBFBD> Ƿ<EFBFBD> <C7B7> Ǿ<EFBFBD> <C7BE> ܹ<EFBFBD> ˾<EFBFBD> <CBBE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Integer num = MyHelper . checkIfOrg ( configParams , pkMaterial , " jmOrg " ) ;
if ( num < = 0 ) {
return ;
}
// <20> ֶ<EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD>
// String pk_marbasclass = vo.getPk_marbasclass();
// String mrlTypeName = MyHelper.getStrValByCondition(MarBasClassVO.getDefaultTableName(), MarBasClassVO.NAME,
// "pk_marbasclass = '" + pk_marbasclass + "'");
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ
Map unitMap = getGoodsInfo ( pkMaterial ) ;
// <20> <> Դ<EFBFBD> <D4B4> <EFBFBD> ϱ <EFBFBD> <CFB1> <EFBFBD>
Map < String , MaterialPlanVO > planMap = queryMaterialPlanInfoByPks ( new String [ ] { pkMaterial } , pkOrg ,
new String [ ] { MaterialPlanVO . DEF2 } ) ;
// <20> ƻ<EFBFBD> <C6BB> <EFBFBD> Ϣ<EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> 2<EFBFBD> <32> ԭϵͳ<CFB5> <CDB3> <EFBFBD> 룩BIP<49> <50> <EFBFBD> <EFBFBD> Դ<EFBFBD> <D4B4> <EFBFBD> ϵ<EFBFBD> <CFB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϱ <EFBFBD> <CFB1> 룬BIP<49> <50> <EFBFBD> <EFBFBD> <EFBFBD> ϱ <EFBFBD> <CFB1> 봫<EFBFBD> <EBB4AB> Դ<EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> ֶΡ <D6B6> BIP<49> <50> <EFBFBD> ϱ <EFBFBD> <CFB1> 롱
String qyCode = " " ;
if ( MMValueCheck . isNotEmpty ( planMap ) & &
MMValueCheck . isNotEmpty ( planMap . get ( pkMaterial ) ) ) {
qyCode = planMap . get ( pkMaterial ) . getDef2 ( ) ;
} else {
qyCode = vo . getCode ( ) ;
}
// 1=δ<> <CEB4> <EFBFBD> <EFBFBD> ;2=<3D> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ;3=<3D> <> ͣ<EFBFBD> <CDA3> ;
Integer enablestate = vo . getEnablestate ( ) ;
String statusCode = ( 3 = = enablestate ) ? " 1 " : " 0 " ;
Map < String , Object > stockMap = MyHelper . getMapValByCondition ( MaterialStockVO . getDefaultTableName ( ) , " def3,def4,martype " ,
MaterialStockVO . PK_MATERIAL + " = ' " + pkMaterial + " ' and pk_org = ' " + pkOrg + " ' " ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ
if ( ! " MR " . equals ( stockMap . get ( " martype " ) ) ) {
return ;
}
// <20> <> <EFBFBD> ϱ <EFBFBD> ־<EFBFBD> Ͳ<EFBFBD> Ʒ <EFBFBD> <C6B7> <EFBFBD> <EFBFBD> <EFBFBD> ֶ<EFBFBD> <D6B6> ڿ<EFBFBD> <DABF> <EFBFBD> <EFBFBD> <EFBFBD> Ϣҳǩ<D2B3> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϵ<EFBFBD> ʱ<EFBFBD> <CAB1> û<EFBFBD> <C3BB> Ĭ<EFBFBD> <C4AC> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> ڴ˴ <DAB4> <CBB4> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> ϱ <EFBFBD> ־
String wlbz = " <EFBFBD> <EFBFBD> Ʒ " ;
String wlbzId = stockMap . get ( " def3 " ) + " " ;
String defName = getDefName ( " zdy-jmzz001 " , wlbzId ) ;
if ( MMValueCheck . isNotEmpty ( defName ) ) {
wlbz = defName ;
}
// <20> <> Ʒ <EFBFBD> <C6B7> <EFBFBD> <EFBFBD>
2025-09-24 18:47:34 +08:00
String cpfl ;
2025-09-23 18:36:22 +08:00
String cpflId = stockMap . get ( " def4 " ) + " " ;
String defName1 = getDefName ( " zdy-jmzz002 " , cpflId ) ;
2025-09-24 18:47:34 +08:00
if ( MMValueCheck . isEmpty ( defName1 ) ) {
return ; // ȱ<> ٲ<EFBFBD> Ʒ <EFBFBD> <C6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ<EFBFBD> <CDAC> <EFBFBD> <EFBFBD> Դ
2025-09-23 18:36:22 +08:00
}
2025-09-24 18:47:34 +08:00
cpfl = defName1 ;
2025-09-23 18:36:22 +08:00
// <20> <> װ<EFBFBD> <D7B0> <EFBFBD> <EFBFBD>
JSONObject singleObj = new JSONObject ( ) ;
// <20> <> <EFBFBD> α <EFBFBD> <CEB1> ţ<EFBFBD> <C5A3> <EFBFBD> <EFBFBD> <EFBFBD> Ψһ <CEA8> <D2BB> ʶ<EFBFBD> <CAB6> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Σ<EFBFBD> <CEA3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݺ<EFBFBD> <DDBA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
long cts = System . currentTimeMillis ( ) ;
singleObj . put ( " batchid " , cts ) ;
JSONObject contentObj = new JSONObject ( ) ;
contentObj . put ( " meswlbh " , qyCode ) ; // <20> <> Դ<EFBFBD> <D4B4> <EFBFBD> ϱ <EFBFBD> <CFB1> <EFBFBD>
contentObj . put ( " bipwlbh " , vo . getCode ( ) ) ; // BIP<49> <50> <EFBFBD> ϱ <EFBFBD> <CFB1> <EFBFBD>
contentObj . put ( " wlmc " , vo . getName ( ) ) ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2025-09-24 18:47:34 +08:00
String wlxhgg = MyHelper . skipNull ( vo . getMaterialtype ( ) ) + MyHelper . skipNull ( vo . getMaterialspec ( ) ) ;
contentObj . put ( " wlxhgg " , wlxhgg ) ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ͺ Ź<CDBA> <C5B9> <EFBFBD>
2025-09-23 18:36:22 +08:00
contentObj . put ( " wlfl " , " " ) ; // <20> <> <EFBFBD> Ϸ<EFBFBD> <CFB7> <EFBFBD>
contentObj . put ( " cpfl " , cpfl ) ; // <20> <> Ʒ <EFBFBD> <C6B7> <EFBFBD> <EFBFBD>
contentObj . put ( " wlbz " , wlbz ) ; // <20> <> <EFBFBD> ϱ <EFBFBD> ־
contentObj . put ( " sjjldw " , unitMap . get ( " unitname " ) ) ; // <20> <> <EFBFBD> Ƽ <EFBFBD> <C6BC> <EFBFBD> <EFBFBD> <EFBFBD> λ
contentObj . put ( " cgjldw " , unitMap . get ( " deputy_unitname " ) ) ; // <20> ɹ<EFBFBD> <C9B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ
contentObj . put ( " zhxs " , unitMap . getOrDefault ( " convertRate " , " 1.00 " ) ) ; // ת<> <D7AA> ϵ<EFBFBD> <CFB5>
contentObj . put ( " flag_fq " , statusCode ) ; // 1/0 <20> <> <EFBFBD> <EFBFBD> 1<EFBFBD> <31> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϸ<EFBFBD> <CFB7> <EFBFBD>
contentObj . put ( " bz " , vo . getMemo ( ) ) ; // <20> <> ע<EFBFBD> <D7A2> Ϣ
JSONArray contentArr = new JSONArray ( ) ;
contentArr . add ( contentObj ) ;
singleObj . put ( " Content " , contentArr ) ;
pushData ( singleObj ) ;
}
/ * *
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* /
private void pushData ( JSONObject param ) throws BusinessException {
// String jsonString = param.toJSONString();
// תjson<6F> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> nullֵ
String jsonStr = JSON . toJSONString ( param ,
SerializerFeature . WriteMapNullValue ,
SerializerFeature . WriteNullStringAsEmpty
) ;
logger . error ( " QMS-Material-param = " + jsonStr ) ;
// NCCForUAPLogger.debug("QMS-Material-param = " + jsonStr);
String baseUrl = configParams . get ( " qmsBaseUrl " ) ;
String requestUrl = baseUrl + reqUrl ;
logger . error ( " QMS-Material-url = " + requestUrl ) ;
String result = ThirdPartyPostRequestUtil . sendPostRequest ( requestUrl , jsonStr ) ;
JSONObject resultObj = JSONObject . parseObject ( result ) ;
logger . error ( " QMS-Material-res = " + result ) ;
if ( ! " true " . equals ( resultObj . getString ( " success " ) ) ) {
logger . error ( " QMS-Material-error,result[ " + resultObj . toJSONString ( ) + " ] " ) ;
throw new BusinessException ( " QMS-Material-error: " + resultObj . getString ( " message " ) ) ;
}
}
private Map getGoodsInfo ( String pkMaterial ) throws BusinessException {
String sql = " select a.pk_measdoc, c.name unitname, b.pk_measdoc deputyUnit, d.name deputy_unitname, nvl(b.measrate, '1/1') measrate " +
" from bd_material a " +
" left join bd_materialconvert b on a.pk_material = b.pk_material " +
" left join bd_measdoc c on a.pk_measdoc = c.pk_measdoc " +
" left join bd_measdoc d on b.pk_measdoc = d.pk_measdoc " +
" where a.pk_material = ' " + pkMaterial + " ' " ;
Map map = ( Map ) new BaseDAO ( ) . executeQuery ( sql , new MapProcessor ( ) ) ;
map . put ( " convertRate " , MyHelper . transferSpecialField ( map . get ( " measrate " ) + " " ) ) ;
return map ;
}
private boolean checkIfOrg ( String code , Map < String , String > configParams ) throws BusinessException {
String targetCode = configParams . get ( " jmOrg " ) ;
if ( targetCode = = null | | nc . vo . am . common . util . StringUtils . isEmpty ( targetCode ) ) {
throw new BusinessException ( " δ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֯<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
String [ ] orgItem = targetCode . split ( " , " ) ;
for ( String orgCode : orgItem ) {
if ( ! orgCode . isEmpty ( ) & & orgCode . equals ( code ) ) {
return false ;
}
}
return true ;
}
public Map < String , MaterialPlanVO > queryMaterialPlanInfoByPks ( String [ ] pks , String pk_stockorg ,
String [ ] fields ) throws BusinessException {
Map < String , MaterialPlanVO > map = null ;
List < String > vids = Stream . of ( pks ) . filter ( Objects : : nonNull ) . distinct ( ) . toList ( ) ;
if ( vids . isEmpty ( ) ) {
map = new HashMap < > ( ) ;
} else {
map = NCLocator . getInstance ( ) . lookup ( IMaterialPubService . class )
. queryMaterialPlanInfoByPks ( vids . toArray ( new String [ 0 ] ) , pk_stockorg , fields ) ;
}
return map ;
}
/ * *
* <EFBFBD> <EFBFBD> ȡ <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
* /
private String getDefName ( String code , String pk_defdoc ) {
String res = " " ;
String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code=' " + code + " ' and dr=0 ) and dr = 0 and pk_defdoc = ' " + pk_defdoc + " ' " ;
try {
DefdocVO [ ] defdocVOs = ( DefdocVO [ ] ) new HYSuperDMO ( ) . queryByWhereClause ( DefdocVO . class , strWhere ) ;
if ( defdocVOs ! = null & & defdocVOs . length > 0 ) {
res = defdocVOs [ 0 ] . getName ( ) . trim ( ) ;
}
} catch ( DAOException e ) {
logger . error ( " gyMes-SaleOrder-error,getDefName[ " + e . getMessage ( ) + " ] " ) ;
}
return res ;
}
}