Ver código fonte

南通大众NC65薪资开发

zthwr 6 meses atrás
commit
89e8228b98

+ 7 - 0
hrwa/META-INF/module.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="gb2312"?>
+<module name="hrwa">
+    <public>
+    </public>
+    <private>
+    </private>
+</module>

+ 37 - 0
hrwa/hr/src/public/nc/bs/hr/gy_zsgl/plugin/Base64Util.java

@@ -0,0 +1,37 @@
+package nc.bs.hr.gy_zsgl.plugin;
+
+public class Base64Util {
+    private static final String BASE64_CHARS = 
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+        
+        public static String encode(String data) {
+            try {
+                byte[] bytes = data.getBytes("UTF-8");
+                return encode(bytes);
+            } catch (Exception e) {
+                throw new RuntimeException("Base64 encoding failed", e);
+            }
+        }
+        
+        public static String encode(byte[] data) {
+            StringBuilder result = new StringBuilder();
+            int paddingCount = (3 - (data.length % 3)) % 3;
+            
+            for (int i = 0; i < data.length; i += 3) {
+                int block = ((data[i] & 0xFF) << 16) | 
+                           ((i + 1 < data.length ? (data[i + 1] & 0xFF) : 0) << 8) | 
+                           (i + 2 < data.length ? (data[i + 2] & 0xFF) : 0);
+                
+                for (int j = 0; j < 4; j++) {
+                    if (i * 8 / 6 + j < (data.length * 8 + 5) / 6) {
+                        int index = (block >> (6 * (3 - j))) & 0x3F;
+                        result.append(BASE64_CHARS.charAt(index));
+                    } else {
+                        result.append('=');
+                    }
+                }
+            }
+            
+            return result.toString();
+        }
+}

+ 34 - 0
hrwa/hr/src/public/nc/bs/hr/gy_zsgl/plugin/MD5Util.java

@@ -0,0 +1,34 @@
+package nc.bs.hr.gy_zsgl.plugin;
+
+import java.security.MessageDigest;
+
+public  class MD5Util {
+	
+	/**
+     * 生成MD5哈希值(32位小写)
+     */
+	
+	public static  String md5(String input) {
+		
+		try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] messageDigest = md.digest(input.getBytes("UTF-8"));
+            
+            // 转换为十六进制字符串
+            StringBuilder hexString = new StringBuilder();
+            for (int i = 0; i < messageDigest.length; i++) {
+                String hex = Integer.toHexString(0xFF & messageDigest[i]);
+                if (hex.length() == 1) {
+                    hexString.append('0');
+                }
+                hexString.append(hex);
+            }
+            return hexString.toString();
+        } catch (Exception e) {
+            throw new RuntimeException("MD5加密失败", e);
+        }
+    }
+		
+		
+
+}

+ 137 - 0
hrwa/hr/src/public/nc/bs/hr/gy_zsgl/plugin/SmsRequest.java

@@ -0,0 +1,137 @@
+package nc.bs.hr.gy_zsgl.plugin;
+
+import java.util.List;
+
+//请求实体类
+public class SmsRequest {
+	
+	private String ecName;
+    private String apId;
+    private String secretKey;
+    private String templateId;
+    private String mobiles;
+    private List<String> params;
+    private String macparams;
+    private String sign;
+    private String addSerial;
+    private String mac;
+	
+   // 构造函数、getters和setters
+    public SmsRequest() {}
+
+    // 转换为JSON字符串
+    public String toJsonString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("{");
+        sb.append("\"ecName\":\"").append(ecName).append("\",");
+        sb.append("\"apId\":\"").append(apId).append("\",");
+        sb.append("\"secretKey\":\"").append(secretKey).append("\",");
+        sb.append("\"templateId\":\"").append(templateId).append("\",");
+        sb.append("\"mobiles\":\"").append(mobiles).append("\",");
+        
+        // 处理params数组
+        sb.append("\"params\":[");
+        if (params != null && !params.isEmpty()) {
+            for (int i = 0; i < params.size(); i++) {
+                sb.append("\"").append(params.get(i)).append("\"");
+                if (i < params.size() - 1) {
+                    sb.append(",");
+                }
+            }
+        }
+        sb.append("],");
+        
+        sb.append("\"sign\":\"").append(sign).append("\",");
+        sb.append("\"addSerial\":\"").append(addSerial).append("\",");
+        sb.append("\"mac\":\"").append(mac).append("\"");
+        sb.append("}");
+        
+        return sb.toString();
+    }
+    
+    
+
+	public String getMacparams() {
+		return macparams;
+	}
+
+	public void setMacparams(String macparams) {
+		this.macparams = macparams;
+	}
+
+	public String getEcName() {
+		return ecName;
+	}
+
+	public void setEcName(String ecName) {
+		this.ecName = ecName;
+	}
+
+	public String getApId() {
+		return apId;
+	}
+
+	public void setApId(String apId) {
+		this.apId = apId;
+	}
+
+	public String getSecretKey() {
+		return secretKey;
+	}
+
+	public void setSecretKey(String secretKey) {
+		this.secretKey = secretKey;
+	}
+
+	public String getTemplateId() {
+		return templateId;
+	}
+
+	public void setTemplateId(String templateId) {
+		this.templateId = templateId;
+	}
+
+	public String getMobiles() {
+		return mobiles;
+	}
+
+	public void setMobiles(String mobiles) {
+		this.mobiles = mobiles;
+	}
+
+	public List<String> getParams() {
+		return params;
+	}
+
+	public void setParams(List<String> params) {
+		this.params = params;
+	}
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getAddSerial() {
+		return addSerial;
+	}
+
+	public void setAddSerial(String addSerial) {
+		this.addSerial = addSerial;
+	}
+
+	public String getMac() {
+		return mac;
+	}
+
+	public void setMac(String mac) {
+		this.mac = mac;
+	}
+    
+ 
+    
+
+}

+ 98 - 0
hrwa/hr/src/public/nc/bs/hr/gy_zsgl/plugin/SmsResponse.java

@@ -0,0 +1,98 @@
+package nc.bs.hr.gy_zsgl.plugin;
+
+  //响应实体类
+  public class SmsResponse {
+	
+    private String rspcod;
+    private String msgGroup;
+    private boolean success;
+    
+    
+    // 构造函数、getters和setters
+    public static SmsResponse fromJson(String json) { 
+    	
+    	 SmsResponse response = new SmsResponse();
+         try {
+             // 简单的JSON解析(JDK 1.6兼容方式)
+             if (json.contains("\"msgGroup\":")) {
+                 response.msgGroup = extractValue(json, "msgGroup");
+             }
+             if (json.contains("\"rspcod\":")) {
+                 response.rspcod = extractValue(json, "rspcod");
+             }
+             if (json.contains("\"success\":")) {
+                 String successStr = extractValue(json, "success");
+                 response.success = "true".equals(successStr);
+             }
+         } catch (Exception e) {
+             // 解析失败
+             response.success = false;
+             response.rspcod = "PARSE_ERROR";
+         }
+         return response;
+    }
+
+    
+    private static  String extractValue(String json, String key) {
+    	
+    	 String searchStr = "\"" + key + "\":";
+         int startIndex = json.indexOf(searchStr);
+         if (startIndex == -1) return "";
+         
+         startIndex += searchStr.length();
+         int endIndex = json.indexOf(",", startIndex);
+         if (endIndex == -1) endIndex = json.indexOf("}", startIndex);
+         if (endIndex == -1) return "";
+         
+         String value = json.substring(startIndex, endIndex).trim();
+         // 去除引号
+         if (value.startsWith("\"") && value.endsWith("\"")) {
+             value = value.substring(1, value.length() - 1);
+         }
+         return value;
+    	
+    	
+    }
+    
+    
+    
+    
+    
+    
+    
+
+	public String getRspcod() {
+		return rspcod;
+	}
+
+
+	public void setRspcod(String rspcod) {
+		this.rspcod = rspcod;
+	}
+
+
+	public String getMsgGroup() {
+		return msgGroup;
+	}
+
+
+	public void setMsgGroup(String msgGroup) {
+		this.msgGroup = msgGroup;
+	}
+
+
+	public boolean isSuccess() {
+		return success;
+	}
+
+
+	public void setSuccess(boolean success) {
+		this.success = success;
+	} 
+    
+    
+    
+    
+    
+
+}

+ 9 - 0
hrwa/hrwa/META-INF/import.upm

@@ -0,0 +1,9 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<module>
+	<public>
+	   <component priority="0" singleton="true" remote="true" tx="CMT" supportAlias="true">
+      	<interface>nc.itf.hrwa.IPaydataMaintain</interface>
+      	<implementation>nc.impl.hrwa.PaydataMaintainImpl</implementation>
+       </component>
+	</public>
+</module>

BIN
hrwa/hrwa/classes/nc/impl/hrwa/PaydataMaintainImpl.class


+ 591 - 0
hrwa/hrwa/classes/nc/ui/wa/paydata/Paydata_Config.xml

