优化艾普MES接口代码-物料+生产订单

This commit is contained in:
mzr 2025-07-13 12:59:58 +08:00
parent 2e3b7b6329
commit 0d448df7f2
3 changed files with 31 additions and 41 deletions

View File

@ -43,8 +43,8 @@ public class AfterApproveSyncEpicMesRule implements IRule<PMOAggVO> {
private static final Log obmlog = Log.getInstance(LOG_INFO_NAME); private static final Log obmlog = Log.getInstance(LOG_INFO_NAME);
private static final String MES_PMO_URL = "/prj-v5-web/ext/api/workOrder"; private static final String pmoUrl = "/prj-v5-web/ext/api/workOrder";
private static final String MES_CODE_URL = "/prj-v5-web/ext/api/releaseNo"; private static final String codeUrl = "/prj-v5-web/ext/api/releaseNo";
private static final BaseDAO dao = new BaseDAO(); private static final BaseDAO dao = new BaseDAO();
@ -99,7 +99,7 @@ public class AfterApproveSyncEpicMesRule implements IRule<PMOAggVO> {
String responseString = null; String responseString = null;
try { try {
String baseUrl = SysParaInitQuery.getParaString("GLOBLE00000000000000", "EPICMESURL"); String baseUrl = SysParaInitQuery.getParaString("GLOBLE00000000000000", "EPICMESURL");
String requestUrl = baseUrl + MES_PMO_URL; String requestUrl = baseUrl + pmoUrl;
responseString = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, param.toJSONString()); responseString = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, param.toJSONString());
obmlog.info(" °¬ÆÕMESϵͳԭʼ·µ»Ø: " + responseString); obmlog.info(" °¬ÆÕMESϵͳԭʼ·µ»Ø: " + responseString);
@ -311,7 +311,7 @@ public class AfterApproveSyncEpicMesRule implements IRule<PMOAggVO> {
private void pushCodeData(JSONArray param) throws BusinessException { private void pushCodeData(JSONArray param) throws BusinessException {
String baseUrl = SysParaInitQuery.getParaString("GLOBLE00000000000000", "EPICMESURL"); String baseUrl = SysParaInitQuery.getParaString("GLOBLE00000000000000", "EPICMESURL");
baseUrl = "http://192.168.55.39:8080"; baseUrl = "http://192.168.55.39:8080";
String requestUrl = baseUrl + MES_CODE_URL; String requestUrl = baseUrl + codeUrl;
String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, param.toJSONString()); String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, param.toJSONString());
JSONObject resultObj = JSONObject.parseObject(result); JSONObject resultObj = JSONObject.parseObject(result);
obmlog.error("AfterApproveSyncEpicMesRule-pushCodeData-req = " + result); obmlog.error("AfterApproveSyncEpicMesRule-pushCodeData-req = " + result);

View File

@ -5,18 +5,17 @@ import nc.bs.bd.baseservice.ArrayClassConvertUtil;
import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener; import nc.bs.businessevent.IBusinessListener;
import nc.bs.businessevent.bd.BDCommonEvent; import nc.bs.businessevent.bd.BDCommonEvent;
import nc.bs.dao.BaseDAO;
import nc.bs.logging.Logger; import nc.bs.logging.Logger;
import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.MyHelper;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.itf.arap.goldentax.SysParaInitQuery; import nc.itf.arap.goldentax.SysParaInitQuery;
import nc.jdbc.framework.processor.MapProcessor;
import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.material.marbasclass.MarBasClassVO; import nc.vo.bd.material.marbasclass.MarBasClassVO;
import nc.vo.bd.material.measdoc.MeasdocVO;
import nc.vo.org.FactoryVO; import nc.vo.org.FactoryVO;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -57,29 +56,33 @@ public class MaterialToEpicMesListener implements IBusinessListener {
if (!MyHelper.checkIfDldzOrg(orgCode)) { if (!MyHelper.checkIfDldzOrg(orgCode)) {
continue; continue;
} }
// 字段值翻译
String pk_marbasclass = vo.getPk_marbasclass();
String mrlTypeCOde = MyHelper.transferField(MarBasClassVO.getDefaultTableName(), MarBasClassVO.CODE, MarBasClassVO.PK_MARBASCLASS, pk_marbasclass);
// 计量单位
String pkMaterial = vo.getPk_material();
Map unitMap = getUnitInfo(pkMaterial);
// 1=未启用;2=已启用;3=已停用; // 1=未启用;2=已启用;3=已停用;
Integer enablestate = vo.getEnablestate(); Integer enablestate = vo.getEnablestate();
String statusCode = (3 == enablestate) ? "N" : "Y"; String statusCode = (3 == enablestate) ? "N" : "Y";
// 组装数据
JSONObject singleObj = new JSONObject(); JSONObject singleObj = new JSONObject();
singleObj.put("id", null);// 唯一标识主键 singleObj.put("id", null);// 唯一标识主键
singleObj.put("siteCode", null);// 工厂编码 singleObj.put("siteCode", orgCode);// 工厂编码 todo
singleObj.put("mrlCode", vo.getCode());// 物料编码 singleObj.put("mrlCode", vo.getCode());// 物料编码
singleObj.put("mrlName", vo.getName());// 物料名称 singleObj.put("mrlName", vo.getName());// 物料名称
String pkMeasdoc = vo.getPk_measdoc(); singleObj.put("unit", unitMap.get("unitName"));// 单位
String unitName = MyHelper.transferField(MeasdocVO.getDefaultTableName(), MeasdocVO.NAME, MeasdocVO.PK_MEASDOC, pkMeasdoc);
singleObj.put("unit", unitName);// 单位
singleObj.put("model", vo.getMaterialtype());// 型号 singleObj.put("model", vo.getMaterialtype());// 型号
singleObj.put("specification", vo.getMaterialspec());// 规格 singleObj.put("specification", vo.getMaterialspec());// 规格
singleObj.put("type", getType(eventType));// 类型I:新增 U:修改 D:删除 singleObj.put("type", getType(eventType));// 类型I:新增 U:修改 D:删除
singleObj.put("deputyUnit", null);// 副单位 singleObj.put("deputyUnit", unitMap.get("deputyUnitName"));// 副单位
singleObj.put("auditCode", "1");// 审核码 singleObj.put("auditCode", "1");// 审核码
singleObj.put("statusCode", statusCode);// 状态码Y表示启用N表示停用 singleObj.put("statusCode", statusCode);// 状态码Y表示启用N表示停用
singleObj.put("mrlTypeErp", "1");// 物料类型ERP1:专用件3:通用件 singleObj.put("mrlTypeErp", "3");// 物料类型ERP1:专用件3:通用件todo
String pk_marbasclass = vo.getPk_marbasclass();
String mrlTypeCOde = MyHelper.transferField(MarBasClassVO.getDefaultTableName(), MarBasClassVO.CODE, MarBasClassVO.PK_MARBASCLASS, pk_marbasclass);
singleObj.put("mrlType", mrlTypeCOde);// 物料分类编码 singleObj.put("mrlType", mrlTypeCOde);// 物料分类编码
singleObj.put("convertRate", "1");// 单位换算率 singleObj.put("convertRate", unitMap.getOrDefault("convertRate", "1"));// 单位换算率
singleObj.put("isCheck", "1");// 是否选中1:0: // singleObj.put("isCheck", "1");// 是否选中1:0:
pushData(singleObj); pushData(singleObj);
} }
} }
@ -109,29 +112,16 @@ public class MaterialToEpicMesListener implements IBusinessListener {
return map.getOrDefault(eventType, "I"); return map.getOrDefault(eventType, "I");
} }
/** private Map getUnitInfo(String pkMaterial) throws BusinessException {
* 转换特殊字段 1/1 转换为小数 1.0 String sql = " select a.pk_measdoc, c.name unitName, b.pk_measdoc deputyUnit, d.name deputyUnitName, nvl(b.measrate, '1/1') measrate " +
*/ "from bd_material a " +
private String transferSpecialField(String field) { "left join bd_materialconvert b on a.pk_material = b.pk_material " +
if (field == null || field.trim().isEmpty()) { "left join bd_measdoc c on a.pk_measdoc = c.pk_measdoc " +
return null; "left join bd_measdoc d on b.pk_measdoc = d.pk_measdoc " +
} "where a.pk_material = '" + pkMaterial + "' ";
String[] split = field.split("/"); Map map = (Map) new BaseDAO().executeQuery(sql, new MapProcessor());
if (split.length == 2) { map.put("convertRate", MyHelper.transferSpecialField(map.get("measrate") + ""));
String numStr = split[0].trim(); return map;
String denStr = split[1].trim();
if (denStr.equals("0")) {
return "0.00"; // 分母不能为零
}
try {
BigDecimal numerator = new BigDecimal(numStr);
BigDecimal denominator = new BigDecimal(denStr);
return numerator.divide(denominator, 2, RoundingMode.HALF_UP).toString();
} catch (NumberFormatException e) {
return field; // 非法数字返回原字段
}
}
return field;
} }
} }

View File

@ -87,7 +87,7 @@ public class MyHelper {
* 转换特殊字段 1/1 转换为小数 1.0 * 转换特殊字段 1/1 转换为小数 1.0
*/ */
private String transferSpecialField(String field) { public static String transferSpecialField(String field) {
if (field == null || field.trim().isEmpty()) { if (field == null || field.trim().isEmpty()) {
return null; return null;
} }