Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
547e2fe5f5
|
@ -55,8 +55,6 @@ public class PMOApproveBP {
|
|||
processer.addAfterRule(new AfterApproveRuleSyncMes());
|
||||
// 审批后推送流程生产订单到艾普MES
|
||||
processer.addAfterRule(new AfterApproveSyncEpicMesRule());
|
||||
|
||||
|
||||
// 审批后推送流程生产订单到启源qms
|
||||
processer.addAfterRule(new AfterApproveSyncQMSRule());
|
||||
// 流程生产订单审批后推送高压MES
|
||||
|
|
|
@ -5,34 +5,29 @@ import com.alibaba.fastjson.JSONArray;
|
|||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
import nc.bs.dao.DAOException;
|
||||
import nc.bs.logging.Log;
|
||||
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.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||
import nc.jdbc.framework.processor.MapProcessor;
|
||||
import nc.vo.bd.defdoc.DefdocVO;
|
||||
import nc.vo.org.OrgVO;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.pubapp.pattern.pub.SqlBuilder;
|
||||
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||||
import nc.vo.so.m30.entity.SaleOrderHVO;
|
||||
import nc.vo.so.m30.entity.SaleOrderVO;
|
||||
import nc.vo.vorg.DeptVersionVO;
|
||||
import nccloud.baseapp.core.log.NCCForUAPLogger;
|
||||
import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 销售订单推送mes
|
||||
* 销售订单推送启源mes
|
||||
*/
|
||||
public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
||||
private static final String LOG_INFO_NAME = "qyMesLog";
|
||||
|
@ -48,7 +43,6 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
|||
public void process(SaleOrderVO[] saleOrderVOs) {
|
||||
try {
|
||||
if (saleOrderVOs == null || saleOrderVOs.length == 0) {
|
||||
|
||||
return;
|
||||
}
|
||||
configParams = MyHelper.getConfigParams("xb-config", null);
|
||||
|
@ -60,15 +54,16 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
|||
ExceptionUtils.wrappException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ¹¹½¨Í¬²½Êý¾Ý
|
||||
*/
|
||||
private void buildSyncData(SaleOrderVO[] useVOs) throws BusinessException {
|
||||
BaseDAO baseDAO = new BaseDAO();
|
||||
Date now= new Date();
|
||||
Date now = new Date();
|
||||
HYPubBO hybo = new HYPubBO();
|
||||
for (SaleOrderVO vo : useVOs) {
|
||||
// 判断物料的业务单元是否是箱变公司,不是则跳过
|
||||
// 判断业务单元是否是箱变公司,不是则跳过
|
||||
String pkOrg = vo.getParentVO().getPk_org();
|
||||
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||
if (checkIfOrg(orgCode, configParams)) {
|
||||
|
@ -78,31 +73,33 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
|||
JSONObject singleObj = new JSONObject();
|
||||
|
||||
SaleOrderHVO pmoHeadVO = vo.getParentVO();
|
||||
SaleOrderBVO[] itemVOS=vo.getChildrenVO();
|
||||
singleObj.put("batchid",now);
|
||||
singleObj.put("hth",pmoHeadVO.getVdef6());
|
||||
singleObj.put("fplx",pmoHeadVO.getDbilldate().toString().substring(0,10));
|
||||
if(null !=pmoHeadVO.getCemployeeid()){
|
||||
SaleOrderBVO[] itemVOS = vo.getChildrenVO();
|
||||
singleObj.put("batchid", now);
|
||||
String vdef6 = pmoHeadVO.getVdef6();
|
||||
String contractNum = getDefCode("zdy-001", vdef6);
|
||||
singleObj.put("hth", contractNum);
|
||||
singleObj.put("fplx", pmoHeadVO.getDbilldate().toString().substring(0, 10));
|
||||
if (null != pmoHeadVO.getCemployeeid()) {
|
||||
String sql = " select name from bd_psndoc where cuserid = '" + pmoHeadVO.getCemployeeid() + "' ";
|
||||
String billmakerName = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||
|
||||
singleObj.put("xsy",billmakerName);
|
||||
}else{
|
||||
singleObj.put("xsy","");
|
||||
singleObj.put("xsy", billmakerName);
|
||||
} else {
|
||||
singleObj.put("xsy", "");
|
||||
}
|
||||
|
||||
singleObj.put("dhdwid",pmoHeadVO.getCcustomerid());
|
||||
singleObj.put("dhdwid", pmoHeadVO.getCcustomerid());
|
||||
String customersql = " select name from bd_customer where pk_customer = '" + pmoHeadVO.getCcustomerid() + "' ";
|
||||
String customerName = (String) baseDAO.executeQuery(customersql, new ColumnProcessor());
|
||||
singleObj.put("dhdw",customerName);
|
||||
singleObj.put("dhdw", customerName);
|
||||
|
||||
|
||||
String lrrsql = " select user_name from sm_user where cuserid = '" + pmoHeadVO.getBillmaker() + "' ";
|
||||
String lrrName = (String) baseDAO.executeQuery(lrrsql, new ColumnProcessor());
|
||||
|
||||
singleObj.put("lrr",lrrName);
|
||||
singleObj.put("lrrq",pmoHeadVO.getDmakedate().toString().substring(0,10));
|
||||
singleObj.put("bz",pmoHeadVO.getVnote());
|
||||
singleObj.put("lrr", lrrName);
|
||||
singleObj.put("lrrq", pmoHeadVO.getDmakedate().toString().substring(0, 10));
|
||||
singleObj.put("bz", pmoHeadVO.getVnote());
|
||||
// ´¦ÀíContentÊý×é
|
||||
JSONArray contentArray = new JSONArray();
|
||||
for (SaleOrderBVO item : itemVOS) {
|
||||
|
@ -114,15 +111,15 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
|||
//
|
||||
// Object name = hybo.findColValue("bd_material", "name", "pk_material = '"+item.getCmaterialvid()+"' ");
|
||||
String wlsql = " select code,name,materialspec,materialtype from bd_material where pk_material = '" + item.getCmaterialvid() + "' ";
|
||||
Map<String,Object> mrlmap = (Map<String, Object>) baseDAO.executeQuery(wlsql, new MapProcessor());
|
||||
Map<String, Object> mrlmap = (Map<String, Object>) baseDAO.executeQuery(wlsql, new MapProcessor());
|
||||
|
||||
itemObj.put("wlbh", mrlmap.get("code"));
|
||||
itemObj.put("wlmc", mrlmap.get("name"));
|
||||
itemObj.put("wlxhgg", ((String)mrlmap.get("materialspec")!=null ? mrlmap.get("materialspec").toString() : "" )+((String)mrlmap.get("materialtype")!=null ? mrlmap.get("materialtype").toString() : "" ));
|
||||
itemObj.put("wlxhgg", ((String) mrlmap.get("materialspec") != null ? mrlmap.get("materialspec").toString() : "") + ((String) mrlmap.get("materialtype") != null ? mrlmap.get("materialtype").toString() : ""));
|
||||
itemObj.put("dhsl", item.getNastnum().doubleValue());
|
||||
itemObj.put("xsj", item.getNqtorigtaxprice().doubleValue());
|
||||
itemObj.put("bxzje", item.getNqtorigtaxprice().doubleValue());
|
||||
itemObj.put("jhrq", item.getDsenddate().toString().substring(0,10));
|
||||
itemObj.put("jhrq", item.getDsenddate().toString().substring(0, 10));
|
||||
itemObj.put("bz", item.getVrownote());
|
||||
Object pk_project = hybo.findColValue("bd_project", "project_name", " pk_project = '" + item.getCprojectid() + "' ");
|
||||
itemObj.put("xmmc", pk_project);
|
||||
|
@ -188,19 +185,6 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
|||
}
|
||||
}
|
||||
|
||||
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 + "' ";
|
||||
// logDl.error("QMS-Material-getUnitInfo-sql = " + sql);
|
||||
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("xbOrg");
|
||||
if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) {
|
||||
|
@ -216,6 +200,21 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
|||
}
|
||||
|
||||
|
||||
private String getDefCode(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].getCode().trim();
|
||||
}
|
||||
} catch (DAOException e) {
|
||||
logger.error("QMS-SaleOrder-error,getDefCode[" + e.getMessage() + "]");
|
||||
}
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -77,9 +77,6 @@ public class AfterSoSyncRuleGyMes implements IRule<SaleOrderVO> {
|
|||
// ºÏͬ±àºÅ
|
||||
String vdef6 = hvo.getVdef6();
|
||||
String contractNum = getDefCode("zdy-001", vdef6);
|
||||
if (contractNum.isEmpty()) {
|
||||
contractNum = "11";
|
||||
}
|
||||
for (SaleOrderBVO item : itemVOS) {
|
||||
Object projectName = hybo.findColValue(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_NAME, ProjectHeadVO.PK_PROJECT + " = '" + item.getCprojectid() + "' ");
|
||||
String wlsql = " select code,name,graphid from bd_material where dr = 0 and pk_material = '" + item.getCmaterialvid() + "' ";
|
||||
|
@ -137,7 +134,7 @@ public class AfterSoSyncRuleGyMes implements IRule<SaleOrderVO> {
|
|||
|
||||
if (!"200".equals(resultObj.getString("code"))) {
|
||||
logger.error("gyMes-SaleOrder-error,result[" + resultObj.toJSONString() + "]");
|
||||
throw new BusinessException("gyMes-SaleOrder-error:" + resultObj.getString("message"));
|
||||
throw new BusinessException("销售订单推送高压MES错误:" + resultObj.getString("msg"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -166,11 +166,11 @@ public class ApproveSaleOrderAction {
|
|||
processer.addAfterRule(new MobAfterApproveMessageRule());
|
||||
processer.addAfterRule(new SaleOrderCreateRmBeforeRule());
|
||||
// 在审批后推送到MES系统
|
||||
// processer.addAfterRule(new AfterApprovingSynchronizeRuleMES());
|
||||
processer.addAfterRule(new AfterApprovingSynchronizeRuleMES());
|
||||
// 在审批后推送到QMS系统
|
||||
// processer.addAfterRule(new AfterApprovingSynchronizeRuleQMS());
|
||||
processer.addAfterRule(new AfterApprovingSynchronizeRuleQMS());
|
||||
// 在审批后推送到高压MES
|
||||
processer.addAfterRule(new AfterSoSyncRuleGyMes());
|
||||
// processer.addAfterRule(new AfterSoSyncRuleGyMes());
|
||||
}
|
||||
|
||||
private boolean isExistDelivery(String ctranstype) {
|
||||
|
|
|
@ -44,14 +44,8 @@ public class MaterialToEpicMesListener implements IBusinessListener {
|
|||
Object[] objs = e.getObjs();
|
||||
|
||||
// EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后
|
||||
if ("1004".equals(eventType)) {
|
||||
MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);
|
||||
configParams = MyHelper.getConfigParams("Dldz-config", null);
|
||||
if (configParams.isEmpty()) {
|
||||
throw new BusinessException("电力电子的艾普MES接口缺少配置");
|
||||
}
|
||||
buildSyncData(useVOs, eventType);
|
||||
} else if ("1071".equals(eventType) || "1069".equals(eventType)) {
|
||||
if ("1002".equals(eventType) || "1004".equals(eventType) ||
|
||||
"1071".equals(eventType) || "1069".equals(eventType)) {
|
||||
MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);
|
||||
configParams = MyHelper.getConfigParams("Dldz-config", null);
|
||||
if (configParams.isEmpty()) {
|
||||
|
|
|
@ -90,10 +90,12 @@ public class MaterialToQmsListener implements IBusinessListener {
|
|||
*/
|
||||
private void buildSyncData(MaterialVO[] useVOs, String eventType) throws BusinessException {
|
||||
for (MaterialVO vo : useVOs) {
|
||||
String pkMaterial = vo.getPk_material();
|
||||
// 判断物料的业务单元是否是箱变公司,不是则跳过
|
||||
String pkOrg = vo.getPk_org();
|
||||
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||
if (!"1009".equals(eventType) && checkIfOrg(orgCode, configParams)) {
|
||||
Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "xbOrg");
|
||||
if (!"1009".equals(eventType) && (num <= 0)) {
|
||||
continue;
|
||||
}
|
||||
// 字段值翻译
|
||||
|
@ -101,7 +103,7 @@ public class MaterialToQmsListener implements IBusinessListener {
|
|||
String mrlTypeName = MyHelper.getStrValByCondition(MarBasClassVO.getDefaultTableName(), MarBasClassVO.NAME,
|
||||
"pk_marbasclass = '" + pk_marbasclass + "'");
|
||||
// 计量单位
|
||||
String pkMaterial = vo.getPk_material();
|
||||
|
||||
Map unitMap = getGoodsInfo(pkMaterial);
|
||||
|
||||
// 1=未启用;2=已启用;3=已停用;
|
||||
|
@ -118,6 +120,7 @@ public class MaterialToQmsListener implements IBusinessListener {
|
|||
contentObj.put("wlmc", vo.getName()); // 物料名称
|
||||
contentObj.put("wlxhgg", vo.getMaterialtype() + vo.getMaterialspec()); // 物料型号规格
|
||||
contentObj.put("wlfl", mrlTypeName); // 物料分类
|
||||
contentObj.put("wlbz", "²úÆ·"); // ÎïÁϱêÖ¾
|
||||
contentObj.put("sjjldw", unitMap.get("unitname")); // 设计计量单位
|
||||
contentObj.put("cgjldw", unitMap.get("deputy_unitname")); // 采购计量单位
|
||||
contentObj.put("zhxs", unitMap.getOrDefault("convertRate", "1.00")); // 转换系数
|
||||
|
|
Loading…
Reference in New Issue