diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncEpicMesRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncEpicMesRule.java index f3cd8e6..0b966d2 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncEpicMesRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncEpicMesRule.java @@ -43,8 +43,8 @@ public class AfterApproveSyncEpicMesRule implements IRule { 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 MES_CODE_URL = "/prj-v5-web/ext/api/releaseNo"; + private static final String pmoUrl = "/prj-v5-web/ext/api/workOrder"; + private static final String codeUrl = "/prj-v5-web/ext/api/releaseNo"; private static final BaseDAO dao = new BaseDAO(); @@ -99,7 +99,7 @@ public class AfterApproveSyncEpicMesRule implements IRule { String responseString = null; try { String baseUrl = SysParaInitQuery.getParaString("GLOBLE00000000000000", "EPICMESURL"); - String requestUrl = baseUrl + MES_PMO_URL; + String requestUrl = baseUrl + pmoUrl; responseString = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, param.toJSONString()); obmlog.info(" 艾普MES系统原始返回: " + responseString); @@ -311,7 +311,7 @@ public class AfterApproveSyncEpicMesRule implements IRule { private void pushCodeData(JSONArray param) throws BusinessException { String baseUrl = SysParaInitQuery.getParaString("GLOBLE00000000000000", "EPICMESURL"); baseUrl = "http://192.168.55.39:8080"; - String requestUrl = baseUrl + MES_CODE_URL; + String requestUrl = baseUrl + codeUrl; String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, param.toJSONString()); JSONObject resultObj = JSONObject.parseObject(result); obmlog.error("AfterApproveSyncEpicMesRule-pushCodeData-req = " + result); diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java index e4e9a0c..8e174c7 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java @@ -5,18 +5,17 @@ import nc.bs.bd.baseservice.ArrayClassConvertUtil; import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessListener; import nc.bs.businessevent.bd.BDCommonEvent; +import nc.bs.dao.BaseDAO; import nc.bs.logging.Logger; import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.itf.arap.goldentax.SysParaInitQuery; +import nc.jdbc.framework.processor.MapProcessor; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.marbasclass.MarBasClassVO; -import nc.vo.bd.material.measdoc.MeasdocVO; import nc.vo.org.FactoryVO; import nc.vo.pub.BusinessException; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.HashMap; import java.util.Map; @@ -57,29 +56,33 @@ public class MaterialToEpicMesListener implements IBusinessListener { if (!MyHelper.checkIfDldzOrg(orgCode)) { 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=已停用; Integer enablestate = vo.getEnablestate(); String statusCode = (3 == enablestate) ? "N" : "Y"; + // 组装数据 JSONObject singleObj = new JSONObject(); singleObj.put("id", null);// 唯一标识(主键) - singleObj.put("siteCode", null);// 工厂编码 + singleObj.put("siteCode", orgCode);// 工厂编码 todo singleObj.put("mrlCode", vo.getCode());// 物料编码 singleObj.put("mrlName", vo.getName());// 物料名称 - String pkMeasdoc = vo.getPk_measdoc(); - String unitName = MyHelper.transferField(MeasdocVO.getDefaultTableName(), MeasdocVO.NAME, MeasdocVO.PK_MEASDOC, pkMeasdoc); - singleObj.put("unit", unitName);// 单位 + singleObj.put("unit", unitMap.get("unitName"));// 单位 singleObj.put("model", vo.getMaterialtype());// 型号 singleObj.put("specification", vo.getMaterialspec());// 规格 singleObj.put("type", getType(eventType));// 类型(I:新增 U:修改 D:删除) - singleObj.put("deputyUnit", null);// 副单位 + singleObj.put("deputyUnit", unitMap.get("deputyUnitName"));// 副单位 singleObj.put("auditCode", "1");// 审核码 singleObj.put("statusCode", statusCode);// 状态码(Y表示启用,N表示停用) - singleObj.put("mrlTypeErp", "1");// 物料类型ERP(1:专用件,3:通用件) - String pk_marbasclass = vo.getPk_marbasclass(); - String mrlTypeCOde = MyHelper.transferField(MarBasClassVO.getDefaultTableName(), MarBasClassVO.CODE, MarBasClassVO.PK_MARBASCLASS, pk_marbasclass); + singleObj.put("mrlTypeErp", "3");// 物料类型ERP(1:专用件,3:通用件)todo singleObj.put("mrlType", mrlTypeCOde);// 物料分类编码 - singleObj.put("convertRate", "1");// 单位换算率 - singleObj.put("isCheck", "1");// 是否选中(1:是,0:否) + singleObj.put("convertRate", unitMap.getOrDefault("convertRate", "1"));// 单位换算率 + // singleObj.put("isCheck", "1");// 是否选中(1:是,0:否) pushData(singleObj); } } @@ -109,29 +112,16 @@ public class MaterialToEpicMesListener implements IBusinessListener { return map.getOrDefault(eventType, "I"); } - /** - * 转换特殊字段 如 1/1 转换为小数 1.0 - */ - private String transferSpecialField(String field) { - if (field == null || field.trim().isEmpty()) { - return null; - } - String[] split = field.split("/"); - if (split.length == 2) { - String numStr = split[0].trim(); - 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; + private Map getUnitInfo(String pkMaterial) throws BusinessException { + 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 " + + "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; } } diff --git a/uapbd/src/public/nc/bs/uapbd/util/MyHelper.java b/uapbd/src/public/nc/bs/uapbd/util/MyHelper.java index fa61875..f749cb9 100644 --- a/uapbd/src/public/nc/bs/uapbd/util/MyHelper.java +++ b/uapbd/src/public/nc/bs/uapbd/util/MyHelper.java @@ -87,7 +87,7 @@ public class MyHelper { * 转换特殊字段 如 1/1 转换为小数 1.0 */ - private String transferSpecialField(String field) { + public static String transferSpecialField(String field) { if (field == null || field.trim().isEmpty()) { return null; }