9060 преди 10 месеца
родител
ревизия
6404ee19f4
променени са 17 файла, в които са добавени 3270 реда и са изтрити 1427 реда
  1. 292 0
      GDYSL/js/shr/addon/customer/web/js/fixAdjustSalaryEx.js
  2. 15 0
      GDYSL/js/shr/addon/customer/web/js/personRoster.js
  3. 537 0
      GDYSL/js/shr/addon/customer/web/js/shr/rpt/AbsenceSummaryForAllLeaveListHandler.js
  4. 27 0
      GDYSL/metadata/com/kingdee/eas/custom/gy/gy.package
  5. 104 0
      GDYSL/metadata/com/kingdee/eas/custom/gy/task/TaskFacade.facade
  6. 27 0
      GDYSL/metadata/com/kingdee/eas/custom/gy/task/task.package
  7. 27 17
      GDYSL/src/com/kingdee/eas/custom/facade/leave/LeaveAllowanceFacadeControllerBean.java
  8. 58 0
      GDYSL/src/com/kingdee/eas/custom/gy/task/AbstractTaskFacadeControllerBean.java
  9. 18 0
      GDYSL/src/com/kingdee/eas/custom/gy/task/ITaskFacade.java
  10. 50 0
      GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacade.java
  11. 21 0
      GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacadeController.java
  12. 55 0
      GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacadeControllerBean.java
  13. 30 0
      GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacadeFactory.java
  14. 1802 0
      GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/AbsenceSummaryForAllLeaveAListHandler.java
  15. 133 1268
      GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/AbsenceSummaryForAllLeaveListHandler.java
  16. 12 86
      GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/FacultyAbsenceSummaryListHandler.java
  17. 62 56
      GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/PersonRosterAListHandler.java

+ 292 - 0
GDYSL/js/shr/addon/customer/web/js/fixAdjustSalaryEx.js

@@ -0,0 +1,292 @@
+shr.defineClass("shr.customer.gtiit.FixAdjustSalaryEx", shr.cmpdesign.FixAdjustSalary, {
+
+    initalizeDOM:function(){
+        shr.customer.gtiit.FixAdjustSalaryEx.superClass.initalizeDOM.call(this);
+    },
+    initEditDiv: function(){
+        $("#fileEdit").hide();
+        var _self = this;
+        $("#fileEdit").children(":first").append('<input type="hidden" id="id"/><span style="float: right;margin-right:20px;" class="shr-toolbar"><button id="fields_save" type="button" name="fields_save" class="shrbtn-primary shrbtn" onclick="">'
+                +jsBizMultLan.cod_fixAdjustSalary_i18n_15
+                +'</button><button id="fields_cancel" type="button" name="fields_cancel" class="shrbtn-primary shrbtn" onclick="">'
+                +jsBizMultLan.cod_fixAdjustSalary_i18n_12
+                +'</button></span>');
+        $("#fields_save").click(function(){
+            window.Messenger().hideAll();
+            if (_self.validate()==false) {
+                shr.setIframeHeight();
+                return;
+            }
+            if(!isEditButton){
+                return;
+            }
+            if(_self.moneyError) {
+                _self.moneyError = false;
+                return;
+            }
+            //isEditButton = false;
+            var config = _self.getEditColumnConfig();
+            var param = {
+                    adjEmpORelationId: $("#adjEmpORelation").val(),
+                    adjHrOrgUnit : shr.getUrlRequestParam("adjustHrOrgId"),
+                    personId : shr.getUrlRequestParam("personId"),
+                    id: $("#id").val(),
+                    serviceId : encodeURIComponent(shr.getServiceId()),
+            };
+            //校验
+            if($('#standard').shrPromptBox("getValue") && $('#standard').shrPromptBox("getValue").id){
+                if($.isEmptyObject($('#stdLevel').shrPromptBox("getValue")) || !$('#stdLevel').shrPromptBox("getValue").id){
+                    shr.showError({
+                        message : jsBizMultLan.cod_fixAdjustSalary_i18n_19,
+                    });
+                    isEditButton = true;
+                    return;
+                }
+            }
+            
+            //拼装后台需要参数
+            for (var i = 0; i < config.length; i++) {
+                var columnConfig = config[i];
+                var fieldName = columnConfig.name;
+                var fieldId = fieldName.replace(".", "_");
+                var $field = $("#" + fieldId);
+                var dataType = columnConfig.dataType;
+                // 后续如果有枚举类型可以在此添加
+                if (dataType == "date") {
+                    param[fieldName] = $field.shrDateTimePicker("getValue");
+                } else if (dataType == "F7") {
+                    var arr = $field.shrPromptBox("getValue");
+                    //多选的需要特殊处理
+                    if(arr && arr.length > 0){
+                        var ids = "";
+                        for(var k = 0;k < arr.length;k++){
+                            ids += arr[k].id + ",";
+                        }
+                        ids = ids.substring(0, ids.length - 1);
+                        param[fieldName] = ids;
+                    }else if(arr && "id" in arr){
+                        param[fieldName] = arr.id;
+                    }
+                } else if(fieldName == "money") {
+                    param[fieldName] = $field.shrNumberField('getValue');
+                } else if(fieldName == "adjEmpORelation"){
+                    param[fieldName] = $field.val();    
+                }else if(fieldName == "retroactiveDate"){
+                    //追溯发放月份
+                    param[fieldName] = $field.shrDateTimePicker("getValue"); 
+                }else if(fieldName == "traceability"){
+                    //是否追溯  
+                    param[fieldName] = $field.val();   
+                }else{
+                    param[fieldName] = $field.shrTextField("getValue");
+                }
+            }
+            
+            if($('#defaultCmpStd').shrPromptBox("getValue")!=null && 'id' in $('#defaultCmpStd').shrPromptBox("getValue")){
+                param.defaultCmpStd = $('#defaultCmpStd').shrPromptBox("getValue").id;
+            }else{
+                param.defaultCmpStd = "";
+            }
+            
+            _self.remoteCall({
+                method: "saveEditData",
+                param: param, 
+                async: false,
+                success: function(data) {
+                    shr.showInfo({message:jsBizMultLan.cod_fixAdjustSalary_i18n_1});
+                    var rowdatas = data.afterSaveData;
+                    //清空列表数据
+                    waf("#cmpSchemeF7table").clearGridData()
+                    for(var i = 0;i < rowdatas.length;i++){
+                        waf("#cmpSchemeF7table").wafGrid("addRow",{data:rowdatas[i]});
+                    }
+                    $("#fileEdit").hide();
+                    //删除历史
+                    if($("#queryTimeCountDataDiv").length > 0 || $("#queryAllTimeCountDataDiv").length > 0){
+                        $("#queryTimeCountDataDiv").remove();
+                        $("#queryAllTimeCountDataDiv").remove();
+                    }
+                    isEditButton = true;
+                    shr.setIframeHeight();
+                },
+                error : function(){
+                    isEditButton = true;
+                }
+            });
+
+           
+                var effectDay = $("#effectDay").shrDateTimePicker("getValue");
+                var retroactiveDate = $("#retroactiveDate").shrDateTimePicker("getValue");
+                // 人员id
+                var personId = shr.getUrlRequestParam("personId");
+                var money = $("#money").val();
+                _self.remoteCall({
+                    method: "addReviewData",
+                    param: {personId:personId,effectDay:effectDay,retroactiveDate:retroactiveDate,money:money}, 
+                    success: function(data) {
+                        
+                    },
+                    error : function(){
+                        
+                    }
+                });
+            
+
+        });
+        //隐藏编辑
+        $("#fields_cancel").click(function(){
+            $("#fileEdit").hide();
+            shr.setIframeHeight();
+        });
+
+        
+        $("#traceability").on("change", function () {
+            var traceabilityValue = $("#traceability_el").val();
+            if(traceabilityValue == "1"){
+                _self.getField("retroactiveDate").shrDateTimePicker('option', 'required', true);
+            }else{
+                _self.getField("retroactiveDate").shrDateTimePicker('option', 'required', false);
+            }
+        });
+    },
+    addRowAction:function(){
+        //增加权限控制
+        $("#money").shrTextField("enable");
+        _self = this;
+        if($("#queryTimeCountDataDiv").length > 0 || $("#queryAllTimeCountDataDiv").length > 0){
+            $("#queryTimeCountDataDiv").remove();
+            $("#queryAllTimeCountDataDiv").remove();
+        }
+        _self.remoteCall({
+            method : "checkAddRowPerm",
+            param : {
+                serviceId : encodeURIComponent(shr.getServiceId()),
+            },
+            success : function(datas){
+                $("#fileEdit").show();
+                $("label:contains(jsBizMultLan.cod_fixAdjustSalary_i18n_2)").remove();
+                for (var i = 0; i < datas.length; i++) {
+                    var data = datas[i];    
+                    var fieldName = data.name;
+                    var dataType = data.dataType;
+                    var fieldId = fieldName.replace(".", "_");
+                    
+                    if(dataType == "F7"){
+                        $('#' + fieldId).shrPromptBox("setValue","");
+                    }else if(dataType == "date"){
+                        $('#' + fieldId).shrDateTimePicker("setValue","");
+                    }else if(dataType == "enum"){
+                        $('#' + fieldId).shrSelect("setValue","");
+                    }else if('adjEmpORelation' == fieldId){
+                        $('#' + fieldId).val("");
+                    }else if(fieldName == "retroactiveDate"){
+                        //追溯发放月份
+                        $("#retroactiveDate").shrDateTimePicker("setValue", ""); 
+                    }else if(fieldName == "traceability"){
+                        //是否追溯默认为否 
+                        $("#traceability").val("No");   
+                    }else{
+                        $('#' + fieldId).shrTextField("setValue","");
+                    }
+
+                    
+                }
+                //增加默认的发薪业务组织
+                $("#payHrOrgUnit").shrPromptBox("setValue",adjustHrOrgUnitF7Val);
+                
+                //需要追加id
+                $("#standard").shrPromptBox("setValue",$("#defaultCmpStd").shrPromptBox("getValue"));
+                $('#id').val("");
+                $('#adjEmpORelation').val("");
+                //默认回填人民币
+                $("#currency").shrPromptBox("setValue",{id : _self.initData.currency.id, name : _self.initData.currency.name});
+                $("label:contains(jsBizMultLan.cod_fixAdjustSalary_i18n_2)",$("#fileEdit")).remove();
+                $("div.required.error",$("#fileEdit")).removeClass("error");
+                shr.setIframeHeight();
+                //增加默认职位,行政组织
+                var adjustEmpORelations = $(window.parent.frames["resume-001"].document).find("div[id^='entry']");
+                if(adjustEmpORelations.length>0){
+                    var lastLeffectDate =null;
+                    var $lastAdjustEmpORelation;
+                    for(var i = 0;i <adjustEmpORelations.length;i++){
+                        var $adjustEmpORelation = $(adjustEmpORelations[0]);
+                        var leffectDateStr = $adjustEmpORelation.find("span[id^='leffectDateentry']")[0].value;
+                        var assignType = $adjustEmpORelation.find("span[id^='empOrgRelation_assignType']")[0].value;
+                        var leffectDate = new Date(leffectDateStr);
+                        if(assignType==1&&(lastLeffectDate == null||leffectDate>lastLeffectDate)){
+                            lastLeffectDate = leffectDate;
+                            $lastAdjustEmpORelation = $adjustEmpORelation;
+                        }
+                    }
+                    var positionVal =   $adjustEmpORelation.find("span[id^='empOrgRelation_positionentry']")[0];
+                    var adminOrgUnit =  $adjustEmpORelation.find("span[id^='empOrgRelation_adminOrg_department']")[0];
+                    var adjEmpORelationId=$adjustEmpORelation.find("form[id='form']").find("input[id =id]").val();
+                    var lastAdminOrgUnit;
+                    if(adminOrgUnit.value){
+                        lastAdminOrgUnit = {'adminOrg.id':adminOrgUnit.value,'adminOrg.name':adminOrgUnit.title,'position.id':positionVal.value,'position.name':positionVal.title};
+                    }else{
+                        var company = $adjustEmpORelation.find("span[id^='empOrgRelation_adminOrg_company']")[0];
+                        lastAdminOrgUnit = {'adminOrg.id':company.value,'adminOrg.name':company.title,'position.id':positionVal.value,'position.name':positionVal.title}
+                    }
+                    $("#adminOrgUnit").shrPromptBox("setValue",lastAdminOrgUnit);
+                    $('#adjEmpORelation').val(adjEmpORelationId);
+                }
+            }
+        });
+        
+    },
+
+    // 编辑时设置初始值
+    setInitData: function(rowId) {
+        var _self = this;
+        _self.remoteCall({
+            method: "getFieldEditConfig",
+            param: {},
+            success: function(datas) {
+                if (datas) {
+                    var rowDatas = waf("#cmpSchemeF7table").getRowRealData(rowId);
+                    $("#fileEdit").show();
+                    for (var i = 0; i < datas.length; i++) {
+                        var data = datas[i];    
+                        var fieldName = data.name;
+                        var dataType = data.dataType;
+                        var fieldId = fieldName.replace(".", "_");
+                        if("adminOrgUnit" == fieldId){
+                            $("#adminOrgUnit").shrPromptBox("setValue", {"adminOrg.id" : rowDatas[fieldName].id, "adminOrg.name":rowDatas[fieldName].name});
+                        }else if (dataType == "F7") {
+                            $("#" + fieldId).shrPromptBox("setValue", rowDatas[fieldName]);
+                        } else if(fieldName == 'money') {
+                            $("#" + fieldId).shrNumberField("setValue", rowDatas[fieldName]);
+                        }else if(fieldName == 'effectDay' || fieldName == 'leffectDay'){
+                            $("#" + fieldId).shrDateTimePicker('setValue', rowDatas[fieldName]);
+                        } else {
+                            $("#" + fieldId).val(rowDatas[fieldName]);  
+                        }
+                    }
+                    if(rowDatas.stdLevel && rowDatas.stdLevel.id && rowDatas.stdPoint && rowDatas.stdPoint.id && isControl){
+                        $("#money").shrTextField("disable");
+                    }else{
+                        $("#money").shrTextField("enable");
+                    }
+                    if(rowDatas.standard && rowDatas.standard.id && rowDatas.currency){
+                        $("#currency").shrPromptBox("disable")
+                    }else{
+                        $("#currency").shrPromptBox("enable");
+                    }
+                    //需要追加id
+                    $('#id').val(rowDatas.id_add);
+                    $('#adjEmpORelation').val(rowDatas.adjEmpORelation);
+                    _self.fillRemark(rowDatas.id_add);
+                }
+                
+                shr.setIframeHeight();
+
+                var thisTraceabilityValue = $("#traceability").val();
+                if(thisTraceabilityValue == "Yes"){
+                    _self.getField("retroactiveDate").shrDateTimePicker('option', 'required', true);
+                }
+            }
+        
+        });
+    }
+});

+ 15 - 0
GDYSL/js/shr/addon/customer/web/js/personRoster.js

@@ -0,0 +1,15 @@
+shr.defineClass("shr.compensation.ERPManualLogList", shr.framework.List, {
+
+    initalizeDOM: function () {
+        shr.compensation.ERPManualLogList.superClass.initalizeDOM.call(this);
+        var that = this;
+    },
+    /**
+     * 初始化页面时查询表格数据
+     */
+    initalizeQueryGrid: function () {
+        $(".c-datepicker-picker__btn-now")[4].click();
+        $("#filter-search").click();
+       shr.compensation.ERPManualLogList.superClass.initalizeQueryGrid.call(this);
+    },
+});

+ 537 - 0
GDYSL/js/shr/addon/customer/web/js/shr/rpt/AbsenceSummaryForAllLeaveListHandler.js

