NC中通过点击一个按钮结转成本单

4 篇文章 0 订阅

1.在xml中增加按钮实现按钮类

package nc.ui.hxkj.ppm.pc.action;


import java.awt.event.ActionEvent;


import nc.bs.framework.common.NCLocator;
import nc.itf.hxkj.ppm.pc.IPmCost;
import nc.itf.pubapp.pub.smart.IBillQueryService;
import nc.ui.ml.NCLangRes;
import nc.ui.pm.model.BillManageModel;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.actions.RefreshSingleAction;
import nc.vo.ppm.projectcheck.ProjectCheckBillVO;
import nc.vo.pub.AggregatedValueObject;
import nc.vo.pub.BusinessException;


/**
 * 收入成本结转
 * @author lianyi
 *
 */
public class CostConvertAction extends NCAction {
/**

*/
private static final long serialVersionUID = 2904268537234554921L;
private BillManageModel model;

public CostConvertAction(){
super();
setCode("CostConvert");
setBtnName("收入成本结转");
}


@Override
public void doAction(ActionEvent arg0) throws Exception {
Object selData = getModel().getSelectedData();
if(selData == null){
return;
}

ProjectCheckBillVO billVO = (ProjectCheckBillVO) selData;
if(billVO.getParentVO().getHdef1() != null
&& billVO.getParentVO().getHdef1().trim().equals("Y")){
MessageDialog.showWarningDlg(null, "警告", "当前单据已经结转,不能再次结转");
return;
}
NCLocator.getInstance().lookup(IPmCost.class).pmCostConvert(billVO);
MessageDialog.showHintDlg(null, "提示", "结转完成");
refresh();
}

/** 
* 刷新当前卡片界面数据
* @see RefreshSingleAction
* @throws BusinessException void
*/ 
private void refresh() throws BusinessException{
ProjectCheckBillVO oldVO = (ProjectCheckBillVO) getModel().getSelectedData();
String pk = oldVO.getParentVO().getPrimaryKey();
IBillQueryService billQuery =
NCLocator.getInstance().lookup(IBillQueryService.class);
AggregatedValueObject newVO =
billQuery.querySingleBillByPk(oldVO.getClass(), pk);
// 单据被删除之后应该回到列表界面再刷新
if (newVO == null) {
// 数据已经被删除
throw new BusinessException(NCLangRes.getInstance().getStrByID(
"uif2", "RefreshSingleAction-000000")/*数据已经被删除,请返回列表界面!*/);
}
this.model.directlyUpdate(newVO);
}


public BillManageModel getModel() {
return model;
}


public void setModel(BillManageModel model) {
this.model = model;
}


}



2.在public端写接口实现一步中的这个方法pmCostConvert

package nc.itf.hxkj.ppm.pc;


import nc.vo.ppm.projectcheck.ProjectCheckBillVO;
import nc.vo.pub.BusinessException;


public interface IPmCost {


public void pmCostConvert(ProjectCheckBillVO billVO) throws BusinessException;
}


3.在private中实现这个接口方法

package nc.impl.hxkj.ppm.pc;


import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.itf.hxkj.ppm.pc.IPmCost;
import nc.itf.pca.domain.costconvert.ICostConvertService;
import nc.itf.pca.domain.costconvert.ICostCvtAmountQryService;
import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil;
import nc.vo.pca.costconvert.AggPCACostConvertVO;
import nc.vo.pca.costconvert.PCACostConvertNewCardVO;
import nc.vo.pca.costconvert.PCACostConvertVO;
import nc.vo.ppm.projectcheck.ProjectCheckBillVO;
import nc.vo.pub.AggregatedValueObject;
import nc.vo.pub.BusinessException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;


public class PmCostServiceImpl implements IPmCost {


@Override
public void pmCostConvert(ProjectCheckBillVO billVO)
throws BusinessException {
if(billVO == null
|| billVO.getParentVO() == null){
throw new BusinessException("没有有效的数据");
}

if(billVO.getParentVO().getBill_status().intValue() != 1){
throw new BusinessException("审批通过的验收单据才允许结转收入成本");
}

AggregatedValueObject[] ccVOs = PfServiceScmUtil.exeVOChangeByBizFlow("4D36-03", "CM53", new ProjectCheckBillVO[]{billVO});
// 异常处理
if (ccVOs == null || ccVOs.length == 0) {
ExceptionUtils.wrappBusinessException("转换成本结转单失败");
return;
}


//代码处理进度和金额,通过结转接口保存
String costPK = null;
for(AggregatedValueObject ccVO : ccVOs){
PCACostConvertVO cchVO = (PCACostConvertVO)ccVO.getParentVO();
PCACostConvertNewCardVO ccnVO = new PCACostConvertNewCardVO();
ccnVO.setPk_org(cchVO.getPk_org());
ccnVO.setPk_setofbook(cchVO.getPk_setofbook());
ccnVO.setBizdate(cchVO.getBizdate());
ccnVO.setPk_project(cchVO.getPk_project());
ccnVO.setCurrentschedule(cchVO.getCurrentschedule());


AggPCACostConvertVO aggvo = (NCLocator.getInstance().lookup(ICostCvtAmountQryService.class)).getAggCostConvertVO(ccnVO);
aggvo.getParentVO().setStatus(2);
for (CircularlyAccessibleValueObject obj : aggvo.getAllChildrenVO()) {
obj.setStatus(2);
}


AggPCACostConvertVO[] retVOs = getService().insertVOs(new AggPCACostConvertVO[] { aggvo });
if(retVOs == null){
throw new BusinessException("结转单保存失败");
}

costPK = retVOs[0].getParentVO().getPrimaryKey();
}

//回写hdef1和hdef2
new BaseDAO().executeUpdate("update pm_check_head set hdef1='Y', hdef2='"+costPK+"' where pk_pro_check='" + billVO.getParentVO().getPk_pro_check() + "'");
}


private ICostConvertService service;
protected ICostConvertService getService(){
if (this.service == null) {
this.service = ((ICostConvertService)NCLocator.getInstance().lookup(ICostConvertService.class));
}
return this.service;
}


}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值