@@ -0,0 +1,591 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans>
+	<!-- 环境变量 -->
+	<bean id="context" class="nc.vo.wa.pub.WaLoginContext"></bean>
+
+	<!-- 模型部分配置 -->
+
+	<!-- 应用服务类,负责进行模型操作的处理 -->
+	<bean id="ManageModelService" class="nc.ui.wa.paydata.model.PaydataModelService" />
+
+
+	<!-- 对象转换器工厂,由此获取操作对象的特征信息 -->
+	<bean id="boadatorfactory" class="nc.ui.wa.paydata.model.PaydataIBDObjectAdapterFactory" />
+
+
+
+	<!-- 管理应用模型 -->
+	<bean id="ManageAppModel" class="nc.ui.wa.paydata.model.PaydataAppDataModel">
+		<property name="service" ref="ManageModelService"></property>
+		<property name="orderCondition" value=" org_dept_v.code , hi_psnjob.clerkcode"></property>
+		<property name="businessObjectAdapterFactory" ref="boadatorfactory">
+		</property>
+		<property name="context" ref="context"></property>
+	</bean>
+
+	<!-- 模板容器,负责对模板的统一装载 -->
+	<bean id="templateContainer" class="nc.ui.wa.paydata.model.PaydataTemplateContainer">
+		<property name="context" ref="context" />
+		<property name="paydataModel" ref="ManageAppModel"></property>
+	</bean>
+
+	<bean id="toftpanelActionContributors" class="nc.ui.uif2.actions.ActionContributors">
+		<property name="contributors">
+			<list>
+				<ref bean="listViewActions" />
+				<ref bean="cardEditorActions" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 数据模型管理器,主要负责各种方式的模型初始化 -->
+	<bean id="modelDataManager" class="nc.ui.wa.paydata.model.PaydataModelDataManager">
+		<property name="service" ref="ManageModelService"></property>
+		<property name="billtype" value="6302"></property>
+		<property name="context" ref="context"></property>
+		<property name="model" ref="ManageAppModel"></property>
+
+		<property name="paginationModel" ref="paginationModel" />
+		<property name="paginationBar" ref="paginationBar" />
+
+	</bean>
+
+	<!-- Actions -->
+	<bean id="cardEditorActions" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg>
+			<ref bean="billFormEditor" />
+		</constructor-arg>
+		<property name="actions">
+			<list>
+				<ref bean="EditAction" />
+				<ref bean="nullaction" />
+				<ref bean="RefreshAction" />
+
+			</list>
+		</property>
+		<property name="editActions">
+			<list>
+				<ref bean="FormSaveAction" />
+				<ref bean="FormSaveEditAction" />
+				<ref bean="nullaction" />
+				<ref bean="CancelAction" />
+			</list>
+		</property>
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+
+	<bean id="listViewActions" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg>
+			<ref bean="mainListPanel" />
+		</constructor-arg>
+		<property name="actions">
+			<list>
+				<ref bean="EditAction" />
+
+				<ref bean="ReplaceAction" />
+				<ref bean="SpecialPsnAction" />
+				<ref bean="nullaction" />
+				<ref bean="QueryAction" />
+				<ref bean="RefreshAction" />
+				<ref bean="nullaction" />
+				<ref bean="OnTimeCaculateAction" />
+				<ref bean="CaculateAction" />
+				<ref bean="ReTotalAction" />
+				<ref bean="WaTimesCollectAction" />
+				<ref bean="ShowDetailAction" />
+				<ref bean="CheckGroupAction" />
+				<ref bean="PayGroupAction" />
+				<ref bean="nullaction" />
+				<ref bean="assistFunctionAction" />
+				<ref bean="nullaction" />
+				<ref bean="SortAction" />
+				<ref bean="DisplayAction" />
+				<ref bean="nullaction" />
+				<ref bean="ExportXlsAction" />
+				<ref bean="PrintGroupAction" />
+				<ref bean="nullaction" />
+				<ref bean="ImportXlsAction" />
+				<ref bean="nullaction" />
+				<ref bean="SalarySendAction"/>
+				
+			</list>
+		</property>
+
+		<property name="editActions">
+			<list>
+				<ref bean="ListSaveAction" />
+				<ref bean="nullaction" />
+				<ref bean="CancelAction" />
+			</list>
+		</property>
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+
+	<bean id="nullaction" class="nc.funcnode.ui.action.SeparatorAction" />
+
+
+	<bean id="EditAction" class="nc.ui.wa.paydata.action.EditPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<bean id="QueryAction" class="nc.ui.wa.paydata.action.QueryPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="orgpanel" ref="orgpanel" />
+		<property name="dataManager" ref="modelDataManager" />
+		<property name="queryDelegator">
+			<bean class="nc.ui.wa.paydata.view.WaPaydataQueryDelegator">
+				<property name="nodeKey" value="" />
+				<property name="context" ref="context" />
+				<property name="model" ref="ManageAppModel" />
+			</bean>
+		</property>
+	</bean>
+	<bean id="FormSaveAction" class="nc.ui.wa.paydata.action.BillFormSavePaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="editor" ref="billFormEditor" />
+	</bean>
+	<bean id="FormSaveEditAction" class="nc.ui.wa.paydata.action.BillFormSaveEditPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="editor" ref="billFormEditor" />
+		<property name="nextLineAction" ref="NextLineAction" />
+		<property name="editAction" ref="EditAction" />
+	</bean>
+
+	<bean id="ListSaveAction" class="nc.ui.wa.paydata.action.BillListSavePaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="editor" ref="listView" />
+	</bean>
+
+	<bean id="CancelAction" class="nc.ui.wa.paydata.action.PaydataCancelAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+
+	<bean id="SortAction" class="nc.ui.wa.paydata.action.SortPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="listView" ref="listView" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="ReplaceAction" class="nc.ui.wa.paydata.action.ReplaceAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+
+	<bean id="DisplayAction" class="nc.ui.wa.paydata.action.DisplayAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="ShowDetailAction" class="nc.ui.wa.paydata.action.ShowDetailAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="templateContainer" ref="templateContainer"></property>
+	</bean>
+
+	<bean id="RefreshAction" class="nc.ui.wa.paydata.action.PaydataRefreshAction">
+        <property name="listView" ref="listView"/>
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+		<property name="orgpanel" ref="orgpanel" />
+		 <property name="formEditor" ref="billFormEditor" />
+	</bean>
+	
+
+	<!--
+		<bean id="ExportAction" class="nc.ui.wa.paydata.action.ExportAction">
+		<property name="model" ref="ManageAppModel" /> <property
+		name="listView" ref="listView" /> </bean>
+	-->
+
+	<!-- 分页面板 -->
+	<bean id="paginationBar" class="nc.ui.uif2.components.pagination.PaginationBar">
+		<property name="paginationModel" ref="paginationModel" />
+	</bean>
+
+	<bean id="paginationModel" class="nc.ui.uif2.components.pagination.PaginationModel"
+		init-method="init">
+		<property name="paginationQueryService" ref="ManageModelService" />
+	</bean>
+
+	<bean id="CaculateAction" class="nc.ui.wa.paydata.action.CaculateAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<!--<bean id="SubmitAction" class="nc.ui.wa.paydata.action.SubmitAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	 <bean id="CallbackAction" class="nc.ui.wa.paydata.action.CallbackAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean> -->
+	<bean id="CheckAction" class="nc.ui.wa.paydata.action.CheckAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="UnCheckAction" class="nc.ui.wa.paydata.action.UnCheckAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="ReTotalAction" class="nc.ui.wa.paydata.action.ReTotalAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+
+	<bean id="WaTimesCollectAction" class="nc.ui.wa.paydata.action.WaTimesCollectAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+
+	<bean id="PayAction" class="nc.ui.wa.paydata.action.PayAction">
+		<property name="editor" ref="paydataInfoEditor" />
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<bean id="UnPayAction" class="nc.ui.wa.paydata.action.UnPayAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="orgpanel" ref="orgpanel" />
+	</bean>
+	<bean id="OnTimeCaculateAction" class="nc.ui.wa.paydata.action.OnTimeCacuAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<bean id="SpecialPsnAction" class="nc.ui.wa.paydata.action.SpecialPsnAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+
+	</bean>
+	<bean id="FirstLineAction" class="nc.ui.uif2.actions.FirstLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="NextLineAction" class="nc.ui.uif2.actions.NextLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="PreLineAction" class="nc.ui.uif2.actions.PreLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="LastLineAction" class="nc.ui.uif2.actions.LastLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="ExportXlsAction" class="nc.ui.wa.paydata.action.ExportXlsAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="view" ref="listView" />
+	</bean>
+	
+	<bean id="ImportXlsAction" class="nc.ui.wa.paydata.action.ImportXlsAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="view" ref="listView" />
+		<property name="orgpanel" ref="orgpanel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	
+	
+	<bean id="SalarySendAction" class="nc.ui.wa.paydata.action.SalarySendAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="view" ref="listView" />
+		<property name="orgpanel" ref="orgpanel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	
+	
+	<bean id="CheckGroupAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="checkgroup"></property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="审核操作" />
+				<property name="resId" value="X60130024" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="CheckAction" />
+				<ref bean="UnCheckAction" />
+			</list>
+		</property>
+	</bean>
+	<bean id="PayGroupAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="paygroup"></property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="发放操作" />
+				<property name="resId" value="X60130025" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="PayAction" />
+				<ref bean="UnPayAction" />
+			</list>
+		</property>
+	</bean>
+
+	<bean id="PrintGroupAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="print"></property>
+		<property name="name" >
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="打印" />
+				<property name="resId" value="X60130002" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="PrintAction" />
+				<ref bean="PreviewAction" />
+				<ref bean="outputAction" />
+				<ref bean="nullaction" />
+				<ref bean="TemplatePrintAction" />
+				<ref bean="TemplatePreviewAction" />
+
+
+			</list>
+		</property>
+	</bean>
+
+
+	<bean id="assistFunctionAction" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code" value="assistFunction"></property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="关联功能" />
+				<property name="resId" value="X60130026" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="transferWaRedataAction" />
+				<ref bean="transferPayleaveAction" />
+				<ref bean="nullaction" />
+				<ref bean="transferPayApplyAction" />
+				<ref bean="nullaction" />
+				<ref bean="transferAmoAction" />
+				<ref bean="transferDatainterfaceAction" />
+				<ref bean="transferWabankAction" />
+				<ref bean="nullaction" />
+				<ref bean="transferMonthEndAction" />
+			</list>
+		</property>
+	</bean>
+	<bean id="transferPayleaveAction" class="nc.ui.wa.paydata.action.TransferPayleaveAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130payleave"></property>
+	</bean>
+	<bean id="transferWaRedataAction" class="nc.ui.wa.paydata.action.TransferWaRedataAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130repaydata"></property>
+	</bean>
+	<bean id="transferPayApplyAction" class="nc.ui.wa.paydata.action.TransferPayApplyAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130payslipaly"></property>
+	</bean>
+	<bean id="transferAmoAction" class="nc.ui.wa.paydata.action.TransferAmoAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130payamo"></property>
+	</bean>
+	<bean id="transferWabankAction" class="nc.ui.wa.paydata.action.TransferWabankAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130bankitf"></property>
+	</bean>
+	<bean id="transferDatainterfaceAction" class="nc.ui.wa.paydata.action.TransferDatainterfaceAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130dataitf"></property>
+	</bean>
+	<bean id="transferMonthEndAction" class="nc.ui.wa.paydata.action.TransferMonthEndAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130monthend"></property>
+	</bean>
+
+	<bean id="PreviewAction" class="nc.ui.wa.paydata.action.DirectPrintAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="directPrint" value="false" />
+		<property name="listView" ref="listView" />
+	</bean>
+	<bean id="PrintAction" class="nc.ui.wa.paydata.action.DirectPrintAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="directPrint" value="true" />
+		<property name="listView" ref="listView" />
+	</bean>
+	<bean id="outputAction" class="nc.ui.wa.pub.WaOutputAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="listView" ref="listView"/>
+	</bean> 
+	
+	<bean id="datasource" class="nc.ui.wa.paydata.model.PaydataDataSource">
+		<property name="model" ref="ManageAppModel" />
+		<property name="listView" ref="listView"/>
+	</bean>
+	 <bean id="TemplatePreviewAction" class="nc.ui.wa.pub.action.WaTemplatePreviewAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="datasource" ref="datasource" />
+		<property name="nodeKey" value="paydata" />
+		
+	</bean>
+	<bean id="TemplatePrintAction" class="nc.ui.wa.pub.action.WaTemplatePrintAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="datasource" ref="datasource" />
+		 <property name="nodeKey" value="paydata" />
+	</bean> 
+	<!-- 界面元素 -->
+	<!-- 列表视图 -->
+	<bean id="listView" class="nc.ui.wa.paydata.view.PaydataListView"
+		init-method="initUI">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="multiSelectionEnable">
+			<value>false</value>
+		</property>
+		<!--property name="pos"><value>head</value></property-->
+		<property name="templateContainer" ref="templateContainer"></property>
+		<property name="billListPanelValueSetter">
+			<bean class="nc.ui.hr.append.model.AppendableBillListPanelSetter">
+			</bean>
+		</property>
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<!--卡控件-->
+	<bean id="componentValueManager" class="nc.ui.uif2.editor.value.BillCardPanelHeadVOValueAdapter">
+		<property name="headVOName" value="nc.vo.wa.paydata.DataVO"></property>
+	</bean>
+	<bean id="billFormEditor" class="nc.ui.wa.paydata.view.PaydataFormEditor"
+		init-method="initUI">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="templateContainer" ref="templateContainer" />
+		<property name="componentValueManager" ref="componentValueManager">
+		</property>
+		<property name="showOnEditState" value="false"></property>
+		<property name="actions">
+			<list>
+				<ref bean="FirstLineAction" />
+				<ref bean="PreLineAction" />
+				<ref bean="NextLineAction" />
+				<ref bean="LastLineAction" />
+			</list>
+		</property>
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+
+
+
+
+	<bean id="ClosingListener" class="nc.ui.uif2.FunNodeClosingHandler">
+		<property name="model" ref="ManageAppModel" />
+		<property name="saveaction" ref="FormSaveAction" />
+		<property name="cancelaction" ref="CancelAction" />
+	</bean>
+	<bean id="billNotNullValidator" class="nc.ui.hr.uif2.validator.BillNotNullValidateService">
+		<constructor-arg ref="billFormEditor">
+		</constructor-arg>
+	</bean>
+
+
+
+	<bean id="editorReturnAction" class="nc.ui.uif2.actions.ShowMeUpAction">
+		<property name="goComponent" ref="mainListPanel" />
+	</bean>
+
+	<bean id="editorToolBarPanel" class="nc.ui.uif2.tangramlayout.CardLayoutToolbarPanel">
+		<property name="model" ref="ManageAppModel" />
+		<property name="titleAction" ref="editorReturnAction" />
+		<property name="actions">
+			<list>
+				<ref bean="FirstLineAction" />
+				<ref bean="PreLineAction" />
+				<ref bean="NextLineAction" />
+				<ref bean="LastLineAction" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 界面布局总装 -->
+	<bean id="container" class="nc.ui.uif2.TangramContainer"
+		init-method="initUI">
+		<property name="tangramLayoutRoot">
+			<bean class="nc.ui.uif2.tangramlayout.node.TBNode">
+				<property name="showMode" value="CardLayout" />
+				<property name="tabs">
+					<list>
+						<bean class="nc.ui.uif2.tangramlayout.node.VSNode">
+							<property name="showMode" value="NoDivider" />
+							<property name="up">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="orgpanel" />
+								</bean>
+							</property>
+							<property name="down">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="mainListPanel"></property>
+								</bean>
+							</property>
+							<property name="dividerLocation" value="30f" />
+						</bean>
+
+						<bean class="nc.ui.uif2.tangramlayout.node.VSNode">
+							<property name="showMode" value="NoDivider" />
+							<property name="up">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="editorToolBarPanel" />
+								</bean>
+							</property>
+							<property name="down">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="billFormEditor" />
+								</bean>
+							</property>
+							<property name="dividerLocation" value="30f" />
+						</bean>
+					</list>
+				</property>
+			</bean>
+
+		</property>
+	</bean>
+
+	<!-- 界面零件 -->
+	<bean id="mainListPanel" class="nc.ui.hr.wizard.LayoutPanel"
+		init-method="initUI">
+		<constructor-arg>
+			<bean class="java.awt.BorderLayout"></bean>
+		</constructor-arg>
+		<property name="componentMap">
+			<map>
+				<entry key-ref="listView" value="Center"></entry>
+				<entry key-ref="paydataInfoEditor" value="South"></entry>
+
+				<!--<entry key-ref="paginationBar" value="South"></entry>-->
+			</map>
+		</property>
+	</bean>
+
+	<bean id="orgpanel" class="nc.ui.wa.pub.WaOrgHeadPanel"
+		init-method="initUI">
+		<constructor-arg>
+			<ref bean="mainListPanel" />
+		</constructor-arg>
+		<property name="model" ref="ManageAppModel" />
+		<property name="context" ref="context"></property>
+		<property name="dataManager" ref="modelDataManager" />
+		<property name="pk_orgtype" value="HRORGTYPE00000000000" />
+	</bean>
+	<!-- 发放信息 -->
+
+
+	<bean id="paydataInfoEditor" class="nc.ui.wa.paydata.view.PaydataInfoEditor"
+		init-method="initUI">
+		<property name="model" ref="ManageAppModel" />
+		<property name="context" ref="context"></property>
+		<property name="paginationBar" ref="paginationBar"></property>
+
+	</bean>
+
+
+
+</beans>
+
+

+ 3 - 0
hrwa/hrwa/component.xml

@@ -0,0 +1,3 @@
+<component name="hrwa" displayname="hrwa">
+  <dependencies/>
+</component>

+ 1257 - 0
hrwa/hrwa/src/client/nc/ui/wa/paydata/Paydata_Config.java

