refactor(pmo): 重构 PMO 卡片操作流程
- 新增 PmoCardOperAction 类作为 PMO 卡片操作的基类 - 实现 PmoCardPutAction 类用于处理卡片投放操作 - 重构 PmoResource 中的自动投放逻辑,使用 IPMOBusinessService 接口替代 PMORowPutBP
This commit is contained in:
parent
2d34d04fed
commit
5795f4b5be
|
@ -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<SingleInfo> bodys = cardInfo.getBodyInfo();
|
||||||
|
if (MMCollectionUtil.isNotEmpty(bodys)) {
|
||||||
|
Map<String, SingleInfo> cacheMap = new HashMap();
|
||||||
|
List<PMOItemVO> 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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ import javax.ws.rs.POST;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.Produces;
|
import javax.ws.rs.Produces;
|
||||||
|
|
||||||
|
import nc.itf.mmpac.pmo.pac0002.IPMOBusinessService;
|
||||||
import nc.bs.dao.BaseDAO;
|
import nc.bs.dao.BaseDAO;
|
||||||
import nc.bs.dao.DAOException;
|
import nc.bs.dao.DAOException;
|
||||||
import nc.bs.framework.common.NCLocator;
|
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.mmpac.pmo.IAPIPmoMaintainService;
|
||||||
import nccloud.api.rest.utils.ResultMessageUtil;
|
import nccloud.api.rest.utils.ResultMessageUtil;
|
||||||
import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys;
|
import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys;
|
||||||
import nc.bs.mmpac.pmo.pac0002.bp.PMORowPutBP;
|
|
||||||
import nccloud.ws.rest.resource.AbstractNCCRestResource;
|
import nccloud.ws.rest.resource.AbstractNCCRestResource;
|
||||||
import org.json.JSONString;
|
import org.json.JSONString;
|
||||||
|
|
||||||
|
@ -69,9 +69,9 @@ public class PmoResource extends AbstractNCCRestResource {
|
||||||
isIncludeOrg = httpPostOtherSys.checkIfIncludeOrg(orgCode);
|
isIncludeOrg = httpPostOtherSys.checkIfIncludeOrg(orgCode);
|
||||||
logger.debug("检查是否为电缆[" + orgCode + "]返回:" + isIncludeOrg);
|
logger.debug("检查是否为电缆[" + orgCode + "]返回:" + isIncludeOrg);
|
||||||
if (isIncludeOrg) {
|
if (isIncludeOrg) {
|
||||||
PMORowPutBP rowPutBP = NCLocator.getInstance().lookup(PMORowPutBP.class);
|
IPMOBusinessService putService = (IPMOBusinessService) NCLocator.getInstance().lookup(IPMOBusinessService.class);
|
||||||
try {
|
try {
|
||||||
rowPutBP.rowput(insertBills);
|
putService.rowput(insertBills);
|
||||||
logger.info("自动投放完成,orgCode=" + orgCode);
|
logger.info("自动投放完成,orgCode=" + orgCode);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("自动投放失败,orgCode=" + orgCode, e);
|
logger.error("自动投放失败,orgCode=" + orgCode, e);
|
||||||
|
|
Loading…
Reference in New Issue