物料新增接口 优化

This commit is contained in:
houyi 2025-10-11 11:03:54 +08:00
parent 2c12487d2a
commit 86184e27ec
1 changed files with 31 additions and 23 deletions

View File

@ -10,6 +10,7 @@ import nc.bs.businessevent.bd.BDCommonEvent;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log;
import nc.bs.trade.business.HYPubBO;
import nc.bs.uapbd.util.MyHelper;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.jdbc.framework.processor.MapProcessor;
@ -20,17 +21,14 @@ import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.material.marbasclass.MarBasClassVO;
import nc.vo.bd.material.plan.MaterialPlanVO;
import nc.vo.bd.material.stock.MaterialStockVO;
import nc.vo.bd.pub.BDCacheQueryUtil;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.sm.UserVO;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Stream;
/**
* 高压MES-物料新增后同步
*
@ -44,37 +42,47 @@ public class MaterialToGyMesListener implements IBusinessListener {
private static final String updateUrl = "/bip/order/materialUpdate";
private Map<String, String> configParams;
private BaseDAO baseDAO = new BaseDAO();
public void doAction(IBusinessEvent event) throws BusinessException {
BDCommonEvent e = (BDCommonEvent) event;
String eventType = event.getEventType();
Object[] objs = e.getObjs();
String materialid = ((MaterialStockVO) objs[0]).getPk_material();
MaterialVO[] useVOs = (MaterialVO[]) BDCacheQueryUtil.queryVOsByIDs(
MaterialVO.class,
MaterialVO.PK_MATERIAL,
new String[]{materialid},
new String[]{MaterialVO.PK_MEASDOC});
configParams = MyHelper.getConfigParams("gy-config", null);
if (configParams.isEmpty()) {
throw new BusinessException("高压的gymes接口缺少配置");
}
buildSyncData(useVOs, eventType);
HYPubBO hyPub = new HYPubBO();
List<MaterialVO> voList = new ArrayList<>();
for (Object obj : objs) {
MaterialStockVO materialStockVO = (MaterialStockVO) obj;
String pkMaterial = materialStockVO.getPk_material();
String pkOrg = materialStockVO.getPk_org();
String orgCode = (String) hyPub.findColValue(OrgVO.getDefaultTableName(), OrgVO.CODE, "dr =0 and pk_org = '" + pkOrg + "' ");
// 判断物料的业务单元是否是高压公司不是则跳过
if (checkIfOrg(orgCode, configParams)) {
continue;
}
MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pkMaterial);
materialVO.setPk_org(pkOrg);
voList.add(materialVO);
}
if (!voList.isEmpty()) {
MaterialVO[] useVOs = voList.toArray(new MaterialVO[0]);
buildSyncData(useVOs, eventType);
}
}
/**
* 构建同步数据
*/
private void buildSyncData(MaterialVO[] useVOs, String eventType) throws BusinessException {
// String orgId = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.PK_ORG, OrgVO.CODE, "C046");
String pkOrg = MyHelper.getStrValByCondition("ORG_ORGS", OrgVO.PK_ORG, OrgVO.CODE + " = '" + "C046" + "'"+ " and ISBUSINESSUNIT = '" + "Y" +"'");
JSONArray dataArr = new JSONArray();
for (MaterialVO vo : useVOs) {
String pkMaterial = vo.getPk_material();
// 判断物料的业务单元是否是高压公司不是则跳过
// String pkOrg = vo.getPk_org();
Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "gyOrg");
if (!"1009".equals(eventType) && (num <= 0)) {
continue;
}
String pkOrg = vo.getPk_org();
// 字段值翻译
String pk_marbasclass = vo.getPk_marbasclass();
String mrlTypeName = MyHelper.getStrValByCondition(MarBasClassVO.getDefaultTableName(), MarBasClassVO.NAME,
@ -189,8 +197,8 @@ public class MaterialToGyMesListener implements IBusinessListener {
logger.error("gymes-Material-res = " + result);
if (!"200".equals(resultObj.getString("code"))) {
// throw new BusinessException("gymes-Material-error:" + resultObj.getString("msg"));
logger.error("gymes-Material-error,result[" + resultObj.toJSONString() + "]");
throw new BusinessException("gymes-Material-error:" + resultObj.getString("msg"));
}
}
@ -215,7 +223,7 @@ public class MaterialToGyMesListener implements IBusinessListener {
}
private Map getProdInfo(String pkMaterial) throws BusinessException {
String sql = "SELECT b.code deptCode, a.iscreatesonprodorder, a.issend, a.conversemethod, a.converstime, a.wghxcl" +
String sql = "SELECT b.code deptCode, a.iscreatesonprodorder, a.issend, a.conversemethod, a.converstime, a.wghxcl" +
" pk_materialprod " +
"FROM " +
" bd_materialprod a" +
@ -226,7 +234,7 @@ public class MaterialToGyMesListener implements IBusinessListener {
}
private boolean checkIfOrg(String code, Map<String, String> configParams) throws BusinessException {
String targetCode = configParams.get("mesBaseUrl");
String targetCode = configParams.get("gyOrg");
if (targetCode == null || StringUtils.isEmpty(targetCode)) {
throw new BusinessException("未配置组织参数");
}