@@ -0,0 +1,537 @@
+var sidValue = [];
+var orgLongNum="";
+var sumType = "1";
+var colNames;
+var colModel;
+shr.defineClass("com.kingdee.shr.customer.gtiit.rpt.AbsenceSummaryForAllLeaveListHandler", shr.framework.List, {
+    gridId: '#reportGrid',
+    reportUipk :   "com.kingdee.eas.absence.list" ,
+    rowNumPerPage : 30, // 设置默认分页30
+    colModelData: null,
+    isFirstTimeLoad: 0,
+	initalizeDOM : function () {
+		var that = this;
+		that.setColModelData();
+		com.kingdee.shr.customer.gtiit.rpt.AbsenceSummaryForAllLeaveListHandler.superClass.initalizeDOM.call(this);
+		
+		// 快速查询添加事件
+		$('#searcher').shrSearchBar('option', {
+			afterSearchClick: this.queryGridByEvent
+
+		});
+		/*
+		// 获取当前日期  
+		var currentDate = new Date();  
+		  
+		// 设置过滤条件  
+		var filterItems  = {  
+		  field: 'deadline', // 过滤条件的字段名  
+		  operator: '=', // 运算符,这里使用等于  
+		  value: currentDate.toISOString() // 将当前日期转换为 ISO 格式的字符串  
+		};  
+		  
+		// 将过滤条件添加到过滤条件列表中  
+		var filterItem  = [filterItems];  
+           */
+		//$("#proposer").attr("maxlength","").attr("validate","");
+		$("#deadline").shrDateTimePicker("setValue", new Date());
+		$("#cutOffDate").shrDateTimePicker("setValue", new Date());
+		$("#cutOffDate").trigger("change")
+		//$("#deadline").attr("title", new Date());
+		//$("#deadline").attr("data-value", new Date());
+		//$("#deadline").attr("data-displayname", new Date());
+		//$("#Query time").shrDateTimePicker("setValue",new Date());
+		//快速过滤展开
+		if($(".filter-containers").is(":hidden")){
+			$("#filter-slideToggle").click();
+	
+		}
+		/*
+		setTimeout(function(){
+			var currentDate = new Date();data-id
+			var year = currentDate.getFullYear();
+			var month = (currentDate.getMonth() + 1).toString().padStart(2, '0');
+			var day = currentDate.getDate().toString().padStart(2, '0');
+
+			var formattedDate = year + "-" + month + "-" + day;
+
+			// 在这里编写需要延迟加载的代码
+			$("#deadline").attr("original-value", formattedDate);
+			$("#deadline").attr("title", formattedDate);
+		}, 3000); // 延迟 1 秒执行
+		*/
+		
+	} 
+	,processF7ChangeEvent : function(){
+		var that = this;
+		$('#personType').shrPromptBox("option", {
+			onchange : function(e, value) {
+			   var info = value.current;
+			   	if(info!=null){
+			   	
+				   if (info.length != undefined) {
+				   		orgLongNum = "";
+				   		for (var index = 0; index < info.length; index++) {
+				   			orgLongNum = orgLongNum + info[index].longNumber + "@" ;
+				   		}
+				   		if (orgLongNum.length > 0) {
+				   			orgLongNum = orgLongNum.substring(0,orgLongNum.length -1);
+				   		}
+				   }else{
+					   	if(info.longNumber !=null && info.longNumber!=''){ 
+					   		orgLongNum = info.longNumber;
+					   	}
+				   }
+				}
+			}
+		});
+  	 }
+  	 /**
+	 * 选择导航节点
+	 */
+	,queryGridByEvent: function(e) {
+		var viewPage;
+		var self=this;
+		if (e.target) {
+			viewPage = shr.getCurrentViewPage(e.target);
+		} else {
+			viewPage = shr.getCurrentViewPage(e);
+		}
+		// 将页码恢复为第1页
+		$(viewPage.gridId).jqGrid('option', 'page', 1);
+		viewPage.queryAction();
+	},
+	
+	/**
+	 * 获得search查询条件
+	 */
+	getSearchFilterItems: function() {
+		var filter = $('#searcher').shrSearchBar('option', 'filterView');
+		if (filter && filter.filterItems) {
+			return filter.filterItems;
+		}
+	}
+	,queryAction : function () {
+		var self = this;
+		//search搜索
+		var searchFilterItems = self.getSearchFilterItems();
+		if( searchFilterItems == undefined)
+			searchFilterItems = "" ;
+		//快速过滤
+		var fastFilterItems = self.getFastFilterItems();
+		if(fastFilterItems == undefined){
+			fastFilterItems = "";
+		}
+		if(fastFilterItems["add"] == ""){
+			fastFilterItems["add"] = null;
+		}
+		
+		//R20190625-2369保存方案后,其它条件设置的条件被清空
+		//需把视图的filterItem其他条件name="add"改成name="advancedFilter" 
+		var advancedFilterItems = self.getAdvancedFilterItems();
+		if(advancedFilterItems != undefined){
+			fastFilterItems["add"] = advancedFilterItems;
+		}
+		
+		$("#reportGrid").jqGrid('setGridParam', {
+			datatype : 'json',
+			postData : {
+				'NewRearch'   : 'newRearch',
+				'fastFilterItems' : $.toJSON(fastFilterItems),
+				'searchFilterItems' : searchFilterItems,
+				'sumType' : sumType,
+				'page' : 1
+			},
+			page : 0
+		});
+		self.doRenderDataGrid();
+	},
+	setColModelData: function () {
+		var self = this;
+		self.remoteCall({
+			method : "getGridColModel",
+			success : function (data) {
+				colNames = data.colNames;
+				colModel = data.colModel;
+			}
+		})
+	},
+	  
+	/**
+	 * 表格数据请求URL
+	 */
+	getGridDataRequestURL : function () {
+		var serviceId = shr.getUrlRequestParam("serviceId");
+		return this.dynamicPage_url + "?method=getGridData" + "&uipk=" + this.reportUipk + '&serviceId='+encodeURIComponent(serviceId); 
+	},
+
+   doRenderDataGrid : function () {
+		var self = this, table = $("#reportGrid");
+		var searchFilterItems = self.getSearchFilterItems();
+		var fastFilterItems = self.getFastFilterItems();
+		if( searchFilterItems == undefined)
+			searchFilterItems = "" ;
+		if( fastFilterItems == undefined)
+			fastFilterItems = "" ;
+		if(fastFilterItems["add"] == ""){
+			fastFilterItems["add"] = null;
+		}
+		
+		//R20190625-2369保存方案后,其它条件设置的条件被清空
+		//需把视图的filterItem其他条件name="add"改成name="advancedFilter" 
+		var advancedFilterItems = self.getAdvancedFilterItems();
+		if(advancedFilterItems != undefined){
+			fastFilterItems["add"] = advancedFilterItems;
+		}
+		
+		postData = {
+			'searchFilterItems' : searchFilterItems,
+			'fastFilterItems' : $.toJSON(fastFilterItems),
+			'page1' : 1
+		};
+
+		var url = self.getGridDataRequestURL();        
+		var	options = {
+			url : url ,
+			datatype : "json",
+			multiselect : true,
+			rownumbers : false,
+			colNames : colNames,
+			colModel : colModel,
+			rowNum : self.rowNumPerPage,
+			// pager : '#gridPager1',
+			mtype: 'POST',
+			postData: postData ,
+//			height : 'auto',
+			height : '600px',
+//			height : self.rowNumPerPage > 21 ? '600px' : 'auto',
+			rowList : [30,45,60],
+			recordpos : 'left',
+			recordtext : '({0}-{1})/{2}',
+			gridview : true,
+			// pginput : true,
+			shrinkToFit :colModel.length>10?false:true,
+			viewrecords : true,
+			//cellEdit:true,
+            // cellsubmit:"clientArray" ,	
+			// sortname : "sumsql.fproposerid",
+			//caption: "Frozen Header",
+			customPager : '#gridPager1',  
+			pagerpos:"center",
+			pginputpos:"right",
+			pginput:true,     
+			synchTotal:"true",
+			onSelectRow: function(id){ 
+				jQuery('#reportGrid').jqGrid('editRow', id, false, function(){});
+				sidValue.push(id);
+				lastsel2 = id;
+				$("#reportGrid").attr("sid", sidValue.join(","));
+			}
+		};
+
+		options.loadComplete = function (data) {
+			if($("#gridPager1").html() == "" && "true" == "true"){
+				$("#reportGrid").setCustomPager("#gridPager1");
+			}
+			
+			shr.setIframeHeight();
+			$('#gridPager1_left').click(function(){
+				$('.ui-pg-selbox').show();
+				$('.ui-pg-selbox').css({"left":"-60px"})
+				$(this).children('.ui-paging-info').hide();
+			});
+			$("#microToolbar").parent().hide()
+			$("#gridPager1").parent().css({"position":"relative"})  
+			$("#gridPager1").addClass("shrPage").css({
+				"position":"absolute",
+				"top":"-25px",
+				"right":"0px",
+				"background":"#FFF"
+			})
+           com.kingdee.shr.customer.gtiit.rpt.AbsenceSummaryForAllLeaveListHandler.superClass.gridLoadComplete.call(this,data);
+		};
+		table.html();
+		table.jqGrid(options);
+		jQuery("#reportGrid").jqGrid(options).jqGrid("reloadGrid");
+		jQuery('#reportGrid').jqGrid('setFrozenColumns');
+		self.firstTime = 1;
+		
+	},
+	handleMicroToolbarInfo : function () {
+
+		var self = this;
+		var html = "";
+		html += "<div class='shrPage page-Title' >";
+		html += "<span id='gripage' class='ui-paging-info' style='cursor: default;display: inline-block;font-size: 13px;padding: 2px 5px 0 0;'></span>";
+		html += "<span id='prevId'  style='vertical-align: text-top;cursor: pointer;' class='ui-icon ui-icon-seek-prev'></span>";
+		html += "<span id='nextId'  style='vertical-align: text-top;cursor: pointer;' class='ui-icon ui-icon-seek-next'></span></div>";
+		
+		$('#microToolbar').html("");
+		$('#microToolbar').append(html);
+
+		$("#gripage").on("click", self.selectRowNumPerPage);
+		$("#prevId").on("click", self.prePage);
+		$("#nextId").on("click", self.nextPage);
+
+		//页码 (1-4)/4
+		self.updatePageEnable();
+		$("#gripage").text($("#gridPager1_left >div[dir='ltr']").text());
+		$("#gridPager1").hide();
+		 var ids=jQuery("#reportGrid").jqGrid('getDataIDs');
+         var rowdata=jQuery("#reportGrid").jqGrid('getRowData',ids[0]);  
+		
+		shr.setIframeHeight();
+		$("#reportGrid_frozen").parent().height('583px');
+	},
+	updatePageEnable:function () {
+		var temp = $("#gridPager1_left >div[dir='ltr']").text();
+		if (temp.substring(1, temp.indexOf('-')) == '1') {
+			$("#prevId").addClass("ui-state-disabled");
+		} else {
+			$("#prevId").removeClass("ui-state-disabled");
+		}
+
+		if (parseInt(temp.substring(temp.indexOf('-') + 1, temp.indexOf(')'))) >= parseInt(temp.substring(temp.indexOf('/') + 1).replace(new RegExp(",","gm"),""))) {
+			$("#nextId").addClass("ui-state-disabled");
+		} else {
+			$("#nextId").removeClass("ui-state-disabled");
+		}
+	},
+    
+	getCurPage:function(){
+		//(1-4)/4
+		var self = this,
+		rowNum = self.rowNumPerPage;
+		var temp = $("#gridPager1_left >div[dir='ltr']").text();
+		var curPageNum = (parseInt(temp.substring(1, temp.indexOf('-')))-1)/rowNum+1;
+		return curPageNum;
+	},
+
+	prePage : function () {
+		$("#prev_gridPager1").trigger("click");
+		shr.setIframeHeight();
+		$("#gripage").text($("#gridPager1_left >div[dir='ltr']").text());
+	},
+
+	nextPage : function () {
+		$("#next_gridPager1").trigger("click");
+		shr.setIframeHeight();
+		$("#gripage").text($("#gridPager1_left >div[dir='ltr']").text());
+	},
+		
+	selectRowNumPerPage:function(){
+			
+	}
+	
+	,
+	exportToExcelAction : function () {
+		openLoader
+  		var _self = this ;
+  		var url = _self.exportCommonParam();
+  		var fastFilterItems = _self.getFastFilterItems();
+		if( fastFilterItems == undefined)
+			fastFilterItems = "" ;
+		if(fastFilterItems["add"] == ""){
+			fastFilterItems["add"] = null;
+		}
+				
+  		 var serviceId = shr.getUrlRequestParam("serviceId");
+  		url += '&serviceId='+encodeURIComponent(serviceId) + "&isAll=true";
+		//document.location.href = url;
+		var callback=function(psw){
+            var params = _self.getExportAllParams();
+            params.exportPrivteProtected = $.allEncrypt(psw);
+			openLoader(1,jsBizMultLan.atsManager_attendanceResultSumList_i18n_28);
+			shr.ajax({
+				type:"post",
+				url:url,
+				data: $.extend(_self.assemExportData(),{exportPrivteProtected: psw} ),
+				success:function(res){
+					closeLoader();
+					if(null != res && null != res.url){   //这里有可能返回空,所以这里要做飞空判断的,但是不知道这里的业务逻辑,所以这里要问常青和飞羽
+                        shr.redirect(res.url,"");
+                    }
+					//document.location.href = url;
+				},
+				error : function(res){
+					shr.showError({message: jsBizMultLan.atsManager_attendanceResultSumList_i18n_6});
+					closeLoader();
+				}
+			});
+		}
+        if(_self.isNeedExportFilePassword('#exportToExcel')) {
+			fieldSensitiveService.setExportPsw(callback);
+		}else{
+			callback();
+		}
+	},
+		assemExportData:function(exportData){
+		var _self = this ;
+		var fastFilterItems = _self.getFastFilterItems();
+		var advancedFilterItems = _self.getAdvancedFilterItems();
+		if( fastFilterItems == undefined)
+			fastFilterItems = "" ;
+		if(fastFilterItems["add"] == ""){
+			fastFilterItems["add"] = null;
+		}
+		
+		if(advancedFilterItems != undefined){
+			fastFilterItems["add"] = advancedFilterItems;
+		}
+		
+		var postData = {fastFilterItems : $.toJSON(fastFilterItems)};
+		
+		exportData && (postData = $.extend(postData, exportData));
+		return postData;
+	},
+	
+	exportCommonParam : function(){
+		var self = this;
+		var url = shr.getContextPath() + shr.dynamicURL + "?method=exportToExcel";
+		var uipk = "com.kingdee.eas.absence.list";
+		var filterItems = self.getQuickFilterItems();
+		var sorder =   $('#reportGrid').jqGrid('getGridParam', 'sortorder') || "";
+		var sordName = $('#reportGrid').jqGrid('getGridParam', 'sortname') || "";
+
+		//标题
+		   url += "&title="+jsBizMultLan.atsManager_attendanceResultSumList_i18n_8;
+		   url = url + '&uipk=' + uipk + "&sidx=" + sordName+"&page=0"+"&sumType="+sumType + "&sord=" + sorder + "&transverse=1";
+		//如果存在高级搜索的条件,则拼上条件。
+		if(filterItems){
+			url += "&searchFilterItems=" + encodeURIComponent(filterItems);
+		}
+		return url;
+	},
+	exportCurrentAction : function(){
+		var Exchange_json=[];
+		var _self = this;
+		var exportData = {
+			exportSelect:"yes",
+			serviceId:shr.getUrlRequestParam("serviceId")
+		};
+		var selectedIds = $("#reportGrid").jqGrid("getSelectedRows");
+		if (selectedIds == undefined || selectedIds.length <= 0 || (selectedIds && selectedIds.length ==
+				1 && selectedIds[0] == "")) {
+			shr.showError({
+				message: "请先选中表格中的数据!",
+				hideAfter: 5
+			});
+			return false;
+		}
+		/*
+		_self.remoteCall({
+			type: "post",
+			async: false,
+			method: "exportCurrent",
+			param: {
+				billIds: selectedIds.toString()
+			},
+		});
+		*/
+		if (selectedIds.length > 0) {
+			for (var i = 0, length = selectedIds.length; i < length; i++) {
+//				personIds.push($("#reportGrid").jqGrid("getCell", selectedIds[i], "id"));
+				var item = selectedIds[i];
+				var data = $("#reportGrid").jqGrid("getRowData", item);
+				
+				var personId=data["personId"] ;
+				var adminOrgUnit=data["adminOrgUnitId"] ;
+				Exchange_json.push({'personId':personId,'adminOrgUnit':adminOrgUnit});
+			}
+		}
+		if(Exchange_json.length > 0){
+			exportData.PersonJson =  $.toJSON(Exchange_json);
+		}else{
+			shr.showWarning({
+				message: jsBizMultLan.atsManager_attendanceResultSumList_i18n_13
+			});
+			return false;
+		}
+		var callback=function(psw){
+            var params = _self.getExportCurrentParams();
+            params.exportPrivteProtected = $.allEncrypt(psw);
+			openLoader(1,jsBizMultLan.atsManager_attendanceResultSumList_i18n_28);
+			shr.ajax({
+				type:"post",
+				url:_self.exportCommonParam(),
+				//method : "toexportCurrent",
+				data: $.extend( _self.assemExportData(exportData),params ),
+				success:function(res){
+					closeLoader();
+					//document.location.href = url;
+					shr.redirect(res.url,"");
+				},
+				error : function(res){
+					shr.showError({message: jsBizMultLan.atsManager_attendanceResultSumList_i18n_6});
+					closeLoader();
+				}
+			});
+		}
+        if(_self.isNeedExportFilePassword('#exportCurrent'))  {
+			fieldSensitiveService.setExportPsw(callback);
+		}else{
+			callback();
+		}
+
+	},
+    //导出选中参数,供领域获取
+    getExportCurrentParams: function() {
+        var _self = this;
+        var isenableexcelpwd = $('#exportCurrent').attr('data-isenableexcelpwd');
+        var fieldName = this.getExportFieldName();
+        if(isenableexcelpwd == 'false') {
+            if(window.isShrSensitiveRuleOpen) isenableexcelpwd = _self.isSensitiveGrid();
+        }
+
+        var ids = $("#reportGrid").jqGrid("getSelectedRows");
+        var params = {
+            supportQueryUuid: false,
+            selectedData: ids,
+            fieldName_key: fieldName,
+            encryptKeys: 'exportPrivteProtected',
+            isEnableExcelPwd: typeof(isenableexcelpwd) === 'undefined' ? 'false' : JSON.parse(isenableexcelpwd)
+        }
+        return params;
+    },
+	
+	exportAllExcelAction:function(){
+        var _self = this;
+		var self = this, table = $("#reportGrid");
+		var searchFilterItems = self.getSearchFilterItems();
+		var fastFilterItems = self.getFastFilterItems();
+		if( searchFilterItems == undefined)
+			searchFilterItems = "" ;
+		if( fastFilterItems == undefined)
+			fastFilterItems = "" ;
+		if(fastFilterItems["add"] == ""){
+			fastFilterItems["add"] = null;
+		}
+		
+		//R20190625-2369保存方案后,其它条件设置的条件被清空
+		//需把视图的filterItem其他条件name="add"改成name="advancedFilter" 
+		var advancedFilterItems = self.getAdvancedFilterItems();
+		
+		if(advancedFilterItems != undefined){
+			fastFilterItems["add"] = advancedFilterItems;
+		}
+		var urlinner = shr.getContextPath() + shr.dynamicURL + "?fastFilterItems="+$.toJSON(fastFilterItems)+"&method=toExcel&handler=com.kingdee.shr.customer.gtiit.rpt.AbsenceSummaryForAllLeaveAListHandler" +"&uipk="+shr.getUrlRequestParam('uipk');
+		//var urlinner = shr.getContextPath()  + shr.dynamicURL + "?method=toExcel&handler=com.kingdee.shr.customer.gtiit.rpt.AbsenceSummaryForAllLeaveListHandler";
+		//alert(urlinner);
+		openLoader(1,"正在导出,请稍等...");
+		var param2 = "";
+		var test = shr.reloadUrlByPost(urlinner, param2, 'toExcel');
+		
+		closeLoader();
+		/*
+		_self.remoteCall({
+			type: "post",
+			async: false,
+			method: "toExcel",
+			param: {
+				'fastFilterItems' : $.toJSON(fastFilterItems)
+			},
+		});
+		*/
+    }
+	
+});	

+ 27 - 0
GDYSL/metadata/com/kingdee/eas/custom/gy/gy.package

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package xmlns="com.kingdee.bos.metadata">
+    <package>com.kingdee.eas.custom.gy</package>
+    <name>gy</name>
+    <alias>package[com.kingdee.eas.custom.gy.gy].alias</alias>
+    <description>package[com.kingdee.eas.custom.gy.gy].description</description>
+    <basicCode>GY</basicCode>
+    <resource>
+        <rs key="package[com.kingdee.eas.custom.gy.gy].alias">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="广以" />
+            <lang locale="zh_HK" value="廣以" />
+            <lang locale="zh_TW" value="廣以" />
+        </rs>
+        <rs key="package[com.kingdee.eas.custom.gy.gy].description">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="null" />
+            <lang locale="zh_HK" value="null" />
+            <lang locale="zh_TW" value="null" />
+        </rs>
+        <rs key="package[com.kingdee.eas.custom.gy.gy].extendedProperty.userDefined">
+            <lang locale="en_US" value="true" />
+            <lang locale="zh_CN" value="true" />
+            <lang locale="zh_TW" value="true" />
+        </rs>
+    </resource>
+</package>

+ 104 - 0
GDYSL/metadata/com/kingdee/eas/custom/gy/task/TaskFacade.facade

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<facade xmlns="com.kingdee.bos.metadata">
+    <package>com.kingdee.eas.custom.gy.task</package>
+    <name>TaskFacade</name>
+    <alias>facade[com.kingdee.eas.custom.gy.task.TaskFacade].alias</alias>
+    <description>facade[com.kingdee.eas.custom.gy.task.TaskFacade].description</description>
+    <userDefined>true</userDefined>
+    <bosType>2BE22BA4</bosType>
+    <stereoType>false</stereoType>
+    <businessImplName>com.kingdee.eas.custom.gy.task.TaskFacade</businessImplName>
+    <businessControllerName>com.kingdee.eas.custom.gy.task.TaskFacadeController</businessControllerName>
+    <accessLevel>public</accessLevel>
+    <subClassingMode>normal</subClassingMode>
+    <methods>
+        <method>
+            <name>taskExecute</name>
+            <isListenerMethod>false</isListenerMethod>
+            <alias>facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].alias</alias>
+            <description>facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].description</description>
+            <innerID>98a29870-626a-4424-9eb1-fab4d1d92c32</innerID>
+            <accessLevel>public</accessLevel>
+            <subClassingMode>normal</subClassingMode>
+            <returnValueType />
+            <metadataRef />
+            <transactionAttribute>Supports</transactionAttribute>
+            <userDefined>true</userDefined>
+            <userDefinedLogic />
+            <parameters>
+                <parameter>
+                    <name>osfServiceName</name>
+                    <alias>facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[osfServiceName].alias</alias>
+                    <description>facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[osfServiceName].description</description>
+                    <direction>in</direction>
+                    <dataType>String</dataType>
+                    <metadataRef />
+                    <userDefined>true</userDefined>
+                </parameter>
+                <parameter>
+                    <name>data</name>
+                    <alias>facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[data].alias</alias>
+                    <description>facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[data].description</description>
+                    <direction>in</direction>
+                    <dataType>String</dataType>
+                    <metadataRef />
+                    <userDefined>true</userDefined>
+                </parameter>
+            </parameters>
+            <configured>false</configured>
+        </method>
+    </methods>
+    <resource>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].alias">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="任务" />
+            <lang locale="zh_HK" value="任務" />
+            <lang locale="zh_TW" value="任務" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].description">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="null" />
+            <lang locale="zh_HK" value="null" />
+            <lang locale="zh_TW" value="null" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].extendedProperty.userDefined">
+            <lang locale="en_US" value="true" />
+            <lang locale="zh_CN" value="true" />
+            <lang locale="zh_TW" value="true" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].alias">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="任务执行" />
+            <lang locale="zh_HK" value="任務執行" />
+            <lang locale="zh_TW" value="任務執行" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].description">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="" />
+            <lang locale="zh_TW" value="null" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[data].alias">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="参数数据" />
+            <lang locale="zh_HK" value="參數數據" />
+            <lang locale="zh_TW" value="參數數據" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[data].description">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="参数数据" />
+            <lang locale="zh_HK" value="參數數據" />
+            <lang locale="zh_TW" value="參數數據" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[osfServiceName].alias">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="osf服务名" />
+            <lang locale="zh_HK" value="osf服務名" />
+            <lang locale="zh_TW" value="osf服務名" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.custom.gy.task.TaskFacade].methods.method[taskExecute].parameters.parameter[osfServiceName].description">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="" />
+            <lang locale="zh_TW" value="null" />
+        </rs>
+    </resource>
+</facade>

+ 27 - 0
GDYSL/metadata/com/kingdee/eas/custom/gy/task/task.package

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package xmlns="com.kingdee.bos.metadata">
+    <package>com.kingdee.eas.custom.gy.task</package>
+    <name>task</name>
+    <alias>package[com.kingdee.eas.custom.gy.task.task].alias</alias>
+    <description>package[com.kingdee.eas.custom.gy.task.task].description</description>
+    <basicCode>TK</basicCode>
+    <resource>
+        <rs key="package[com.kingdee.eas.custom.gy.task.task].alias">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="任务" />
+            <lang locale="zh_HK" value="任務" />
+            <lang locale="zh_TW" value="任務" />
+        </rs>
+        <rs key="package[com.kingdee.eas.custom.gy.task.task].description">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="null" />
+            <lang locale="zh_HK" value="null" />
+            <lang locale="zh_TW" value="null" />
+        </rs>
+        <rs key="package[com.kingdee.eas.custom.gy.task.task].extendedProperty.userDefined">
+            <lang locale="en_US" value="true" />
+            <lang locale="zh_CN" value="true" />
+            <lang locale="zh_TW" value="true" />
+        </rs>
+    </resource>
+</package>

+ 27 - 17
GDYSL/src/com/kingdee/eas/custom/facade/leave/LeaveAllowanceFacadeControllerBean.java

@@ -211,9 +211,9 @@ public class LeaveAllowanceFacadeControllerBean extends AbstractLeaveAllowanceFa
 					" left join T_HR_EmpOrgRelation eo on p.fid = eo.fpersonid and eo.fleffdt='2199-12-31 00:00:00' " +
 					" left join CT_MP_Fullorpart fp on fp.fid = p.cfftorptid " +
 					" left join T_HR_ATS_AtsHolidayFile f on f.fproposerid = p.fid " +
-//					" left join T_HR_ATS_HolidayPolicySet hps on f.fholidaypolicysetid = hps.fid " +
-					" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = 'JQLX000001Y' " +
-					" left join T_HR_ATS_HolidayPolicy hp on  ht.fid = hp.FHOLIDAYTYPEID " +
+					" left join T_HR_ATS_HolidayPolicySet hps on f.fholidaypolicysetid = hps.fid " +
+					" left join T_HR_ATS_HolidayPolicy hp on  hp.FHOLIDAYPOLICYSETID = hps.fid " +
+					" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = 'JQLX000001Y' and ht.FID =hp.fholidaytypeid  " +
 //					" and hps.fid = hp.fholidaypolicysetid " +
 					" left join T_HR_ATS_HolidayLimit l on hp.fid = l.FHOLIDAYPOLICYID and l.FPROPOSERID = p.fid and l.FCYCLEBEGINDATE >= p.fhiredate and l.FCYCLEBEGINDATE <=  p.FLEFFDT  and l.fyear =  " + year +
 //					" left join T_HR_EmpEnrollBizBillEntry ebe on ebe.FPERSONID = p.fid and ebe.FBIZDATE = p.fhiredate " +
@@ -225,6 +225,8 @@ public class LeaveAllowanceFacadeControllerBean extends AbstractLeaveAllowanceFa
 					" select rownum rownumber,ebe.FPERSONID, " +
 					" ebe.FPROBATION,ebe.FPLANFORMALDATE, ebe.FBIZDATE " +
 					" from T_HR_EmpEnrollBizBillEntry ebe " +
+					" inner join (select re1.fpersonid,max(re1.fbizdate) fbizdate,count(fid) from T_HR_EmpEnrollBizBillEntry re1 " +
+					" group by re1.fpersonid) re1 on ebe.fpersonid=re1.fpersonid and re1.fbizdate=ebe.fbizdate " +
 					" left join T_HR_EmpEnrollBizBill eb on ebe.FBILLID = eb.FID " +
 					" and eb.FBILLSTATE = 3 " +
 					" order by ebe.fbizdate desc) ebe " +
@@ -234,16 +236,18 @@ public class LeaveAllowanceFacadeControllerBean extends AbstractLeaveAllowanceFa
 					" select rownum rownumber,rbe.fid, rbe.FPERSONID, " +
 					" rbe.FENTERDATE, rbe.CFWcategoryID, rbe.FBIZDATE " +
 					" from T_HR_ResignBizBillEntry rbe " +
+					" inner join (select re1.fpersonid,max(re1.fbizdate) fbizdate,count(fid) from T_HR_ResignBizBillEntry re1 " +
+					" group by re1.fpersonid) re1 on rbe.fpersonid=re1.fpersonid and re1.fbizdate=rbe.fbizdate " +
 					" left join T_HR_ResignBizBill rb on rb.fid = rbe.FBILLID " +
 					" and rb.FBILLSTATE = 3 order by rbe.fbizdate desc " +
-					" ) rbe on rbe.rownumber = 1 and rbe.FPERSONID = p.fid " +
+					" ) rbe on  rbe.FPERSONID = p.fid " +
 					" and p.fhiredate = rbe.FENTERDATE " +
 
 					" left join CT_MP_WorkerCategory wc on (wc.fid = eo.cfworkercategoryid or wc.fid = rbe.CFWcategoryID) " +
-					" where f.fattendfilestate = 1 and fp.fnumber = 'FULL' and eo.fassigntype = 1 and eo.feffdt <= to_date('"+currentDateStr+"','yyyy-MM-dd') and to_char(p.fhiredate, 'yyyy')<="+year+" and to_char(p.FLEFFDT,'yyyy')>="+year+" ";
+					" where f.fattendfilestate = 1 and ht.FNUMBER = 'JQLX000001Y' and fp.fnumber = 'FULL' and eo.fassigntype = 1 and eo.feffdt <= to_date('"+currentDateStr+"','yyyy-MM-dd') and to_char(p.fhiredate, 'yyyy')<="+year+" and to_char(p.FLEFFDT,'yyyy')>="+year+" ";
 
 			if (StringUtils.isNotEmpty(personNumStr)) {
-				sql += " and p.fnumber in (" + personNumStr + ") ";
+				sql += " and p.fnumber in (" + personNumStr + ")  ";
 			}
 			sql += " ) temp where temp.rn = 1 ";
 			IRowSet iRowSet = DbUtil.executeQuery(ctx, sql);
@@ -567,18 +571,20 @@ public class LeaveAllowanceFacadeControllerBean extends AbstractLeaveAllowanceFa
 					String lastYearSql = "/*dialect*/select p.fid,l.fid limitId,l.FSTANDARDLIMIT,l.FADDORSUBLIMIT,l.FUSEDLIMIT,l.FREEZELIMIT, coalesce(l.CFInitializedLimit, 0) CFInitializedLimit,coalesce(l.CFConvertedLimit, 0) CFConvertedLimit, coalesce(l.cflastcarryforward,0) cflastcarryforward,coalesce(l.cfcarryforward,0) cfcarryforward from t_bd_person p\n" +
 							" left join T_HR_ATS_AtsHolidayFile f on f.fproposerid = p.fid  \n" +
 							" left join T_HR_ATS_HolidayPolicySet hps on f.fholidaypolicysetid = hps.fid  \n" +
-							" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = 'JQLX000001Y' \n" +
-							" left join T_HR_ATS_HolidayPolicy hp on  ht.fid = hp.FHOLIDAYTYPEID and hps.fid = hp.fholidaypolicysetid \n" +
+							" left join T_HR_ATS_HolidayPolicy hp on  hps.fid = hp.fholidaypolicysetid \n" +
+							" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = 'JQLX000001Y' and ht.fid = hp.FHOLIDAYTYPEID  \n" +
+
 							" left join T_HR_ATS_HolidayLimit l on hp.fid = l.FHOLIDAYPOLICYID and l.FPROPOSERID = p.fid and  l.FCYCLEBEGINDATE >= p.fhiredate and l.FCYCLEBEGINDATE <= p.FLEFFDT and l.fyear =  "+(yearP-1)+"\n" +
-							" where f.fattendfilestate = 1 and p.fnumber = '"+personNumP+"' and l.fid is not null ";
+							" where f.fattendfilestate = 1 and p.fnumber = '"+personNumP+"' and l.fid is not null and ht.FNUMBER = 'JQLX000001Y' ";
 					if (StringUtils.equalsIgnoreCase("MS SQL Server", dbType)) {
 						lastYearSql = "/*dialect*/select p.fid,l.fid limitId,l.FSTANDARDLIMIT,l.FADDORSUBLIMIT,l.FUSEDLIMIT,l.FREEZELIMIT, isnull(l.CFInitializedLimit, 0) CFInitializedLimit,isnull(l.CFConvertedLimit, 0) CFConvertedLimit, isnull(l.cflastcarryforward,0) cflastcarryforward,isnull(l.cfcarryforward,0) cfcarryforward from t_bd_person p\n" +
 								" left join T_HR_ATS_AtsHolidayFile f on f.fproposerid = p.fid  \n" +
 								" left join T_HR_ATS_HolidayPolicySet hps on f.fholidaypolicysetid = hps.fid  \n" +
-								" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = 'JQLX000001Y' \n" +
-								" left join T_HR_ATS_HolidayPolicy hp on  ht.fid = hp.FHOLIDAYTYPEID and hps.fid = hp.fholidaypolicysetid \n" +
+								" left join T_HR_ATS_HolidayPolicy hp on hps.fid = hp.fholidaypolicysetid \n" +
+								" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = 'JQLX000001Y' and ht.fid = hp.FHOLIDAYTYPEID  \n" +
+
 								" left join T_HR_ATS_HolidayLimit l on hp.fid = l.FHOLIDAYPOLICYID and l.FPROPOSERID = p.fid and  l.FCYCLEBEGINDATE >= p.fhiredate and l.FCYCLEBEGINDATE <= p.FLEFFDT and l.fyear =  "+(yearP-1)+"\n" +
-								" where f.fattendfilestate = 1 and p.fnumber = '"+personNumP+"' and l.fid is not null ";
+								" where f.fattendfilestate = 1 and p.fnumber = '"+personNumP+"' and l.fid is not null and ht.FNUMBER = 'JQLX000001Y'  ";
 					}
 
 					IRowSet lastYearRowSet = DbUtil.executeQuery(ctx, lastYearSql);
@@ -858,10 +864,10 @@ public class LeaveAllowanceFacadeControllerBean extends AbstractLeaveAllowanceFa
 					" ebe.FPLANFORMALDATE,hp.fid holidayPolicyId,l.FADDORSUBLIMIT,l.FUSEDLIMIT,l.FREEZELIMIT,l.FCYCLEBEGINDATE,l.FCYCLEENDDATE from " + personFamilyTempTable + " f " +
 					" left join t_bd_person p on p.fid = f.FPERSONID " +
 					" left join T_HR_ATS_AtsHolidayFile hf on hf.fproposerid = f.FPERSONID " +
-//					" left join T_HR_ATS_HolidayPolicySet hps on hf.fholidaypolicysetid = hps.fid  " +
-					" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = '"+policyNumber+"'  " +
-					" left join T_HR_ATS_HolidayPolicy hp on  ht.fid = hp.FHOLIDAYTYPEID " +
-//					"nd hps.fid = hp.fholidaypolicysetid " +
+					" left join T_HR_ATS_HolidayPolicySet hps on hf.fholidaypolicysetid = hps.fid  " +
+					" left join T_HR_ATS_HolidayPolicy hp on hps.fid = hp.fholidaypolicysetid" +
+					" left join T_HR_ATS_HolidayType ht on ht.FNUMBER = '"+policyNumber+"' and ht.fid = hp.FHOLIDAYTYPEID  " +
+
 					" left join T_HR_ATS_HolidayLimit l on hp.fid = l.FHOLIDAYPOLICYID and l.FPROPOSERID = f.FPERSONID and l.FYEAR = "+ year +" and f.CFStartTime<=l.FCYCLEBEGINDATE and f.CFEndTime>=l.FCYCLEBEGINDATE  and l.FCYCLEBEGINDATE >= p.fhiredate and l.FCYCLEENDDATE >= p.fhiredate " +
 //					" left join T_HR_EmpEnrollBizBillEntry ebe on ebe.FPERSONID = f.FPERSONID and ebe.FBIZDATE = p.fhiredate " +
 //					" left join T_HR_EmpEnrollBizBill eb on ebe.FBILLID = eb.FID and eb.FBILLSTATE = 3 " +
@@ -872,6 +878,8 @@ public class LeaveAllowanceFacadeControllerBean extends AbstractLeaveAllowanceFa
 					" select rownum rownumber,ebe.FPERSONID, " +
 					" ebe.FPROBATION,ebe.FPLANFORMALDATE, ebe.FBIZDATE " +
 					" from T_HR_EmpEnrollBizBillEntry ebe " +
+					" inner join (select re1.fpersonid,max(re1.fbizdate) fbizdate,count(fid) from T_HR_EmpEnrollBizBillEntry re1 " +
+					" group by re1.fpersonid) re1 on ebe.fpersonid=re1.fpersonid and re1.fbizdate=ebe.fbizdate " +
 					" left join T_HR_EmpEnrollBizBill eb on ebe.FBILLID = eb.FID " +
 					" and eb.FBILLSTATE = 3 " +
 					" order by ebe.fbizdate desc) ebe " +
@@ -881,12 +889,14 @@ public class LeaveAllowanceFacadeControllerBean extends AbstractLeaveAllowanceFa
 					" select rownum rownumber,rbe.fid, rbe.FPERSONID, " +
 					" rbe.FENTERDATE, rbe.CFWcategoryID, rbe.FBIZDATE " +
 					" from T_HR_ResignBizBillEntry rbe " +
+					" inner join (select re1.fpersonid,max(re1.fbizdate) fbizdate,count(fid) from T_HR_ResignBizBillEntry re1 " +
+					" group by re1.fpersonid) re1 on rbe.fpersonid=re1.fpersonid and re1.fbizdate=rbe.fbizdate " +
 					" left join T_HR_ResignBizBill rb on rb.fid = rbe.FBILLID " +
 					" and rb.FBILLSTATE = 3 order by rbe.fbizdate desc " +
 					" ) rbe on rbe.rownumber = 1 and rbe.FPERSONID = p.fid " +
 					" and p.fhiredate = rbe.FENTERDATE " +
 
