taikai2312/uapbd/src/private/nc/bs/bd/pfxx/plugin/MaterialPlanPfxxPlugin.java

300 lines
13 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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);
}
/**
* <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><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>
String cpfl;
String cpflId = stockMap.get("def4") + "";
String defName1 = getDefName("zdy-jmzz002", cpflId);
if (MMValueCheck.isEmpty(defName1)) {
return;// ȱ<>ٲ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>Դ
}
cpfl = defName1;
// <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>
String wlxhgg = MyHelper.skipNull(vo.getMaterialtype()) + MyHelper.skipNull(vo.getMaterialspec());
contentObj.put("wlxhgg", wlxhgg); // <20><><EFBFBD><EFBFBD><EFBFBD>ͺŹ<CDBA><C5B9><EFBFBD>
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);
}
/**
* <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><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;
}
/**
* <20><>ȡ<EFBFBD>Զ<EFBFBD><D4B6><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;
}
}