@@ -0,0 +1,1257 @@
+package nc.ui.wa.paydata;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nc.ui.uif2.factory.AbstractJavaBeanDefinition;
+
+public class Paydata_Config extends AbstractJavaBeanDefinition {
+	private Map<String, Object> context = new HashMap();
+
+	public nc.vo.wa.pub.WaLoginContext getContext() {
+		if (context.get("context") != null)
+			return (nc.vo.wa.pub.WaLoginContext) context.get("context");
+		nc.vo.wa.pub.WaLoginContext bean = new nc.vo.wa.pub.WaLoginContext();
+		context.put("context", bean);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.model.PaydataModelService getManageModelService() {
+		if (context.get("ManageModelService") != null)
+			return (nc.ui.wa.paydata.model.PaydataModelService) context
+					.get("ManageModelService");
+		nc.ui.wa.paydata.model.PaydataModelService bean = new nc.ui.wa.paydata.model.PaydataModelService();
+		context.put("ManageModelService", bean);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.model.PaydataIBDObjectAdapterFactory getBoadatorfactory() {
+		if (context.get("boadatorfactory") != null)
+			return (nc.ui.wa.paydata.model.PaydataIBDObjectAdapterFactory) context
+					.get("boadatorfactory");
+		nc.ui.wa.paydata.model.PaydataIBDObjectAdapterFactory bean = new nc.ui.wa.paydata.model.PaydataIBDObjectAdapterFactory();
+		context.put("boadatorfactory", bean);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.model.PaydataAppDataModel getManageAppModel() {
+		if (context.get("ManageAppModel") != null)
+			return (nc.ui.wa.paydata.model.PaydataAppDataModel) context
+					.get("ManageAppModel");
+		nc.ui.wa.paydata.model.PaydataAppDataModel bean = new nc.ui.wa.paydata.model.PaydataAppDataModel();
+		context.put("ManageAppModel", bean);
+		bean.setService(getManageModelService());
+		bean.setOrderCondition(" org_dept_v.code , hi_psnjob.clerkcode");
+		bean.setBusinessObjectAdapterFactory(getBoadatorfactory());
+		bean.setContext(getContext());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.model.PaydataTemplateContainer getTemplateContainer() {
+		if (context.get("templateContainer") != null)
+			return (nc.ui.wa.paydata.model.PaydataTemplateContainer) context
+					.get("templateContainer");
+		nc.ui.wa.paydata.model.PaydataTemplateContainer bean = new nc.ui.wa.paydata.model.PaydataTemplateContainer();
+		context.put("templateContainer", bean);
+		bean.setContext(getContext());
+		bean.setPaydataModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.actions.ActionContributors getToftpanelActionContributors() {
+		if (context.get("toftpanelActionContributors") != null)
+			return (nc.ui.uif2.actions.ActionContributors) context
+					.get("toftpanelActionContributors");
+		nc.ui.uif2.actions.ActionContributors bean = new nc.ui.uif2.actions.ActionContributors();
+		context.put("toftpanelActionContributors", bean);
+		bean.setContributors(getManagedList0());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private List getManagedList0() {
+		List list = new ArrayList();
+		list.add(getListViewActions());
+		list.add(getCardEditorActions());
+		return list;
+	}
+
+	public nc.ui.wa.paydata.model.PaydataModelDataManager getModelDataManager() {
+		if (context.get("modelDataManager") != null)
+			return (nc.ui.wa.paydata.model.PaydataModelDataManager) context
+					.get("modelDataManager");
+		nc.ui.wa.paydata.model.PaydataModelDataManager bean = new nc.ui.wa.paydata.model.PaydataModelDataManager();
+		context.put("modelDataManager", bean);
+		bean.setService(getManageModelService());
+		bean.setBilltype("6302");
+		bean.setContext(getContext());
+		bean.setModel(getManageAppModel());
+		bean.setPaginationModel(getPaginationModel());
+		bean.setPaginationBar(getPaginationBar());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.actions.StandAloneToftPanelActionContainer getCardEditorActions() {
+		if (context.get("cardEditorActions") != null)
+			return (nc.ui.uif2.actions.StandAloneToftPanelActionContainer) context
+					.get("cardEditorActions");
+		nc.ui.uif2.actions.StandAloneToftPanelActionContainer bean = new nc.ui.uif2.actions.StandAloneToftPanelActionContainer(
+				getBillFormEditor());
+		context.put("cardEditorActions", bean);
+		bean.setActions(getManagedList1());
+		bean.setEditActions(getManagedList2());
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private List getManagedList1() {
+		List list = new ArrayList();
+		list.add(getEditAction());
+		list.add(getNullaction());
+		list.add(getRefreshAction());
+		return list;
+	}
+
+	private List getManagedList2() {
+		List list = new ArrayList();
+		list.add(getFormSaveAction());
+		list.add(getFormSaveEditAction());
+		list.add(getNullaction());
+		list.add(getCancelAction());
+		return list;
+	}
+
+	public nc.ui.uif2.actions.StandAloneToftPanelActionContainer getListViewActions() {
+		if (context.get("listViewActions") != null)
+			return (nc.ui.uif2.actions.StandAloneToftPanelActionContainer) context
+					.get("listViewActions");
+		nc.ui.uif2.actions.StandAloneToftPanelActionContainer bean = new nc.ui.uif2.actions.StandAloneToftPanelActionContainer(
+				getMainListPanel());
+		context.put("listViewActions", bean);
+		bean.setActions(getManagedList3());
+		bean.setEditActions(getManagedList4());
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private List getManagedList3() {
+		List list = new ArrayList();
+		list.add(getEditAction());
+		list.add(getReplaceAction());
+		list.add(getSpecialPsnAction());
+		list.add(getNullaction());
+		list.add(getQueryAction());
+		list.add(getRefreshAction());
+		list.add(getNullaction());
+		list.add(getOnTimeCaculateAction());
+		list.add(getCaculateAction());
+		list.add(getReTotalAction());
+		list.add(getWaTimesCollectAction());
+		list.add(getShowDetailAction());
+		list.add(getCheckGroupAction());
+		list.add(getPayGroupAction());
+		list.add(getNullaction());
+		list.add(getAssistFunctionAction());
+		list.add(getNullaction());
+		list.add(getSortAction());
+		list.add(getDisplayAction());
+		list.add(getNullaction());
+		list.add(getExportXlsAction());
+		list.add(getPrintGroupAction());
+		list.add(getNullaction());
+		list.add(getImportXlsAction());
+		list.add(getNullaction());
+		list.add(getSalarySendAction());
+		return list;
+	}
+
+	private List getManagedList4() {
+		List list = new ArrayList();
+		list.add(getListSaveAction());
+		list.add(getNullaction());
+		list.add(getCancelAction());
+		return list;
+	}
+
+	public nc.funcnode.ui.action.SeparatorAction getNullaction() {
+		if (context.get("nullaction") != null)
+			return (nc.funcnode.ui.action.SeparatorAction) context
+					.get("nullaction");
+		nc.funcnode.ui.action.SeparatorAction bean = new nc.funcnode.ui.action.SeparatorAction();
+		context.put("nullaction", bean);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.EditPaydataAction getEditAction() {
+		if (context.get("EditAction") != null)
+			return (nc.ui.wa.paydata.action.EditPaydataAction) context
+					.get("EditAction");
+		nc.ui.wa.paydata.action.EditPaydataAction bean = new nc.ui.wa.paydata.action.EditPaydataAction();
+		context.put("EditAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.QueryPaydataAction getQueryAction() {
+		if (context.get("QueryAction") != null)
+			return (nc.ui.wa.paydata.action.QueryPaydataAction) context
+					.get("QueryAction");
+		nc.ui.wa.paydata.action.QueryPaydataAction bean = new nc.ui.wa.paydata.action.QueryPaydataAction();
+		context.put("QueryAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOrgpanel(getOrgpanel());
+		bean.setDataManager(getModelDataManager());
+		bean.setQueryDelegator(getWaPaydataQueryDelegator_da5692());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.wa.paydata.view.WaPaydataQueryDelegator getWaPaydataQueryDelegator_da5692() {
+		if (context.get("nc.ui.wa.paydata.view.WaPaydataQueryDelegator#da5692") != null)
+			return (nc.ui.wa.paydata.view.WaPaydataQueryDelegator) context
+					.get("nc.ui.wa.paydata.view.WaPaydataQueryDelegator#da5692");
+		nc.ui.wa.paydata.view.WaPaydataQueryDelegator bean = new nc.ui.wa.paydata.view.WaPaydataQueryDelegator();
+		context.put("nc.ui.wa.paydata.view.WaPaydataQueryDelegator#da5692",
+				bean);
+		bean.setNodeKey("");
+		bean.setContext(getContext());
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.BillFormSavePaydataAction getFormSaveAction() {
+		if (context.get("FormSaveAction") != null)
+			return (nc.ui.wa.paydata.action.BillFormSavePaydataAction) context
+					.get("FormSaveAction");
+		nc.ui.wa.paydata.action.BillFormSavePaydataAction bean = new nc.ui.wa.paydata.action.BillFormSavePaydataAction();
+		context.put("FormSaveAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		bean.setEditor(getBillFormEditor());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.BillFormSaveEditPaydataAction getFormSaveEditAction() {
+		if (context.get("FormSaveEditAction") != null)
+			return (nc.ui.wa.paydata.action.BillFormSaveEditPaydataAction) context
+					.get("FormSaveEditAction");
+		nc.ui.wa.paydata.action.BillFormSaveEditPaydataAction bean = new nc.ui.wa.paydata.action.BillFormSaveEditPaydataAction();
+		context.put("FormSaveEditAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		bean.setEditor(getBillFormEditor());
+		bean.setNextLineAction(getNextLineAction());
+		bean.setEditAction(getEditAction());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.BillListSavePaydataAction getListSaveAction() {
+		if (context.get("ListSaveAction") != null)
+			return (nc.ui.wa.paydata.action.BillListSavePaydataAction) context
+					.get("ListSaveAction");
+		nc.ui.wa.paydata.action.BillListSavePaydataAction bean = new nc.ui.wa.paydata.action.BillListSavePaydataAction();
+		context.put("ListSaveAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		bean.setEditor(getListView());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.PaydataCancelAction getCancelAction() {
+		if (context.get("CancelAction") != null)
+			return (nc.ui.wa.paydata.action.PaydataCancelAction) context
+					.get("CancelAction");
+		nc.ui.wa.paydata.action.PaydataCancelAction bean = new nc.ui.wa.paydata.action.PaydataCancelAction();
+		context.put("CancelAction", bean);
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.SortPaydataAction getSortAction() {
+		if (context.get("SortAction") != null)
+			return (nc.ui.wa.paydata.action.SortPaydataAction) context
+					.get("SortAction");
+		nc.ui.wa.paydata.action.SortPaydataAction bean = new nc.ui.wa.paydata.action.SortPaydataAction();
+		context.put("SortAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setListView(getListView());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.ReplaceAction getReplaceAction() {
+		if (context.get("ReplaceAction") != null)
+			return (nc.ui.wa.paydata.action.ReplaceAction) context
+					.get("ReplaceAction");
+		nc.ui.wa.paydata.action.ReplaceAction bean = new nc.ui.wa.paydata.action.ReplaceAction();
+		context.put("ReplaceAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.DisplayAction getDisplayAction() {
+		if (context.get("DisplayAction") != null)
+			return (nc.ui.wa.paydata.action.DisplayAction) context
+					.get("DisplayAction");
+		nc.ui.wa.paydata.action.DisplayAction bean = new nc.ui.wa.paydata.action.DisplayAction();
+		context.put("DisplayAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.ShowDetailAction getShowDetailAction() {
+		if (context.get("ShowDetailAction") != null)
+			return (nc.ui.wa.paydata.action.ShowDetailAction) context
+					.get("ShowDetailAction");
+		nc.ui.wa.paydata.action.ShowDetailAction bean = new nc.ui.wa.paydata.action.ShowDetailAction();
+		context.put("ShowDetailAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		bean.setTemplateContainer(getTemplateContainer());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.PaydataRefreshAction getRefreshAction() {
+		if (context.get("RefreshAction") != null)
+			return (nc.ui.wa.paydata.action.PaydataRefreshAction) context
+					.get("RefreshAction");
+		nc.ui.wa.paydata.action.PaydataRefreshAction bean = new nc.ui.wa.paydata.action.PaydataRefreshAction();
+		context.put("RefreshAction", bean);
+		bean.setListView(getListView());
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		bean.setOrgpanel(getOrgpanel());
+		bean.setFormEditor(getBillFormEditor());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.components.pagination.PaginationBar getPaginationBar() {
+		if (context.get("paginationBar") != null)
+			return (nc.ui.uif2.components.pagination.PaginationBar) context
+					.get("paginationBar");
+		nc.ui.uif2.components.pagination.PaginationBar bean = new nc.ui.uif2.components.pagination.PaginationBar();
+		context.put("paginationBar", bean);
+		bean.setPaginationModel(getPaginationModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.components.pagination.PaginationModel getPaginationModel() {
+		if (context.get("paginationModel") != null)
+			return (nc.ui.uif2.components.pagination.PaginationModel) context
+					.get("paginationModel");
+		nc.ui.uif2.components.pagination.PaginationModel bean = new nc.ui.uif2.components.pagination.PaginationModel();
+		context.put("paginationModel", bean);
+		bean.setPaginationQueryService(getManageModelService());
+		bean.init();
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.CaculateAction getCaculateAction() {
+		if (context.get("CaculateAction") != null)
+			return (nc.ui.wa.paydata.action.CaculateAction) context
+					.get("CaculateAction");
+		nc.ui.wa.paydata.action.CaculateAction bean = new nc.ui.wa.paydata.action.CaculateAction();
+		context.put("CaculateAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.CheckAction getCheckAction() {
+		if (context.get("CheckAction") != null)
+			return (nc.ui.wa.paydata.action.CheckAction) context
+					.get("CheckAction");
+		nc.ui.wa.paydata.action.CheckAction bean = new nc.ui.wa.paydata.action.CheckAction();
+		context.put("CheckAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.UnCheckAction getUnCheckAction() {
+		if (context.get("UnCheckAction") != null)
+			return (nc.ui.wa.paydata.action.UnCheckAction) context
+					.get("UnCheckAction");
+		nc.ui.wa.paydata.action.UnCheckAction bean = new nc.ui.wa.paydata.action.UnCheckAction();
+		context.put("UnCheckAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.ReTotalAction getReTotalAction() {
+		if (context.get("ReTotalAction") != null)
+			return (nc.ui.wa.paydata.action.ReTotalAction) context
+					.get("ReTotalAction");
+		nc.ui.wa.paydata.action.ReTotalAction bean = new nc.ui.wa.paydata.action.ReTotalAction();
+		context.put("ReTotalAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.WaTimesCollectAction getWaTimesCollectAction() {
+		if (context.get("WaTimesCollectAction") != null)
+			return (nc.ui.wa.paydata.action.WaTimesCollectAction) context
+					.get("WaTimesCollectAction");
+		nc.ui.wa.paydata.action.WaTimesCollectAction bean = new nc.ui.wa.paydata.action.WaTimesCollectAction();
+		context.put("WaTimesCollectAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.PayAction getPayAction() {
+		if (context.get("PayAction") != null)
+			return (nc.ui.wa.paydata.action.PayAction) context.get("PayAction");
+		nc.ui.wa.paydata.action.PayAction bean = new nc.ui.wa.paydata.action.PayAction();
+		context.put("PayAction", bean);
+		bean.setEditor(getPaydataInfoEditor());
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.UnPayAction getUnPayAction() {
+		if (context.get("UnPayAction") != null)
+			return (nc.ui.wa.paydata.action.UnPayAction) context
+					.get("UnPayAction");
+		nc.ui.wa.paydata.action.UnPayAction bean = new nc.ui.wa.paydata.action.UnPayAction();
+		context.put("UnPayAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		bean.setOrgpanel(getOrgpanel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.OnTimeCacuAction getOnTimeCaculateAction() {
+		if (context.get("OnTimeCaculateAction") != null)
+			return (nc.ui.wa.paydata.action.OnTimeCacuAction) context
+					.get("OnTimeCaculateAction");
+		nc.ui.wa.paydata.action.OnTimeCacuAction bean = new nc.ui.wa.paydata.action.OnTimeCacuAction();
+		context.put("OnTimeCaculateAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.SpecialPsnAction getSpecialPsnAction() {
+		if (context.get("SpecialPsnAction") != null)
+			return (nc.ui.wa.paydata.action.SpecialPsnAction) context
+					.get("SpecialPsnAction");
+		nc.ui.wa.paydata.action.SpecialPsnAction bean = new nc.ui.wa.paydata.action.SpecialPsnAction();
+		context.put("SpecialPsnAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.actions.FirstLineAction getFirstLineAction() {
+		if (context.get("FirstLineAction") != null)
+			return (nc.ui.uif2.actions.FirstLineAction) context
+					.get("FirstLineAction");
+		nc.ui.uif2.actions.FirstLineAction bean = new nc.ui.uif2.actions.FirstLineAction();
+		context.put("FirstLineAction", bean);
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.actions.NextLineAction getNextLineAction() {
+		if (context.get("NextLineAction") != null)
+			return (nc.ui.uif2.actions.NextLineAction) context
+					.get("NextLineAction");
+		nc.ui.uif2.actions.NextLineAction bean = new nc.ui.uif2.actions.NextLineAction();
+		context.put("NextLineAction", bean);
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.actions.PreLineAction getPreLineAction() {
+		if (context.get("PreLineAction") != null)
+			return (nc.ui.uif2.actions.PreLineAction) context
+					.get("PreLineAction");
+		nc.ui.uif2.actions.PreLineAction bean = new nc.ui.uif2.actions.PreLineAction();
+		context.put("PreLineAction", bean);
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.actions.LastLineAction getLastLineAction() {
+		if (context.get("LastLineAction") != null)
+			return (nc.ui.uif2.actions.LastLineAction) context
+					.get("LastLineAction");
+		nc.ui.uif2.actions.LastLineAction bean = new nc.ui.uif2.actions.LastLineAction();
+		context.put("LastLineAction", bean);
+		bean.setModel(getManageAppModel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.ExportXlsAction getExportXlsAction() {
+		if (context.get("ExportXlsAction") != null)
+			return (nc.ui.wa.paydata.action.ExportXlsAction) context
+					.get("ExportXlsAction");
+		nc.ui.wa.paydata.action.ExportXlsAction bean = new nc.ui.wa.paydata.action.ExportXlsAction();
+		context.put("ExportXlsAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setView(getListView());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.ImportXlsAction getImportXlsAction() {
+		if (context.get("ImportXlsAction") != null)
+			return (nc.ui.wa.paydata.action.ImportXlsAction) context
+					.get("ImportXlsAction");
+		nc.ui.wa.paydata.action.ImportXlsAction bean = new nc.ui.wa.paydata.action.ImportXlsAction();
+		context.put("ImportXlsAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setEditorModel(getPaydataInfoEditor());
+		bean.setOrgpanel(getOrgpanel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+	
+	
+		public nc.ui.wa.paydata.action.SalarySendAction getSalarySendAction() {
+		if (context.get("SalarySendAction") != null)
+			return (nc.ui.wa.paydata.action.SalarySendAction) context
+					.get("SalarySendAction");
+		nc.ui.wa.paydata.action.SalarySendAction bean = new nc.ui.wa.paydata.action.SalarySendAction();
+		context.put("SalarySendAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setEditorModel(getPaydataInfoEditor());
+		bean.setOrgpanel(getOrgpanel());
+		bean.setDataManager(getModelDataManager());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.funcnode.ui.action.GroupAction getCheckGroupAction() {
+		if (context.get("CheckGroupAction") != null)
+			return (nc.funcnode.ui.action.GroupAction) context
+					.get("CheckGroupAction");
+		nc.funcnode.ui.action.GroupAction bean = new nc.funcnode.ui.action.GroupAction();
+		context.put("CheckGroupAction", bean);
+		bean.setCode("checkgroup");
+		bean.setName(getI18nFB_69c93a());
+		bean.setActions(getManagedList5());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private java.lang.String getI18nFB_69c93a() {
+		if (context.get("nc.ui.uif2.I18nFB#69c93a") != null)
+			return (java.lang.String) context.get("nc.ui.uif2.I18nFB#69c93a");
+		nc.ui.uif2.I18nFB bean = new nc.ui.uif2.I18nFB();
+		context.put("&nc.ui.uif2.I18nFB#69c93a", bean);
+		bean.setResDir("xmlcode");
+		bean.setDefaultValue("审核操作");
+		bean.setResId("X60130024");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		try {
+			Object product = bean.getObject();
+			context.put("nc.ui.uif2.I18nFB#69c93a", product);
+			return (java.lang.String) product;
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	private List getManagedList5() {
+		List list = new ArrayList();
+		list.add(getCheckAction());
+		list.add(getUnCheckAction());
+		return list;
+	}
+
+	public nc.funcnode.ui.action.GroupAction getPayGroupAction() {
+		if (context.get("PayGroupAction") != null)
+			return (nc.funcnode.ui.action.GroupAction) context
+					.get("PayGroupAction");
+		nc.funcnode.ui.action.GroupAction bean = new nc.funcnode.ui.action.GroupAction();
+		context.put("PayGroupAction", bean);
+		bean.setCode("paygroup");
+		bean.setName(getI18nFB_11a22f3());
+		bean.setActions(getManagedList6());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private java.lang.String getI18nFB_11a22f3() {
+		if (context.get("nc.ui.uif2.I18nFB#11a22f3") != null)
+			return (java.lang.String) context.get("nc.ui.uif2.I18nFB#11a22f3");
+		nc.ui.uif2.I18nFB bean = new nc.ui.uif2.I18nFB();
+		context.put("&nc.ui.uif2.I18nFB#11a22f3", bean);
+		bean.setResDir("xmlcode");
+		bean.setDefaultValue("发放操作");
+		bean.setResId("X60130025");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		try {
+			Object product = bean.getObject();
+			context.put("nc.ui.uif2.I18nFB#11a22f3", product);
+			return (java.lang.String) product;
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	private List getManagedList6() {
+		List list = new ArrayList();
+		list.add(getPayAction());
+		list.add(getUnPayAction());
+		return list;
+	}
+
+	public nc.funcnode.ui.action.GroupAction getPrintGroupAction() {
+		if (context.get("PrintGroupAction") != null)
+			return (nc.funcnode.ui.action.GroupAction) context
+					.get("PrintGroupAction");
+		nc.funcnode.ui.action.GroupAction bean = new nc.funcnode.ui.action.GroupAction();
+		context.put("PrintGroupAction", bean);
+		bean.setCode("print");
+		bean.setName(getI18nFB_eca60a());
+		bean.setActions(getManagedList7());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private java.lang.String getI18nFB_eca60a() {
+		if (context.get("nc.ui.uif2.I18nFB#eca60a") != null)
+			return (java.lang.String) context.get("nc.ui.uif2.I18nFB#eca60a");
+		nc.ui.uif2.I18nFB bean = new nc.ui.uif2.I18nFB();
+		context.put("&nc.ui.uif2.I18nFB#eca60a", bean);
+		bean.setResDir("xmlcode");
+		bean.setDefaultValue("打印");
+		bean.setResId("X60130002");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		try {
+			Object product = bean.getObject();
+			context.put("nc.ui.uif2.I18nFB#eca60a", product);
+			return (java.lang.String) product;
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	private List getManagedList7() {
+		List list = new ArrayList();
+		list.add(getPrintAction());
+		list.add(getPreviewAction());
+		list.add(getOutputAction());
+		list.add(getNullaction());
+		list.add(getTemplatePrintAction());
+		list.add(getTemplatePreviewAction());
+		return list;
+	}
+
+	public nc.funcnode.ui.action.MenuAction getAssistFunctionAction() {
+		if (context.get("assistFunctionAction") != null)
+			return (nc.funcnode.ui.action.MenuAction) context
+					.get("assistFunctionAction");
+		nc.funcnode.ui.action.MenuAction bean = new nc.funcnode.ui.action.MenuAction();
+		context.put("assistFunctionAction", bean);
+		bean.setCode("assistFunction");
+		bean.setName(getI18nFB_88eb69());
+		bean.setActions(getManagedList8());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private java.lang.String getI18nFB_88eb69() {
+		if (context.get("nc.ui.uif2.I18nFB#88eb69") != null)
+			return (java.lang.String) context.get("nc.ui.uif2.I18nFB#88eb69");
+		nc.ui.uif2.I18nFB bean = new nc.ui.uif2.I18nFB();
+		context.put("&nc.ui.uif2.I18nFB#88eb69", bean);
+		bean.setResDir("xmlcode");
+		bean.setDefaultValue("关联功能");
+		bean.setResId("X60130026");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		try {
+			Object product = bean.getObject();
+			context.put("nc.ui.uif2.I18nFB#88eb69", product);
+			return (java.lang.String) product;
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	private List getManagedList8() {
+		List list = new ArrayList();
+		list.add(getTransferWaRedataAction());
+		list.add(getTransferPayleaveAction());
+		list.add(getNullaction());
+		list.add(getTransferPayApplyAction());
+		list.add(getNullaction());
+		list.add(getTransferAmoAction());
+		list.add(getTransferDatainterfaceAction());
+		list.add(getTransferWabankAction());
+		list.add(getNullaction());
+		list.add(getTransferMonthEndAction());
+		return list;
+	}
+
+	public nc.ui.wa.paydata.action.TransferPayleaveAction getTransferPayleaveAction() {
+		if (context.get("transferPayleaveAction") != null)
+			return (nc.ui.wa.paydata.action.TransferPayleaveAction) context
+					.get("transferPayleaveAction");
+		nc.ui.wa.paydata.action.TransferPayleaveAction bean = new nc.ui.wa.paydata.action.TransferPayleaveAction();
+		context.put("transferPayleaveAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOpeningFunCode("60130payleave");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.TransferWaRedataAction getTransferWaRedataAction() {
+		if (context.get("transferWaRedataAction") != null)
+			return (nc.ui.wa.paydata.action.TransferWaRedataAction) context
+					.get("transferWaRedataAction");
+		nc.ui.wa.paydata.action.TransferWaRedataAction bean = new nc.ui.wa.paydata.action.TransferWaRedataAction();
+		context.put("transferWaRedataAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOpeningFunCode("60130repaydata");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.TransferPayApplyAction getTransferPayApplyAction() {
+		if (context.get("transferPayApplyAction") != null)
+			return (nc.ui.wa.paydata.action.TransferPayApplyAction) context
+					.get("transferPayApplyAction");
+		nc.ui.wa.paydata.action.TransferPayApplyAction bean = new nc.ui.wa.paydata.action.TransferPayApplyAction();
+		context.put("transferPayApplyAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOpeningFunCode("60130payslipaly");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.TransferAmoAction getTransferAmoAction() {
+		if (context.get("transferAmoAction") != null)
+			return (nc.ui.wa.paydata.action.TransferAmoAction) context
+					.get("transferAmoAction");
+		nc.ui.wa.paydata.action.TransferAmoAction bean = new nc.ui.wa.paydata.action.TransferAmoAction();
+		context.put("transferAmoAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOpeningFunCode("60130payamo");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.TransferWabankAction getTransferWabankAction() {
+		if (context.get("transferWabankAction") != null)
+			return (nc.ui.wa.paydata.action.TransferWabankAction) context
+					.get("transferWabankAction");
+		nc.ui.wa.paydata.action.TransferWabankAction bean = new nc.ui.wa.paydata.action.TransferWabankAction();
+		context.put("transferWabankAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOpeningFunCode("60130bankitf");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.TransferDatainterfaceAction getTransferDatainterfaceAction() {
+		if (context.get("transferDatainterfaceAction") != null)
+			return (nc.ui.wa.paydata.action.TransferDatainterfaceAction) context
+					.get("transferDatainterfaceAction");
+		nc.ui.wa.paydata.action.TransferDatainterfaceAction bean = new nc.ui.wa.paydata.action.TransferDatainterfaceAction();
+		context.put("transferDatainterfaceAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOpeningFunCode("60130dataitf");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.TransferMonthEndAction getTransferMonthEndAction() {
+		if (context.get("transferMonthEndAction") != null)
+			return (nc.ui.wa.paydata.action.TransferMonthEndAction) context
+					.get("transferMonthEndAction");
+		nc.ui.wa.paydata.action.TransferMonthEndAction bean = new nc.ui.wa.paydata.action.TransferMonthEndAction();
+		context.put("transferMonthEndAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setOpeningFunCode("60130monthend");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.DirectPrintAction getPreviewAction() {
+		if (context.get("PreviewAction") != null)
+			return (nc.ui.wa.paydata.action.DirectPrintAction) context
+					.get("PreviewAction");
+		nc.ui.wa.paydata.action.DirectPrintAction bean = new nc.ui.wa.paydata.action.DirectPrintAction();
+		context.put("PreviewAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDirectPrint(false);
+		bean.setListView(getListView());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.action.DirectPrintAction getPrintAction() {
+		if (context.get("PrintAction") != null)
+			return (nc.ui.wa.paydata.action.DirectPrintAction) context
+					.get("PrintAction");
+		nc.ui.wa.paydata.action.DirectPrintAction bean = new nc.ui.wa.paydata.action.DirectPrintAction();
+		context.put("PrintAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDirectPrint(true);
+		bean.setListView(getListView());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.pub.WaOutputAction getOutputAction() {
+		if (context.get("outputAction") != null)
+			return (nc.ui.wa.pub.WaOutputAction) context.get("outputAction");
+		nc.ui.wa.pub.WaOutputAction bean = new nc.ui.wa.pub.WaOutputAction();
+		context.put("outputAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setListView(getListView());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.model.PaydataDataSource getDatasource() {
+		if (context.get("datasource") != null)
+			return (nc.ui.wa.paydata.model.PaydataDataSource) context
+					.get("datasource");
+		nc.ui.wa.paydata.model.PaydataDataSource bean = new nc.ui.wa.paydata.model.PaydataDataSource();
+		context.put("datasource", bean);
+		bean.setModel(getManageAppModel());
+		bean.setListView(getListView());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.pub.action.WaTemplatePreviewAction getTemplatePreviewAction() {
+		if (context.get("TemplatePreviewAction") != null)
+			return (nc.ui.wa.pub.action.WaTemplatePreviewAction) context
+					.get("TemplatePreviewAction");
+		nc.ui.wa.pub.action.WaTemplatePreviewAction bean = new nc.ui.wa.pub.action.WaTemplatePreviewAction();
+		context.put("TemplatePreviewAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDatasource(getDatasource());
+		bean.setNodeKey("paydata");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.pub.action.WaTemplatePrintAction getTemplatePrintAction() {
+		if (context.get("TemplatePrintAction") != null)
+			return (nc.ui.wa.pub.action.WaTemplatePrintAction) context
+					.get("TemplatePrintAction");
+		nc.ui.wa.pub.action.WaTemplatePrintAction bean = new nc.ui.wa.pub.action.WaTemplatePrintAction();
+		context.put("TemplatePrintAction", bean);
+		bean.setModel(getManageAppModel());
+		bean.setDatasource(getDatasource());
+		bean.setNodeKey("paydata");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.view.PaydataListView getListView() {
+		if (context.get("listView") != null)
+			return (nc.ui.wa.paydata.view.PaydataListView) context
+					.get("listView");
+		nc.ui.wa.paydata.view.PaydataListView bean = new nc.ui.wa.paydata.view.PaydataListView();
+		context.put("listView", bean);
+		bean.setModel(getManageAppModel());
+		bean.setMultiSelectionEnable(false);
+		bean.setTemplateContainer(getTemplateContainer());
+		bean.setBillListPanelValueSetter(getAppendableBillListPanelSetter_11742fa());
+		bean.setDataManager(getModelDataManager());
+		bean.initUI();
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.hr.append.model.AppendableBillListPanelSetter getAppendableBillListPanelSetter_11742fa() {
+		if (context
+				.get("nc.ui.hr.append.model.AppendableBillListPanelSetter#11742fa") != null)
+			return (nc.ui.hr.append.model.AppendableBillListPanelSetter) context
+					.get("nc.ui.hr.append.model.AppendableBillListPanelSetter#11742fa");
+		nc.ui.hr.append.model.AppendableBillListPanelSetter bean = new nc.ui.hr.append.model.AppendableBillListPanelSetter();
+		context.put(
+				"nc.ui.hr.append.model.AppendableBillListPanelSetter#11742fa",
+				bean);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.editor.value.BillCardPanelHeadVOValueAdapter getComponentValueManager() {
+		if (context.get("componentValueManager") != null)
+			return (nc.ui.uif2.editor.value.BillCardPanelHeadVOValueAdapter) context
+					.get("componentValueManager");
+		nc.ui.uif2.editor.value.BillCardPanelHeadVOValueAdapter bean = new nc.ui.uif2.editor.value.BillCardPanelHeadVOValueAdapter();
+		context.put("componentValueManager", bean);
+		bean.setHeadVOName("nc.vo.wa.paydata.DataVO");
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.view.PaydataFormEditor getBillFormEditor() {
+		if (context.get("billFormEditor") != null)
+			return (nc.ui.wa.paydata.view.PaydataFormEditor) context
+					.get("billFormEditor");
+		nc.ui.wa.paydata.view.PaydataFormEditor bean = new nc.ui.wa.paydata.view.PaydataFormEditor();
+		context.put("billFormEditor", bean);
+		bean.setModel(getManageAppModel());
+		bean.setTemplateContainer(getTemplateContainer());
+		bean.setComponentValueManager(getComponentValueManager());
+		bean.setShowOnEditState(false);
+		bean.setActions(getManagedList9());
+		bean.setDataManager(getModelDataManager());
+		bean.initUI();
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private List getManagedList9() {
+		List list = new ArrayList();
+		list.add(getFirstLineAction());
+		list.add(getPreLineAction());
+		list.add(getNextLineAction());
+		list.add(getLastLineAction());
+		return list;
+	}
+
+	public nc.ui.uif2.FunNodeClosingHandler getClosingListener() {
+		if (context.get("ClosingListener") != null)
+			return (nc.ui.uif2.FunNodeClosingHandler) context
+					.get("ClosingListener");
+		nc.ui.uif2.FunNodeClosingHandler bean = new nc.ui.uif2.FunNodeClosingHandler();
+		context.put("ClosingListener", bean);
+		bean.setModel(getManageAppModel());
+		bean.setSaveaction(getFormSaveAction());
+		bean.setCancelaction(getCancelAction());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.hr.uif2.validator.BillNotNullValidateService getBillNotNullValidator() {
+		if (context.get("billNotNullValidator") != null)
+			return (nc.ui.hr.uif2.validator.BillNotNullValidateService) context
+					.get("billNotNullValidator");
+		nc.ui.hr.uif2.validator.BillNotNullValidateService bean = new nc.ui.hr.uif2.validator.BillNotNullValidateService(
+				getBillFormEditor());
+		context.put("billNotNullValidator", bean);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.actions.ShowMeUpAction getEditorReturnAction() {
+		if (context.get("editorReturnAction") != null)
+			return (nc.ui.uif2.actions.ShowMeUpAction) context
+					.get("editorReturnAction");
+		nc.ui.uif2.actions.ShowMeUpAction bean = new nc.ui.uif2.actions.ShowMeUpAction();
+		context.put("editorReturnAction", bean);
+		bean.setGoComponent(getMainListPanel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.uif2.tangramlayout.CardLayoutToolbarPanel getEditorToolBarPanel() {
+		if (context.get("editorToolBarPanel") != null)
+			return (nc.ui.uif2.tangramlayout.CardLayoutToolbarPanel) context
+					.get("editorToolBarPanel");
+		nc.ui.uif2.tangramlayout.CardLayoutToolbarPanel bean = new nc.ui.uif2.tangramlayout.CardLayoutToolbarPanel();
+		context.put("editorToolBarPanel", bean);
+		bean.setModel(getManageAppModel());
+		bean.setTitleAction(getEditorReturnAction());
+		bean.setActions(getManagedList10());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private List getManagedList10() {
+		List list = new ArrayList();
+		list.add(getFirstLineAction());
+		list.add(getPreLineAction());
+		list.add(getNextLineAction());
+		list.add(getLastLineAction());
+		return list;
+	}
+
+	public nc.ui.uif2.TangramContainer getContainer() {
+		if (context.get("container") != null)
+			return (nc.ui.uif2.TangramContainer) context.get("container");
+		nc.ui.uif2.TangramContainer bean = new nc.ui.uif2.TangramContainer();
+		context.put("container", bean);
+		bean.setTangramLayoutRoot(getTBNode_46d798());
+		bean.initUI();
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.uif2.tangramlayout.node.TBNode getTBNode_46d798() {
+		if (context.get("nc.ui.uif2.tangramlayout.node.TBNode#46d798") != null)
+			return (nc.ui.uif2.tangramlayout.node.TBNode) context
+					.get("nc.ui.uif2.tangramlayout.node.TBNode#46d798");
+		nc.ui.uif2.tangramlayout.node.TBNode bean = new nc.ui.uif2.tangramlayout.node.TBNode();
+		context.put("nc.ui.uif2.tangramlayout.node.TBNode#46d798", bean);
+		bean.setShowMode("CardLayout");
+		bean.setTabs(getManagedList11());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private List getManagedList11() {
+		List list = new ArrayList();
+		list.add(getVSNode_51f914());
+		list.add(getVSNode_1ef016d());
+		return list;
+	}
+
+	private nc.ui.uif2.tangramlayout.node.VSNode getVSNode_51f914() {
+		if (context.get("nc.ui.uif2.tangramlayout.node.VSNode#51f914") != null)
+			return (nc.ui.uif2.tangramlayout.node.VSNode) context
+					.get("nc.ui.uif2.tangramlayout.node.VSNode#51f914");
+		nc.ui.uif2.tangramlayout.node.VSNode bean = new nc.ui.uif2.tangramlayout.node.VSNode();
+		context.put("nc.ui.uif2.tangramlayout.node.VSNode#51f914", bean);
+		bean.setShowMode("NoDivider");
+		bean.setUp(getCNode_2e31cc());
+		bean.setDown(getCNode_c782a4());
+		bean.setDividerLocation(30f);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.uif2.tangramlayout.node.CNode getCNode_2e31cc() {
+		if (context.get("nc.ui.uif2.tangramlayout.node.CNode#2e31cc") != null)
+			return (nc.ui.uif2.tangramlayout.node.CNode) context
+					.get("nc.ui.uif2.tangramlayout.node.CNode#2e31cc");
+		nc.ui.uif2.tangramlayout.node.CNode bean = new nc.ui.uif2.tangramlayout.node.CNode();
+		context.put("nc.ui.uif2.tangramlayout.node.CNode#2e31cc", bean);
+		bean.setComponent(getOrgpanel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.uif2.tangramlayout.node.CNode getCNode_c782a4() {
+		if (context.get("nc.ui.uif2.tangramlayout.node.CNode#c782a4") != null)
+			return (nc.ui.uif2.tangramlayout.node.CNode) context
+					.get("nc.ui.uif2.tangramlayout.node.CNode#c782a4");
+		nc.ui.uif2.tangramlayout.node.CNode bean = new nc.ui.uif2.tangramlayout.node.CNode();
+		context.put("nc.ui.uif2.tangramlayout.node.CNode#c782a4", bean);
+		bean.setComponent(getMainListPanel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.uif2.tangramlayout.node.VSNode getVSNode_1ef016d() {
+		if (context.get("nc.ui.uif2.tangramlayout.node.VSNode#1ef016d") != null)
+			return (nc.ui.uif2.tangramlayout.node.VSNode) context
+					.get("nc.ui.uif2.tangramlayout.node.VSNode#1ef016d");
+		nc.ui.uif2.tangramlayout.node.VSNode bean = new nc.ui.uif2.tangramlayout.node.VSNode();
+		context.put("nc.ui.uif2.tangramlayout.node.VSNode#1ef016d", bean);
+		bean.setShowMode("NoDivider");
+		bean.setUp(getCNode_1b7c380());
+		bean.setDown(getCNode_1842a35());
+		bean.setDividerLocation(30f);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.uif2.tangramlayout.node.CNode getCNode_1b7c380() {
+		if (context.get("nc.ui.uif2.tangramlayout.node.CNode#1b7c380") != null)
+			return (nc.ui.uif2.tangramlayout.node.CNode) context
+					.get("nc.ui.uif2.tangramlayout.node.CNode#1b7c380");
+		nc.ui.uif2.tangramlayout.node.CNode bean = new nc.ui.uif2.tangramlayout.node.CNode();
+		context.put("nc.ui.uif2.tangramlayout.node.CNode#1b7c380", bean);
+		bean.setComponent(getEditorToolBarPanel());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private nc.ui.uif2.tangramlayout.node.CNode getCNode_1842a35() {
+		if (context.get("nc.ui.uif2.tangramlayout.node.CNode#1842a35") != null)
+			return (nc.ui.uif2.tangramlayout.node.CNode) context
+					.get("nc.ui.uif2.tangramlayout.node.CNode#1842a35");
+		nc.ui.uif2.tangramlayout.node.CNode bean = new nc.ui.uif2.tangramlayout.node.CNode();
+		context.put("nc.ui.uif2.tangramlayout.node.CNode#1842a35", bean);
+		bean.setComponent(getBillFormEditor());
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.hr.wizard.LayoutPanel getMainListPanel() {
+		if (context.get("mainListPanel") != null)
+			return (nc.ui.hr.wizard.LayoutPanel) context.get("mainListPanel");
+		nc.ui.hr.wizard.LayoutPanel bean = new nc.ui.hr.wizard.LayoutPanel(
+				getBorderLayout_f44baf());
+		context.put("mainListPanel", bean);
+		bean.setComponentMap(getManagedMap0());
+		bean.initUI();
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private java.awt.BorderLayout getBorderLayout_f44baf() {
+		if (context.get("java.awt.BorderLayout#f44baf") != null)
+			return (java.awt.BorderLayout) context
+					.get("java.awt.BorderLayout#f44baf");
+		java.awt.BorderLayout bean = new java.awt.BorderLayout();
+		context.put("java.awt.BorderLayout#f44baf", bean);
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	private Map getManagedMap0() {
+		Map map = new HashMap();
+		map.put(getListView(), "Center");
+		map.put(getPaydataInfoEditor(), "South");
+		return map;
+	}
+
+	public nc.ui.wa.pub.WaOrgHeadPanel getOrgpanel() {
+		if (context.get("orgpanel") != null)
+			return (nc.ui.wa.pub.WaOrgHeadPanel) context.get("orgpanel");
+		nc.ui.wa.pub.WaOrgHeadPanel bean = new nc.ui.wa.pub.WaOrgHeadPanel(
+				getMainListPanel());
+		context.put("orgpanel", bean);
+		bean.setModel(getManageAppModel());
+		bean.setContext(getContext());
+		bean.setDataManager(getModelDataManager());
+		bean.setPk_orgtype("HRORGTYPE00000000000");
+		bean.initUI();
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+	public nc.ui.wa.paydata.view.PaydataInfoEditor getPaydataInfoEditor() {
+		if (context.get("paydataInfoEditor") != null)
+			return (nc.ui.wa.paydata.view.PaydataInfoEditor) context
+					.get("paydataInfoEditor");
+		nc.ui.wa.paydata.view.PaydataInfoEditor bean = new nc.ui.wa.paydata.view.PaydataInfoEditor();
+		context.put("paydataInfoEditor", bean);
+		bean.setModel(getManageAppModel());
+		bean.setContext(getContext());
+		bean.setPaginationBar(getPaginationBar());
+		bean.initUI();
+		setBeanFacotryIfBeanFacatoryAware(bean);
+		invokeInitializingBean(bean);
+		return bean;
+	}
+
+}

+ 591 - 0
hrwa/hrwa/src/client/nc/ui/wa/paydata/Paydata_Config.xml

@@ -0,0 +1,591 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans>
+	<!-- 环境变量 -->
+	<bean id="context" class="nc.vo.wa.pub.WaLoginContext"></bean>
+
+	<!-- 模型部分配置 -->
+
+	<!-- 应用服务类,负责进行模型操作的处理 -->
+	<bean id="ManageModelService" class="nc.ui.wa.paydata.model.PaydataModelService" />
+
+
+	<!-- 对象转换器工厂,由此获取操作对象的特征信息 -->
+	<bean id="boadatorfactory" class="nc.ui.wa.paydata.model.PaydataIBDObjectAdapterFactory" />
+
+
+
+	<!-- 管理应用模型 -->
+	<bean id="ManageAppModel" class="nc.ui.wa.paydata.model.PaydataAppDataModel">
+		<property name="service" ref="ManageModelService"></property>
+		<property name="orderCondition" value=" org_dept_v.code , hi_psnjob.clerkcode"></property>
+		<property name="businessObjectAdapterFactory" ref="boadatorfactory">
+		</property>
+		<property name="context" ref="context"></property>
+	</bean>
+
+	<!-- 模板容器,负责对模板的统一装载 -->
+	<bean id="templateContainer" class="nc.ui.wa.paydata.model.PaydataTemplateContainer">
+		<property name="context" ref="context" />
+		<property name="paydataModel" ref="ManageAppModel"></property>
+	</bean>
+
+	<bean id="toftpanelActionContributors" class="nc.ui.uif2.actions.ActionContributors">
+		<property name="contributors">
+			<list>
+				<ref bean="listViewActions" />
+				<ref bean="cardEditorActions" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 数据模型管理器,主要负责各种方式的模型初始化 -->
+	<bean id="modelDataManager" class="nc.ui.wa.paydata.model.PaydataModelDataManager">
+		<property name="service" ref="ManageModelService"></property>
+		<property name="billtype" value="6302"></property>
+		<property name="context" ref="context"></property>
+		<property name="model" ref="ManageAppModel"></property>
+
+		<property name="paginationModel" ref="paginationModel" />
+		<property name="paginationBar" ref="paginationBar" />
+
+	</bean>
+
+	<!-- Actions -->
+	<bean id="cardEditorActions" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg>
+			<ref bean="billFormEditor" />
+		</constructor-arg>
+		<property name="actions">
+			<list>
+				<ref bean="EditAction" />
+				<ref bean="nullaction" />
+				<ref bean="RefreshAction" />
+
+			</list>
+		</property>
+		<property name="editActions">
+			<list>
+				<ref bean="FormSaveAction" />
+				<ref bean="FormSaveEditAction" />
+				<ref bean="nullaction" />
+				<ref bean="CancelAction" />
+			</list>
+		</property>
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+
+	<bean id="listViewActions" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg>
+			<ref bean="mainListPanel" />
+		</constructor-arg>
+		<property name="actions">
+			<list>
+				<ref bean="EditAction" />
+
+				<ref bean="ReplaceAction" />
+				<ref bean="SpecialPsnAction" />
+				<ref bean="nullaction" />
+				<ref bean="QueryAction" />
+				<ref bean="RefreshAction" />
+				<ref bean="nullaction" />
+				<ref bean="OnTimeCaculateAction" />
+				<ref bean="CaculateAction" />
+				<ref bean="ReTotalAction" />
+				<ref bean="WaTimesCollectAction" />
+				<ref bean="ShowDetailAction" />
+				<ref bean="CheckGroupAction" />
+				<ref bean="PayGroupAction" />
+				<ref bean="nullaction" />
+				<ref bean="assistFunctionAction" />
+				<ref bean="nullaction" />
+				<ref bean="SortAction" />
+				<ref bean="DisplayAction" />
+				<ref bean="nullaction" />
+				<ref bean="ExportXlsAction" />
+				<ref bean="PrintGroupAction" />
+				<ref bean="nullaction" />
+				<ref bean="ImportXlsAction" />
+				<ref bean="nullaction" />
+				<ref bean="SalarySendAction"/>
+				
+			</list>
+		</property>
+
+		<property name="editActions">
+			<list>
+				<ref bean="ListSaveAction" />
+				<ref bean="nullaction" />
+				<ref bean="CancelAction" />
+			</list>
+		</property>
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+
+	<bean id="nullaction" class="nc.funcnode.ui.action.SeparatorAction" />
+
+
+	<bean id="EditAction" class="nc.ui.wa.paydata.action.EditPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<bean id="QueryAction" class="nc.ui.wa.paydata.action.QueryPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="orgpanel" ref="orgpanel" />
+		<property name="dataManager" ref="modelDataManager" />
+		<property name="queryDelegator">
+			<bean class="nc.ui.wa.paydata.view.WaPaydataQueryDelegator">
+				<property name="nodeKey" value="" />
+				<property name="context" ref="context" />
+				<property name="model" ref="ManageAppModel" />
+			</bean>
+		</property>
+	</bean>
+	<bean id="FormSaveAction" class="nc.ui.wa.paydata.action.BillFormSavePaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="editor" ref="billFormEditor" />
+	</bean>
+	<bean id="FormSaveEditAction" class="nc.ui.wa.paydata.action.BillFormSaveEditPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="editor" ref="billFormEditor" />
+		<property name="nextLineAction" ref="NextLineAction" />
+		<property name="editAction" ref="EditAction" />
+	</bean>
+
+	<bean id="ListSaveAction" class="nc.ui.wa.paydata.action.BillListSavePaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="editor" ref="listView" />
+	</bean>
+
+	<bean id="CancelAction" class="nc.ui.wa.paydata.action.PaydataCancelAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+
+	<bean id="SortAction" class="nc.ui.wa.paydata.action.SortPaydataAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="listView" ref="listView" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="ReplaceAction" class="nc.ui.wa.paydata.action.ReplaceAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+
+	<bean id="DisplayAction" class="nc.ui.wa.paydata.action.DisplayAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="ShowDetailAction" class="nc.ui.wa.paydata.action.ShowDetailAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="templateContainer" ref="templateContainer"></property>
+	</bean>
+
+	<bean id="RefreshAction" class="nc.ui.wa.paydata.action.PaydataRefreshAction">
+        <property name="listView" ref="listView"/>
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+		<property name="orgpanel" ref="orgpanel" />
+		 <property name="formEditor" ref="billFormEditor" />
+	</bean>
+	
+
+	<!--
+		<bean id="ExportAction" class="nc.ui.wa.paydata.action.ExportAction">
+		<property name="model" ref="ManageAppModel" /> <property
+		name="listView" ref="listView" /> </bean>
+	-->
+
+	<!-- 分页面板 -->
+	<bean id="paginationBar" class="nc.ui.uif2.components.pagination.PaginationBar">
+		<property name="paginationModel" ref="paginationModel" />
+	</bean>
+
+	<bean id="paginationModel" class="nc.ui.uif2.components.pagination.PaginationModel"
+		init-method="init">
+		<property name="paginationQueryService" ref="ManageModelService" />
+	</bean>
+
+	<bean id="CaculateAction" class="nc.ui.wa.paydata.action.CaculateAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<!--<bean id="SubmitAction" class="nc.ui.wa.paydata.action.SubmitAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	 <bean id="CallbackAction" class="nc.ui.wa.paydata.action.CallbackAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean> -->
+	<bean id="CheckAction" class="nc.ui.wa.paydata.action.CheckAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="UnCheckAction" class="nc.ui.wa.paydata.action.UnCheckAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager" />
+	</bean>
+	<bean id="ReTotalAction" class="nc.ui.wa.paydata.action.ReTotalAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+
+	<bean id="WaTimesCollectAction" class="nc.ui.wa.paydata.action.WaTimesCollectAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+
+	<bean id="PayAction" class="nc.ui.wa.paydata.action.PayAction">
+		<property name="editor" ref="paydataInfoEditor" />
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<bean id="UnPayAction" class="nc.ui.wa.paydata.action.UnPayAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+		<property name="orgpanel" ref="orgpanel" />
+	</bean>
+	<bean id="OnTimeCaculateAction" class="nc.ui.wa.paydata.action.OnTimeCacuAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<bean id="SpecialPsnAction" class="nc.ui.wa.paydata.action.SpecialPsnAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+
+	</bean>
+	<bean id="FirstLineAction" class="nc.ui.uif2.actions.FirstLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="NextLineAction" class="nc.ui.uif2.actions.NextLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="PreLineAction" class="nc.ui.uif2.actions.PreLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="LastLineAction" class="nc.ui.uif2.actions.LastLineAction">
+		<property name="model" ref="ManageAppModel" />
+	</bean>
+	<bean id="ExportXlsAction" class="nc.ui.wa.paydata.action.ExportXlsAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="view" ref="listView" />
+	</bean>
+	
+	<bean id="ImportXlsAction" class="nc.ui.wa.paydata.action.ImportXlsAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="view" ref="listView" />
+		<property name="orgpanel" ref="orgpanel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	
+	
+	<bean id="SalarySendAction" class="nc.ui.wa.paydata.action.SalarySendAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="view" ref="listView" />
+		<property name="orgpanel" ref="orgpanel" />
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	
+	
+	<bean id="CheckGroupAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="checkgroup"></property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="审核操作" />
+				<property name="resId" value="X60130024" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="CheckAction" />
+				<ref bean="UnCheckAction" />
+			</list>
+		</property>
+	</bean>
+	<bean id="PayGroupAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="paygroup"></property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="发放操作" />
+				<property name="resId" value="X60130025" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="PayAction" />
+				<ref bean="UnPayAction" />
+			</list>
+		</property>
+	</bean>
+
+	<bean id="PrintGroupAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="print"></property>
+		<property name="name" >
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="打印" />
+				<property name="resId" value="X60130002" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="PrintAction" />
+				<ref bean="PreviewAction" />
+				<ref bean="outputAction" />
+				<ref bean="nullaction" />
+				<ref bean="TemplatePrintAction" />
+				<ref bean="TemplatePreviewAction" />
+
+
+			</list>
+		</property>
+	</bean>
+
+
+	<bean id="assistFunctionAction" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code" value="assistFunction"></property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="xmlcode" />
+				<property name="defaultValue" value="关联功能" />
+				<property name="resId" value="X60130026" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="transferWaRedataAction" />
+				<ref bean="transferPayleaveAction" />
+				<ref bean="nullaction" />
+				<ref bean="transferPayApplyAction" />
+				<ref bean="nullaction" />
+				<ref bean="transferAmoAction" />
+				<ref bean="transferDatainterfaceAction" />
+				<ref bean="transferWabankAction" />
+				<ref bean="nullaction" />
+				<ref bean="transferMonthEndAction" />
+			</list>
+		</property>
+	</bean>
+	<bean id="transferPayleaveAction" class="nc.ui.wa.paydata.action.TransferPayleaveAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130payleave"></property>
+	</bean>
+	<bean id="transferWaRedataAction" class="nc.ui.wa.paydata.action.TransferWaRedataAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130repaydata"></property>
+	</bean>
+	<bean id="transferPayApplyAction" class="nc.ui.wa.paydata.action.TransferPayApplyAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130payslipaly"></property>
+	</bean>
+	<bean id="transferAmoAction" class="nc.ui.wa.paydata.action.TransferAmoAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130payamo"></property>
+	</bean>
+	<bean id="transferWabankAction" class="nc.ui.wa.paydata.action.TransferWabankAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130bankitf"></property>
+	</bean>
+	<bean id="transferDatainterfaceAction" class="nc.ui.wa.paydata.action.TransferDatainterfaceAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130dataitf"></property>
+	</bean>
+	<bean id="transferMonthEndAction" class="nc.ui.wa.paydata.action.TransferMonthEndAction">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="openingFunCode" value="60130monthend"></property>
+	</bean>
+
+	<bean id="PreviewAction" class="nc.ui.wa.paydata.action.DirectPrintAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="directPrint" value="false" />
+		<property name="listView" ref="listView" />
+	</bean>
+	<bean id="PrintAction" class="nc.ui.wa.paydata.action.DirectPrintAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="directPrint" value="true" />
+		<property name="listView" ref="listView" />
+	</bean>
+	<bean id="outputAction" class="nc.ui.wa.pub.WaOutputAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="listView" ref="listView"/>
+	</bean> 
+	
+	<bean id="datasource" class="nc.ui.wa.paydata.model.PaydataDataSource">
+		<property name="model" ref="ManageAppModel" />
+		<property name="listView" ref="listView"/>
+	</bean>
+	 <bean id="TemplatePreviewAction" class="nc.ui.wa.pub.action.WaTemplatePreviewAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="datasource" ref="datasource" />
+		<property name="nodeKey" value="paydata" />
+		
+	</bean>
+	<bean id="TemplatePrintAction" class="nc.ui.wa.pub.action.WaTemplatePrintAction">
+		<property name="model" ref="ManageAppModel" />
+		<property name="datasource" ref="datasource" />
+		 <property name="nodeKey" value="paydata" />
+	</bean> 
+	<!-- 界面元素 -->
+	<!-- 列表视图 -->
+	<bean id="listView" class="nc.ui.wa.paydata.view.PaydataListView"
+		init-method="initUI">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="multiSelectionEnable">
+			<value>false</value>
+		</property>
+		<!--property name="pos"><value>head</value></property-->
+		<property name="templateContainer" ref="templateContainer"></property>
+		<property name="billListPanelValueSetter">
+			<bean class="nc.ui.hr.append.model.AppendableBillListPanelSetter">
+			</bean>
+		</property>
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+	<!--卡控件-->
+	<bean id="componentValueManager" class="nc.ui.uif2.editor.value.BillCardPanelHeadVOValueAdapter">
+		<property name="headVOName" value="nc.vo.wa.paydata.DataVO"></property>
+	</bean>
+	<bean id="billFormEditor" class="nc.ui.wa.paydata.view.PaydataFormEditor"
+		init-method="initUI">
+		<property name="model" ref="ManageAppModel"></property>
+		<property name="templateContainer" ref="templateContainer" />
+		<property name="componentValueManager" ref="componentValueManager">
+		</property>
+		<property name="showOnEditState" value="false"></property>
+		<property name="actions">
+			<list>
+				<ref bean="FirstLineAction" />
+				<ref bean="PreLineAction" />
+				<ref bean="NextLineAction" />
+				<ref bean="LastLineAction" />
+			</list>
+		</property>
+		<property name="dataManager" ref="modelDataManager"></property>
+	</bean>
+
+
+
+
+	<bean id="ClosingListener" class="nc.ui.uif2.FunNodeClosingHandler">
+		<property name="model" ref="ManageAppModel" />
+		<property name="saveaction" ref="FormSaveAction" />
+		<property name="cancelaction" ref="CancelAction" />
+	</bean>
+	<bean id="billNotNullValidator" class="nc.ui.hr.uif2.validator.BillNotNullValidateService">
+		<constructor-arg ref="billFormEditor">
+		</constructor-arg>
+	</bean>
+
+
+
+	<bean id="editorReturnAction" class="nc.ui.uif2.actions.ShowMeUpAction">
+		<property name="goComponent" ref="mainListPanel" />
+	</bean>
+
+	<bean id="editorToolBarPanel" class="nc.ui.uif2.tangramlayout.CardLayoutToolbarPanel">
+		<property name="model" ref="ManageAppModel" />
+		<property name="titleAction" ref="editorReturnAction" />
+		<property name="actions">
+			<list>
+				<ref bean="FirstLineAction" />
+				<ref bean="PreLineAction" />
+				<ref bean="NextLineAction" />
+				<ref bean="LastLineAction" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 界面布局总装 -->
+	<bean id="container" class="nc.ui.uif2.TangramContainer"
+		init-method="initUI">
+		<property name="tangramLayoutRoot">
+			<bean class="nc.ui.uif2.tangramlayout.node.TBNode">
+				<property name="showMode" value="CardLayout" />
+				<property name="tabs">
+					<list>
+						<bean class="nc.ui.uif2.tangramlayout.node.VSNode">
+							<property name="showMode" value="NoDivider" />
+							<property name="up">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="orgpanel" />
+								</bean>
+							</property>
+							<property name="down">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="mainListPanel"></property>
+								</bean>
+							</property>
+							<property name="dividerLocation" value="30f" />
+						</bean>
+
+						<bean class="nc.ui.uif2.tangramlayout.node.VSNode">
+							<property name="showMode" value="NoDivider" />
+							<property name="up">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="editorToolBarPanel" />
+								</bean>
+							</property>
+							<property name="down">
+								<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+									<property name="component" ref="billFormEditor" />
+								</bean>
+							</property>
+							<property name="dividerLocation" value="30f" />
+						</bean>
+					</list>
+				</property>
+			</bean>
+
+		</property>
+	</bean>
+
+	<!-- 界面零件 -->
+	<bean id="mainListPanel" class="nc.ui.hr.wizard.LayoutPanel"
+		init-method="initUI">
+		<constructor-arg>
+			<bean class="java.awt.BorderLayout"></bean>
+		</constructor-arg>
+		<property name="componentMap">
+			<map>
+				<entry key-ref="listView" value="Center"></entry>
+				<entry key-ref="paydataInfoEditor" value="South"></entry>
+
+				<!--<entry key-ref="paginationBar" value="South"></entry>-->
+			</map>
+		</property>
+	</bean>
+
+	<bean id="orgpanel" class="nc.ui.wa.pub.WaOrgHeadPanel"
+		init-method="initUI">
+		<constructor-arg>
+			<ref bean="mainListPanel" />
+		</constructor-arg>
+		<property name="model" ref="ManageAppModel" />
+		<property name="context" ref="context"></property>
+		<property name="dataManager" ref="modelDataManager" />
+		<property name="pk_orgtype" value="HRORGTYPE00000000000" />
+	</bean>
+	<!-- 发放信息 -->
+
+
+	<bean id="paydataInfoEditor" class="nc.ui.wa.paydata.view.PaydataInfoEditor"
+		init-method="initUI">
+		<property name="model" ref="ManageAppModel" />
+		<property name="context" ref="context"></property>
+		<property name="paginationBar" ref="paginationBar"></property>
+
+	</bean>
+
+
+
+</beans>
+
+

+ 288 - 0
hrwa/hrwa/src/client/nc/ui/wa/paydata/action/ImportXlsAction.java

@@ -0,0 +1,288 @@
+package nc.ui.wa.paydata.action;
+
+import java.awt.event.ActionEvent;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileNameExtensionFilter;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.hrwa.IPaydataMaintain;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ArrayListProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.pub.templet.converter.util.helper.ExceptionUtils;
+import nc.ui.pub.beans.MessageDialog;
+import nc.ui.pub.report.ReportBaseClass;
+import nc.ui.uif2.model.AbstractUIAppModel;
+import nc.ui.wa.paydata.model.PaydataModelDataManager;
+import nc.ui.wa.paydata.view.PaydataInfoEditor;
+import nc.ui.wa.pub.WaOrgHeadPanel;
+import nc.vo.jcom.lang.StringUtil;
+
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+public class ImportXlsAction extends PayDataBaseAction {
+	private IUAPQueryBS iuap = (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+	
+	IPaydataMaintain wadataService = (IPaydataMaintain) NCLocator.getInstance().lookup(IPaydataMaintain.class.getName());
+	
+	private PaydataInfoEditor editorModel;
+	
+	protected AbstractUIAppModel model;
+
+	private WaOrgHeadPanel orgpanel = null;
+	
+	private PaydataModelDataManager dataManager = null;
+	
+	public PaydataModelDataManager getDataManager() {
+		return dataManager;
+	}
+
+	public void setDataManager(PaydataModelDataManager dataManager) {
+		this.dataManager = dataManager;
+	}
+	
+	public WaOrgHeadPanel getOrgpanel() {
+		return orgpanel;
+	}
+
+	public void setOrgpanel(WaOrgHeadPanel orgpanel) {
+		this.orgpanel = orgpanel;
+	}
+
+	public AbstractUIAppModel getModel() {
+		return model;
+	}
+
+	public void setModel(AbstractUIAppModel arapBillCardForm) {
+		this.model = arapBillCardForm;
+	}
+
+	public PaydataInfoEditor getEditorModel() {
+		return editorModel;
+	}
+
+	public void setEditorModel(PaydataInfoEditor paydataInfoEditor) {
+		this.editorModel = paydataInfoEditor;
+	}
+
+
+
+	private static JFileChooser m_chooser = null;
+	private static ReportBaseClass tp;
+
+
+	public ImportXlsAction() {
+		super.setBtnName("薪资导入");
+		super.setCode("importXlsAction");
+	}
+
+	/**
+	 * 获得文件选择器
+	 * 
+	 * @author conn
+	 * @return
+	 * @return JFileChooser
+	 * @date 2019-9-10
+	 */
+	public JFileChooser getChooser() {
+		if (m_chooser == null) {
+			m_chooser = new JFileChooser();
+			m_chooser.setDialogType(JFileChooser.SAVE_DIALOG);
+		}
+		return m_chooser;
+	}
+
+	@Override
+	public void doAction(ActionEvent e) throws Exception {
+		ImportData();
+	}
+
+	/**
+	 * Excel数据导入
+	 * 
+	 * @throws Exception
+	 */
+	public void ImportData() throws Exception {
+		String waPeriod = getOrgpanel().getWaPeriodRefPane().getRefPK();
+		String pkWaclass =  getOrgpanel().getWaClassRefPane().getRefPK();
+		String pkOrg =  getOrgpanel().getRefPane().getRefPK();
+		if(StringUtil.isEmpty(pkOrg)){
+			ExceptionUtils.wrapException(new Exception("人力资源组织为空,请选择!"));
+		}else if(StringUtil.isEmpty(pkWaclass)){
+			ExceptionUtils.wrapException(new Exception("薪资方案为空,请选择!"));
+		}else if(StringUtil.isEmpty(waPeriod)){
+			ExceptionUtils.wrapException(new Exception("薪资期间为空,请选择!"));
+		}
+
+
+		String filePath = null;
+		FileInputStream fis = null;
+		XSSFWorkbook hw = null;
+		// new一个新的文件选择器并打开
+		JFileChooser jfile = new JFileChooser();
+		jfile.setDialogType(JFileChooser.SAVE_DIALOG);
+		jfile.setFileFilter(new FileNameExtensionFilter("Excel Files", "xlsx"));
+		if (jfile.showSaveDialog(tp) == JFileChooser.CANCEL_OPTION) {
+			return;
+		}
+
+		// 获得选择的文件名
+		filePath = jfile.getSelectedFile().toString();
+		try {
+			fis = new FileInputStream(filePath);
+		} catch (FileNotFoundException e) {
+			ExceptionUtils.wrapException(new Exception(e.getMessage()));
+			e.printStackTrace();
+		}
+		try {
+			hw = new XSSFWorkbook(fis);
+		} catch (IOException e) {
+			e.printStackTrace();
+			ExceptionUtils.wrapException(new Exception(e.getMessage()));
+		} finally {
+			try {
+				fis.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+				ExceptionUtils.wrapException(new Exception(e.getMessage()));
+			}
+		}
+		// sheet 从0开始
+		XSSFSheet sheet = hw.getSheetAt(0);
+		// 行长度
+		int totalRows = sheet.getPhysicalNumberOfRows();// 行数
+		int totalCells = sheet.getRow(0).getLastCellNum();// 列数
+		if (totalRows <= 0) {
+			ExceptionUtils.wrapException(new Exception("Excel为空,请检查!"));
+		}
+		//获取第一行列名
+		Map<Object,String> headline = new HashMap<Object,String>();
+		Map<String,String> classItemMap = getClassItem(pkOrg, pkWaclass, waPeriod);
+		for (int i = 1; i < totalRows; i++) {
+			String name = sheet.getRow(i).getCell(0).getStringCellValue();// 姓名
+			//姓名为空表示整个Excle数据已经读取结束
+			if(name == null || "".equals(name)) {
+				return;
+			}
+			String pk_psndoc = getPk_psndocByName(name, pkOrg);
+			StringBuilder updateSQL = new StringBuilder("UPDATE wa_data SET");
+			for (int j = 1; j < totalCells; j++) {
+				String headlineName = sheet.getRow(0).getCell(j).getStringCellValue();
+				//第一行列名为空表示标题已经读取结束
+				if(headlineName == null || "".equals(headlineName)) {
+					break;
+				}
+				headline.put(j, headlineName);
+				updateSQL.append(" "+checkData(headlineName, classItemMap)+" = " + dateUnit(sheet, i, j) + ",");
+			}
+			updateSQL.append(" ts = sysdate");
+			updateSQL.append(" WHERE");
+			updateSQL.append(" pk_psndoc = '" + pk_psndoc + "' and pk_org = '"
+					+ pkOrg + "' and cyearperiod = '" + waPeriod
+					+ "' and pk_wa_class = '" + pkWaclass + "'");
+			wadataService.executeBaseDAO(updateSQL.toString());
+		}
+		MessageDialog.showHintsDlg(null, "提示", "导入成功!");
+		
+		dataManager.refresh();
+	}
+	
+	
+	/**
+	 * 获取薪资发放项目对应的列
+	 * @param pkOrg 组织
+	 * @param pkWaclass 薪资方案
+	 * @param waPeriod 年月期间
+	 * @return
+	 * @throws Exception
+	 */
+	private Map<String,String> getClassItem(String pkOrg, String pkWaclass, String waPeriod) throws Exception{
+		//取年份
+		String cyear = waPeriod.substring(0, 4);
+		//取月份
+		String cperiod = waPeriod.substring(4, 6);
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT");
+		sql.append(" name,");
+		sql.append(" itemkey");
+		sql.append(" FROM ");
+		sql.append(" wa_classitem");
+		sql.append(" WHERE");
+		sql.append(" pk_org = '"+pkOrg+"'");
+		sql.append(" AND pk_wa_class = '"+pkWaclass+"'");
+		sql.append(" AND cyear = '"+cyear+"' AND cperiod = '"+cperiod+"'");
+		List<Object[]> list = (List<Object[]>) iuap.executeQuery(sql.toString(), new ArrayListProcessor());
+		Map<String,String> map = new HashMap<String,String>();
+		for (int i = 0; i < list.size(); i++) {
+			map.put(list.get(i)[0].toString(), list.get(i)[1].toString());
+		}
+		return map;
+	}
+	
+	/**
+	 * 获取薪资发放项目对应的key
+	 * @param key
+	 * @param map
+	 * @return
+	 * @throws Exception
+	 */
+	private String checkData(String key, Map<String,String> map) throws Exception {
+		String value = map.get(key);
+		if(value == null) {
+			throw new Exception("获取薪资发放项目 '"+key+"' 对应的列失败!");
+		}
+		return value;
+	}
+	/*
+	 * 不必填数据处理
+	 */
+	private Double dateUnit(XSSFSheet sheet, int i, int j) {
+		if(sheet.getRow(i).getCell(j) == null) {
+			return 0.00;
+		}else {
+			//等于3表示空字符
+			if(sheet.getRow(i).getCell(j).getCellType() == 3) {
+				return 0.00;
+			}else {
+				return sheet.getRow(i).getCell(j).getNumericCellValue();
+			}	
+		}
+	}
+
+	/**
+	 * 将Object转换成适用sql拼接字符
+	 * 
+	 * @param value
+	 * @return
+	 */
+	private String getString(Object value) {
+		if ("".equals(value) || value == null) {
+			return null;
+		}
+		return "'" + value + "'";
+
+	}
+
+	/*
+	 * 数据库查询
+	 */
+	private String getPk_psndocByName(String name, String pkOrg)
+			throws Exception {
+		String sql = "select pk_psndoc  from bd_psndoc where name='" + name
+				+ "' and pk_org='" + pkOrg + "'";
+		String pk_psndoc = (String) iuap.executeQuery(sql, new ColumnProcessor());
+		if(pk_psndoc == null) {
+			throw new Exception("获取人员信息失败,未找到与参数" + name + "有关的数据!");
+		}
+		return pk_psndoc;
+	}
+
+}

+ 279 - 0
hrwa/hrwa/src/client/nc/ui/wa/paydata/action/SalarySendAction.java

@@ -0,0 +1,279 @@
+package nc.ui.wa.paydata.action;
+
+import java.awt.event.ActionEvent;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.framework.common.NCLocator;
+import nc.bs.hr.gy_zsgl.plugin.Base64Util;
+import nc.bs.hr.gy_zsgl.plugin.MD5Util;
+import nc.bs.hr.gy_zsgl.plugin.SmsRequest;
+import nc.bs.hr.gy_zsgl.plugin.SmsResponse;
+import nc.itf.bd.psn.psndoc.IPsndocQueryService;
+import nc.itf.hrwa.IPaydataMaintain;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ArrayListProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.jeecg.common.util.HttpHelper;
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+import nc.ui.pub.beans.MessageDialog;
+import nc.ui.uif2.ShowStatusBarMsgUtil;
+import nc.ui.uif2.model.AbstractUIAppModel;
+import nc.ui.wa.paydata.model.PaydataModelDataManager;
+import nc.ui.wa.paydata.view.PaydataInfoEditor;
+import nc.ui.wa.pub.WaOrgHeadPanel;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.jcom.lang.StringUtil;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.wa.paydata.DataVO;
+
+public class SalarySendAction extends PayDataBaseAction{
+	
+	/**
+	 * 薪资发送按钮
+	 * 发送短信给员工
+	 */
+	private static final long serialVersionUID = -2837557144503329323L;
+
+	
+	private PaydataInfoEditor editorModel;
+	
+	protected AbstractUIAppModel model;
+
+	private WaOrgHeadPanel orgpanel = null;
+	
+	private PaydataModelDataManager dataManager = null;
+		
+	 private IPsndocQueryService ipsndocqs = null;
+	 
+	 public IPsndocQueryService getIpsndocQueryService(){
+		 
+		 if(null==ipsndocqs){
+			 ipsndocqs =  (IPsndocQueryService) NCLocator.getInstance().lookup(IPsndocQueryService.class.getName());
+			}
+			
+			return ipsndocqs;
+		 
+	 }
+	 
+	 
+	 private  IPaydataMaintain wadataService = null;
+	 
+	 public IPaydataMaintain getIpayMaintain(){
+		 
+		 if(null==wadataService){
+			 wadataService =  (IPaydataMaintain) NCLocator.getInstance().lookup(IPaydataMaintain.class.getName());
+			}
+			
+			return wadataService;
+		 
+	 }
+	
+	
+	public PaydataModelDataManager getDataManager() {
+		return dataManager;
+	}
+
+	public void setDataManager(PaydataModelDataManager dataManager) {
+		this.dataManager = dataManager;
+	}
+	
+	public WaOrgHeadPanel getOrgpanel() {
+		return orgpanel;
+	}
+
+	public void setOrgpanel(WaOrgHeadPanel orgpanel) {
+		this.orgpanel = orgpanel;
+	}
+
+	public AbstractUIAppModel getModel() {
+		return model;
+	}
+
+	public void setModel(AbstractUIAppModel arapBillCardForm) {
+		this.model = arapBillCardForm;
+	}
+
+	public PaydataInfoEditor getEditorModel() {
+		return editorModel;
+	}
+
+	public void setEditorModel(PaydataInfoEditor paydataInfoEditor) {
+		this.editorModel = paydataInfoEditor;
+	}
+	
+	
+	public SalarySendAction() {
+		super.setBtnName("薪资发送");
+		super.setCode("salarysendAction");
+	}
+	
+	
+	@Override
+	public void doAction(ActionEvent e) throws Exception {
+		String waPeriod = getOrgpanel().getWaPeriodRefPane().getRefPK();
+		String pkWaclass =  getOrgpanel().getWaClassRefPane().getRefPK();
+		String pkOrg =  getOrgpanel().getRefPane().getRefPK();
+		if(StringUtil.isEmpty(pkOrg)){
+			ExceptionUtils.wrappBusinessException("人力资源组织为空,请选择!");
+		}else if(StringUtil.isEmpty(pkWaclass)){
+			ExceptionUtils.wrappBusinessException("薪资方案为空,请选择!");
+		}else if(StringUtil.isEmpty(waPeriod)){
+			ExceptionUtils.wrappBusinessException("薪资期间为空,请选择!");
+		}
+		
+	
+		//取年份
+		String cyear = waPeriod.substring(0, 4);
+		//取月份
+		String cperiod = waPeriod.substring(4, 6);
+		
+		String ym=cyear+"-"+cperiod;
+		
+		List<DataVO>  datasvos=  getDataManager().getPaydataModel().getData();
+		
+		if(null==datasvos ||  datasvos.size()==0){
+			
+			ExceptionUtils.wrappBusinessException("没有获取到需要发送短信的数据,请检查!");
+			
+		}
+		
+		
+		
+		int ysn=MessageDialog.showOkCancelDlg(getEntranceUI(), "提示", "确定发送短信吗?");
+		
+		if(ysn!=1){
+			
+			MessageDialog.showHintDlg(getEntranceUI(), "提示", "取消发送成功!");
+			
+			return;
+		}
+		
+		
+		Map<String,PsndocVO> psndocMap= getPsndocvoMap(datasvos);//key:人员主键  value:人员VO 
+		
+		
+		StringBuffer sbuf=new StringBuffer();
+		
+		
+		ArrayList<String> nomobiles=new ArrayList<String>();//没有维护手机号的员工
+		
+		
+		//校验是否维护了手机号
+		
+		for(DataVO datasvo : datasvos){
+			
+			String  mobile=psndocMap.get(datasvo.getPk_psndoc()).getMobile();
+			
+	        if(null==mobile || "".equals(mobile)){
+	        	
+	        	sbuf.append("【"+psndocMap.get(datasvo.getPk_psndoc()).getName()+"】");
+	        	
+	        	nomobiles.add(psndocMap.get(datasvo.getPk_psndoc()).getName());
+	        	
+	        }
+			
+		}
+		
+		if(nomobiles.size()==datasvos.size()){
+			
+			ExceptionUtils.wrappBusinessException("发送失败:"+sbuf.toString()+"请维护手机号!");
+		}
+		
+		
+		
+		int yn=1;
+		
+		if(sbuf.length()>0){
+		   //返回 确认=1,取消=2
+		   yn=MessageDialog.showOkCancelDlg(getEntranceUI(), "提示", sbuf.toString()+"没有维护手机号,其他人员是否确认发送短信?");
+			
+		}
+		
+		
+		if(yn==1){
+			
+			Boolean b=getIpayMaintain().send(datasvos, psndocMap, ym, waPeriod, pkOrg, pkWaclass);
+
+			MessageDialog.showHintDlg(getEntranceUI(), "提示", "薪资发送成功!");
+			
+		}else{
+			
+			MessageDialog.showHintDlg(getEntranceUI(), "提示", "取消发送成功!");
+			
+		}
+				
+		
+	}
+	
+
+	
+	/**
+	 * key    人员主键
+	 * value  人员VO
+	 * @param datasvos
+	 * @return
+	 * @throws BusinessException
+	 */
+	
+	private Map<String,PsndocVO>  getPsndocvoMap(List<DataVO>  datasvos) throws BusinessException{
+		
+		Map<String, PsndocVO> mapMater = new HashMap<String, PsndocVO>();
+		
+		PsndocVO[] psndocVOs=getIpsndocQueryService().queryPsndocByPks(getPsndocPks(datasvos));//人员档案查询
+		
+		for (int i = 0; i < psndocVOs.length; i++) {
+			
+			mapMater.put(psndocVOs[i].getPrimaryKey(), psndocVOs[i]);
+			
+		}
+		return mapMater;
+		
+	}
+	
+	
+	
+	private String[] getPsndocPks(List<DataVO>  datavos){
+		 
+		 String []  pk_psndocs=new String [datavos.size()];
+				 
+		 for(int i=0 ; i<datavos.size() ; i++){
+			 
+			 DataVO datavo=datavos.get(i);
+			 
+			 String pk_psndoc=datavo.getPk_psndoc();//人员主键
+			 
+			 pk_psndocs[i]=pk_psndoc;
+			 
+		 }
+		 
+		return pk_psndocs;
+		 
+	 }
+	
+	
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 43 - 0
hrwa/hrwa/src/private/nc/impl/hrwa/PaydataMaintainImpl.java

@@ -0,0 +1,43 @@
+package nc.impl.hrwa;
+
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.dao.BaseDAO;
+import nc.bs.hr.gy_zsgl.plugin.SmsRequest;
+import nc.bs.hr.gy_zsgl.plugin.SmsResponse;
+import nc.itf.hrwa.IPaydataMaintain;
+import nc.jeecg.common.util.HttpHelper;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.wa.paydata.DataVO;
+
+public class PaydataMaintainImpl implements IPaydataMaintain{
+
+	@Override
+	public void executeBaseDAO(String sql) throws Exception {
+		new BaseDAO().executeUpdate(sql);
+	}
+
+	@Override
+	public SmsResponse send(SmsRequest request,String api_url) throws BusinessException {
+		// TODO ×Ô¶¯Éú³ÉµÄ·½·¨´æ¸ù
+		HttpHelper httphelper=new HttpHelper();
+	    SmsResponse response =httphelper.sendSms(request,api_url);
+		
+		  
+		return response;
+		
+	}
+
+	@Override
+	public Boolean send(List<DataVO>  datasvos,Map<String,PsndocVO> psndocMap,String ym,String waPeriod,String pkOrg,String pkWaclass) throws BusinessException {
+		
+		
+		SendYDUtil   sendyd =new  SendYDUtil();
+		
+		
+		return sendyd.send(datasvos, psndocMap, ym, waPeriod, pkOrg, pkWaclass);
+	}
+
+}

+ 272 - 0
hrwa/hrwa/src/private/nc/impl/hrwa/SendYDUtil.java

@@ -0,0 +1,272 @@
+package nc.impl.hrwa;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.framework.common.NCLocator;
+import nc.bs.hr.gy_zsgl.plugin.MD5Util;
+import nc.bs.hr.gy_zsgl.plugin.SmsRequest;
+import nc.bs.hr.gy_zsgl.plugin.SmsResponse;
+import nc.itf.bd.psn.psndoc.IPsndocQueryService;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ArrayListProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.jeecg.common.util.HttpHelper;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.wa.paydata.DataVO;
+
+public class SendYDUtil {
+	
+   private String templateid="";//模板id
+
+   //移动发送短信模板接口
+	private final String  API_URL="http://112.35.1.155:1992/sms/tmpsubmit";
+	
+	private String[] parms0103={"岗位工资","效益奖","综合补贴","年功工资","职称补贴","中夜班费","满勤奖",
+			"加班费","考核奖","安全文明行风奖","房贴","扣款","应得工资","失业","养老","医保","公积金","年金",
+			"本期税额","会费","互助金","其它扣款","实得工资"};//大众燃气本部工资短信提醒  5f5a313d92a545fe87d95cd1358db1bd
+	
+	private String[] parms010304={"岗位工资","效益奖","综合补贴","年功工资","职称补贴","中夜班费","满勤奖",
+			"加班费","值班费","考核奖","安全文明行风奖","房贴","扣款","应得工资","失业","养老","医保","公积金","年金",
+			"本期税额","会费","互助金","其它扣款","实得工资"};//南通开发区大众燃气工资短信提醒 de0302949ac443a4be7727b490d7e9ca
+	
+	private String[] parms010301={"岗位工资","效益奖","综合补贴","年功工资","职称补贴","中夜班费","满勤奖",
+			"加班费","考核奖","安全文明行风奖","房贴","扣款","应得工资","失业","养老","医保","公积金","年金",
+			"本期税额","会费","互助金","其它扣款","实得工资"};//燃气设备公司工资短信提醒 487e12e853fc438bb6d623848a804003
+	
+	private String[] parmsNT08={"岗位工资","效益奖","综合补贴","年功工资","职称补贴","满勤奖",
+			"加班费","房贴","安全文明行风奖","考核奖","行风奖","安全奖","亮点奖","保供奖","高温费","应得工资","失业",
+			"养老","医保","公积金","会费","互助金","实得工资"};//大众燃气设计室工资短信提醒 1dbbd7070af14a1faa930b9e96d87281
+	
+	private String[] parms0103NT05={"劳务费","效益奖","中夜班费","满勤奖","加班费","其它补贴","考核奖","行风奖",
+			"安全奖","亮点奖","保供奖","高温费","年度效益奖","病事假","应得工资","失业","养老","医保","公积金","会费",
+			"互助金","实得工资"};//大众燃气本部劳务工资短信提醒  e283141eed90470eb156527d8fd4b4d0
+	
+	private String[] parms010302={"岗位工资","效益奖","综合补贴","年功工资","职称补贴","中夜班费","满勤奖",
+			"加班费","其它补贴","考核奖","安全文明行风奖","房贴","扣款","应得工资","失业","养老","医保","公积金","年金",
+			"本期税额","会费","互助金","其它扣款","实得工资"};//安装工程公司工资短信提醒  369f9348418f4587a30b74e0fa4fa5d8
+	
+    private IUAPQueryBS iuap = null;
+	
+	public IUAPQueryBS getIuapBs(){
+		if(null==iuap){
+			iuap = (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+		}
+		
+		return iuap;
+		
+	}
+	
+ 
+	
+   public Boolean send(List<DataVO>  datasvos,Map<String,PsndocVO> psndocMap,String ym,String waPeriod,String pkOrg,String pkWaclass) throws BusinessException {
+		
+	   
+	   String value =getSysinntValue("pub_sysinit","initcode","DX001","value");//参数控制短信接收的人,用于前期测试用
+	   
+	   String[] parms=initilt(pkOrg, pkWaclass);//需要发送短信的字段
+	   
+	   Map<String,String> classItemMap = getClassItem(pkOrg, pkWaclass, waPeriod);
+	   
+	   List<String> successlis=new ArrayList<String>();//记录发送成功的短信
+	   
+		for(DataVO datasvo : datasvos){
+			
+			 // 准备请求参数
+	        SmsRequest request = new SmsRequest();
+	        request.setEcName("南通大众燃气有限公司");//集团客户名称
+	        request.setApId("yecai");//用户名
+	        request.setSecretKey("Nt_cw968007");//密码
+	        request.setTemplateId(templateid);//模版ID
+	        String  mobile=psndocMap.get(datasvo.getPk_psndoc()).getMobile();
+	        if(null==mobile || "".equals(mobile)){
+	        	continue;
+	        }
+	        
+	        request.setMobiles(value.length()>0?value:mobile);//手机号码
+	        
+	        List<String> params = new ArrayList<String>();
+	        //用于Mac,MD5加密
+	        List<String> macparamslis = new ArrayList<String>();
+	        
+	        params.add(psndocMap.get(datasvo.getPk_psndoc()).getName());//姓名
+	        params.add(convertToChineseDate(ym));//年月
+	        macparamslis.add("\"" + psndocMap.get(datasvo.getPk_psndoc()).getName() + "\"");
+	        macparamslis.add("\"" + convertToChineseDate(ym) + "\"");
+	        
+			for(int i=0 ;i < parms.length ; i++){
+				String macparamsvalue=new UFDouble(datasvo.getAttributeValue(classItemMap.get(parms[i])).toString()).setScale(2, UFDouble.ROUND_HALF_UP).toString();
+				params.add(macparamsvalue); 
+				 macparamslis.add("\"" +macparamsvalue+ "\""); 
+			}
+	
+	        request.setParams(params);
+
+	        
+	        // 自定义输出,去掉逗号后的空格
+	        StringBuilder sb = new StringBuilder();
+	        sb.append("[");
+	        for (int i = 0; i < macparamslis.size(); i++) {
+	            if (i > 0) {
+	                sb.append(","); // 只加逗号,不加空格
+	            }
+	            sb.append(macparamslis.get(i));
+	        }
+	        sb.append("]");
+	        request.setMacparams(sb.toString());//["参数一","参数二"] 格式
+	        request.setSign("gF211Wxv6");//网关签名编码
+	        request.setAddSerial("");//扩展码
+	        
+	        StringBuffer  stringBuffer=new StringBuffer();
+	        stringBuffer.append(request.getEcName());
+	        stringBuffer.append(request.getApId());
+	        stringBuffer.append(request.getSecretKey());
+	        stringBuffer.append(request.getTemplateId());
+	        stringBuffer.append(request.getMobiles());
+	        stringBuffer.append(request.getMacparams());
+	        stringBuffer.append(request.getSign());
+	        
+	        // 使用MD5哈希值作为mac字段
+	        request.setMac(MD5Util.md5(stringBuffer.toString()));//API输入参数签名结果,签名算法:将ecName,apId,secretKey,templateId,mobiles,params,sign,addSerial按照顺序拼接,然后通过md5(32位小写)计算后得出的值
+	        
+	        // 发送短信
+	        
+	        SmsResponse response =HttpHelper.sendSms(request, API_URL);
+	        
+	        if (response.isSuccess()) {
+	        	//记录发送成功的
+	        	successlis.add(datasvo.getPk_wa_data());
+	        	
+	        } else {
+	        	 // 处理特定错误码
+	            if ("NOT_WHITE_IP".equals(response.getRspcod())) {
+	            	 throw new BusinessException("错误原因: IP地址未在白名单中,请联系管理员添加IP白名单!");
+	            }
+	            
+	             throw new BusinessException("短信发送失败,错误码: " + response.getRspcod());
+	             
+	        }
+	        
+		}
+		
+		return Boolean.TRUE;
+	}
+   
+   
+   
+	/**
+	 * 数据库查询
+	 */
+	private String getSysinntValue(String tablename,String where ,String wherevalue, String  value ) throws BusinessException {
+		
+		String sql = "select "+value+" from "+tablename+" where "+where+" ='"+wherevalue+"'  and  dr=0  "   ;
+				
+		Object objvalue = getIuapBs().executeQuery(sql, new ColumnProcessor());
+		
+		return objvalue==null?"":objvalue.toString();
+	}
+	
+   
+   
+   
+	/**
+	 * 
+	 * 封装初始化发送字段参数和模板id
+	 * pkOrg     组织主键
+	 * pkWaclass 薪资方案主键
+	 * @throws Exception 
+	 * 
+	 */
+ 	
+ 	private String[] initilt(String pkOrg,String pkWaclass) throws BusinessException {
+ 		
+ 		Map<String,String> maporg=new HashMap<String,String>();
+ 		Map<String,String[]> mapid=new HashMap<String,String[]>();
+ 		
+ 		mapid.put("0103", parms0103);//大众燃气本部
+ 		mapid.put("010304", parms010304);//南通开发区
+ 		mapid.put("010301", parms010301);//燃气设备公司
+ 		mapid.put("0103NT08", parmsNT08);//大众燃气设计室
+ 		mapid.put("0103NT05", parms0103NT05);//大众燃气本部劳务
+ 		mapid.put("0103NT06", parms0103NT05);//大众燃气本部劳务2
+ 		mapid.put("010302", parms010302);//安装工程公司
+ 		
+ 		maporg.put("0103","5f5a313d92a545fe87d95cd1358db1bd");//大众燃气本部
+ 		maporg.put("010304","de0302949ac443a4be7727b490d7e9ca");//南通开发区
+ 		maporg.put("010301","487e12e853fc438bb6d623848a804003");//燃气设备公司
+ 		maporg.put("0103NT08","1dbbd7070af14a1faa930b9e96d87281");//大众燃气设计室
+ 		maporg.put("0103NT05","e283141eed90470eb156527d8fd4b4d0");//大众燃气本部劳务
+ 		maporg.put("0103NT06","e283141eed90470eb156527d8fd4b4d0");//大众燃气本部劳务2
+ 		maporg.put("010302","369f9348418f4587a30b74e0fa4fa5d8");//安装工程公司
+ 		
+ 		String orgcode=getSysinntValue("org_orgs","pk_org",pkOrg,"code");//公司编码
+ 		
+ 		String wacode=getSysinntValue("wa_waclass","pk_wa_class",pkWaclass,"code");//薪资方案编码
+ 		
+ 		//本部0103时,薪资方案是(设计室、本部劳务)需要单独发送薪资模板
+ 		if("0103".equals(orgcode) && ("NT08".equals(wacode) || "NT05".equals(wacode) || "NT06".equals(wacode) ) ){
+ 			
+ 			templateid=maporg.get(orgcode+wacode);
+ 			return  mapid.get(orgcode+wacode);
+ 			
+ 		}
+ 		
+ 		templateid=maporg.get(orgcode);
+ 		
+		return mapid.get(orgcode);
+ 		
+ 	}
+   
+	/**
+	 * 获取薪资发放项目对应的列
+	 * @param pkOrg 组织
+	 * @param pkWaclass 薪资方案
+	 * @param waPeriod 年月期间
+	 * @return
+	 * @throws Exception
+	 */
+	private Map<String,String> getClassItem(String pkOrg, String pkWaclass, String waPeriod) throws BusinessException{
+		//取年份
+		String cyear = waPeriod.substring(0, 4);
+		//取月份
+		String cperiod = waPeriod.substring(4, 6);
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT");
+		sql.append(" name,");
+		sql.append(" itemkey");
+		sql.append(" FROM ");
+		sql.append(" wa_classitem");
+		sql.append(" WHERE");
+		sql.append(" pk_org = '"+pkOrg+"'");
+		sql.append(" AND pk_wa_class = '"+pkWaclass+"'");
+		sql.append(" AND cyear = '"+cyear+"' AND cperiod = '"+cperiod+"'");
+		List<Object[]> list = (List<Object[]>) getIuapBs().executeQuery(sql.toString(), new ArrayListProcessor());
+		Map<String,String> map = new HashMap<String,String>();
+		for (int i = 0; i < list.size(); i++) {
+			map.put(list.get(i)[0].toString(), list.get(i)[1].toString());
+		}
+		return map;
+	}
+	
+   
+
+	 public static String convertToChineseDate(String dateStr) {
+      try {
+          SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM");
+          SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy年MM月");
+          Date date = inputFormat.parse(dateStr);
+          return outputFormat.format(date);
+      } catch (Exception e) {
+          return dateStr; // 如果转换失败,返回原字符串
+      }
+  }
+	
+	
+
+}

+ 29 - 0
hrwa/hrwa/src/public/nc/itf/hrwa/IPaydataMaintain.java

@@ -0,0 +1,29 @@
+package nc.itf.hrwa;
+
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.hr.gy_zsgl.plugin.SmsRequest;
+import nc.bs.hr.gy_zsgl.plugin.SmsResponse;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.wa.paydata.DataVO;
+
+public interface IPaydataMaintain {
+	
+	public void executeBaseDAO(String sql) throws Exception;
+	
+	/**
+	 * 发送移动MAS短信接口
+	 * @throws BusinessException
+	 */
+	public SmsResponse send(SmsRequest request,String api_url) throws BusinessException;
+	
+	
+	/**
+	 * 发送移动MAS短信接口
+	 * @throws BusinessException
+	 */
+	public Boolean send(List<DataVO>  datasvos,Map<String,PsndocVO> psndocMap,String ym,String waPeriod,String pkOrg,String pkWaclass) throws BusinessException;
+
+}

+ 99 - 0
hrwa/hrwa/src/public/nc/jeecg/common/util/HttpHelper.java

@@ -0,0 +1,99 @@
+package nc.jeecg.common.util;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import nc.bs.hr.gy_zsgl.plugin.Base64Util;
+import nc.bs.hr.gy_zsgl.plugin.SmsRequest;
+import nc.bs.hr.gy_zsgl.plugin.SmsResponse;
+
+
+
+public class HttpHelper {
+	
+	 /**
+     * 发送短信
+     * @param request 短信请求对象
+     * @return 发送结果
+     */
+    public static SmsResponse sendSms(SmsRequest request,String api_url) {
+   	 HttpURLConnection connection = null;
+   	  try {
+             // 1. 创建URL对象
+             URL url = new URL(api_url);
+             
+             // 2. 创建连接
+             connection = (HttpURLConnection) url.openConnection();
+             connection.setRequestMethod("POST");
+             connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+             connection.setRequestProperty("Accept", "application/json");
+             connection.setDoOutput(true);
+             connection.setConnectTimeout(5000);
+             connection.setReadTimeout(10000);
+             
+             // 3. 将请求对象转换为JSON字符串
+             String jsonInputString = request.toJsonString();
+             
+             // 4. Base64编码
+             String base64Encoded = Base64Util.encode(jsonInputString);
+             
+             // 5. 发送请求数据
+             OutputStream os = connection.getOutputStream();
+             try {
+                 byte[] input = base64Encoded.getBytes("UTF-8");
+                 os.write(input, 0, input.length);
+             } finally {
+                 if (os != null) {
+                     os.close();
+                 }
+             }
+             
+             // 6. 获取响应
+             int responseCode = connection.getResponseCode();
+             
+             if (responseCode == HttpURLConnection.HTTP_OK) {
+                 // 读取响应内容
+                 BufferedReader br = new BufferedReader(
+                     new InputStreamReader(connection.getInputStream(), "UTF-8"));
+                 try {
+                     StringBuilder response = new StringBuilder();
+                     String responseLine;
+                     while ((responseLine = br.readLine()) != null) {
+                         response.append(responseLine.trim());
+                     }
+                     
+                     // 解析响应JSON
+                     return SmsResponse.fromJson(response.toString());
+                 } finally {
+                     if (br != null) {
+                         br.close();
+                     }
+                 }
+             } else {
+                 // 处理错误响应
+                 SmsResponse errorResponse = new SmsResponse();
+                 errorResponse.setSuccess(false);
+                 errorResponse.setRspcod(String.valueOf(responseCode));
+                 errorResponse.setMsgGroup("");
+                 return errorResponse;
+             }
+             
+         } catch (Exception e) {
+             SmsResponse errorResponse = new SmsResponse();
+             errorResponse.setSuccess(false);
+//             errorResponse.setRspcod("EXCEPTION");
+             errorResponse.setRspcod(e.getMessage());
+             errorResponse.setMsgGroup("");
+             return errorResponse;
+         } finally {
+             if (connection != null) {
+                 connection.disconnect();
+             }
+         }
+   	
+   }
+
+}