流程生产订单删除-推艾普MES
This commit is contained in:
		
							parent
							
								
									18d2fd8bbf
								
							
						
					
					
						commit
						306a703fe0
					
				| 
						 | 
					@ -5,6 +5,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package nc.bs.mmpac.pmo.pac0002.bp;
 | 
					package nc.bs.mmpac.pmo.pac0002.bp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterDelSyncEpicMesRule;
 | 
				
			||||||
import nc.bs.mmpac.pmo.pac0002.bp.rule.WithUpdatePickmRule;
 | 
					import nc.bs.mmpac.pmo.pac0002.bp.rule.WithUpdatePickmRule;
 | 
				
			||||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
 | 
					import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
 | 
				
			||||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateWithParaRule;
 | 
					import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateWithParaRule;
 | 
				
			||||||
| 
						 | 
					@ -98,5 +99,6 @@ public class PMODeleteBP {
 | 
				
			||||||
        IRule<PMOAggVO> billcoderule = new ReturnBillCodeRule("55A2", "vbillcode", "pk_group", "pk_org");
 | 
					        IRule<PMOAggVO> billcoderule = new ReturnBillCodeRule("55A2", "vbillcode", "pk_group", "pk_org");
 | 
				
			||||||
        processer.addAfterRule(billcoderule);
 | 
					        processer.addAfterRule(billcoderule);
 | 
				
			||||||
        processer.addAfterRule(new WithUpdatePickmRule());
 | 
					        processer.addAfterRule(new WithUpdatePickmRule());
 | 
				
			||||||
 | 
					        processer.addAfterRule(new AfterDelSyncEpicMesRule());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,14 +5,11 @@ import com.alibaba.fastjson.JSON;
 | 
				
			||||||
import com.alibaba.fastjson.JSONArray;
 | 
					import com.alibaba.fastjson.JSONArray;
 | 
				
			||||||
import com.alibaba.fastjson.JSONObject;
 | 
					import com.alibaba.fastjson.JSONObject;
 | 
				
			||||||
import com.alibaba.fastjson.serializer.SerializerFeature;
 | 
					import com.alibaba.fastjson.serializer.SerializerFeature;
 | 
				
			||||||
import nc.bs.dao.BaseDAO;
 | 
					 | 
				
			||||||
import nc.bs.logging.Log;
 | 
					import nc.bs.logging.Log;
 | 
				
			||||||
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.impl.pubapp.pattern.rule.ICompareRule;
 | 
					import nc.impl.pubapp.pattern.rule.IRule;
 | 
				
			||||||
import nc.util.mmf.framework.base.MMArrayUtil;
 | 
					import nc.util.mmf.framework.base.MMArrayUtil;
 | 
				
			||||||
import nc.vo.bd.bom.bom0202.entity.BomVO;
 | 
					 | 
				
			||||||
import nc.vo.bd.material.MaterialVO;
 | 
					 | 
				
			||||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
 | 
					import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
 | 
				
			||||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
 | 
					import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
 | 
				
			||||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
 | 
					import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
 | 
				
			||||||
| 
						 | 
					@ -21,21 +18,17 @@ import nc.vo.org.OrgVO;
 | 
				
			||||||
import nc.vo.pub.BusinessException;
 | 
					import nc.vo.pub.BusinessException;
 | 
				
			||||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
 | 
					import nc.vo.pubapp.pattern.exception.ExceptionUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 流程生产订单删除后同步艾普MES
 | 
					 * 流程生产订单删除后同步艾普MES
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @author mzr
 | 
					 * @author mzr
 | 
				
			||||||
 * @date 2025/9/16
 | 
					 * @date 2025/9/16
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class AfterDelSyncEpicMesRule implements ICompareRule<PMOAggVO> {
 | 
					public class AfterDelSyncEpicMesRule implements IRule<PMOAggVO> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String LOG_INFO_NAME = "dldzlog";
 | 
					    private static final String LOG_INFO_NAME = "dldzlog";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,12 +37,8 @@ public class AfterDelSyncEpicMesRule implements ICompareRule<PMOAggVO> {
 | 
				
			||||||
    private Map<String, String> configParams;
 | 
					    private Map<String, String> configParams;
 | 
				
			||||||
    private Map<String, String> deptParams;
 | 
					    private Map<String, String> deptParams;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static String auditCode = "Y";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final BaseDAO dao = new BaseDAO();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void process(PMOAggVO[] pmoAggVOS, PMOAggVO[] originVOs) {
 | 
					    public void process(PMOAggVO[] pmoAggVOS) {
 | 
				
			||||||
        if (MMArrayUtil.isEmpty(pmoAggVOS)) {
 | 
					        if (MMArrayUtil.isEmpty(pmoAggVOS)) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -70,23 +59,19 @@ public class AfterDelSyncEpicMesRule implements ICompareRule<PMOAggVO> {
 | 
				
			||||||
            configParams.put("deptRange", deptRange);
 | 
					            configParams.put("deptRange", deptRange);
 | 
				
			||||||
            List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS);
 | 
					            List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS);
 | 
				
			||||||
            if (filteredOrders.isEmpty()) {
 | 
					            if (filteredOrders.isEmpty()) {
 | 
				
			||||||
                logDl.error("没有符合条件的生产订单需要同步到艾普MES系统。");
 | 
					                // logDl.error("没有符合条件的生产订单需要同步到艾普MES系统。");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            logDl.info("开始同步生产订单到艾普MES系统,符合条件的订单数量: " + filteredOrders.size());
 | 
					            // logDl.info("开始同步生产订单到艾普MES系统,符合条件的订单数量: " + filteredOrders.size());
 | 
				
			||||||
            JSONArray jsonArray = new JSONArray();
 | 
					            JSONArray jsonArray = new JSONArray();
 | 
				
			||||||
            // 推送到艾普MES系统
 | 
					            // 推送到艾普MES系统
 | 
				
			||||||
            for (PMOAggVO aggVO : filteredOrders) {
 | 
					            for (PMOAggVO aggVO : filteredOrders) {
 | 
				
			||||||
                PMOHeadVO head = aggVO.getParentVO();
 | 
					                buildSyncData(aggVO, jsonArray);
 | 
				
			||||||
                PMOItemVO[] bodys = aggVO.getChildrenVO();
 | 
					            }
 | 
				
			||||||
                if(bodys == null || bodys.length == 0){
 | 
					            if (!jsonArray.isEmpty()) {
 | 
				
			||||||
                    logDl.error("生产订单"+head.getVbillcode()+"没有行信息,跳过同步");
 | 
					                JSONObject data = new JSONObject();
 | 
				
			||||||
                    continue;
 | 
					                data.put("workOrders", jsonArray);
 | 
				
			||||||
                }
 | 
					                pushData(pmoUrl, data);
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    JSONObject data = buildSyncData(aggVO);
 | 
					 | 
				
			||||||
                    pushData(pmoUrl, data);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            logDl.error("删除同步生产订单到艾普MES系统失败: " + e.getMessage(), e);
 | 
					            logDl.error("删除同步生产订单到艾普MES系统失败: " + e.getMessage(), e);
 | 
				
			||||||
| 
						 | 
					@ -95,50 +80,20 @@ public class AfterDelSyncEpicMesRule implements ICompareRule<PMOAggVO> {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 组装数据-流程生产订单+备料计划
 | 
					     * 组装数据-流程生产订单+备料计划
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private JSONObject buildSyncData(PMOAggVO aggVO) throws BusinessException {
 | 
					    private void buildSyncData(PMOAggVO aggVO, JSONArray orderArr) throws BusinessException {
 | 
				
			||||||
        PMOHeadVO headVo = aggVO.getParentVO();
 | 
					        PMOHeadVO headVo = aggVO.getParentVO();
 | 
				
			||||||
        // 目前电力电子只做一个表体的订单,故只处理的流程生产订单第一个子表行
 | 
					 | 
				
			||||||
        PMOItemVO pmoItem = aggVO.getChildrenVO()[0];
 | 
					 | 
				
			||||||
        // 翻译字段值
 | 
					 | 
				
			||||||
        // 组织
 | 
					        // 组织
 | 
				
			||||||
        String pkOrg = headVo.getPk_org();
 | 
					        String pkOrg = headVo.getPk_org();
 | 
				
			||||||
        String selectFields = OrgVO.CODE + "," + OrgVO.NAME;
 | 
					        String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
 | 
				
			||||||
        Map<String, Object> orgMap = MyHelper.transferFields(OrgVO.getDefaultTableName(), selectFields, OrgVO.PK_ORG, pkOrg);
 | 
					 | 
				
			||||||
        // 物料
 | 
					 | 
				
			||||||
        String cmaterialid = pmoItem.getCmaterialid();
 | 
					 | 
				
			||||||
        selectFields = MaterialVO.CODE + "," + MaterialVO.NAME;
 | 
					 | 
				
			||||||
        Map<String, Object> goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), selectFields, MaterialVO.PK_MATERIAL, cmaterialid);
 | 
					 | 
				
			||||||
        // 项目
 | 
					 | 
				
			||||||
        // String cprojectid = pmoItem.getCprojectid();
 | 
					 | 
				
			||||||
        // selectFields = ProjectHeadVO.PROJECT_CODE + "," + ProjectHeadVO.PROJECT_NAME;
 | 
					 | 
				
			||||||
        // Map<String, Object> projectMap = MyHelper.transferFields(ProjectHeadVO.getDefaultTableName(), selectFields, ProjectHeadVO.PK_PROJECT, cprojectid);
 | 
					 | 
				
			||||||
        // 生产部门 cdeptid
 | 
					 | 
				
			||||||
        String cdeptid = pmoItem.getCdeptid();
 | 
					 | 
				
			||||||
        String deptCode = MyHelper.transferField(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, cdeptid);
 | 
					 | 
				
			||||||
        // 生产BOM版本
 | 
					 | 
				
			||||||
        String cbomversionid = pmoItem.getCbomversionid();
 | 
					 | 
				
			||||||
        String bomCode = MyHelper.transferField(BomVO.TABLE_NAME, BomVO.HVERSION, BomVO.CBOMID, cbomversionid);
 | 
					 | 
				
			||||||
        // 组装数据
 | 
					        // 组装数据
 | 
				
			||||||
        JSONObject data = new JSONObject();
 | 
					 | 
				
			||||||
        JSONObject orderParam = new JSONObject();
 | 
					        JSONObject orderParam = new JSONObject();
 | 
				
			||||||
        orderParam.put("type", "D"); // 唯一标识(主键)
 | 
					        orderParam.put("type", "D"); // 删除标识
 | 
				
			||||||
      //  orderParam.put("siteCode", deptParams.getOrDefault(deptCode, ""));// 工厂编码
 | 
					        orderParam.put("companyCode", orgCode);// 公司编码
 | 
				
			||||||
        orderParam.put("companyCode",deptCode);//公司编码
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        orderParam.put("workOrderCode", headVo.getVbillcode());// 工单号
 | 
					        orderParam.put("workOrderCode", headVo.getVbillcode());// 工单号
 | 
				
			||||||
        orderParam.put("qty", String.valueOf(pmoItem.getNastnum())); // 计划数量,字符串类型
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        JSONArray orderArr = new JSONArray();
 | 
					 | 
				
			||||||
        orderArr.add(orderParam);
 | 
					        orderArr.add(orderParam);
 | 
				
			||||||
        // 流程生产订单
 | 
					 | 
				
			||||||
        data.put("workOrders", orderArr);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return data;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -153,16 +108,16 @@ public class AfterDelSyncEpicMesRule implements ICompareRule<PMOAggVO> {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            // 转json字符串的时候保留null值
 | 
					            // 转json字符串的时候保留null值
 | 
				
			||||||
            String jsonStr = JSON.toJSONString(param, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
 | 
					            String jsonStr = JSON.toJSONString(param, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
 | 
				
			||||||
            logDl.error("EpicMes-PMO-param = " + jsonStr);
 | 
					            logDl.error("EpicMes-PMO-del-param = " + jsonStr);
 | 
				
			||||||
            String baseUrl = configParams.get("epicMesUrl");
 | 
					            String baseUrl = configParams.get("epicMesUrl");
 | 
				
			||||||
            String requestUrl = baseUrl + reqUrl;
 | 
					            String requestUrl = baseUrl + reqUrl;
 | 
				
			||||||
            logDl.error(" EpicMes-PMO-url = " + requestUrl);
 | 
					            logDl.error(" EpicMes-PMO-del-url = " + requestUrl);
 | 
				
			||||||
            responseString = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr);
 | 
					            responseString = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr);
 | 
				
			||||||
            logDl.error(" EpicMes-PMO-res = " + responseString);
 | 
					            logDl.error(" EpicMes-PMO-del-res = " + responseString);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            JSONObject resultObj = JSONObject.parseObject(responseString);
 | 
					            JSONObject resultObj = JSONObject.parseObject(responseString);
 | 
				
			||||||
            if (!"1".equals(resultObj.getString("flag"))) {
 | 
					            if (!"1".equals(resultObj.getString("flag"))) {
 | 
				
			||||||
                logDl.error("EpicMes-PMO-error,result[" + resultObj.toJSONString() + "]");
 | 
					                logDl.error("EpicMes-PMO-del-error,result[" + resultObj.toJSONString() + "]");
 | 
				
			||||||
                throw new BusinessException("艾普MES返回错误信息:" + resultObj.getString("msg"));
 | 
					                throw new BusinessException("艾普MES返回错误信息:" + resultObj.getString("msg"));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
| 
						 | 
					@ -172,8 +127,6 @@ public class AfterDelSyncEpicMesRule implements ICompareRule<PMOAggVO> {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 检查并筛选需要同步的单据
 | 
					     * 检查并筛选需要同步的单据
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue