Kaynağa Gözat

支付状态确认

yaoyu 1 ay önce
ebeveyn
işleme
2e66a0ddd3

+ 10 - 0
arap/META-INF/updatestate.upm

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="gb2312"?>
+<module name="obm">
+	<public>
+		<!-- ½Ó¿Ú -->    
+	    <component priority="0" singleton="true" remote="true" tx="CMT" supportAlias="true">
+			<interface>nc.itf.obm.payroll.IUpdateStateMaintain</interface>
+			<implementation>nc.impl.obm.payroll.UpdateStateMaintainImpl</implementation>
+		</component>
+	</public>
+</module>

+ 223 - 0
arap/obm/src/client/nc/ui/obm/ebankpaylog/actions/LogStateConfirmAction.java

@@ -0,0 +1,223 @@
+package nc.ui.obm.ebankpaylog.actions;
+
+import java.awt.event.ActionEvent;
+import javax.swing.KeyStroke;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.framework.exception.InitException;
+import nc.desktop.ui.WorkbenchEnvironment;
+import nc.funcnode.ui.FuncletInitData;
+import nc.funcnode.ui.FuncletLinkListener;
+import nc.funcnode.ui.FuncletWindowLauncher;
+import nc.itf.obm.PayStateVO;
+import nc.itf.obm.ebanklog.IEbankLogManageService;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.pubitf.obm.IObmLogManageService;
+import nc.sfbase.client.ClientToolKit;
+import nc.ui.ml.NCLangRes;
+import nc.ui.obm.ebankpaylog.model.PayLogBillManageModel;
+import nc.ui.obm.ebankpaylog.model.PayLogBillModelManager;
+import nc.ui.obm.ebankpaylog.view.DfLogConfirmDlg;
+import nc.ui.obm.ebankpaylog.view.PayLogListView;
+import nc.ui.pub.beans.MessageDialog;
+import nc.ui.pub.bill.BillListPanel;
+import nc.ui.uif2.NCAction;
+import nc.ui.uif2.ToftPanelAdaptor;
+import nc.ui.uif2.UIState;
+import nc.vo.obm.ebankpaylog.EBankPayLogAggVO;
+import nc.vo.obm.ebankpaylog.EBankPayLogHVO;
+import nc.vo.obm.ebankpaylog.EBankPayLogVO;
+import nc.vo.obm.ebankpaylog.FuncEnum;
+import nc.vo.obm.ml.MLObm;
+import nc.vo.obm.ml.MLString;
+import nc.vo.obm.obmvo.PmtconfirmAddVO;
+import nc.vo.obm.pay.LogMgrRequestVO;
+import nc.vo.obm.pmtconfirm.linkdata.PmtconfirmLinkAddData;
+import nc.vo.sm.funcreg.FuncRegisterVO;
+
+public class LogStateConfirmAction extends NCAction {
+	private DfLogConfirmDlg conifrmDlg;
+	private static final long serialVersionUID = 1L;
+	private PayLogBillModelManager dataManager;
+	private PayLogBillManageModel model;
+	private PayLogListView listview;
+	boolean openWindFlag = false;
+	private IUAPQueryBS iuap = (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+	
+	public LogStateConfirmAction() {
+		this.setCode("EbankLogCreatPmtConfirmAction");
+		this.setBtnName(MLObm.getStr00129());
+		this.putValue("ShortDescription", this.getBtnName() + "(Ctrl+M)");
+		this.putValue("AcceleratorKey", KeyStroke.getKeyStroke(77, 2));
+	}
+
+	public void doAction(ActionEvent e) throws Exception {
+		Object[] selectvos = this.getModel().getSelectedOperaDatas();
+		if (selectvos == null) {
+			throw new Exception(MLObm.getStr00130());
+		} else if (selectvos.length > 1) {
+			throw new Exception(MLObm.getStr00131());
+		} else {
+			EBankPayLogAggVO aggvo = (EBankPayLogAggVO) selectvos[0];
+			EBankPayLogHVO parentVO = (EBankPayLogHVO) aggvo.getParentVO();
+			EBankPayLogVO reallogVO = (EBankPayLogVO) aggvo.getChildrenVO()[0];
+			if(reallogVO.getPaystate() != 0) {
+				String sql = "select obmdef1 from ebank_paylog_h where pk_ebank_paylog_h = '"+parentVO.getPk_ebank_paylog_h()+"' and dr = 0";
+				String vdef1 = (String) iuap.executeQuery(sql, new ColumnProcessor());
+				if(vdef1 == null) {
+					throw new Exception("支付状态不正确请先下载状态再确认!");
+				}
+			}
+			if (reallogVO != null && !this.openWindFlag) {
+				try {
+					this.openWindFlag = true;
+					this.doConfirmBillAction(parentVO, reallogVO);
+					Thread.sleep(1000L);
+				} catch (Exception var10) {
+					throw var10;
+				} finally {
+					this.openWindFlag = false;
+				}
+			}
+
+		}
+	}
+
+	void doConfirmBillAction(EBankPayLogHVO parentVO, EBankPayLogVO selectBodyVO) throws Exception {
+		BillListPanel billlistcard = this.listview.getBillListPanel();
+		if (!FuncEnum.PROVIDE_DEDUCT.toStringValue().equals(selectBodyVO.getFunc())
+				&& (billlistcard.getBodyTable().getSelectedRowCount() == 0
+						|| billlistcard.getBodyTable().getSelectedRowCount() != 1)) {
+			throw new Exception(MLObm.getStr00132());
+		} else {
+			int selectRow = billlistcard.getBodyTable().getSelectedRow();
+			EBankPayLogVO selectvo = null;
+			if (selectRow == -1) {
+				selectvo = selectBodyVO;
+			} else {
+				selectvo = (EBankPayLogVO) billlistcard.getBodyBillModel().getBodyValueRowVO(selectRow,
+						EBankPayLogVO.class.getName());
+			}
+
+			String yurref = selectvo.getYurref();
+			LogMgrRequestVO request = LogMgrRequestVO.createConfirmRequest(yurref);
+			IObmLogManageService logsev = (IObmLogManageService) NCLocator.getInstance()
+					.lookup(IObmLogManageService.class.getName());
+			logsev.checkCanGenNewConfrimBill(request);
+			PmtconfirmAddVO addvo = new PmtconfirmAddVO();
+			String funcode = selectBodyVO.getFunc();
+			if (!FuncEnum.PROVIDE_DEDUCT.toStringValue().equals(funcode)) {
+				addvo.setYurref(selectvo.getYurref());
+			} else {
+				addvo.setYurref(selectBodyVO.getYurref());
+			}
+
+			addvo.setSrcnodecode("36100PZCQ");
+			if (parentVO.getSrcsystem() != null) {
+				addvo.setSrcsystem(parentVO.getSrcsystem());
+			} else {
+				addvo.setSrcsystem("OBM");
+			}
+
+			if (parentVO.getSrcbilltype() != null) {
+				addvo.setSrcbilltype(parentVO.getSrcbilltype());
+				addvo.setSrcbillcode(parentVO.getSrcbillcode());
+			} else {
+				addvo.setSrcbilltype("36C3");
+				addvo.setSrcbillcode(parentVO.getHeadpackageid());
+			}
+
+			PmtconfirmLinkAddData data = new PmtconfirmLinkAddData();
+			data.setUserObject(addvo);
+			FuncRegisterVO funRegVo = WorkbenchEnvironment.getInstance().getFuncRegisterVO("36100CONFM");
+			if (funRegVo != null) {
+				ToftPanelAdaptor adaptor = (ToftPanelAdaptor) this.getModel().getContext().getEntranceUI();
+				FuncletWindowLauncher.openFuncNodeInTabbedPane(adaptor, funRegVo, new FuncletInitData(0, data),
+						(FuncletLinkListener) null, false);
+			} else {
+				MessageDialog.showErrorDlg(ClientToolKit.getApplet(),
+						NCLangRes.getInstance().getStrByID("sysframev5", "UPPsysframev5-000062"), MLObm.getStr00912());
+			}
+
+		}
+	}
+
+	public void doDfAction(EBankPayLogAggVO selectAggLog) throws Exception {
+		String userid = this.model.getContext().getPk_loginUser();
+		this.getConifrmDlg().initData(selectAggLog);
+		int var10000 = this.getConifrmDlg().showModal();
+		DfLogConfirmDlg var10001 = this.conifrmDlg;
+		if (var10000 == 1) {
+			EBankPayLogVO[] difvos = this.conifrmDlg.getDoConfirmedSubVOS();
+			if (difvos != null && difvos.length > 0) {
+				PayStateVO[] statevos = null;
+				if (difvos != null && difvos.length > 0) {
+					statevos = new PayStateVO[difvos.length];
+
+					for (int i = 0; i < difvos.length; ++i) {
+						statevos[i] = new PayStateVO();
+						String yurref = difvos[i].getYurref();
+						statevos[i].setYurref(yurref);
+						EBankPayLogVO var9 = difvos[i];
+						var10001 = this.conifrmDlg;
+						Integer istate = (Integer) var9.getAttributeValue("confrimtranflag");
+						statevos[i].setPk_user(userid);
+						statevos[i].setPayState(istate);
+						statevos[i].setMsg(MLString.getConfirmLogStateMsg(istate));
+						statevos[i].setExtendAttributeValue(PayStateVO.EXTKEY_BEFORE_TS, difvos[i].getTs());
+						statevos[i].setExtendAttributeValue(PayStateVO.EXTKEY_BEFORE_STATE, difvos[i].getPaystate());
+						statevos[i].setAction("zfcx");
+						statevos[i].setBizDate(WorkbenchEnvironment.getInstance().getBusiDate());
+					}
+				}
+
+				IEbankLogManageService logsev = (IEbankLogManageService) NCLocator.getInstance()
+						.lookup(IEbankLogManageService.class.getName());
+				logsev.confirmDfLogState(statevos, userid);
+				this.model.updateUILogDataFromDB(new EBankPayLogAggVO[]{selectAggLog});
+			}
+		}
+
+	}
+
+	public void setConifrmDlg(DfLogConfirmDlg conifrmDlg) {
+		this.conifrmDlg = conifrmDlg;
+	}
+
+	public DfLogConfirmDlg getConifrmDlg() {
+		if (this.conifrmDlg == null) {
+			throw new InitException(MLObm.getStr00133());
+		} else {
+			return this.conifrmDlg;
+		}
+	}
+
+	protected boolean isActionEnable() {
+		return this.model.getUiState() == UIState.NOT_EDIT && this.model.getSelectedData() != null;
+	}
+
+	public PayLogBillManageModel getModel() {
+		return this.model;
+	}
+
+	public void setModel(PayLogBillManageModel model) {
+		this.model = model;
+		this.getModel().addAppEventListener(this);
+	}
+
+	public PayLogBillModelManager getDataManager() {
+		return this.dataManager;
+	}
+
+	public void setDataManager(PayLogBillModelManager dataManager) {
+		this.dataManager = dataManager;
+	}
+
+	public PayLogListView getListview() {
+		return this.listview;
+	}
+
+	public void setListview(PayLogListView listview) {
+		this.listview = listview;
+	}
+}

+ 177 - 0
arap/obm/src/client/nc/ui/obm/ebankpaylog/actions/LogStateDownloadAction.java

@@ -0,0 +1,177 @@
+package nc.ui.obm.ebankpaylog.actions;
+
+import java.awt.Event;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Vector;
+
+import javax.swing.Action;
+import javax.swing.KeyStroke;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.obm.ebankpaylog.IBusilogService;
+import nc.itf.obm.payroll.IUpdateStateMaintain;
+import nc.ui.obm.ebankpaylog.model.PayLogBillManageModel;
+import nc.ui.obm.ebankpaylog.model.PayLogBillModelManager;
+import nc.ui.uif2.NCAction;
+import nc.ui.uif2.ShowStatusBarMsgUtil;
+import nc.ui.uif2.UIState;
+import nc.vo.obm.BillObmStateVO;
+import nc.vo.obm.ebankpaylog.EBankPayLogAggVO;
+import nc.vo.obm.ebankpaylog.EBankPayLogHVO;
+import nc.vo.obm.ebankpaylog.EBankPayLogVO;
+import nc.vo.obm.log.ObmLog;
+import nc.vo.obm.ml.MLObm;
+import nc.vo.obm.obmvo.PayStateQueryVO;
+/**
+ *  
+ * 指令状态下载UI端动作响应.
+ *
+ * @author  yinyan
+ * @version 1.0 2011/1/14
+ * @since   NC6.0
+ */
+public class LogStateDownloadAction extends NCAction {
+ 
+	/**serialVersionUID*/
+	private static final long serialVersionUID = 1L;
+	/**
+	 * UI端数据模型
+	 */
+	private PayLogBillManageModel model = null;
+
+	private PayLogBillModelManager dataManager;
+	
+	public LogStateDownloadAction() {
+		super();
+		setCode("EbankLogDownloadStateAction");
+		setBtnName(MLObm.getStr00134()/*"状态下载"*/); 
+		putValue(Action.SHORT_DESCRIPTION,getBtnName()+"(Ctrl+J)");
+		putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke((int)'J', Event.CTRL_MASK));
+	}
+	@Override
+	public void doAction(ActionEvent e) throws Exception {
+		Integer[] selectrows = getModel().getSelectedOperaRows();
+		if (selectrows == null || selectrows.length == 0) {
+			throw new Exception(MLObm.getStr00135()/*"下载状态前请先选择记录"*/);
+		}
+		EBankPayLogAggVO[] selectvos = new EBankPayLogAggVO[selectrows.length];
+		for (int i = 0; i < selectrows.length; i++) {
+			selectvos[i] = (EBankPayLogAggVO) getModel().getData().get(selectrows[i]);
+		}
+		ShowStatusBarMsgUtil.showStatusBarMsg(MLObm.getStr00136()/*"正在发送状态下载指令..."*/,getModel().getContext());
+		if (selectvos != null && selectvos.length > 0) {
+		     String userid=getModel().getContext().getPk_loginUser();
+		     try {
+		    	Collection<BillObmStateVO> downvos=new ArrayList<BillObmStateVO>();
+		    	for(EBankPayLogAggVO aggvo:selectvos){
+		    	  BillObmStateVO[] retvos= serviceDoDownload(aggvo,userid);	
+		    	  if(retvos!=null){
+		    		  for(BillObmStateVO vo:retvos){
+		    			  downvos.add(vo);
+		    		  }
+		    	  }
+		    	}
+		        if(downvos==null||downvos.size()==0){ 
+		        	ShowStatusBarMsgUtil.showStatusBarMsg(MLObm.getStr00137()/*"没有返回任何数据"*/,getModel().getContext());
+		        }else{
+		        	model.updateUILogDataFromDB(selectvos);
+		        	StringBuffer errMsg=new StringBuffer();
+		        	Exception ex=null;
+		        	IUpdateStateMaintain maintian = NCLocator.getInstance().lookup(IUpdateStateMaintain.class);
+		        	for(BillObmStateVO vo:downvos){
+		        	  ex=vo.getInterruptException();
+		        	  if(ex!=null){
+			        	 errMsg.append(MLObm.getStr00138(new String[]{vo.getYurref()})+ex.getMessage()).append("\n"); 
+		        	  }else {
+							String sql = "update ebank_paylog_h set obmdef1='已下载' where pk_ebank_paylog_h = (select pk_ebank_paylog_h"
+									+ " from ebank_paylog where yurref = '"+vo.getYurref()+"' and useflag <> - 1 and dr = 0) and dr = 0";
+							maintian.updateState(sql);
+						}
+		        	}
+		        	if(ex!=null){
+		        		throw new Exception(errMsg.toString());
+		        	} 
+		        	ShowStatusBarMsgUtil.showStatusBarMsg(MLObm.getStr00140()/*"指令状态下载完成"*/,getModel().getContext());
+		        }
+			 } catch (Exception ex) {
+			    ObmLog.error(ex.getMessage(), this.getClass(), "doAction");
+			    throw ex;
+			 } 
+		}		
+	} 
+	/**
+	 * 
+	 * 向后台提交操作
+	 * @param headlogvos
+	 * @param userObject
+	 * @throws Exception
+	 */
+	private BillObmStateVO[]  serviceDoDownload(EBankPayLogAggVO aggvo,String userid) throws Exception {
+//		IOnlinePayment logsev=(IOnlinePayment)NCLocator.
+//        getInstance().lookup(IOnlinePayment.class.getName());
+		IBusilogService logsev=(IBusilogService)NCLocator.
+                            getInstance().lookup(IBusilogService.class.getName());
+		EBankPayLogHVO headvo=(EBankPayLogHVO)aggvo.getParent();
+		PayStateQueryVO statequery=new PayStateQueryVO();
+	    statequery.setPayFunc("zfcx");
+	    statequery.setUseid(userid);
+	    statequery.setPk_corp(headvo.getPk_org());
+	    statequery.setSrcsystem(headvo.getSrcsystem()); 
+	    statequery.setSrcbilltype(headvo.getSrcbilltype());
+	    statequery.setSrcbillcode(headvo.getSrcbillcode());
+	    EBankPayLogVO[] logvos=(EBankPayLogVO[])aggvo.getChildrenVO();
+	    Collection<String> yurrefs=new Vector<String>();
+		for(EBankPayLogVO vo:logvos){
+			if(vo.getYurref()!=null){
+				yurrefs.add(vo.getYurref());
+			}
+		}
+		statequery.setYurrefs(yurrefs.toArray(new String[0]));
+		BillObmStateVO[] ret= logsev.queryPayState(statequery,aggvo);
+        return ret;
+	}
+	/**
+	 * 
+	 * 取选中的记录
+	 * @return
+	 * @throws Exception
+	 * @since NC6.0
+	 */
+    private EBankPayLogAggVO[] getSelectVO() throws Exception {
+	   Integer[] selectrows=getModel().getSelectedOperaRows();
+	   if (selectrows == null|| selectrows.length ==0) {
+			throw new Exception(MLObm.getStr00141()/*"下载状态前请先选择记录"*/);
+	   }
+	   EBankPayLogAggVO[] selectvos =new EBankPayLogAggVO[selectrows.length];	
+	   for(int i=0;i<selectrows.length;i++){
+		   selectvos[i]=(EBankPayLogAggVO)getModel().getData().get(selectrows[i]);  
+	   }
+	   return selectvos;
+    }
+	@Override
+	protected boolean isActionEnable() { 
+		boolean enabled=false;
+		if(model!=null){
+		  enabled=model.getUiState()==UIState.NOT_EDIT
+            &&model.getSelectedData()!=null;
+		}
+		return enabled;
+	}
+	public PayLogBillManageModel getModel() {
+		return model;
+	}
+	public void setModel(PayLogBillManageModel model) {
+		this.model = model; 
+		if(this.model!=null){
+			this.model.addAppEventListener(this);
+		}
+	}
+	public PayLogBillModelManager getDataManager() {
+		return dataManager;
+	}
+	public void setDataManager(PayLogBillModelManager dataManager) {
+		this.dataManager = dataManager;
+	}
+}