-					" where hf.fattendfilestate = 1 and f.CFStartTime <= to_date('"+yearLastDayStr+"','yyyy-MM-dd') and (f.CFEndTime >= to_date('"+yearFirstDayStr+"','yyyy-MM-dd') or f.CFEndTime is null)  and  to_char(p.fhiredate,'yyyy')<="+year+" and to_char(p.FLEFFDT,'yyyy')>="+year;
+					" where ht.FNUMBER = '"+policyNumber+"' and hf.fattendfilestate = 1 and f.CFStartTime <= to_date('"+yearLastDayStr+"','yyyy-MM-dd') and (f.CFEndTime >= to_date('"+yearFirstDayStr+"','yyyy-MM-dd') or f.CFEndTime is null)  and  to_char(p.fhiredate,'yyyy')<="+year+" and to_char(p.FLEFFDT,'yyyy')>="+year;
 
 			if (StringUtils.isNotEmpty(personNumStr)) {
 				sql += " and p.fnumber in (" + personNumStr + ") ";

+ 58 - 0
GDYSL/src/com/kingdee/eas/custom/gy/task/AbstractTaskFacadeControllerBean.java

@@ -0,0 +1,58 @@
+package com.kingdee.eas.custom.gy.task;
+
+import javax.ejb.*;
+import java.rmi.RemoteException;
+import com.kingdee.bos.*;
+import com.kingdee.bos.util.BOSObjectType;
+import com.kingdee.bos.metadata.IMetaDataPK;
+import com.kingdee.bos.metadata.rule.RuleExecutor;
+import com.kingdee.bos.metadata.MetaDataPK;
+//import com.kingdee.bos.metadata.entity.EntityViewInfo;
+import com.kingdee.bos.framework.ejb.AbstractEntityControllerBean;
+import com.kingdee.bos.framework.ejb.AbstractBizControllerBean;
+//import com.kingdee.bos.dao.IObjectPK;
+import com.kingdee.bos.dao.IObjectValue;
+import com.kingdee.bos.dao.IObjectCollection;
+import com.kingdee.bos.service.ServiceContext;
+import com.kingdee.bos.service.IServiceContext;
+import com.kingdee.eas.framework.Result;
+import com.kingdee.eas.framework.LineResult;
+import com.kingdee.eas.framework.exception.EASMultiException;
+import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
+
+import java.lang.String;
+
+
+
+public abstract class AbstractTaskFacadeControllerBean extends AbstractBizControllerBean implements TaskFacadeController
+{
+    protected AbstractTaskFacadeControllerBean()
+    {
+    }
+
+    protected BOSObjectType getBOSType()
+    {
+        return new BOSObjectType("2BE22BA4");
+    }
+
+    public void taskExecute(Context ctx, String osfServiceName, String data) throws BOSException
+    {
+        try {
+            ServiceContext svcCtx = createServiceContext(new MetaDataPK("98a29870-626a-4424-9eb1-fab4d1d92c32"), new Object[]{ctx, osfServiceName, data});
+            invokeServiceBefore(svcCtx);
+              if(!svcCtx.invokeBreak()) {
+            _taskExecute(ctx, osfServiceName, data);
+            }
+            invokeServiceAfter(svcCtx);
+        } catch (BOSException ex) {
+            throw ex;
+        } finally {
+            super.cleanUpServiceState();
+        }
+    }
+    protected void _taskExecute(Context ctx, String osfServiceName, String data) throws BOSException
+    {    	
+        return;
+    }
+
+}

+ 18 - 0
GDYSL/src/com/kingdee/eas/custom/gy/task/ITaskFacade.java

@@ -0,0 +1,18 @@
+package com.kingdee.eas.custom.gy.task;
+
+import com.kingdee.bos.BOSException;
+//import com.kingdee.bos.metadata.*;
+import com.kingdee.bos.framework.*;
+import com.kingdee.bos.util.*;
+import com.kingdee.bos.Context;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.util.*;
+import java.lang.String;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.framework.*;
+
+public interface ITaskFacade extends IBizCtrl
+{
+    public void taskExecute(String osfServiceName, String data) throws BOSException;
+}

+ 50 - 0
GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacade.java

@@ -0,0 +1,50 @@
+package com.kingdee.eas.custom.gy.task;
+
+import com.kingdee.bos.framework.ejb.EJBRemoteException;
+import com.kingdee.bos.util.BOSObjectType;
+import java.rmi.RemoteException;
+import com.kingdee.bos.framework.AbstractBizCtrl;
+import com.kingdee.bos.orm.template.ORMObject;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.eas.custom.gy.task.*;
+import com.kingdee.bos.util.*;
+import java.lang.String;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.framework.*;
+
+public class TaskFacade extends AbstractBizCtrl implements ITaskFacade
+{
+    public TaskFacade()
+    {
+        super();
+        registerInterface(ITaskFacade.class, this);
+    }
+    public TaskFacade(Context ctx)
+    {
+        super(ctx);
+        registerInterface(ITaskFacade.class, this);
+    }
+    public BOSObjectType getType()
+    {
+        return new BOSObjectType("2BE22BA4");
+    }
+    private TaskFacadeController getController() throws BOSException
+    {
+        return (TaskFacadeController)getBizController();
+    }
+    /**
+     *任务执行-User defined method
+     *@param osfServiceName osf服务名
+     *@param data 参数数据
+     */
+    public void taskExecute(String osfServiceName, String data) throws BOSException
+    {
+        try {
+            getController().taskExecute(getContext(), osfServiceName, data);
+        }
+        catch(RemoteException err) {
+            throw new EJBRemoteException(err);
+        }
+    }
+}

+ 21 - 0
GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacadeController.java

@@ -0,0 +1,21 @@
+package com.kingdee.eas.custom.gy.task;
+
+import com.kingdee.bos.BOSException;
+//import com.kingdee.bos.metadata.*;
+import com.kingdee.bos.framework.*;
+import com.kingdee.bos.util.*;
+import com.kingdee.bos.Context;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.util.*;
+import java.lang.String;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.framework.*;
+
+import java.rmi.RemoteException;
+import com.kingdee.bos.framework.ejb.BizController;
+
+public interface TaskFacadeController extends BizController
+{
+    public void taskExecute(Context ctx, String osfServiceName, String data) throws BOSException, RemoteException;
+}

+ 55 - 0
GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacadeControllerBean.java

@@ -0,0 +1,55 @@
+package com.kingdee.eas.custom.gy.task;
+
+import com.kingdee.bos.ctrl.kdf.table.IRow;
+import com.kingdee.bos.rabbitmq.guava.Lists;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+import org.apache.log4j.Logger;
+import javax.ejb.*;
+import java.rmi.RemoteException;
+import com.kingdee.bos.*;
+import com.kingdee.bos.util.BOSObjectType;
+import com.kingdee.bos.metadata.IMetaDataPK;
+import com.kingdee.bos.metadata.rule.RuleExecutor;
+import com.kingdee.bos.metadata.MetaDataPK;
+//import com.kingdee.bos.metadata.entity.EntityViewInfo;
+import com.kingdee.bos.framework.ejb.AbstractEntityControllerBean;
+import com.kingdee.bos.framework.ejb.AbstractBizControllerBean;
+//import com.kingdee.bos.dao.IObjectPK;
+import com.kingdee.bos.dao.IObjectValue;
+import com.kingdee.bos.dao.IObjectCollection;
+import com.kingdee.bos.service.ServiceContext;
+import com.kingdee.bos.service.IServiceContext;
+
+import java.lang.String;
+import java.util.List;
+
+public class TaskFacadeControllerBean extends AbstractTaskFacadeControllerBean
+{
+    private static Logger logger =
+        Logger.getLogger("com.kingdee.eas.custom.gy.task.TaskFacadeControllerBean");
+
+    @Override
+    protected void _taskExecute(Context ctx, String osfServiceName, String data) throws BOSException {
+        System.out.println("TaskFacadeControllerBean._taskExecute:");
+        super._taskExecute(ctx, osfServiceName, data);
+        try {
+            StringBuilder sql = new StringBuilder();
+            sql.append(" select fpositionid,fadminorgid,fpersonid from T_HR_EmpOrgRelation where fassigntype=1 and fleffdt='2199-12-31 00:00:00' ");
+            IRowSet rs = DbUtil.executeQuery(ctx, sql.toString());
+            List<String> list = Lists.newArrayList();
+            while (rs.next()) {
+                String fpositionid = rs.getString("fpositionid");
+                String fadminorgid = rs.getString("fadminorgid");
+                String fpersonid = rs.getString("fpersonid");
+                StringBuilder upd = new StringBuilder();
+                upd.append("update T_HR_ATS_HOLIDAYLIMIT set fpositionid='"+fpositionid+"',fadminorgunitid='"+fadminorgid+"' where fproposerid='"+fpersonid+"'");
+                System.out.println("TaskFacadeControllerBean._taskExecute:"+upd);
+                DbUtil.execute(ctx,upd.toString());
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new BOSException(e);
+        }
+    }
+}

+ 30 - 0
GDYSL/src/com/kingdee/eas/custom/gy/task/TaskFacadeFactory.java

@@ -0,0 +1,30 @@
+package com.kingdee.eas.custom.gy.task;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.BOSObjectFactory;
+import com.kingdee.bos.util.BOSObjectType;
+import com.kingdee.bos.Context;
+
+public class TaskFacadeFactory
+{
+    private TaskFacadeFactory()
+    {
+    }
+    public static com.kingdee.eas.custom.gy.task.ITaskFacade getRemoteInstance() throws BOSException
+    {
+        return (com.kingdee.eas.custom.gy.task.ITaskFacade)BOSObjectFactory.createRemoteBOSObject(new BOSObjectType("2BE22BA4") ,com.kingdee.eas.custom.gy.task.ITaskFacade.class);
+    }
+    
+    public static com.kingdee.eas.custom.gy.task.ITaskFacade getRemoteInstanceWithObjectContext(Context objectCtx) throws BOSException
+    {
+        return (com.kingdee.eas.custom.gy.task.ITaskFacade)BOSObjectFactory.createRemoteBOSObjectWithObjectContext(new BOSObjectType("2BE22BA4") ,com.kingdee.eas.custom.gy.task.ITaskFacade.class, objectCtx);
+    }
+    public static com.kingdee.eas.custom.gy.task.ITaskFacade getLocalInstance(Context ctx) throws BOSException
+    {
+        return (com.kingdee.eas.custom.gy.task.ITaskFacade)BOSObjectFactory.createBOSObject(ctx, new BOSObjectType("2BE22BA4"));
+    }
+    public static com.kingdee.eas.custom.gy.task.ITaskFacade getLocalInstance(String sessionID) throws BOSException
+    {
+        return (com.kingdee.eas.custom.gy.task.ITaskFacade)BOSObjectFactory.createBOSObject(sessionID, new BOSObjectType("2BE22BA4"));
+    }
+}

+ 1802 - 0
GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/AbsenceSummaryForAllLeaveAListHandler.java

@@ -0,0 +1,1802 @@
+package com.kingdee.shr.customer.gtiit.rpt;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+import com.kingdee.shr.base.syssetting.context.SHRContext;
+import com.kingdee.shr.base.syssetting.exception.SHRWebException;
+import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
+import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
+import com.kingdee.shr.customer.gtiit.util.ExportAllUtil;
+import java.math.BigDecimal;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.ui.ModelMap;
+
+public class AbsenceSummaryForAllLeaveAListHandler extends ListHandler
+{
+	private static final Logger log = LoggerFactory.getLogger(AbsenceSummaryForAllLeaveAListHandler.class);
+
+	Context ctx = SHRContext.getInstance().getContext();
+	private int totalCount;
+
+	public String getGridColModelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
+			throws SHRWebException, BOSException, SQLException
+	{
+		List colNames = getcolNamesAction();
+		List colModel = getcolModelAction();
+		LinkedHashMap map = new LinkedHashMap();
+		map.put("colNames", colNames);
+		map.put("colModel", colModel);
+		JSONUtils.writeJson(response, map);
+		return null;
+	}
+
+	public List<String> getcolNamesAction()
+	{
+		List list = new ArrayList();
+		list.add("Dept");
+		list.add("Staff No.");
+		list.add("Name");
+		list.add("Position");
+		list.add("Work Category");
+		list.add("Person Type");
+		list.add("Full Time or Part Time");
+		list.add("Hire Date");
+		list.add("Ter Date");
+		list.add("Status");
+		list.add("Annual Entitlement (Days)");
+		list.add("Faculty Sick Entitlement (Days)");
+		list.add("Faculty Sick Max Entitlement (Days)");
+		list.add("Child care Entitlement (Days)");
+		list.add("Elderly care Entitlement (Days)");
+		list.add("Annual Leave (Days)");
+		list.add("Sick Leave (Days)");
+		list.add("Marriage Leave (Days)");
+		list.add("Paternity Leave (Days)");
+		list.add("Maternity Leave (Days)");
+		list.add("Bereavement Leave (Days)");
+		list.add("Miscarriage Leave (Days)");
+		list.add("Leave Of Family Planning Birth Control (Days)");
+		list.add("Work-related Injury Leave (Days)");
+		list.add("Medical Treatment Leave (Days)");
+		list.add("Unpaid Leave (H)");
+		list.add("Compensatory Leave (H)");
+		list.add("Child Care Leave (Days)");
+		list.add("Elderly Care Leave (Days)");
+		list.add("Annual Leave Balance (Days)");
+		list.add("sick leave balance");
+		list.add("Compensatory Leave Balance(H)");
+		list.add("Child Care Leave Balance");
+		list.add("Elderly Care Leave Balance");
+		return list;
+	}
+
+	public void getGridDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, SQLException, SHRWebException, com.kingdee.eas.base.form.json.JSONException, org.json.JSONException
+	{
+		log.info(">>> Enter AbsenceSummaryForAllLeaveListHandler...getGridDataAction");
+		int rows = Integer.parseInt(request.getParameter("rows"));
+		int page = Integer.parseInt(request.getParameter("page"));
+
+		IRowSet rs = getIRowSet(request);
+		if (null == rs) {
+			return;
+		}
+		int num = 0;
+		List maplist = new ArrayList();
+		while (rs.next()) {
+			num++;
+			if ((num >= rows * (page - 1) + 1) && (num <= rows * page)) {
+				Map map = new HashMap();
+				map.put("Dept", rs.getString("Dept"));
+				map.put("Staff No.", rs.getString("StaffNo"));
+				map.put("Name", rs.getString("Name"));
+				map.put("Position", rs.getString("Position"));
+				map.put("Work Category", rs.getString("WorkCategory"));
+				map.put("Person Type", rs.getString("PersonType"));
+				map.put("Full Time or Part Time", rs.getString("FullTimeOrPartTime"));
+				map.put("Hire date", StringUtils.isEmpty(rs.getString("HireDate")) ? null : getDateString(rs.getString("HireDate")));
+				map.put("Ter  Date", StringUtils.isEmpty(rs.getString("TerDate")) ? null : getDateString(rs.getString("TerDate")));
+				map.put("Status", rs.getString("Status"));
+				map.put("Annual Entitlement", rs.getBigDecimal("AnnualEntitlement") != null ? rs.getBigDecimal("AnnualEntitlement").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Faculty Sick Entitlement", rs.getBigDecimal("FacultySickEntitlement") != null ? rs.getBigDecimal("FacultySickEntitlement").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Faculty Sick Max Entitlement", rs.getBigDecimal("FacultySickMaxEntitlement") != null ? rs.getBigDecimal("FacultySickMaxEntitlement").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Child care Entitlement", rs.getBigDecimal("ChildCareEntitlement") != null ? rs.getBigDecimal("ChildCareEntitlement").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Elderly care Entitlement", rs.getBigDecimal("ElderlyCareEntitlement") != null ? rs.getBigDecimal("ElderlyCareEntitlement").setScale(2, 4) : Integer.valueOf(0));
+				map.put("annual leave", rs.getBigDecimal("AnnualLeave") != null ? rs.getBigDecimal("AnnualLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("sick leave", rs.getBigDecimal("SickLeave") != null ? rs.getBigDecimal("SickLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("marriage leave", rs.getBigDecimal("MarriageLeave") != null ? rs.getBigDecimal("MarriageLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("paternity leave", rs.getBigDecimal("PaternityLeave") != null ? rs.getBigDecimal("PaternityLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("maternity leave", rs.getBigDecimal("MaternityLeave") != null ? rs.getBigDecimal("MaternityLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("bereavement leave", rs.getBigDecimal("BereavementLeave") != null ? rs.getBigDecimal("BereavementLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("miscarriage leave", rs.getBigDecimal("MiscarriageLeave") != null ? rs.getBigDecimal("MiscarriageLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("leave of family planning birth control", rs.getBigDecimal("LeaveOfFamilyPlanningBirthControl") != null ? rs.getBigDecimal("LeaveOfFamilyPlanningBirthControl").setScale(2, 4) : Integer.valueOf(0));
+				map.put("work-related injury leave", rs.getBigDecimal("WorkRelatedInjuryLeave") != null ? rs.getBigDecimal("WorkRelatedInjuryLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("medical treatment leave", rs.getBigDecimal("MedicalTreatmentLeave") != null ? rs.getBigDecimal("MedicalTreatmentLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("unpaid leave(H)", rs.getBigDecimal("UnpaidLeaveH") != null ? rs.getBigDecimal("UnpaidLeaveH").setScale(2, 4) : Integer.valueOf(0));
+				map.put("compensatory leave(H)", rs.getBigDecimal("CompensatoryLeaveH") != null ? rs.getBigDecimal("CompensatoryLeaveH").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Child Care Leave", rs.getBigDecimal("ChildCareLeave") != null ? rs.getBigDecimal("ChildCareLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Elderly Care Leave", rs.getBigDecimal("ElderlyCareLeave") != null ? rs.getBigDecimal("ElderlyCareLeave").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Annual Leave Balance", rs.getBigDecimal("AnnualLeaveBalance") != null ? rs.getBigDecimal("AnnualLeaveBalance").setScale(2, 4) : Integer.valueOf(0));
+				map.put("sick leave balance", rs.getBigDecimal("SickLeaveBalance") != null ? rs.getBigDecimal("SickLeaveBalance").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Compensatory Leave Balance(H)", rs.getBigDecimal("CompensatoryLeaveBalanceH") != null ? rs.getBigDecimal("CompensatoryLeaveBalanceH").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Child Care Leave Balance", rs.getBigDecimal("ChildCareLeaveBalance") != null ? rs.getBigDecimal("ChildCareLeaveBalance").setScale(2, 4) : Integer.valueOf(0));
+				map.put("Elderly Care Leave Balance", rs.getBigDecimal("ElderlyCareLeaveBalance") != null ? rs.getBigDecimal("ElderlyCareLeaveBalance").setScale(2, 4) : Integer.valueOf(0));
+				maplist.add(map);
+			}
+		}
+		this.totalCount = num;
+		Map gridDataMap = new LinkedHashMap();
+		if (this.totalCount % rows == 0)
+			gridDataMap.put("total", Integer.valueOf(this.totalCount / rows));
+		else {
+			gridDataMap.put("total", Integer.valueOf(this.totalCount / rows + 1));
+		}
+		gridDataMap.put("page", Integer.valueOf(page));
+		gridDataMap.put("records", Integer.valueOf(this.totalCount));
+		gridDataMap.put("rows", maplist);
+		JSONUtils.writeJson(response, gridDataMap);
+		log.info(">>> complete AbsenceSummaryForAllLeaveListHandler...getGridDataAction!!!");
+	}
+
+	public IRowSet getIRowSet(HttpServletRequest request)
+			throws BOSException, org.json.JSONException
+	{
+		String fastFilterItems = request.getParameter("fastFilterItems");
+		JSONObject tofastFilterItems = new JSONObject(fastFilterItems);
+		log.info("ASFALH...tofastFilterItems = " + tofastFilterItems);
+		JSONObject status = tofastFilterItems.getJSONObject("status");
+		log.info("ASFALH...status = " + status);
+		String statusValues = status.getString("values");
+		log.info("ASFALH...statusValues = " + statusValues);
+		JSONObject cutOffDateJSON = tofastFilterItems.getJSONObject("cutOffDate");
+		if ("".equals(cutOffDateJSON.get("values"))) {
+			return null;
+		}
+		JSONObject cutOffDateValues = cutOffDateJSON.getJSONObject("values");
+		if (ObjectUtils.isEmpty(cutOffDateValues)) {
+			return null;
+		}
+
+		JSONObject fullOrPart = tofastFilterItems.getJSONObject("fullOrPart");
+		String fullOrPartValues = fullOrPart.getString("values");
+
+		String cutOffDate = cutOffDateValues.getString("date");
+		SimpleDateFormat dat = new SimpleDateFormat("yyyy-MM-dd");
+		String yearFirstDate = null;
+		String year = "";
+		try {
+			Date cfDate = dat.parse(cutOffDate);
+			Calendar ins = Calendar.getInstance();
+			ins.setTime(cfDate);
+			int yearDate = ins.get(1);
+			year = String.valueOf(yearDate);
+			Date yearFirst = getYearFirst(yearDate);
+			yearFirstDate = dat.format(yearFirst);
+		}
+		catch (ParseException e) {
+			return null;
+		}
+
+		String where = " where 1=1 ";
+		if (ObjectUtils.isNotEmpty(statusValues)) {
+			if ("1".equals(statusValues))
+			{
+				where = where + "  and final.Status='Active' ";
+			}
+			else {
+				where = where + "  and final.Status='Negative' ";
+			}
+		}
+
+		if (ObjectUtils.isNotEmpty(fullOrPartValues)) {
+			if ("1".equals(fullOrPartValues))
+			{
+				where = where + "   and ftorpt =(select fid from CT_MP_Fullorpart where fnumber = 'FULL') ";
+			} else if ("2".equals(fullOrPartValues))
+			{
+				where = where + "   and ftorpt =(select fid from CT_MP_Fullorpart where fnumber = 'PART')";
+			}
+		}
+
+		JSONObject queryTime = tofastFilterItems.getJSONObject("queryTime");
+		String queryTimeValues = queryTime.getString("values");
+		String startDate = null;
+		String endDate = null;
+		if (ObjectUtils.isNotEmpty(queryTimeValues)) {
+			JSONObject periodEmploymentValues = queryTime.getJSONObject("values");
+
+			startDate = periodEmploymentValues.getString("startDate");
+			endDate = periodEmploymentValues.getString("endDate");
+			log.info("FASRH...getGridDataAction : startDate = " + startDate + "; endDate = " + endDate);
+		}
+
+		if ((null == startDate) || (null == endDate)) {
+			return null;
+		}
+
+		startDate = getDateString(startDate) + " 00:00:00";
+		endDate = getDateString(endDate) + " 23:59:59";
+
+		String sql = getSql(startDate, endDate, cutOffDate, yearFirstDate, year, where);
+		log.info("AbsenceSummaryForAllLeaveListHandler...sql---{}", sql);
+		log.error("AbsenceSummaryForAllLeaveListHandler...sql---error-" + sql);
+		return DbUtil.executeQuery(this.ctx, sql);
+	}
+
+	private String getSql(String startDate, String endDate, String cutoffDate, String firstYearDate, String year, String where)
+	{
+
+		StringBuilder sql = new StringBuilder();
+		sql.append(" /*dialect*/ SELECT  ");
+		sql.append(" final.Dept Dept, ");
+		sql.append(" final.StaffNo StaffNo, ");
+		sql.append(" final.Name Name, ");
+		sql.append(" final.ftorpt ftorpt, ");
+		sql.append(" final.POSITION POSITION, ");
+		sql.append(" final.WorkCategory WorkCategory, ");
+		sql.append(" final.PersonType PersonType, ");
+		sql.append(" final.FullTimeOrPartTime FullTimeOrPartTime, ");
+		sql.append(" final.HireDate HireDate, ");
+		sql.append(" final.TerDate TerDate, ");
+		sql.append(" final.Status Status, ");
+		sql.append(" CASE ");
+		sql.append(" 		WHEN final.FullTimeOrPartTime= 'Part Time' THEN ");
+		sql.append(" 		0 ELSE COALESCE ( final.AnnualEntitlement, 0 )  ");
+		sql.append(" 	END AnnualEntitlement, ");
+		sql.append(" CASE ");
+		sql.append(" 	WHEN ( final.WorkCategory= 'General Administrative Staff' OR final.WorkCategory= 'Professional Supervisory Staff' OR final.WorkCategory= 'Senior Administrative Staff' )  ");
+		sql.append(" 	AND final.FacultySickEntitlement= '0' THEN ");
+		sql.append(" 	15 ELSE COALESCE ( final.FacultySickEntitlement, 0 )  ");
+		sql.append(" 	END FacultySickEntitlement, ");
+		sql.append(" CASE ");
+		sql.append(" 	WHEN ( final.WorkCategory= 'General Administrative Staff' OR final.WorkCategory= 'Professional Supervisory Staff' OR final.WorkCategory= 'Senior Administrative Staff' )  ");
+		sql.append(" 	AND final.FacultySickMaxEntitlement= '0' THEN ");
+		sql.append(" 	75 ELSE COALESCE ( final.FacultySickMaxEntitlement, 0 )  ");
+		sql.append(" 	END FacultySickMaxEntitlement, ");
+		sql.append(" 	COALESCE ( final.ChildCareEntitlement, 0 ) ChildCareEntitlement, ");
+		sql.append(" 	COALESCE ( final.ElderlyCareEntitlement, 0 ) ElderlyCareEntitlement, ");
+		sql.append(" 	COALESCE ( final.AnnualLeave, 0 ) AnnualLeave, ");
+		sql.append(" 	COALESCE ( final.SickLeave, 0 ) SickLeave, ");
+		sql.append(" 	COALESCE ( final.MarriageLeave, 0 ) MarriageLeave, ");
+		sql.append(" 	COALESCE ( final.PaternityLeave, 0 ) PaternityLeave, ");
+		sql.append(" 	COALESCE ( final.MaternityLeave, 0 ) MaternityLeave, ");
+		sql.append(" 	COALESCE ( final.BereavementLeave, 0 ) BereavementLeave, ");
+		sql.append(" 	COALESCE ( final.MiscarriageLeave, 0 ) MiscarriageLeave, ");
+		sql.append(" 	COALESCE ( final.LeaveOfFamilyPlanningBirthControl, 0 ) LeaveOfFamilyPlanningBirthControl, ");
+		sql.append(" 	COALESCE ( final.WorkRelatedInjuryLeave, 0 ) WorkRelatedInjuryLeave, ");
+		sql.append(" 	COALESCE ( final.MedicalTreatmentLeave, 0 ) MedicalTreatmentLeave, ");
+		sql.append(" 	COALESCE ( final.UnpaidLeaveH, 0 ) UnpaidLeaveH, ");
+		sql.append(" 	COALESCE ( final.CompensatoryLeaveH, 0 ) CompensatoryLeaveH, ");
+		sql.append(" 	COALESCE ( final.ChildCareLeave, 0 ) ChildCareLeave, ");
+		sql.append(" 	COALESCE ( final.ElderlyCareLeave, 0 ) ElderlyCareLeave, ");
+		sql.append(" CASE ");
+		sql.append(" 		WHEN final.FullTimeOrPartTime= 'Part Time' THEN ");
+		sql.append(" 		0 ELSE COALESCE ( final.AnnualLeaveBalance, 0 )  ");
+		sql.append(" 	END AnnualLeaveBalance, ");
+		sql.append(" CASE ");
+		sql.append(" 	WHEN final.WorkCategory= 'Academic Staff'  ");
+		sql.append(" 	OR final.WorkCategory= 'Others' THEN ");
+		sql.append(" 	COALESCE ( final.SickLeaveBalance, 0 )  ");
+		sql.append(" 	WHEN ( ");
+		sql.append(" 		COALESCE ( final.SickLeaveBalance, 0 ) > ");
+		sql.append(" 	CASE ");
+		sql.append(" 			WHEN ( final.WorkCategory= 'General Administrative Staff' OR final.WorkCategory= 'Professional Supervisory Staff' OR final.WorkCategory= 'Senior Administrative Staff' )  ");
+		sql.append(" 			AND final.FacultySickMaxEntitlement= '0' THEN ");
+		sql.append(" 				75 ELSE COALESCE ( final.FacultySickMaxEntitlement, 0 )  ");
+		sql.append(" 			END  ");
+		sql.append(" 				) THEN ");
+		sql.append(" 			CASE ");
+		sql.append(" 					WHEN ( final.WorkCategory= 'General Administrative Staff' OR final.WorkCategory= 'Professional Supervisory Staff' OR final.WorkCategory= 'Senior Administrative Staff' )  ");
+		sql.append(" 					AND final.FacultySickMaxEntitlement= '0' THEN ");
+		sql.append(" 						75 ELSE COALESCE ( final.FacultySickMaxEntitlement, 0 )  ");
+		sql.append(" 					END  ");
+		sql.append(" 						WHEN ( ");
+		sql.append(" 							COALESCE ( final.SickLeaveBalance, 0 ) <= ");
+		sql.append(" 						CASE ");
+		sql.append(" 								WHEN ( final.WorkCategory= 'General Administrative Staff' OR final.WorkCategory= 'Professional Supervisory Staff' OR final.WorkCategory= 'Senior Administrative Staff' )  ");
+		sql.append(" 								AND final.FacultySickMaxEntitlement= '0' THEN ");
+		sql.append(" 									75 ELSE COALESCE ( final.FacultySickMaxEntitlement, 0 )  ");
+		sql.append(" 								END  ");
+		sql.append(" 									) THEN ");
+		sql.append(" 									COALESCE ( final.SickLeaveBalance, 0 )  ");
+		sql.append(" 								END SickLeaveBalance, ");
+		sql.append(" 	COALESCE ( final.CompensatoryLeaveBalanceH, 0 ) CompensatoryLeaveBalanceH, ");
+		sql.append(" 	COALESCE ( final.ChildCareLeaveBalance, 0 ) ChildCareLeaveBalance, ");
+		sql.append(" 	COALESCE ( final.ElderlyCareLeaveBalance, 0 ) ElderlyCareLeaveBalance  ");
+		sql.append(" FROM ( ");
+		sql.append(" 	SELECT * FROM  ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tbp.fid fpersonid, ");
+		sql.append(" 			bcc.fname_l1 AS Dept, ");
+		sql.append(" 			tbp.fnumber AS StaffNo, ");
+		sql.append(" 			tbp.fname_l1 AS Name, ");
+		sql.append(" 			tbp.cfftorptid AS ftorpt, ");
+		sql.append(" 			bd.fname_l1 AS POSITION, ");
+		sql.append(" 			be.fname_l1 AS WorkCategory, ");
+		sql.append(" 			hepc.fname_l1 AS PersonType, ");
+		sql.append(" 			bg.fname_l1 AS FullTimeOrPartTime, ");
+		sql.append(" 			hmrc.joinDate AS HireDate, ");
+		sql.append(" 			bb.fleftdate AS TerDate, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN bh.finservice= '1' THEN CAST ('Active' AS VARCHAR ( 10 ))  ");
+		sql.append(" 				WHEN bh.finservice= '0' THEN CAST ('Negative' AS VARCHAR ( 10 ))  ");
+		sql.append(" 				WHEN bh.finservice= '2' THEN CAST ('Negative' AS VARCHAR ( 10 ))  ");
+		sql.append(" 				WHEN bh.finservice= '3' THEN CAST ('Negative' AS VARCHAR ( 10 ))  ");
+		sql.append(" 				WHEN bh.finservice= '4' THEN CAST ('Active' AS VARCHAR ( 10 ))  ");
+		sql.append(" 				else CAST ('Negative' AS VARCHAR ( 10 ))  ");
+		sql.append(" 		END AS Status  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			( SELECT * FROM T_BD_PERSON WHERE fhiredate <= '" + cutoffDate + "' ) tbp ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				bahis.*  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				T_HR_EmpOrgRelation bahis  ");
+		sql.append(" 			WHERE ");
+		sql.append(" 				bahis.fid IN ( ");
+		sql.append(" 				SELECT ");
+		sql.append(" 					hera.fid  ");
+		sql.append(" 				FROM ");
+		sql.append(" 					T_HR_EmpOrgRelation hera ");
+		sql.append(" 					INNER JOIN ( ");
+		sql.append(" 					SELECT MAX( fleffdt ) maxDate, ");
+		sql.append(" 						fpersonid fpersonid, ");
+		sql.append(" 						fid fid  ");
+		sql.append(" 					FROM ");
+		sql.append(" 						T_HR_EmpOrgRelation  ");
+		sql.append(" 					WHERE ");
+		sql.append(" 						FIsLatestInAday = '1'  ");
+		sql.append(" 						AND FAssignType = '1'  ");
+		sql.append(" 						AND ( feffdt <= '" + cutoffDate + "' AND fleffdt >= '" + cutoffDate + "' )  ");
+		sql.append(" 					GROUP BY ");
+		sql.append(" 						fpersonid, ");
+		sql.append(" 						fid  ");
+		sql.append(" 					) herb ON hera.fid= herb.fid  ");
+		sql.append(" 				)) temp ON tbp.fid= temp.fpersonid ");
+		sql.append(" 			LEFT JOIN T_ORG_Admin bcc ON bcc.fid= temp.fadminorgid ");
+
+		sql.append(" 			left join  T_BD_PERSONHis tbph on tbph.fhistoryrelateid=tbp.fid AND ( tbph.feffdt <= '" + cutoffDate + "' AND tbph.fleffdt >= '" + cutoffDate + "' ) ");
+		sql.append(" 			LEFT JOIN T_HR_EmployeeClassify hepc ON hepc.fid= COALESCE(temp.cfpersontypeid,tbph.cfpersontypeid,tbp.cfpersontypeid) ");
+		sql.append(" LEFT JOIN T_ORG_Position bd ON temp.fpositionid = bd.fid ");
+		sql.append(" LEFT JOIN CT_MP_WorkerCategory be ON be.fid = COALESCE(temp.cfworkercategoryid,tbph.cfworkercategoryid,tbp.cfworkercategoryid)  ");
+		sql.append(" LEFT JOIN CT_MP_Fullorpart bg ON bg.fid = COALESCE(temp.CFFtorptID,tbph.CFFtorptID,tbp.CFFtorptID) ");
+		sql.append(" LEFT JOIN T_HR_EmpLaborRelation hebr on hebr.fpersonid = temp.fpersonid ");
+		sql.append(" LEFT JOIN T_HR_BDEmployeeType bh ON bh.fid= hebr.flaborrelationstateid  ");
+//
+//		sql.append(" 			LEFT JOIN T_HR_EmployeeClassify hepc ON hepc.fid= temp.cfpersontypeid ");
+//		sql.append(" 			LEFT JOIN T_ORG_Position bd ON temp.fpositionid = bd.fid ");
+//		sql.append(" 			LEFT JOIN CT_MP_WorkerCategory be ON be.fid = temp.cfworkercategoryid ");
+//		sql.append(" 			LEFT JOIN CT_MP_Fullorpart bg ON bg.fid = tbp.CFFtorptID ");
+
+		//sql.append(" 			LEFT JOIN ( SELECT hebr.fpersonid fpersonid, bem.finservice finservice FROM T_HR_EmpLaborRelation hebr LEFT JOIN T_HR_BDEmployeeType bem ON bem.fid= hebr.flaborrelationstateid ) bh ON bh.fpersonid = temp.fpersonid ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				hpipa.fleftdate fleftdate, ");
+		sql.append(" 				hpipa.fpersonid fpersonid  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				T_HR_PersonPositionHis hpipa ");
+		sql.append(" 				INNER JOIN ( SELECT MAX ( fleffdt ) maxDate, fpersonid fpersonid FROM T_HR_PersonPositionHis GROUP BY fpersonid ) hpipb ON hpipa.fleffdt= hpipb.maxDate  ");
+		sql.append(" 				AND hpipa.fpersonid= hpipb.fpersonid  ");
+		sql.append(" 			) bb ON temp.fpersonid = bb.fpersonid ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				hmra.fpersonid, ");
+		sql.append(" 				hmra.fenterdate joinDate  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				T_HR_EmpLaborRelationHis hmra ");
+		sql.append(" 				INNER JOIN ( SELECT MAX ( fleffdt ) maxDate, fpersonid fpersonid FROM T_HR_EmpLaborRelationHis WHERE fenterdate <= '" + cutoffDate + "' GROUP BY fpersonid ) hmrb ON hmra.fleffdt= hmrb.maxDate  ");
+		sql.append(" 				AND hmra.fpersonid= hmrb.fpersonid  ");
+		sql.append(" 			) hmrc ON hmrc.fpersonid= temp.fpersonid  ");
+		sql.append(" 		) tep ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			fproposerid fpersonid, ");
+		sql.append(" 			COALESCE ( cfentitlementlimit, 0 ) AnnualEntitlement  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_HolidayLimit  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			fcyclebegindate <= '" + cutoffDate + "'  ");
+		sql.append(" 			AND fcycleenddate >= '" + cutoffDate + "'  ");
+		sql.append(" 			AND fstatus = '1'  ");
+		sql.append(" 			AND ( ");
+		sql.append(" 				fholidaypolicyid IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000001Y' )  ");
+		sql.append(" 			)  ");
+		sql.append(" 		) htmab ON htmab.fpersonid= tep.fpersonid ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			hera.fhistoryrelateid fpersonid, ");
+		sql.append(" 			hera.cffse FacultySickEntitlement  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_BD_PersonHis hera ");
+		sql.append(" 			INNER JOIN ( SELECT MAX ( fleffdt ) maxDate, fhistoryrelateid fpersonid FROM T_BD_PersonHis WHERE feffdt <= '" + cutoffDate + "' AND fleffdt >= '" + cutoffDate + "' GROUP BY fpersonid ) herb ON hera.fhistoryrelateid= herb.fpersonid  ");
+		sql.append(" 			AND hera.fleffdt= herb.maxDate  ");
+		sql.append(" 		) htma ON htma.fpersonid= tep.fpersonid ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			hera.fhistoryrelateid fpersonid, ");
+		sql.append(" 			hera.cffsme FacultySickMaxEntitlement, ");
+		sql.append(" 			hera.fleffdt fleffdt  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_BD_PersonHis hera ");
+		sql.append(" 			INNER JOIN ( SELECT MAX ( fleffdt ) maxDate, fhistoryrelateid fpersonid FROM T_BD_PersonHis WHERE feffdt <= '" + cutoffDate + "' AND fleffdt >= '" + cutoffDate + "' GROUP BY fpersonid ) herb ON hera.fhistoryrelateid= herb.fpersonid  ");
+		sql.append(" 			AND hera.fleffdt= herb.maxDate  ");
+		sql.append(" 		) htmb ON htmb.fpersonid= tep.fpersonid ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			fproposerid fpersonid, ");
+		sql.append(" 			COALESCE ( SUM ( fstandardlimit ), 0 ) ChildCareEntitlement  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_HolidayLimit  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			fcyclebegindate <= '" + cutoffDate + "'  ");
+		sql.append(" 			AND fcycleenddate >= '" + cutoffDate + "'  ");
+		sql.append(" 			AND fstatus = '1'  ");
+		sql.append(" 			AND ( ");
+		sql.append(" 				fholidaypolicyid IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000015Y' )  ");
+		sql.append(" 			)  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			fproposerid  ");
+		sql.append(" 		) htmc ON htmc.fpersonid= tep.fpersonid ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			fproposerid fpersonid, ");
+		sql.append(" 			COALESCE ( SUM ( fstandardlimit ), 0 ) ElderlyCareEntitlement  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_HolidayLimit  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			EXTRACT ( YEAR FROM fcyclebegindate ) = '" + year + "'  ");
+		sql.append(" 			AND fstatus = '1'  ");
+		sql.append(" 			AND ( ");
+		sql.append(" 				fholidaypolicyid IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000016Y' )  ");
+		sql.append(" 			)  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			fproposerid  ");
+		sql.append(" 		) htmd ON htmd.fpersonid= tep.fpersonid ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tema.FPERSONID, ");
+		sql.append(" 			SUM ( tema.AnnualLeave ) AnnualLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				tem.fpersonId FPERSONID, ");
+		sql.append(" 				tem.leavedate leavedate, ");
+		sql.append(" 			CASE ");
+		sql.append(" 					WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 					WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END AnnualLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			b.fleavedate leavedate, ");
+		sql.append(" 			b.fleavelength fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000001Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			c.cfleavedate leavedate, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			c.cfleavelenght cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000001Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId, ");
+		sql.append(" 	tem.leavedate  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htme ON htme.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.SickLeave ) SickLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END SickLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000003Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000003Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmf ON htmf.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.MarriageLeave ) MarriageLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 		END MarriageLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000005Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000005Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmh ON htmh.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.PaternityLeave ) PaternityLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 			WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END PaternityLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000007Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000007Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmi ON htmi.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.MaternityLeave ) MaternityLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END MaternityLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000006Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000006Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmj ON htmj.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.BereavementLeave ) BereavementLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END BereavementLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000011Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000011Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmk ON htmk.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.MiscarriageLeave ) MiscarriageLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END MiscarriageLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000013Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000013Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) html ON html.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.LeaveOfFamilyPlanningBirthControl ) LeaveOfFamilyPlanningBirthControl  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END LeaveOfFamilyPlanningBirthControl  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000008Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000008Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmm ON htmm.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.WorkRelatedInjuryLeave ) WorkRelatedInjuryLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END WorkRelatedInjuryLeave  ");
+		sql.append(" FROM  ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000009Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000009Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmn ON htmn.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.MedicalTreatmentLeave ) MedicalTreatmentLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE  ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END MedicalTreatmentLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000012Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000012Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmo ON htmo.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.UnpaidLeaveH ) UnpaidLeaveH  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END UnpaidLeaveH  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000002Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000002Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmp ON htmp.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID FPERSONID, ");
+		sql.append(" 		SUM ( tema.CompensatoryLeaveH ) CompensatoryLeaveH  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 		CASE  ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN ");
+		sql.append(" 				SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN ");
+		sql.append(" 				SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END CompensatoryLeaveH  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000004Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000004Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmq ON htmq.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID, ");
+		sql.append(" 		SUM ( tema.AnnualLeave ) ChildCareLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 			tem.leavedate leavedate, ");
+		sql.append(" 		CASE ");
+		sql.append(" 			WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 			WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END AnnualLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			b.fleavedate leavedate, ");
+		sql.append(" 			b.fleavelength fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000015Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			c.cfleavedate leavedate, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			c.cfleavelenght cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000015Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId, ");
+		sql.append(" 	tem.leavedate  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmqa ON htmqa.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tema.FPERSONID, ");
+		sql.append(" 		SUM ( tema.AnnualLeave ) ElderlyCareLeave  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tem.fpersonId FPERSONID, ");
+		sql.append(" 			tem.leavedate leavedate, ");
+		sql.append(" 		CASE  ");
+		sql.append(" 				WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 				WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 			END AnnualLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			b.fleavedate leavedate, ");
+		sql.append(" 			b.fleavelength fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000016Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + endDate + "'  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			c.cfleavedate leavedate, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			c.cfleavelenght cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000016Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + startDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + endDate + "'  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId, ");
+		sql.append(" 	tem.leavedate  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) htmqb ON htmqb.FPERSONID= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tempa.fpersonid fpersonid, ");
+		sql.append(" 		COALESCE ( tempa.freallimit, 0 ) - COALESCE ( tempb.AnnualLeave, 0 ) AnnualLeaveBalance  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tbp.fid fpersonid, ");
+		sql.append(" 			COALESCE ( temp.freallimit, 0 ) freallimit  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_BD_PERSON tbp ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				fproposerid fpersonid, ");
+		sql.append(" 				COALESCE ( freallimit, 0 ) freallimit  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				T_HR_ATS_HolidayLimit  ");
+		sql.append(" 			WHERE ");
+		sql.append(" 				fcyclebegindate <= '" + cutoffDate + "'  ");
+		sql.append(" 				AND fcycleenddate >= '" + cutoffDate + "'  ");
+		sql.append(" 				AND fstatus = '1'  ");
+		sql.append(" 				AND ( ");
+		sql.append(" 					fholidaypolicyid IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000001Y' )  ");
+		sql.append(" 				)) temp ON tbp.fid= temp.fpersonid  ");
+		sql.append(" 		) tempa ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tema.FPERSONID, ");
+		sql.append(" 			SUM ( tema.AnnualLeave ) AnnualLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				tem.fpersonId FPERSONID, ");
+		sql.append(" 				tem.leavedate leavedate, ");
+		sql.append(" 			CASE ");
+		sql.append(" 					WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 					WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 				END AnnualLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			b.fleavedate leavedate, ");
+		sql.append(" 			b.fleavelength fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000001Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT DISTINCT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			c.cfleavedate leavedate, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			c.cfleavelenght cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000001Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId, ");
+		sql.append(" 	tem.leavedate  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) tempb ON tempa.fpersonid= tempb.FPERSONID  ");
+		sql.append(" 	) htmw ON htmw.fpersonid= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tempa.fpersonid fpersonid, ");
+		sql.append(" 		COALESCE ( tempa.FacultySickEntitlement, 0 ) - COALESCE ( tempb.SickLeave, 0 ) SickLeaveBalance  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tbp.fid fpersonid, ");
+		sql.append(" 			COALESCE ( sick.limitCount, 0 ) FacultySickEntitlement  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_BD_PERSON tbp ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				cfpersonid fpersonid, ");
+		sql.append(" 				SUM ( ");
+		sql.append(" 				COALESCE ( cfinitiallimit, 0 ) + COALESCE ( cfrealitygrantlimit, 0 )) limitCount  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				CT_CUS_SickLeaveLimit  ");
+		sql.append(" 			WHERE ");
+		sql.append(" 				cfmonth <= date_trunc ( 'month', '" + cutoffDate + "' :: DATE ) - INTERVAL '1 day'  ");
+		sql.append(" 			GROUP BY ");
+		sql.append(" 				cfpersonid  ");
+		sql.append(" 			) sick ON sick.fpersonid= tbp.fid  ");
+		sql.append(" 		) tempa ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tema.FPERSONID FPERSONID, ");
+		sql.append(" 			SUM ( tema.SickLeave ) SickLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				tem.fpersonId FPERSONID, ");
+		sql.append(" 			CASE ");
+		sql.append(" 					WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 					WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 				END SickLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000003Y' )  ");
+		sql.append(" 			AND b.fleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000003Y' )  ");
+		sql.append(" 			AND cfleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) tempb ON tempb.FPERSONID= tempa.fpersonid  ");
+		sql.append(" 	) htmx ON htmx.fpersonid= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tempa.fpersonid fpersonid, ");
+		sql.append(" 		COALESCE ( tempa.CompensatoryLeava ) - COALESCE ( tempb.AnnualLeave, 0 ) CompensatoryLeaveBalanceH  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tbp.fid fpersonid, ");
+		sql.append(" 			COALESCE ( child.CompensatoryLeava, 0 ) CompensatoryLeava  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_BD_PERSON tbp ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				fproposerid fpersonid, ");
+		sql.append(" 				COALESCE ( freallimit, 0 ) CompensatoryLeava  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				T_HR_ATS_HolidayLimit  ");
+		sql.append(" 			WHERE ");
+		sql.append(" 				EXTRACT ( YEAR FROM fcyclebegindate ) = '" + year + "'  ");
+		sql.append(" 				AND fstatus = '1'  ");
+		sql.append(" 				AND ( ");
+		sql.append(" 					fholidaypolicyid IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000004Y' )  ");
+		sql.append(" 				)) child ON child.fpersonid= tbp.fid  ");
+		sql.append(" 		) tempa ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tema.FPERSONID FPERSONID, ");
+		sql.append(" 			SUM ( tema.AnnualLeave ) AnnualLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				tem.fpersonId FPERSONID, ");
+		sql.append(" 			CASE ");
+		sql.append(" 					WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 					WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 				END AnnualLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000004Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000004Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) tempb ON tempb.FPERSONID= tempa.fpersonid  ");
+		sql.append(" 	) htmy ON htmy.fpersonid= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tempa.fpersonid fpersonid, ");
+		sql.append(" 		COALESCE ( tempa.ChildCareLeave ) - COALESCE ( tempb.AnnualLeave, 0 ) ChildCareLeaveBalance  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tbp.fid fpersonid, ");
+		sql.append(" 			COALESCE ( child.ChildCareLeave, 0 ) ChildCareLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_BD_PERSON tbp ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				fproposerid fpersonid, ");
+		sql.append(" 				COALESCE ( SUM ( freallimit ), 0 ) ChildCareLeave  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				T_HR_ATS_HolidayLimit  ");
+		sql.append(" 			WHERE ");
+		sql.append(" 				( fcyclebegindate, fcycleenddate ) OVERLAPS ( ");
+		sql.append(" 					to_date ( '" + firstYearDate + "', 'yyyy-MM-dd' ), ");
+		sql.append(" 				to_date ( '" + cutoffDate + "', 'yyyy-MM-dd' ))  ");
+		sql.append(" 				AND fstatus = '1'  ");
+		sql.append(" 				AND ( ");
+		sql.append(" 					fholidaypolicyid IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000015Y' )  ");
+		sql.append(" 				)  ");
+		sql.append(" 			GROUP BY ");
+		sql.append(" 				fproposerid  ");
+		sql.append(" 			) child ON child.fpersonid= tbp.fid  ");
+		sql.append(" 		) tempa ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tema.FPERSONID FPERSONID, ");
+		sql.append(" 			SUM ( tema.AnnualLeave ) AnnualLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				tem.fpersonId FPERSONID, ");
+		sql.append(" 			CASE ");
+		sql.append(" 					WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 					WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 				END AnnualLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000015Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000015Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) tempb ON tempb.FPERSONID= tempa.fpersonid  ");
+		sql.append(" 	) htmz ON htmz.fpersonid= tep.fpersonid ");
+		sql.append(" 	LEFT JOIN ( ");
+		sql.append(" 	SELECT ");
+		sql.append(" 		tempa.fpersonid fpersonid, ");
+		sql.append(" 		COALESCE ( tempa.ElderlyCareLeave ) - COALESCE ( tempb.AnnualLeave, 0 ) ElderlyCareLeaveBalance  ");
+		sql.append(" 	FROM ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tbp.fid fpersonid, ");
+		sql.append(" 			COALESCE ( child.ElderlyCareLeave, 0 ) ElderlyCareLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_BD_PERSON tbp ");
+		sql.append(" 			LEFT JOIN ( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				fproposerid fpersonid, ");
+		sql.append(" 				COALESCE ( SUM ( freallimit ), 0 ) ElderlyCareLeave  ");
+		sql.append(" 			FROM ");
+		sql.append(" 				T_HR_ATS_HolidayLimit  ");
+		sql.append(" 			WHERE ");
+		sql.append(" 				( fcyclebegindate, fcycleenddate ) OVERLAPS ( ");
+		sql.append(" 					to_date ( '" + firstYearDate + "', 'yyyy-MM-dd' ), ");
+		sql.append(" 				to_date ( '" + cutoffDate + "', 'yyyy-MM-dd' ))  ");
+		sql.append(" 				AND fstatus = '1'  ");
+		sql.append(" 				AND ( ");
+		sql.append(" 					fholidaypolicyid IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000016Y' )  ");
+		sql.append(" 				)  ");
+		sql.append(" 			GROUP BY ");
+		sql.append(" 				fproposerid  ");
+		sql.append(" 			) child ON child.fpersonid= tbp.fid  ");
+		sql.append(" 		) tempa ");
+		sql.append(" 		LEFT JOIN ( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			tema.FPERSONID FPERSONID, ");
+		sql.append(" 			SUM ( tema.AnnualLeave ) AnnualLeave  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			( ");
+		sql.append(" 			SELECT ");
+		sql.append(" 				tem.fpersonId FPERSONID, ");
+		sql.append(" 			CASE ");
+		sql.append(" 					WHEN tem.status IN ( '3', '4' ) THEN SUM ( tem.fleavelength )  ");
+		sql.append(" 					WHEN tem.status IN ( '1', '2' ) THEN SUM ( tem.cfleavelenght )  ");
+		sql.append(" 				END AnnualLeave  ");
+		sql.append(" FROM ");
+		sql.append(" 	( ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			b.fproposerid fpersonId, ");
+		sql.append(" 			SUM ( b.fleavelength ) fleavelength, ");
+		sql.append(" 			0 cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN T_HR_ATS_LeaveBillDetail b ON b.FLEAVEBILLID = a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			b.FPOLICYID IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000016Y' )  ");
+		sql.append(" 			AND b.fleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND b.fleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			b.fproposerid  ");
+		sql.append(" 		) UNION ");
+		sql.append(" 		( ");
+		sql.append(" 		SELECT ");
+		sql.append(" 			a.fbillstate status, ");
+		sql.append(" 			c.cfproposer fpersonId, ");
+		sql.append(" 			0 fleavelength, ");
+		sql.append(" 			SUM ( c.cfleavelenght ) cfleavelenght  ");
+		sql.append(" 		FROM ");
+		sql.append(" 			T_HR_ATS_LeaveBill a ");
+		sql.append(" 			LEFT JOIN CT_ATS_AtsLeaveBillDetailSame c ON c.cfleavebill= a.fid  ");
+		sql.append(" 		WHERE ");
+		sql.append(" 			c.cfpolicy IN ( SELECT ua.fid FROM T_HR_ATS_HolidayPolicy ua LEFT JOIN T_HR_ATS_HolidayType ub ON ub.FID = ua.FHOLIDAYTYPEID WHERE ub.FNUMBER = 'JQLX000016Y' )  ");
+		sql.append(" 			AND c.cfleavedate >= '" + firstYearDate + "'  ");
+		sql.append(" 			AND cfleavedate <= '" + cutoffDate + "'  ");
+		sql.append(" 		GROUP BY ");
+		sql.append(" 			a.fbillstate, ");
+		sql.append(" 			c.cfproposer  ");
+		sql.append(" 		)  ");
+		sql.append(" 	) tem  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tem.status, ");
+		sql.append(" 	tem.fpersonId  ");
+		sql.append(" 	) tema  ");
+		sql.append(" GROUP BY ");
+		sql.append(" 	tema.FPERSONID  ");
+		sql.append(" 	) tempb ON tempb.FPERSONID= tempa.fpersonid  ");
+		sql.append(" 	) htmma ON htmma.fpersonid= tep.fpersonid  ");
+		sql.append(" 	) final ");
+		sql.append(where);
+		return sql.toString();
+	}
+
+	public String getDateString(String dateStr)
+	{
+		return dateStr.substring(0, 10).toString();
+	}
+
+	public List<Map<String, Object>> getcolModelAction() {
+		List modelColList = new ArrayList();
+		modelColList.add(buildColModelMap("Dept", "Dept", 120));
+		modelColList.add(buildColModelMap("Staff No.", "Staff No.", 120));
+		modelColList.add(buildColModelMap("Name", "Name", 120));
+		modelColList.add(buildColModelMap("Position", "Position", 120));
+		modelColList.add(buildColModelMap("Work Category", "Work Category", 120));
+		modelColList.add(buildColModelMap("Person Type", "Person Type", 120));
+		modelColList.add(buildColModelMap("Full Time or Part Time", "Full Time or Part Time", 120));
+		modelColList.add(buildColModelMap("Hire date", "Hire date", 120));
+		modelColList.add(buildColModelMap("Ter  Date", "Ter  Date", 120));
+		modelColList.add(buildColModelMap("Status", "Status", 120));
+		modelColList.add(buildColModelMap("Annual Entitlement", "Annual Entitlement", 120));
+		modelColList.add(buildColModelMap("Faculty Sick Entitlement", "Faculty Sick Entitlement", 120));
+		modelColList.add(buildColModelMap("Faculty Sick Max Entitlement", "Faculty Sick Max Entitlement", 120));
+		modelColList.add(buildColModelMap("Child care Entitlement", "Child care Entitlement", 120));
+		modelColList.add(buildColModelMap("Elderly care Entitlement", "Elderly care Entitlement", 120));
+		modelColList.add(buildColModelMap("annual leave", "annual leave", 120));
+		modelColList.add(buildColModelMap("sick leave", "sick leave", 120));
+		modelColList.add(buildColModelMap("marriage leave", "marriage leave", 120));
+		modelColList.add(buildColModelMap("paternity leave", "paternity leave", 120));
+		modelColList.add(buildColModelMap("maternity leave", "maternity leave", 120));
+		modelColList.add(buildColModelMap("bereavement leave", "bereavement leave", 120));
+		modelColList.add(buildColModelMap("miscarriage leave", "miscarriage leave", 120));
+		modelColList.add(buildColModelMap("leave of family planning birth control", "leave of family planning birth control", 120));
+		modelColList.add(buildColModelMap("work-related injury leave", "work-related injury leave", 120));
+		modelColList.add(buildColModelMap("medical treatment leave", "medical treatment leave", 120));
+		modelColList.add(buildColModelMap("unpaid leave(H)", "unpaid leave(H)", 120));
+		modelColList.add(buildColModelMap("compensatory leave(H)", "compensatory leave(H)", 120));
+		modelColList.add(buildColModelMap("Child Care Leave", "Child Care Leave", 120));
+		modelColList.add(buildColModelMap("Elderly Care Leave", "Elderly Care Leave", 120));
+		modelColList.add(buildColModelMap("Annual Leave Balance", "Annual Leave Balance", 120));
+		modelColList.add(buildColModelMap("sick leave balance", "sick leave balance", 120));
+		modelColList.add(buildColModelMap("Compensatory Leave Balance(H)", "Compensatory Leave Balance(H)", 120));
+		modelColList.add(buildColModelMap("Child Care Leave Balance", "Child Care Leave Balance", 120));
+		modelColList.add(buildColModelMap("Elderly Care Leave Balance", "Elderly Care Leave Balance", 120));
+		return modelColList;
+	}
+
+	private Map<String, Object> buildColModelMap(String index, String label, int width) {
+		return buildColModelMap(index, label, width, false, false, false);
+	}
+
+	private Map<String, Object> buildColModelMap(String index, String label, int width, boolean rowspan, boolean isKey, boolean isHedden) {
+		Map gridIdMap = new LinkedHashMap();
+		gridIdMap.put("index", index);
+		gridIdMap.put("name", index);
+		gridIdMap.put("label", label);
+		gridIdMap.put("width", Integer.valueOf(width));
+		if (rowspan) {
+			gridIdMap.put("rowspan", Boolean.valueOf(rowspan));
+		}
+		if (isKey) {
+			gridIdMap.put("key", Boolean.valueOf(isKey));
+		}
+		if (isHedden) {
+			gridIdMap.put("hidden", Boolean.valueOf(isHedden));
+		}
+		return gridIdMap;
+	}
+
+	public String toExcelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
+			throws BOSException, SQLException, SHRWebException, org.json.JSONException
+	{
+		IRowSet rs = getIRowSet(request);
+		if (null == rs) {
+			return null;
+		}
+		LinkedHashMap selectFieldsTypeMap = new LinkedHashMap();
+		String stringType = "String_@";
+		String stringDateType = "StringDate_@";
+		String numberType = "Number_.";
+		selectFieldsTypeMap.put("Dept", stringType);
+		selectFieldsTypeMap.put("StaffNo", stringType);
+		selectFieldsTypeMap.put("Name", stringType);
+		selectFieldsTypeMap.put("Position", stringType);
+		selectFieldsTypeMap.put("WorkCategory", stringType);
+		selectFieldsTypeMap.put("PersonType", stringType);
+		selectFieldsTypeMap.put("FullTimeOrPartTime", stringType);
+		selectFieldsTypeMap.put("HireDate", stringDateType);
+		selectFieldsTypeMap.put("TerDate", stringDateType);
+		selectFieldsTypeMap.put("Status", stringType);
+		selectFieldsTypeMap.put("AnnualEntitlement", numberType);
+		selectFieldsTypeMap.put("FacultySickEntitlement", numberType);
+		selectFieldsTypeMap.put("FacultySickMaxEntitlement", numberType);
+		selectFieldsTypeMap.put("ChildCareEntitlement", numberType);
+		selectFieldsTypeMap.put("ElderlyCareEntitlement", numberType);
+		selectFieldsTypeMap.put("AnnualLeave", numberType);
+		selectFieldsTypeMap.put("SickLeave", numberType);
+		selectFieldsTypeMap.put("MarriageLeave", numberType);
+		selectFieldsTypeMap.put("PaternityLeave", numberType);
+		selectFieldsTypeMap.put("MaternityLeave", numberType);
+		selectFieldsTypeMap.put("BereavementLeave", numberType);
+		selectFieldsTypeMap.put("MiscarriageLeave", numberType);
+		selectFieldsTypeMap.put("LeaveOfFamilyPlanningBirthControl", numberType);
+		selectFieldsTypeMap.put("WorkRelatedInjuryLeave", numberType);
+		selectFieldsTypeMap.put("MedicalTreatmentLeave", numberType);
+		selectFieldsTypeMap.put("UnpaidLeaveH", numberType);
+		selectFieldsTypeMap.put("CompensatoryLeaveH", numberType);
+		selectFieldsTypeMap.put("ChildCareLeave", numberType);
+		selectFieldsTypeMap.put("ElderlyCareLeave", numberType);
+		selectFieldsTypeMap.put("AnnualLeaveBalance", numberType);
+		selectFieldsTypeMap.put("SickLeaveBalance", numberType);
+		selectFieldsTypeMap.put("CompensatoryLeaveBalanceH", numberType);
+		selectFieldsTypeMap.put("ChildCareLeaveBalance", numberType);
+		selectFieldsTypeMap.put("ElderlyCareLeaveBalance", numberType);
+		List list = getcolNamesAction();
+		ExportAllUtil.exportData(response, rs, "AbsenceSummaryForAllLeaveList.xlsx", selectFieldsTypeMap, list);
+		return null;
+	}
+
+	public Date getYearFirst(int year)
+	{
+		Calendar calendar = Calendar.getInstance();
+		calendar.clear();
+		calendar.set(1, year);
+		return calendar.getTime();
+	}
+
+	public Date getYearLast(int year)
+	{
+		Calendar calendar = Calendar.getInstance();
+		calendar.clear();
+		calendar.set(1, year);
+		calendar.roll(6, -1);
+		return calendar.getTime();
+	}
+}

Файловите разлики са ограничени, защото са твърде много
+ 133 - 1268
GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/AbsenceSummaryForAllLeaveListHandler.java


+ 12 - 86
GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/FacultyAbsenceSummaryListHandler.java

@@ -53,7 +53,9 @@ import com.kingdee.shr.customer.gtiit.entity.VacationInfo;
 /**
  * @author ISSUSER FacultyAbsenceSummary报表
  */
-public class FacultyAbsenceSummaryListHandler extends ListHandler {
+public class FacultyAbsenceSummaryListHandler extends ListHandler
+{
+
 	private static Logger logger = Logger
 			.getLogger("com.kingdee.shr.customer.gtiit.rpt.FacultyAbsenceSummaryListHandler");
 
@@ -73,9 +75,8 @@ public class FacultyAbsenceSummaryListHandler extends ListHandler {
 	}
 
 	public void getGridDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
-<<<<<<< .mine            throws BOSException, SQLException, SHRWebException, JSONException, org.json.JSONException {
-=======			throws BOSException, SQLException, SHRWebException, JSONException, org.json.JSONException {
->>>>>>> .theirs		logger.info(">>> FacultyAbsenceSummaryReportHandler...getGridDataAction");
+			throws BOSException, SQLException, SHRWebException, JSONException, org.json.JSONException {
+ 		logger.info(">>> FacultyAbsenceSummaryReportHandler...getGridDataAction");
 		int rows = Integer.parseInt(request.getParameter("rows"));
 		int page = Integer.parseInt(request.getParameter("page"));
 		// 获取过滤条件
@@ -152,7 +153,7 @@ public class FacultyAbsenceSummaryListHandler extends ListHandler {
 
 	public Map<String, VacationInfo> executeMethod(IRowSet rs, String startDate, String endDate, List<String> list) {
 		// 年假id
-		Set<String> policySet = getPolicy();
+		Set<String> policySet = this.getPolicy();
 		// 出差假id
 		Set<String> businessIdSet = getBusinessId();
 		// 其他假期id
@@ -226,52 +227,9 @@ public class FacultyAbsenceSummaryListHandler extends ListHandler {
 		return gridIdMap;
 	}
 
-	/***
-	 * 查询审批通过的假期
-	 */
-	public String approvedSql(String startDate, String endDate) {
-		// 获取当前日期
-		Date nowDate = new Date();
-		String nowdate = this.getDate(nowDate);
-		StringBuffer sql = new StringBuffer();
-
-		sql.append(
-				"SELECT g.fnumber as staffid,d.fname_l1 as title,d.cflongname_l1 as AcademicTitle , e.fname_l1 as Program,g.fname_l1 as name,g.fid,j.toleavelenth as leavelenth,j.fpolicyid as cfpolicy,g.fid,j.fleavedate\r\n"
-						+ " FROM T_HR_EmpOrgRelation a \r\n"
-						+ "left join T_ORG_Position d on d.fid  = a.fpositionid  left join T_ORG_BaseUnit e on e.fid = a.FAdminOrgID left join T_ORG_Job f on f.fid=d.fjobid\r\n"
-						+ "left join t_bd_person g on g.fid=a.fpersonid\r\n"
-						+ "left join T_HR_EmpLaborRelationHis i on i.fpersonid=g.fid\r\n"
-						+ "left join  T_HR_BDEmployeeType  h on h.fid=i.flaborrelationstateid\r\n"
-						+ "left join (SELECT case when a.fleaveunit=2 then ROUND(a.fleavelength / 7.5, 2) else a.fleavelength end as toleavelenth,a.* FROM T_HR_ATS_LeaveBillDetail a where a.fleavedate >='"
-						+ startDate + "' and a.fleavedate <='" + endDate + "')j\r\n"
-						+ "on j.fproposerid=a.fpersonid\r\n"
-						+ "where f.fnumber='114'and d.fname_l1 not LIKE '%Visiting%'\r\n" + "and i.feffdt<='" + nowdate
-						+ "' and i.fleffdt>='" + nowdate + "'\r\n" + "and a.feffdt<='" + nowdate + "' and a.fleffdt>='"
-						+ nowdate + "'\r\n" + "and h.finservice='1'");
-
-		System.out.print("summary审批通过的sql" + sql.toString());
-		return sql.toString();
 
-	}
 
-	/***
-	 * 假期类型是年假 cfpolicy
-	 */
-	public Set<String> getPolicy() {
-		Set<String> policySet = new HashSet<>();
-		String sql = "SELECT cfpolicy FROM CT_ATS_AtsLeaveBillDetailSame where cfpolicy in(select fid from T_HR_ATS_HolidayPolicy where fholidaytypeid in (select fid from T_HR_ATS_HolidayType where fnumber  in('JQLX000001Y')));";
-		try {
-			IRowSet rs = DbUtil.executeQuery(this.ctx, sql);
-			while (rs.next()) {
-				policySet.add(rs.getString("cfpolicy"));
-			}
-		} catch (BOSException | SQLException e) {
-			// TODO 自动生成的 catch 块
-			e.printStackTrace();
-		}
 
-		return policySet;
-	}
 
 	/***
 	 * 内非年假、出差的 假期类型的id
@@ -464,6 +422,9 @@ public class FacultyAbsenceSummaryListHandler extends ListHandler {
 		return gridIdMap;
 	}
 
+	/***
+	 * 查询审批通过的假期
+	 */
 	/***
 	 * 查询审批通过的假期
 	 */
@@ -492,6 +453,7 @@ public class FacultyAbsenceSummaryListHandler extends ListHandler {
 
 	}
 
+
 	/***
 	 * 假期类型是年假 cfpolicy
 	 */
@@ -511,43 +473,8 @@ public class FacultyAbsenceSummaryListHandler extends ListHandler {
 		return policySet;
 	}
 
-	/***
-	 * 内非年假、出差的 假期类型的id
-	 */
-	public Set<String> otherId() {
-		Set<String> otherSet = new HashSet<>();
-		String sql = "SELECT cfpolicy FROM CT_ATS_AtsLeaveBillDetailSame where cfpolicy in(select fid from T_HR_ATS_HolidayPolicy where fholidaytypeid in (select fid from T_HR_ATS_HolidayType where fnumber not in('JQLX000020Y','JQLX000001Y')));";
-		try {
-			IRowSet rs = DbUtil.executeQuery(this.ctx, sql);
-			while (rs.next()) {
-				otherSet.add(rs.getString("cfpolicy"));
-			}
-		} catch (BOSException | SQLException e) {
-			// TODO 自动生成的 catch 块
-			e.printStackTrace();
-		}
-
-		return otherSet;
-	}
 
-	/***
-	 * 出差假的id
-	 */
-	public Set<String> getBusinessId() {
-		Set<String> businessSet = new HashSet<>();
-		String sql = "SELECT cfpolicy FROM CT_ATS_AtsLeaveBillDetailSame where cfpolicy in(select fid from T_HR_ATS_HolidayPolicy where fholidaytypeid in (select fid from T_HR_ATS_HolidayType where fnumber  in('JQLX000020Y')));";
-		try {
-			IRowSet rs = DbUtil.executeQuery(this.ctx, sql);
-			while (rs.next()) {
-				businessSet.add(rs.getString("cfpolicy"));
-			}
-		} catch (BOSException | SQLException e) {
-			// TODO 自动生成的 catch 块
-			e.printStackTrace();
-		}
 
-		return businessSet;
-	}
 
 	/***
 	 * 计算假期数据
@@ -713,9 +640,8 @@ public class FacultyAbsenceSummaryListHandler extends ListHandler {
 	// 导出
 	// 导出数据
 	public String toExcelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
-<<<<<<< .mine            throws BOSException, SQLException, SHRWebException, org.json.JSONException {
-=======			throws BOSException, SQLException, SHRWebException, org.json.JSONException {
->>>>>>> .theirs		// 构建参数去查询数据库
+ 	throws BOSException, SQLException, SHRWebException, org.json.JSONException {
+ 		// 构建参数去查询数据库
 		// 获取过滤条件
 		String fastFilterItems = request.getParameter("fastFilterItems");
 		JSONObject tofastFilterItems = new JSONObject(fastFilterItems);

+ 62 - 56
GDYSL/websrc/com/kingdee/shr/customer/gtiit/rpt/PersonRosterAListHandler.java

@@ -286,7 +286,7 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append("  else lsqzjz.fname_l1 ");
             sel.append(" end as FullTimeorPartTime, ");
             sel.append(" j.fnumber as LineManager, ");
-            sel.append(" j.fname_l2 as LineManagerName, ");
+            sel.append(" j.fname_l1 as LineManagerName, ");
             sel.append(" to_char(b.eorEffdt, 'yyyy-MM-dd') as StartTime, ");
             sel.append(" to_char(b.eorLeffdt, 'yyyy-MM-dd') as EndTime, ");
             sel.append(" b.eorLeffdt as eorEndDate, ");
@@ -322,7 +322,7 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" mz.FName_L1 as Ethnicity, ");
             sel.append(" hj.FName_L1 as HukouType, ");
             sel.append(" to_char(person.cfhrd, 'yyyy-MM-dd') as HouseholdRegisteredDate, ");
-            sel.append(" person.FNativePlace_L2 as Nativeplace, ");
+            sel.append(" person.FNativePlace_L1 as Nativeplace, ");
             sel.append(" zm.FName_L1 as PoliticaStatus, ");
             sel.append(" hy.FName_L1 as MaritalStatus, ");
             sel.append(" l.FPostalcode as Zipcode, ");
@@ -338,7 +338,13 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" l.FLinkName as emergencyContact, ");
             sel.append(" l.FLinkTelNum as telephoneofemergency, ");
             sel.append(" l.CFRelationship as relationship, ");
-            sel.append(" to_char(b.bizDate, 'yyyy-MM-dd') as TerminationDate, ");
+            //sel.append(" to_char(isnull(b.bizDate,rEntry2.bizDate), 'yyyy-MM-dd') as TerminationDate, ");
+            sel.append(" case ");
+            sel.append("  b.finservice ");
+            sel.append("  when 1 then to_char((b.bizDate), 'yyyy-MM-dd') ");
+            sel.append("  when 4 then to_char((b.bizDate), 'yyyy-MM-dd') ");
+            sel.append("  else to_char(isnull(isnull(rEntry2.bizDate,b.bizDate),b.eorEffdt), 'yyyy-MM-dd')  ");
+            sel.append(" end as TerminationDate, ");
             sel.append(" b.TerminationReason as TerminationReason, ");
             sel.append(" b.EmployeeType as EmployeeType, ");
             sel.append(" case ");
@@ -353,8 +359,10 @@ public class PersonRosterAListHandler extends ListHandler {
 
             sel.append("  isnull(pePos.fleftdate, { ts '2199-12-31' }) ");
             sel.append("  as leftDate, ");
-            sel.append(" b.fleffdt as deadline2, ");
-            sel.append(" b.feffdt as deadline1, ");
+            sel.append(" (b.eorEffdt) as deadline1, ");
+            sel.append(" (b.eorLeffdt) as deadline2, ");
+//            sel.append(" b.fleffdt as deadline2, ");
+//            sel.append(" b.feffdt as deadline1, ");
             sel.append(" case ");
             sel.append("  b.finservice ");
             sel.append("  when 1 then 1 ");
@@ -369,8 +377,8 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" ehis.feffdt, ");
             sel.append(" ehis.fleffdt, ");
             sel.append(" eor.feffdt as eorEffdt, ");
-            sel.append(" eor.fleffdt as eorLeffdt, ");
-            sel.append(" null as bizdate, ");
+            sel.append(" isnull(rEntry.bizdate,eor.fleffdt) as eorLeffdt, ");
+            sel.append(" rEntry.bizdate as bizdate, ");
             sel.append(" ehis.FPERSONID, ");
             sel.append(" eor.FAdminOrgID, ");
             sel.append(" eor.CFWorkercategoryID, ");
@@ -382,7 +390,7 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" ehis.FTryoutMonth, ");
             sel.append(" ehis.FPlanFormalDate, ");
             sel.append(" '' TerminationReason, ");
-            sel.append(" bt.fname_l2 EmployeeType, ");
+            sel.append(" bt.fname_l1 EmployeeType, ");
             sel.append(" bt.finservice finservice, ");
             sel.append(" ehis.flaborrelationstateid ");
             sel.append(" from t_hr_emplaborrelationhis ehis ");
@@ -390,6 +398,14 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" left join T_HR_EMPORGRELATION eor on eor.fpersonid = ehis.fpersonid ");
             sel.append(" and eor.feffdt >= ehis.feffdt ");
             sel.append(" and eor.fleffdt <= ehis.fleffdt ");
+
+            sel.append(" left join ( ");
+            sel.append("    select max(e.fbizdate) bizdate, e.fpersonid ");
+            sel.append("    from T_HR_RESIGNBIZBILLENTRY e ");
+            sel.append("    left join  T_HR_RESIGNBIZBILL b on e.fbillid=b.fid where b.FBILLSTATE = 3 ");
+            sel.append("    group by e.fpersonid ) rEntry ");
+
+            sel.append(" on rEntry.fpersonid = ehis.FPERSONID and eor.feffdt < rEntry.bizdate and eor.fleffdt='2199-12-31' ");
             sel.append(" where eor.fassigntype=1 ");
            // sel.append(" and ehis.fpersonid='Qn6sVXVHSoGPDxwLt7t3u4Dvfe0=' ");
             if (null != entityViewInfo && entityViewInfo.getFilter() != null) {
@@ -406,19 +422,19 @@ public class PersonRosterAListHandler extends ListHandler {
                         break;
                     }
                 }
-                FilterInfo filterInfo1 = new FilterInfo();
+
                 for (int i = 0; i < fc.size(); i++) {
                     FilterItemInfo itemInfo = (FilterItemInfo) fc.get(i).clone();
                     if (itemInfo.getPropertyName().startsWith("deadline")) {
-                        filterInfo1.getFilterItems().add(itemInfo);
+                        preEntry=false;
                     }
                 }
-                String andSql = filterInfo1.toSql();
-                if (org.apache.commons.lang3.StringUtils.isNotBlank(andSql)) {
-                    andSql = andSql.replaceAll("deadline1", "eor.feffdt");
-                    andSql = andSql.replaceAll("deadline2", "eor.fleffdt");
-                    sel.append(" and " + andSql + " ");
-                }
+//                String andSql = filterInfo1.toSql();
+//                if (org.apache.commons.lang3.StringUtils.isNotBlank(andSql)) {
+//                    andSql = andSql.replaceAll("deadline1", "eor.feffdt");
+//                    andSql = andSql.replaceAll("deadline2", "eor.fleffdt");
+//                    sel.append(" and " + andSql + " ");
+//                }
                 if(1==status){
                     sel.append(" and ehis.flaborrelationstateid in(select fid from T_HR_BDEmployeeType where finservice in(1,4)) ");
                 }else  if(2==status){
@@ -429,8 +445,8 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" SELECT ehis.fid, ");
             sel.append(" ehis.feffdt, ");
             sel.append(" ehis.fleffdt, ");
-            sel.append(" ehis.feffdt as eorEffdt, ");
-            sel.append(" rEntry.FBIZDATE as eorLeffdt, ");
+            sel.append(" (rEntry.fbizdate + 1) as eorEffdt, ");
+            sel.append(" ehis.fleffdt as eorLeffdt, ");
             sel.append(" rEntry.FBIZDATE as bizdate, ");
             sel.append(" ehis.FPERSONID, ");
             sel.append(" rEntry.fadminorgid, ");
@@ -443,10 +459,11 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" ehis.FTryoutMonth, ");
             sel.append(" ehis.FPlanFormalDate, ");
             sel.append(" isnull(rEntry.fdescription,vr.fname_l1) TerminationReason, ");
-            sel.append(" bt.fname_l2 EmployeeType, ");
+            sel.append(" bt.fname_l1 EmployeeType, ");
             sel.append(" bt.finservice finservice, ");
             sel.append(" rEntry.femptypeid ");
             sel.append(" from T_HR_RESIGNBIZBILLENTRY rEntry ");
+            sel.append(" left join  T_HR_RESIGNBIZBILL rbill on rEntry.fbillid=rbill.fid ");
             sel.append(" left join T_HR_BDEmployeeType bt on bt.fid = rEntry.femptypeid ");
             sel.append(" left join T_HR_VariationReason vr on vr.fid = rEntry.fvariationreasonid ");
             sel.append(" left join t_hr_emplaborrelationhis ehis on rEntry.FPERSONID = ehis.fpersonid ");
@@ -457,26 +474,17 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" left join t_bd_person p on p.fid = ehis.fpersonid ");
             sel.append(" where eor.fassigntype=1 ");
             sel.append(" and ehis.fleffdt='2199-12-31' ");
-            sel.append(" and (rEntry.fbizdate+1) >= ehis.feffdt ");
-            //sel.append(" and ehis.fpersonid='Qn6sVXVHSoGPDxwLt7t3u4Dvfe0=' ");
-            if (null != entityViewInfo && entityViewInfo.getFilter() != null) {
-                FilterItemCollection fc = entityViewInfo.getFilter().getFilterItems();
-                FilterInfo filterInfo1 = new FilterInfo();
-                for (int i = 0; i < fc.size(); i++) {
-                    FilterItemInfo itemInfo = (FilterItemInfo) fc.get(i).clone();
-                    if ("deadline1".equals(itemInfo.getPropertyName())) {
-                        filterInfo1.getFilterItems().add(itemInfo);
-                    }
-                }
-                String andSql = filterInfo1.toSql();
-                if (org.apache.commons.lang3.StringUtils.isNotBlank(andSql)) {
-                    andSql = andSql.replaceAll("deadline1", "(rEntry.fbizdate+1)");
-                    sel.append(" and " + andSql + " ");
-                }
-            }
+            sel.append(" and (rEntry.fbizdate+1) >= ehis.feffdt and rbill.FBILLSTATE = 3 ");
             sel.append(" ) b ");
             sel.append(" left join t_bd_person person on person.fid = b.FPERSONID ");
-           // sel.append(" left join T_HR_VariationReason vr on person.fid = rEntry.fvariationreasonid ");
+
+            sel.append(" left join ( ");
+            sel.append("    select max(e.fbizdate) bizdate, e.fpersonid ");
+            sel.append("    from T_HR_RESIGNBIZBILLENTRY e ");
+            sel.append("    left join  T_HR_RESIGNBIZBILL b on e.fbillid=b.fid where b.FBILLSTATE = 3 ");
+            sel.append("    group by e.fpersonid ) rEntry2 ");
+            sel.append(" on rEntry2.fpersonid = person.fid ");
+
             sel.append(" left join T_HR_personPosition pePos on pePos.fpersonid = person.FID ");
             sel.append(" left join t_org_admin c on b.FAdminOrgID = c.FID ");
             sel.append(" left join t_org_position d on b.fpositionid = d.FID ");
@@ -558,21 +566,21 @@ public class PersonRosterAListHandler extends ListHandler {
             if (null != entityViewInfo && entityViewInfo.getFilter() != null) {
                 FilterInfo ffc= (FilterInfo) entityViewInfo.getFilter().clone();
                 FilterItemCollection fc = ffc.getFilterItems();
-                for (int i = 0; i < fc.size(); i++) {
-                    FilterItemInfo itemInfo = fc.get(i);
-                    if ("deadline2".equals(itemInfo.getPropertyName())) {
-                        itemInfo.setCompareValue("1");
-                        itemInfo.setCompareType(CompareType.EQUALS);
-                        itemInfo.setPropertyName("1");
-                        preEntry=false;
-                    }
-                    if ("deadline1".equals(itemInfo.getPropertyName())) {
-                        itemInfo.setCompareValue("1");
-                        itemInfo.setCompareType(CompareType.EQUALS);
-                        itemInfo.setPropertyName("1");
-                        preEntry=false;
-                    }
-                }
+//                for (int i = 0; i < fc.size(); i++) {
+//                    FilterItemInfo itemInfo = fc.get(i);
+//                    if ("deadline2".equals(itemInfo.getPropertyName())) {
+//                        itemInfo.setCompareValue("1");
+//                        itemInfo.setCompareType(CompareType.EQUALS);
+//                        itemInfo.setPropertyName("1");
+//                        preEntry=false;
+//                    }
+//                    if ("deadline1".equals(itemInfo.getPropertyName())) {
+//                        itemInfo.setCompareValue("1");
+//                        itemInfo.setCompareType(CompareType.EQUALS);
+//                        itemInfo.setPropertyName("1");
+//                        preEntry=false;
+//                    }
+//                }
                 String andSql=ffc.toSql();
                 if (org.apache.commons.lang3.StringUtils.isNotBlank(andSql)) {
                     andSql = andSql.replaceAll("personType.id", "personTypeId");
@@ -619,7 +627,7 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" blx.fname_l1 as PersonType, ");
             sel.append(" lsqzjz.fname_l1 as FullTimeorPartTime, ");
             sel.append(" j.fnumber as LineManager, ");
-            sel.append(" j.fname_l2 as LineManagerName, ");
+            sel.append(" j.fname_l1 as LineManagerName, ");
             sel.append(" to_char(pEntry.fbizdate, 'yyyy-MM-dd') as StartTime, ");
             sel.append(" '2199-12-31' as EndTime, ");
             sel.append(" { ts '2199-12-31' } as eorEndDate, ");
@@ -655,7 +663,7 @@ public class PersonRosterAListHandler extends ListHandler {
             sel.append(" mz.FName_L1 as Ethnicity, ");
             sel.append(" hj.FName_L1 as HukouType, ");
             sel.append(" to_char(person.cfhrd, 'yyyy-MM-dd') as HouseholdRegisteredDate, ");
-            sel.append(" person.FNativePlace_L2 as Nativeplace, ");
+            sel.append(" person.FNativePlace_L1 as Nativeplace, ");
             sel.append(" zm.FName_L1 as PoliticaStatus, ");
             sel.append(" hy.FName_L1 as MaritalStatus, ");
             sel.append(" l.FPostalcode as Zipcode, ");
@@ -787,8 +795,6 @@ public class PersonRosterAListHandler extends ListHandler {
                     andSql = andSql.replaceAll("periodEmployment", "enterDate");
                     andSql = andSql.replaceAll("periodResignation", "leftDate");
                     sel.append(new StringBuilder().append(" where ").append(andSql).append(" ").toString());
-
-
                 }
             }
 //            if (null != entityViewInfo && entityViewInfo.getFilter() != null) {

Някои файлове не бяха показани, защото твърде много файлове са промени