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;
}
}





本文链接: http://pfscm.immuno-online.com/view-743442.html