+ 233 - 0
arap/obm/src/client/nc/ui/obm/payroll/ebankdfgz/action/LogStateConfirmAction.java

@@ -0,0 +1,233 @@
+package nc.ui.obm.payroll.ebankdfgz.action;
+
+import java.awt.Event;
+import java.awt.event.ActionEvent;
+import java.util.Iterator;
+
+import javax.swing.Action;
+import javax.swing.KeyStroke;
+
+import nc.bs.framework.common.NCLocator;
+import nc.bs.pub.InitDataException;
+import nc.desktop.ui.WorkbenchEnvironment;
+import nc.funcnode.ui.FuncletInitData;
+import nc.funcnode.ui.FuncletWindowLauncher;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.sfbase.client.ClientToolKit;
+import nc.ui.pub.beans.MessageDialog;
+import nc.ui.pub.linkoperate.ILinkType;
+import nc.ui.pubapp.uif2app.query2.model.ModelDataManager;
+import nc.ui.sm.power.FuncRegisterCacheAccessor;
+import nc.ui.uif2.ToftPanelAdaptor;
+import nc.ui.uif2.UIState;
+import nc.ui.uif2.model.AbstractAppModel;
+import nc.vo.obm.ebankpaylog.PaystaeEnum;
+import nc.vo.obm.obmvo.PmtconfirmAddVO;
+import nc.vo.obm.payroll.DfgzBVO;
+import nc.vo.obm.payroll.DfgzBillVO;
+import nc.vo.obm.payroll.DfgzHVO;
+import nc.vo.obm.pmtconfirm.linkdata.PmtconfirmLinkAddData;
+import nc.vo.obm.util.IObmConst;
+import nc.vo.payroll.ml.MLPayroll;
+import nc.vo.sm.funcreg.FuncRegisterVO;
+import nc.vo.tmpub.util.ArrayUtil;
+import nc.ui.pubapp.uif2app.view.ShowUpableBillListView;
+/**
+ *  
+ *  状态确认
+ * @author  yinyan
+ * @version 1.0 2011-10-24
+ * @since   NC6.1
+ */
+@SuppressWarnings("restriction")
+public class LogStateConfirmAction extends nc.ui.uif2.NCAction {
+	 
+	private DfgzLogConfirmDlg conifrmDlg;
+	/** serialVersionUID*/
+	private static final long serialVersionUID = 1L;
+	/**
+	 * UI端数据模型
+	 */
+	private AbstractAppModel model = null;
+
+	private ModelDataManager dataManager;
+	
+	private ShowUpableBillListView ListView;
+	
+	private nc.ui.pubapp.uif2app.view.ShowUpableBillForm editor;
+	
+	private IUAPQueryBS iuap = (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+	public LogStateConfirmAction() {
+		super();
+		setCode("EbankLogCreatPmtConfirmAction");
+		setBtnName(MLPayroll.getStr00063()/*"状态确认"*/);
+		putValue(Action.SHORT_DESCRIPTION,getBtnName()+"(Ctrl+M)");
+		putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke((int)'M', Event.CTRL_MASK));
+	}
+	@Override
+	public void doAction(ActionEvent e) throws Exception {
+		Object selectObj = getModel().getSelectedData();
+		if (selectObj == null) {
+			throw new Exception(MLPayroll.getStr00064()/*"下载状态前请先选择记录"*/);
+		}
+		DfgzBillVO[] selectvos = null;
+		if (selectObj instanceof java.util.Arrays) {
+			selectvos = (DfgzBillVO[]) selectObj;
+		} else {
+			selectvos = new DfgzBillVO[] { (DfgzBillVO) selectObj };
+		}
+		if (selectvos == null||selectvos.length > 1) {
+			throw new Exception(MLPayroll.getStr00065()/*"选择一条工资单记录进行确认操作"*/);
+		} 
+		for(DfgzBillVO selectvo : selectvos){
+			if(selectvo.getParentVO().getBillpaystate() != 0) {
+				String sql = "select vdef1 from ebank_dfgz_h where vbillno ='"+selectvo.getParentVO().getVbillno()+"'and logflag = 0 and dr = 0";
+				String vdef1 = (String) iuap.executeQuery(sql, new ColumnProcessor());
+				if(vdef1 == null) {
+					throw new Exception("支付状态不正确请先下载状态再确认!");
+				}	
+			}
+			
+		}
+		
+		doDfAction(selectvos[0]);
+	}  
+	/**
+	 * 触发状态确认操作按钮,	弹出确认操作框.
+	 */
+//	private void doDfAction(DfgzBillVO selectAggLog) throws Exception {
+//		String userid = model.getContext().getPk_loginUser();
+//		// initialize dialog data
+//		getConifrmDlg().initData(selectAggLog);
+//		if (conifrmDlg.showModal() == conifrmDlg.ID_OK) {
+//			DfgzBVO[] dlgvos = conifrmDlg.getDoConfirmedSubVOS();
+//			HashMap<String, DefaultVO> chgchildvos = new HashMap<String, DefaultVO>();
+//			Integer confirmFlag = null;
+//			String confirmNotes = null;
+//			if ((dlgvos != null) && (dlgvos.length > 0)) {
+//				for (int j = 0; j < dlgvos.length; j++) {
+//					confirmFlag = (Integer) dlgvos[j]
+//							.getAttributeValue(conifrmDlg.KEY_CONFIRMTRANFLAG);
+//					confirmNotes = MLString.getConfirmLogStateMsg(confirmFlag);
+//					if (confirmFlag != null) {
+//						DefaultVO updatevo = new DefaultVO();
+//						updatevo.setAttributeValue(DefaultVO.CONFIRMSTATE,
+//								confirmFlag);
+//						updatevo.setAttributeValue(DfgzBVO.CONFIRMINFO,
+//								confirmNotes);
+//						updatevo.setAttributeValue(DefaultVO.PK_ID,
+//								dlgvos[j].getAttributeValue(DfgzBVO.UID2));
+//						chgchildvos.put(updatevo.getString(DefaultVO.PK_ID),
+//								updatevo);
+//					}
+//				}
+//				//IDfgzLogService logsev = (IDfgzLogService) NCLocator
+//				//		.getInstance().lookup(IDfgzLogService.class.getName());
+//				IBusilogService logsev = (IBusilogService) NCLocator
+//				.getInstance().lookup(IBusilogService.class.getName());
+//				logsev.confirmDfgzPayLogState(selectAggLog.getParentVO(),
+//						chgchildvos, userid);
+//				DfgzBillModel dmodel=(DfgzBillModel)this.getModel();
+//				dmodel.updateUILogDataFromDB(selectAggLog);
+//			}
+//		}
+//	}
+	
+	private void doDfAction(DfgzBillVO selectAggLog) throws Exception {
+		DfgzHVO billvo=(DfgzHVO) selectAggLog.getParent();
+        //打开窗口
+		PmtconfirmAddVO addvo = new PmtconfirmAddVO();
+		addvo.setPk_org(billvo.getPk_org());
+		addvo.setPk_group(billvo.getPk_group());
+		addvo.setSrcsystem(IObmConst.SYS_OBM);// 默认
+		addvo.setSrcbillcode(billvo.getVbillno());
+		addvo.setSrcbilltype("36C9");//
+		addvo.setSrcnodecode("3610PAYR");
+		addvo.setSrcpkid(billvo.getPrimaryKey());
+		addvo.setYurref(billvo.getYurref());
+
+		PmtconfirmLinkAddData data = new PmtconfirmLinkAddData();
+		data.setUserObject(addvo);
+		FuncRegisterVO funRegVo = WorkbenchEnvironment.getInstance().getFuncRegisterVO(IObmConst.NODECODE_PRIVATEPAYCONFIRM);
+		if (funRegVo != null) {
+			ToftPanelAdaptor adaptor = (ToftPanelAdaptor) getModel().getContext().getEntranceUI();
+			FuncletWindowLauncher.openFuncNodeInTabbedPane(adaptor, funRegVo,
+					new FuncletInitData(ILinkType.LINK_TYPE_ADD, data), null,false);
+		} else {
+			MessageDialog.showErrorDlg(ClientToolKit.getApplet(), nc.ui.ml.NCLangRes.getInstance().getStrByID("sysframev5", "UPPsysframev5-000062")/* @res "错误" */, nc.ui.ml.NCLangRes.getInstance().getStrByID("sysframev5", "UPPsysframev5-000095")/* @res "没有打开此节点的权限 . 节点号=" */
+                    + IObmConst.NODECODE_PRIVATEPAYCONFIRM);
+		}
+	}
+	
+	/**
+	 * 
+	 * @param conifrmDlg
+	 * @since NC6.0
+	 */
+	public void setConifrmDlg(DfgzLogConfirmDlg conifrmDlg) {
+		this.conifrmDlg = conifrmDlg;
+	}
+	/**
+	 * 
+	 * 取得状态确认操作对话框.
+	 * @return DfdkLogConfirmDlg 由spring框架初始化生成
+	 * @throws InitDataException
+	 * @since NC6.0
+	 */
+	public DfgzLogConfirmDlg getConifrmDlg(){
+		if(conifrmDlg==null){
+			conifrmDlg=new DfgzLogConfirmDlg(editor,MLPayroll.getStr00066()/*"工资单确认"*/);
+		}
+		return conifrmDlg;
+	}
+	@Override
+	protected boolean isActionEnable() {
+		DfgzBillVO selectedData = (DfgzBillVO)model.getSelectedData();
+		if(selectedData != null){
+			DfgzBVO[] vos = (DfgzBVO[]) selectedData.getAllChildrenVO();
+			if(!ArrayUtil.isNull(vos)){
+				for(DfgzBVO vo : vos){
+					//没有支付状态即未支付的单据不可确认支付状态
+					if(vo.getPaystate()==null)return false;
+					//有状态不明的单据,则可以确认单据状态
+					if(PaystaeEnum.PAY_UNKNOWN.toIntValue()== vo.getPaystate()){
+						return true;
+					}
+				}
+			}
+			return false;//全部确认完毕的单据不能再次确认
+		}else{
+			return false;
+		}
+	}
+
+	public AbstractAppModel getModel() {
+		return model;
+	}
+	public void setModel(AbstractAppModel model) {
+		this.model = model;
+		getModel().addAppEventListener(this);
+	}
+	public ModelDataManager getDataManager() {
+		return dataManager;
+	}
+
+	public void setDataManager(ModelDataManager dataManager) {
+		this.dataManager = dataManager;
+	}
+	public nc.ui.pubapp.uif2app.view.ShowUpableBillForm getEditor() {
+		return editor;
+	}
+	public void setEditor(nc.ui.pubapp.uif2app.view.ShowUpableBillForm editor) {
+		this.editor = editor;
+	}
+	public ShowUpableBillListView getListView() {
+		return ListView;
+	}
+	public void setListView(ShowUpableBillListView listView) {
+		ListView = listView;
+	}
+	
+	
+}

