From 30f33c6c9830ddf9581d858b25cd47e41f89141e Mon Sep 17 00:00:00 2001 From: lihao Date: Tue, 9 Sep 2025 13:54:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E9=85=8D=E8=AE=A2=E5=8D=95=E6=8E=A8pl?= =?UTF-8?q?m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/mmpac/pmo/action/PmoToPlmAction.java | 284 ++++++++++++ .../config/authorize/mmpac_authorize.xml | 1 + .../mmpac/pmo/config/action/action.xml | 432 ++++++++++++++++++ 3 files changed, 717 insertions(+) create mode 100644 mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToPlmAction.java create mode 100644 mmpac/src/client/yyconfig/modules/mmpac/pmo/config/action/action.xml diff --git a/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToPlmAction.java b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToPlmAction.java new file mode 100644 index 0000000..ea970e7 --- /dev/null +++ b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToPlmAction.java @@ -0,0 +1,284 @@ +package nccloud.web.mmpac.pmo.action; + +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import nc.bs.dao.DAOException; +import nc.bs.framework.common.InvocationInfoProxy; +import nc.bs.framework.common.NCLocator; +import nc.bs.logging.Log; +import nc.bs.logging.Logger; +import nc.bs.trade.business.HYPubBO; +import nc.bs.trade.business.HYSuperDMO; +import nc.bs.uapbd.util.MyHelper; +import nc.itf.mmpac.pickm.IPickmQueryService; +import nc.itf.mmpac.pmo.pac0002.IPMOQueryService; +import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.bd.defdoc.DefdocVO; +import nc.vo.cmp.util.StringUtils; +import nc.vo.mmpac.pickm.entity.AggPickmVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; +import nc.vo.org.OrgVO; +import nc.vo.pub.BusinessException; +import nc.vo.util.CloneUtil; +import nccloud.api.rest.utils.ResultMessageUtil; +import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO; +import nccloud.framework.core.exception.ExceptionUtils; +import nccloud.framework.core.json.IJson; +import nccloud.framework.service.ServiceLocator; +import nccloud.framework.web.action.itf.ICommonAction; +import nccloud.framework.web.container.IRequest; +import nccloud.framework.web.json.JsonFactory; +import nccloud.web.codeplatform.framework.action.base.BaseAction; +import org.apache.http.client.config.CookieSpecs; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 系统将生产订单类型为“内配订单 ”的生产订单按照物料编码+项目号向PLM 传递设计任务, PLM 方接收后根据项目号,与成套产品设计任务挂载到相同位置。 + */ +public class PmoToPlmAction implements ICommonAction { + + private static final String LOG_INFO_NAME = "dldzlog"; + + private static final Log logDl = Log.getInstance(LOG_INFO_NAME); + + private String plmBaseUrl = ""; + private String plmUser = ""; + private String token = ""; + private static final String tokenUrl = "/sipmweb/api/oauth"; + // 生产订单按照物料编码+项目号向PLM 传递设计任务 + private String pmourl = "/sipmweb/api/bip/createProduct"; + + + private Map configParams; + @Override + public Object doAction(IRequest iRequest) { + String json = iRequest.read(); + Logger.info("busiParam:" + json); + Map paraMap = (Map) JsonFactory.create().fromJson(json, Map.class); + try { + // 获取主键 + String[] pks = (String[]) paraMap.get("pks"); + PMOAggVO[] pmoAggVOS = ((IPMOQueryService) NCLocator.getInstance().lookup(IPMOQueryService.class)).queryByPks(pks); + configParams = getConfigParams("Dldz-config"); + PMOAggVO[] cloneOrderVOS = (PMOAggVO[]) CloneUtil.deepClone(pmoAggVOS); + // 检查并筛选生产订单 + List filteredOrders = checkAndFilterBillSrcOrg(cloneOrderVOS); + if (filteredOrders.isEmpty()) { + return ResultMessageUtil.toJSON(filteredOrders, "非内配订单无法传递设计任务"); + } + + // 推送到思普PLM系统 + return pushToRZMOM(filteredOrders); + + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private Object pushToRZMOM(List array) throws BusinessException, IOException { + List> requestList = new ArrayList<>(); + + List> resultList = new ArrayList<>(); + + for (PMOAggVO vo : array) { + // 每个 PMOAggVO 对应一个 Map 对象 + Map request = new HashMap<>(); + + // 获取父 VO(假设大部分字段在 ParentVO 中) + PMOHeadVO parentVO = vo.getParentVO(); + // 获取子 VO(假设部分自定义字段在 ChildVO 或表体 VO 中) + PMOItemVO[] childVO = vo.getChildrenVO(); // 或其他子 VO 如 getBodyVO() + for (PMOItemVO itemVO : childVO) { + // 1. 产品品号 (cmaterialvid -> 物料编码) + if (itemVO != null) { +// NO 产品品号 cmaterialvid 物料编码 +// NAME 产品名称 name 物料名称 +// ASUSER34 项目名称 projectName 项目名称 +// ASUSER28 生产计划号 vsrccode 来源单据号 销售订单号 +// AB012 数量 nastnum 数量 +// GSDM 公司代码 +// MATERIALSISSUEDATE 主材下发时间 vdef17 主材下发时间 +// MAINASSISTMATERIALSDATE 主辅材下发时间 vdef19 主辅材下发时间 +// ASSISTMATERIALSDATE 辅材下发时间 vdef18 辅材下发时间 +// DRAWINGPICKINGDATE 图纸下发时间 表体自定义项 图纸下发时间 + HYPubBO hybo = new HYPubBO(); + Object no = hybo.findColValue("bd_material", "code", "pk_material = '" + itemVO.getCmaterialvid() + "' "); + + Object name = hybo.findColValue("bd_material", "name", "pk_material = '" + itemVO.getCmaterialvid() + "' "); + Object projectName = hybo.findColValue("bd_project", "projectName", " pk_project = '" + itemVO.getCprojectid() + "' "); + Object GSDM = hybo.findColValue("org_factory", "code", " pk_factory = '" + parentVO.getPk_org() + "' "); + + request.put("no", no); + + request.put("name", name); + + request.put("ASUSER34", projectName); + + request.put("ASUSER28", itemVO.getVfirstcode()); + request.put("AB012", itemVO.getNastnum()); + + request.put("GSDM", GSDM); + request.put("MATERIALSISSUEDATE", itemVO.getVdef17()); + request.put("MAINASSISTMATERIALSDATE", itemVO.getVdef18()); + request.put("ASSISTMATERIALSDATE", itemVO.getVdef19()); + request.put("DRAWINGPICKINGDATE", itemVO.getVdef20()); // 替换为实际字段名,如 getVdef20() + // 将组装好的 Map 添加到结果列表 + requestList.add(request); + } + + + } + // 创建 Jackson 核心对象 + ObjectMapper objectMapper = new ObjectMapper(); + + // 转换为 JSON 数组字符串(本质是 JSONArray 格式) + String jsonArrayStr = objectMapper.writeValueAsString(requestList); + // 获取PLM的参数 + Map configParams = getConfigParams("Dldz-config"); + if (configParams == null || configParams.isEmpty()) { + throw new BusinessException("未配置PLM参数"); + } + plmBaseUrl = configParams.get("plmBaseUrl"); + plmUser = configParams.get("plmUser"); + token = getToken(); + logDl.error("AfterApproveSyncPLMRule-param = " + jsonArrayStr); + String responseString = this.doPost(plmBaseUrl + pmourl, jsonArrayStr); + logDl.error("AfterApproveSyncPLMRule-res = " + responseString); + Gson gson = new Gson(); + Map result = gson.fromJson(responseString, Map.class); + if (!"true".equals(result.get("success").toString())) { + throw new BusinessException(result.get("msg").toString()); + }else{ + resultList.add(result); + } + + } + + return requestList; + } + + private List checkAndFilterBillSrcOrg(PMOAggVO[] cloneOrderVOS) throws BusinessException, IOException { + List filteredOrders = new ArrayList(); + HYPubBO hybo = new HYPubBO(); + for (PMOAggVO pmoAggVO : cloneOrderVOS) { + ; + String pkOrg = pmoAggVO.getParentVO().getPk_org(); + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); + // 检查当前组织是否为电力电子 + + if (MyHelper.checkIfDldzOrg(orgCode, configParams)) { + continue; + } + Object pk_billtypecode = hybo.findColValue("bd_billtype", "pk_billtypecode", " istransaction = 'Y' and nvl ( islock, 'N' ) = 'N' and parentbilltype = '55A2' and pk_group = '" + + InvocationInfoProxy.getInstance().getGroupId() + "' and pk_billtypeid = '" + pmoAggVO.getParentVO().getCtrantypeid() + "' "); + if (pk_billtypecode.equals("55A2-Cxx-08")) { + filteredOrders.add(pmoAggVO); + } + } + + + return filteredOrders; + } + + public Map getConfigParams(String code) { + Map map = new HashMap<>(); + String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='[code]' and dr=0 ) and dr=0"; + strWhere = strWhere.replace("[code]", code); + try { + DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); + if (defdocVOs != null) { + for (DefdocVO defdocVO : defdocVOs) { + String value = StringUtils.isEmpty(defdocVO.getMemo()) ? defdocVO.getName() : defdocVO.getMemo(); + map.put(defdocVO.getCode().trim(), value); + } + } + } catch (DAOException e) { + logDl.error("Failed to get config parameters for code: " + code, e); + } + return map; + } + + private String doPost(String requestUrl, String param) throws IOException { + PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); + cm.setMaxTotal(500); + cm.setDefaultMaxPerRoute(50); + + RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时 + .setConnectTimeout(5000) // 连接建立超时 + .setSocketTimeout(20000) // 等待响应超时 + .setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); + + CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm) + .setDefaultRequestConfig(globalConfig).build(); + HttpPost post = new HttpPost(requestUrl); + post.setHeader("Content-Type", "application/json;charset=UTF-8"); + post.setEntity(new StringEntity(param, "utf-8")); + String responseString = httpClient.execute(post, response -> EntityUtils.toString(response.getEntity())); + return responseString; + + } + + + /** + * 获取token + */ + private String getToken() throws IOException, BusinessException { + Map tokenMap = new HashMap<>(); + tokenMap.put("uname", plmUser); + tokenMap.put("f", "true"); + String tokenStr = doGet(plmBaseUrl + tokenUrl, tokenMap); + logDl.error("GetPlmFileUtil-getToken-tokenStr = " + tokenStr); + JSONObject jsonObject = JSONObject.parseObject(tokenStr); + String token = jsonObject.getString("errmsg"); + if (token == null || token.isEmpty()) { + throw new BusinessException("PLM鉴权失败"); + } + return token; + } + + private String doGet(String requestUrl, Map paramMap) throws IOException { + PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); + cm.setMaxTotal(5000); + cm.setDefaultMaxPerRoute(500); + + RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(50000) // 连接池获取连接超时 + .setConnectTimeout(50000) // 连接建立超时 + .setSocketTimeout(200000) // 等待响应超时 + .setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); + + CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm) + .setDefaultRequestConfig(globalConfig).build(); + StringBuilder param = new StringBuilder("?"); + if (paramMap != null) { + for (Map.Entry entry : paramMap.entrySet()) { + param.append(entry.getKey()); + param.append("="); + param.append(entry.getValue()); + param.append("&"); + } + param.deleteCharAt(param.length() - 1); + } + String url = requestUrl + param; + HttpGet get = new HttpGet(url); + String responseString = httpClient.execute(get, response -> EntityUtils.toString(response.getEntity())); + get.releaseConnection(); + return responseString; + } +} diff --git a/mmpac/src/client/yyconfig/modules/mmpac/config/authorize/mmpac_authorize.xml b/mmpac/src/client/yyconfig/modules/mmpac/config/authorize/mmpac_authorize.xml index 67fac7c..93f3275 100644 --- a/mmpac/src/client/yyconfig/modules/mmpac/config/authorize/mmpac_authorize.xml +++ b/mmpac/src/client/yyconfig/modules/mmpac/config/authorize/mmpac_authorize.xml @@ -109,6 +109,7 @@ mmpac.pmo.checkToPscPlan mmpac.pmo.queryByCond mmpac.pmo.createDCX55A3 + mmpac.pmo.PmoToPlm diff --git a/mmpac/src/client/yyconfig/modules/mmpac/pmo/config/action/action.xml b/mmpac/src/client/yyconfig/modules/mmpac/pmo/config/action/action.xml new file mode 100644 index 0000000..89a4db9 --- /dev/null +++ b/mmpac/src/client/yyconfig/modules/mmpac/pmo/config/action/action.xml @@ -0,0 +1,432 @@ + + + + mmpac.pmo.queryList + + nccloud.web.mmpac.pmo.action.PmoQueryAction + + + mmpac.pmo.orgChangEvent + + nccloud.web.mmpac.pmo.event.OrgChangeEventAction + + + mmpac.pmo.bodyAfterEdit + + nccloud.web.mmpac.pmo.event.BodyAfterEditAction + + + mmpac.pmo.headAfterEdit + + nccloud.web.mmpac.pmo.event.HeadAfterEditAction + + + mmpac.pmo.newSave + + nccloud.web.mmpac.pmo.action.PmoNewSaveAction + + + mmpac.pmo.editSave + + nccloud.web.mmpac.pmo.action.PmoEditSaveAction + + + mmpac.pmo.queryPMOCard + + nccloud.web.mmpac.pmo.action.PmoCardQueryAction + + + mmpac.pmo.delete + + nccloud.web.mmpac.pmo.action.PmoDeleteAction + + + mmpac.pmo.batchDelete + + nccloud.web.mmpac.pmo.action.PmoBatchDeleteAction + + + mmpac.pmo.queryPage + + nccloud.web.mmpac.pmo.action.PmoQueryPageAction + + + mmpac.pmo.queryByCond + + nccloud.web.mmpac.pmo.action.PmoQueryByConditionAction + + + mmpac.pmo.edit + + nccloud.web.mmpac.pmo.action.PmoEditAction + + + mmpac.pmo.copy + + nccloud.web.mmpac.pmo.action.PmoCopyAction + + + mmpac.pmo.cardBatchEdit + + nccloud.web.mmpac.pmo.action.PmoCardBatchEditAction + + + mmpac.pmo.listBatchEdit + + nccloud.web.mmpac.pmo.action.PmoListBatchEditAction + + + mmpac.pmo.listPut + + nccloud.web.mmpac.pmo.action.PmoListPutAction + + + mmpac.pmo.cardPut + + nccloud.web.mmpac.pmo.action.PmoCardPutAction + + + mmpac.pmo.cardUnPut + + nccloud.web.mmpac.pmo.action.PmoCardUnPutAction + + + mmpac.pmo.listUnPut + + nccloud.web.mmpac.pmo.action.PmoListUnPutAction + + + mmpac.pmo.cardFinish + + nccloud.web.mmpac.pmo.action.PmoCardFinishAction + + + mmpac.pmo.listFinish + + nccloud.web.mmpac.pmo.action.PmoListFinishAction + + + mmpac.pmo.cardFinishCancel + + nccloud.web.mmpac.pmo.action.PmoCardFinishCancelAction + + + mmpac.pmo.listFinishCancel + + nccloud.web.mmpac.pmo.action.PmoListFinishCancelAction + + + mmpac.pmo.cardClose + + nccloud.web.mmpac.pmo.action.PmoCardCloseAction + + + mmpac.pmo.listClose + + nccloud.web.mmpac.pmo.action.PmoListCloseAction + + + mmpac.pmo.cardCloseCancel + + nccloud.web.mmpac.pmo.action.PmoCardCloseCancelAction + + + mmpac.pmo.listCloseCancel + + nccloud.web.mmpac.pmo.action.PmoListCloseCancelAction + + + mmpac.pmo.cardAutoClose + + nccloud.web.mmpac.pmo.action.PmoCardAutoCloseAction + + + mmpac.pmo.listAutoClose + + nccloud.web.mmpac.pmo.action.PmoListAutoCloseAction + + + mmpac.pmo.commit + + nccloud.web.mmpac.pmo.action.PmoCommitAction + + + mmpac.pmo.uncommit + + nccloud.web.mmpac.pmo.action.PmoUnCommitAction + + + mmpac.pmo.savecommit + + nccloud.web.mmpac.pmo.action.PmoSaveCommitAction + + + mmpac.pmo.bodyBeforeEdit + + nccloud.web.mmpac.pmo.event.BodyBeforeEditAction + + + mmpac.pmo.headBeforeEdit + + nccloud.web.mmpac.pmo.event.HeadBeforeEditAction + + + mmpac.pmo.print + + nccloud.web.mmpac.pmo.action.PmoPrintAction + + + mmpac.pmo.barcodeprint + + nccloud.web.mmpac.pmo.action.PmoBarCodePrintAction + + + mmpac.pmo.qrybillinfo + + nccloud.web.mmpac.pmo.action.PmoQryPrintBarCodeAction + + + mmpac.pmo.printbarcode + + nccloud.web.mmpac.pmo.action.PmoPrintBarCodeAction + + + mmpac.pmo.pmoPrintBCCheck + + nccloud.web.mmpac.pmo.action.PmoPrintBCCheckPremissionAction + + + mmpac.pmo.viewver + + nccloud.web.mmpac.pmo.action.PmoViewVerAction + + + mmpac.pmo.pmoturn + + nccloud.web.mmpac.pmo.action.PmoTurnAction + + + mmpac.pmo.pmoTurnAfterEventAction + + nccloud.web.mmpac.pmo.action.PmoTurnAfterEventAction + + + mmpac.pmo.sotoPmoqueryaction + + nccloud.web.mmpac.pmo.action.SoToPmoAction + + + mmpac.pmo.pmoTurnConfirmAction + + nccloud.web.mmpac.pmo.action.PmoTurnConfirmAction + + + mmpac.pmo.cardPmoTurn + + nccloud.web.mmpac.pmo.action.PmoCardTurnAction + + + mmpac.pmo.listPickmRecal + + nccloud.web.mmpac.pmo.action.PmoListPickmRecalAction + + + mmpac.pmo.cardPickmRecal + + nccloud.web.mmpac.pmo.action.PmoCardPickmRecalAction + + + mmpac.pmo.listScrapAdd + + nccloud.web.mmpac.pmo.action.PmoListScrapAddAction + + + mmpac.pmo.cardScrapAdd + + nccloud.web.mmpac.pmo.action.PmoCardScrapAddAction + + + mmpac.pmo.queryGrand + + nccloud.web.mmpac.pmo.action.QueryPmoGrandAction + + + mmpac.pmo.grandAfterEdit + + nccloud.web.mmpac.pmo.action.PmoGrandAfterEventAction + + + mmpac.pmo.replanrcAction + + nccloud.web.mmpac.pmo.action.PmoReplanRcAction + + + mmpac.pmo.planrcAction + + nccloud.web.mmpac.pmo.action.PmoPlanRcAction + + + mmpac.pmo.listsnAction + + nccloud.web.mmpac.pmo.action.PmoListSNAction + + + mmpac.pmo.cardsnAction + + nccloud.web.mmpac.pmo.action.PmoCardSNAction + + + mmpac.pmo.snAddLine + + nccloud.web.mmpac.pmo.sn.action.PmoSNAddLineAction + + + mmpac.pmo.bodyAddLine + + nccloud.web.mmpac.pmo.action.PmoBodyAddLineAction + + + mmpac.pmo.batchEditAfterEdit + + nccloud.web.mmpac.pmo.event.BatchEditAfterEditAction + + + mmpac.pmo.createSN + + nccloud.web.mmpac.pmo.sn.action.CreateSNAction + + + mmpac.pmo.snAfterEventAction + + nccloud.web.mmpac.pmo.event.PmoSNAfterEventAction + + + mmpac.pmo.activity + + nccloud.web.mmpac.pmo.action.PmoActivityAction + + + mmpac.pmo.pickm + + nccloud.web.mmpac.pmo.action.PmoPickmAction + + + mmpac.pmo.checkunpickmdeliver + + nccloud.web.mmpac.pmo.action.CheckPmoUnpickmDeliveryAction + + + + mmpac.pmo.checkdeliverback + + nccloud.web.mmpac.pmo.action.CheckPmoDeliveryBackAction + + + mmpac.pmo.mmtoPmoaction + + nccloud.web.mmpac.pmo.action.MMBillToPmoAction + + + mmpac.pmo.exttranstypequeryaction + + nccloud.web.mmpac.pmo.transtype.action.ExtTransTypeQueryAction + + + + mmpac.pmo.checkDataPerm + + nccloud.web.mmpac.pmo.action.CheckPmoDataPermission + + + mmpac.pmo.checkGrandData + + nccloud.web.mmpac.pmo.action.CheckGrandDataAction + + + mmpac.pmo.QueryDimensionVO + + nccloud.web.mmpac.pmo.action.QueryDimensionVOAction + + + mmpac.pmo.pmoResolve + + nccloud.web.mmpac.pmo.action.PmoResolveAction + + + mmpac.pmo.checkDispatchlist + + nccloud.web.mmpac.pmo.action.PmoDispatchCheckAction + + + mmpac.pmo.checkOprep + + nccloud.web.mmpac.pmo.action.PmoOprepCheckAction + + + mmpac.pmo.checkTransfer + + nccloud.web.mmpac.pmo.action.PmoTransferCheckAction + + + mmpac.pmo.snConfirm + + nccloud.web.mmpac.pmo.sn.action.PmoSNConfirmAction + + + mmpac.pmo.checkPutPlan + + nccloud.web.mmpac.pmo.action.PmoPutPlanCheckAction + + + mmpac.pmo.checkMos + + nccloud.web.mmpac.pmo.action.PmoMosCheckAction + + + mmpac.pmo.pmolinkquerysrc + + nccloud.web.mmpac.pmo.action.PmoLinkQuerySrcAction + + + mmpac.pmo.queryoriginmosn + + nccloud.web.mmpac.pmo.sn.action.PmoQueryOriginMOSNAction + + + + mmpac.pmo.tempsc + + nccloud.web.mmpac.pmo.tempsc.action.PMOTempSCAction + + + mmpac.pmo.tempscconfirm + + nccloud.web.mmpac.pmo.tempsc.action.PMOTempSCConfirmAction + + + + mmpac.pmo.tempscAfterEventAction + + nccloud.web.mmpac.pmo.tempsc.action.PMOTempSCAfterEventAction + + + + mmpac.pmo.checkEnable + + nccloud.web.mmpac.pmo.action.CheckModuleEnableAction + + + + mmpac.pmo.checkToPscPlan + + nccloud.web.mmpac.pmo.tempsc.action.PMOToPscPlanCheckAction + + + + + mmpac.pmo.PmoToPlm + + nccloud.web.mmpac.pmo.action.PmoToPlmAction + + +