From 5795f4b5be2370c2bb91c722ae91d18df1abc81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=8E?= <125556714+Topfunplus@users.noreply.github.com> Date: Tue, 17 Jun 2025 10:02:27 +0800 Subject: [PATCH] =?UTF-8?q?refactor(pmo):=20=E9=87=8D=E6=9E=84=20PMO=20?= =?UTF-8?q?=E5=8D=A1=E7=89=87=E6=93=8D=E4=BD=9C=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 PmoCardOperAction 类作为 PMO 卡片操作的基类 - 实现 PmoCardPutAction 类用于处理卡片投放操作 - 重构 PmoResource 中的自动投放逻辑,使用 IPMOBusinessService 接口替代 PMORowPutBP --- .../mmpac/pmo/action/PmoCardOperAction.java | 109 ++++++++++++++++++ .../mmpac/pmo/action/PmoCardPutAction.java | 24 ++++ .../openapi/mmpac/pmo/PmoResource.java | 6 +- 3 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardOperAction.java create mode 100644 mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardPutAction.java diff --git a/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardOperAction.java b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardOperAction.java new file mode 100644 index 0000000..86e559e --- /dev/null +++ b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardOperAction.java @@ -0,0 +1,109 @@ + +package nccloud.web.mmpac.pmo.action; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import nc.itf.mmpac.pmo.pac0002.IPMOQueryService; +import nc.util.mmf.framework.base.MMArrayUtil; +import nc.util.mmf.framework.base.MMCollectionUtil; +import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nccloud.framework.core.util.GridCompareUtils; +import nccloud.framework.service.ServiceLocator; +import nccloud.framework.web.container.IRequest; +import nccloud.framework.web.json.JsonFactory; +import nccloud.framework.web.ui.pattern.billcard.BillCard; +import nccloud.framework.web.ui.pattern.billcard.BillCardOperator; +import nccloud.mmpac.pmo.pub.entity.CardInfo; +import nccloud.mmpac.pmo.pub.entity.PmoConst; +import nccloud.mmpac.pmo.pub.entity.SingleInfo; +import nccloud.web.mmpac.pmo.constant.NCCPMOConstLang; +import nccloud.web.mmpac.pmo.util.PmoScaleUtil; +import nccloud.web.mmpac.pmo.util.PmoUtil; +import nccloud.web.mmpub.pub.resexp.PfResumeExceptionNccUtils; + +public abstract class PmoCardOperAction extends PMOCommonAction { + public PmoCardOperAction() { + } + + public Object doAction(IRequest request) { + BillCard card = null; + BillCard originBillcard = null; + BillCard returnCard = null; + PfResumeExceptionNccUtils.before(request); + BillCardOperator operator = new BillCardOperator(PmoConst.PAGECODE); + PMOAggVO[] vos = null; + PMOAggVO[] returnvos = null; + + try { + CardInfo cardInfo = (CardInfo) JsonFactory.create().fromJson(request.read(), CardInfo.class); + String cpmhoid = cardInfo.getId(); + PMOAggVO vo = null; + + try { + vo = ((IPMOQueryService) ServiceLocator.find(IPMOQueryService.class)).queryByPk(cpmhoid); + } catch (BusinessException e) { + ExceptionUtils.wrappException(e); + } + + if (MMValueCheck.isEmpty(vo)) { + ExceptionUtils.wrappBusinessException(NCCPMOConstLang.getHint4Delete()); + } + + vo.getParentVO().setFatpcheck(cardInfo.getFatpcheck()); + List bodys = cardInfo.getBodyInfo(); + if (MMCollectionUtil.isNotEmpty(bodys)) { + Map cacheMap = new HashMap(); + List itemList = new ArrayList(); + + for (SingleInfo body : bodys) { + cacheMap.put(body.getId(), body); + } + + PMOItemVO[] items = vo.getChildrenVO(); + if (MMArrayUtil.isNotEmpty(items)) { + for (PMOItemVO item : items) { + if (cacheMap.containsKey(item.getPrimaryKey())) { + item.setTs(((SingleInfo) cacheMap.get(item.getPrimaryKey())).getTs()); + item.setAttributeValue("rowid", ((SingleInfo) cacheMap.get(item.getPrimaryKey())).getRowid()); + itemList.add(item); + } + } + + vo.setChildrenVO((CircularlyAccessibleValueObject[]) itemList.toArray(new PMOItemVO[itemList.size()])); + } + } + + vo.getParentVO().setTs(cardInfo.getTs()); + (new PmoUtil()).processhslScale(vo); + originBillcard = operator.toCard(vo); + operator.setOriginBillcard(originBillcard); + vo.getParent().setStatus(1); + vos = new PMOAggVO[]{vo}; + this.checkPermission(vos); + (new PmoUtil()).clearPseudocolumn(vos); + returnvos = this.process(vos); + vos = (PMOAggVO[]) this.combine(vos, returnvos); + card = operator.toCard(vos[0]); + this.afterProcess(card); + returnCard = GridCompareUtils.compareBillCardGrid(operator.getOriginBillcard(), card); + return returnCard; + } catch (Exception e) { + return PfResumeExceptionNccUtils.handleResumeException(e); + } + } + + protected abstract PMOAggVO[] process(PMOAggVO[] var1) throws BusinessException; + + public void afterProcess(BillCard card) { + PmoScaleUtil util = new PmoScaleUtil(); + util.processBillCard(card); + } +} diff --git a/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardPutAction.java b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardPutAction.java new file mode 100644 index 0000000..57bbb37 --- /dev/null +++ b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoCardPutAction.java @@ -0,0 +1,24 @@ + +package nccloud.web.mmpac.pmo.action; + +import nc.itf.mmpac.pmo.pac0002.IPMOBusinessService; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.pub.BusinessException; +import nccloud.framework.service.ServiceLocator; +import nccloud.mmpac.pmo.pub.entity.PmoConst; + + +// ƬͶŲ +public class PmoCardPutAction extends PmoCardOperAction { + public PmoCardPutAction() { + } + + protected String getActioncode() { + return PmoConst.PMOPUT; + } + + protected PMOAggVO[] process(PMOAggVO[] vos) throws BusinessException { + IPMOBusinessService serv = (IPMOBusinessService) ServiceLocator.find(IPMOBusinessService.class); + return serv.rowput(vos); + } +} diff --git a/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java index cf7f9cd..144e78f 100644 --- a/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java +++ b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java @@ -7,6 +7,7 @@ import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import nc.itf.mmpac.pmo.pac0002.IPMOBusinessService; import nc.bs.dao.BaseDAO; import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; @@ -19,7 +20,6 @@ import nc.ws.opm.pub.utils.result.APIErrCodeEnum; import nccloud.api.mmpac.pmo.IAPIPmoMaintainService; import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; -import nc.bs.mmpac.pmo.pac0002.bp.PMORowPutBP; import nccloud.ws.rest.resource.AbstractNCCRestResource; import org.json.JSONString; @@ -69,9 +69,9 @@ public class PmoResource extends AbstractNCCRestResource { isIncludeOrg = httpPostOtherSys.checkIfIncludeOrg(orgCode); logger.debug("ǷΪ[" + orgCode + "]أ" + isIncludeOrg); if (isIncludeOrg) { - PMORowPutBP rowPutBP = NCLocator.getInstance().lookup(PMORowPutBP.class); + IPMOBusinessService putService = (IPMOBusinessService) NCLocator.getInstance().lookup(IPMOBusinessService.class); try { - rowPutBP.rowput(insertBills); + putService.rowput(insertBills); logger.info("ԶͶɣorgCode=" + orgCode); } catch (Exception e) { logger.error("ԶͶʧܣorgCode=" + orgCode, e);