+ 128 - 0
arap/obm/src/client/nc/ui/obm/payroll/ebankdfgz/action/LogStateDownloadAction.java

@@ -0,0 +1,128 @@
+package nc.ui.obm.payroll.ebankdfgz.action;
+
+import static nc.bs.framework.common.NCLocator.getInstance;
+
+import java.awt.Event;
+import java.awt.event.ActionEvent;
+import java.lang.reflect.Array;
+import java.util.Collection;
+import java.util.Vector;
+
+import javax.swing.Action;
+import javax.swing.KeyStroke;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.obm.payroll.IBusilogService;
+import nc.itf.obm.payroll.IUpdateStateMaintain;
+import nc.pubitf.obm.payroll.IDFGZPay;
+import nc.ui.obm.payroll.ebankdfgz.model.DfgzBillModel;
+import nc.ui.pubapp.uif2app.query2.model.ModelDataManager;
+import nc.ui.uif2.NCAction;
+import nc.ui.uif2.ShowStatusBarMsgUtil;
+import nc.ui.uif2.UIState;
+import nc.ui.uif2.model.AbstractAppModel;
+import nc.vo.obm.BillObmStateVO;
+import nc.vo.obm.log.ObmLog;
+import nc.vo.obm.obmvo.PayStateQueryVO;
+import nc.vo.obm.payroll.DfgzBillVO;
+import nc.vo.payroll.ml.MLPayroll;
+/**
+ *  
+ * 指令状态下载UI端动作响应.
+ *
+ * @author  yinyan
+ * @version 1.0 2011/1/14
+ * @since   NC6.0
+ */
+public class LogStateDownloadAction extends NCAction {
+ 
+	/**serialVersionUID*/
+	private static final long serialVersionUID = 1L;
+	/**
+	 * UI端数据模型
+	 */
+	private AbstractAppModel model = null;
+
+	private ModelDataManager dataManager;
+	
+	public LogStateDownloadAction() {
+		super();
+		setCode("EbankLogDownloadStateAction");
+		setBtnName(MLPayroll.getStr00067()/*"状态下载"*/); 
+		putValue(Action.SHORT_DESCRIPTION,getBtnName()+"(Ctrl+J)");
+		putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke((int)'J', Event.CTRL_MASK));
+	}
+	@Override
+	public void doAction(ActionEvent e) throws Exception {
+		Object[] selectObjs = ((DfgzBillModel)getModel()).getSelectedOperaDatas();
+		if (selectObjs == null||selectObjs.length==0) {
+			throw new Exception(MLPayroll.getStr00068()/*"下载状态前请先选择记录"*/);
+		}
+		DfgzBillVO[] selectvos = (DfgzBillVO[]) Array.newInstance(DfgzBillVO.class,selectObjs.length);
+	    System.arraycopy(selectObjs, 0, selectvos, 0, selectvos.length);
+		Collection<String> yurrefs = new Vector<String>();
+		for (DfgzBillVO billvo : selectvos) {
+			yurrefs.add(billvo.getPayYurref());
+		}
+		String userid = getModel().getContext().getPk_loginUser();
+		PayStateQueryVO statequery = new PayStateQueryVO();
+		statequery.setPayFunc("dfgzcx");
+		statequery.setUseid(userid);
+		statequery.setYurrefs(yurrefs.toArray(new String[0]));
+		try {
+//			IDFGZPay logsev = (IDFGZPay) getInstance().lookup(IDFGZPay.class.getName());
+//			BillObmStateVO[] downvos = logsev.queryDFGZPaystate(statequery);
+			IBusilogService logsev = (IBusilogService) getInstance().lookup(IBusilogService.class.getName());
+			BillObmStateVO[] downvos = logsev.queryDFGZPaystate(statequery,selectvos);
+			DfgzBillModel dmodel=(DfgzBillModel)this.getModel();
+			dmodel.updateUILogDataFromDB(selectvos);
+			StringBuffer errMsg = new StringBuffer();
+			Exception ex = null;
+			if(downvos.length==1&&downvos[0].getInterruptException()!=null){
+				throw new Exception(downvos[0].getInterruptException().getMessage());
+			}
+			IUpdateStateMaintain maintian = NCLocator.getInstance().lookup(IUpdateStateMaintain.class);
+			for (BillObmStateVO vo : downvos) {
+				ex = vo.getInterruptException();
+				if (ex != null) {
+					errMsg.append(MLPayroll.getStr00069()/*"单据"*/+vo.getBizData("vbillno")+ ex.getMessage()).append("\n");
+				}else {
+					String sql = "update ebank_dfgz_h set vdef1 = '已下载' where vbillno = '"+vo.getBizData("vbillno")+"' and logflag = 0 and dr = 0";
+					maintian.updateState(sql);
+				}
+			}
+			if (errMsg != null&&errMsg.length()>0) {
+				ShowStatusBarMsgUtil.showErrorMsg(MLPayroll.getStr00070()/*"下载完成,部分操作失败"*/, errMsg.toString(),getModel().getContext());
+				return;
+			}else{
+				ShowStatusBarMsgUtil.showStatusBarMsg(MLPayroll.getStr00071()/*"下载完成"*/,getModel().getContext());	
+			}
+		} catch (Exception ex) {
+			ObmLog.error(ex.getMessage(), this.getClass(), "doAction");
+			throw ex;
+		}
+	}
+	@Override
+	protected boolean isActionEnable() { 
+		boolean enabled=false;
+		if(model!=null){
+		  enabled=model.getUiState()==UIState.NOT_EDIT &&model.getSelectedData()!=null;
+		}
+		return enabled;
+	}
+	public AbstractAppModel getModel() {
+		return model;
+	}
+	public void setModel(AbstractAppModel model) {
+		this.model = model; 
+		if(this.model!=null){
+			this.model.addAppEventListener(this);
+		}
+	}
+	public ModelDataManager getDataManager() {
+		return dataManager;
+	}
+	public void setDataManager(ModelDataManager dataManager) {
+		this.dataManager = dataManager;
+	}
+}

+ 16 - 0
arap/obm/src/private/nc/impl/obm/payroll/UpdateStateMaintainImpl.java

@@ -0,0 +1,16 @@
+package nc.impl.obm.payroll;
+
+import nc.bs.dao.BaseDAO;
+import nc.itf.obm.payroll.IUpdateStateMaintain;
+
+public class UpdateStateMaintainImpl implements IUpdateStateMaintain{
+
+	@Override
+	public void updateState(String sql) throws Exception {
+		new BaseDAO().executeUpdate(sql);
+		
+	}
+
+
+
+}

+ 6 - 0
arap/obm/src/public/nc/itf/obm/payroll/IUpdateStateMaintain.java

@@ -0,0 +1,6 @@
+package nc.itf.obm.payroll;
+
+public interface IUpdateStateMaintain {
+
+	public void updateState(String sql)throws Exception;
+}