Bläddra i källkod

员工排序维护 排序

qingwu 4 månader sedan
förälder
incheckning
e539117657

+ 232 - 0
js/addon/custom/attendmanage/web/js/shr/ats/scheduleShiftListEx.js

@@ -0,0 +1,232 @@
+shr.defineClass("shr.ats.ScheduleShiftListEx", shr.ats.ScheduleShiftList, {
+	initalizeDOM: function () {
+		shr.ats.ScheduleShiftListEx.superClass.initalizeDOM.call(this);
+	},
+	doVerticalRenderDataGrid: function () {
+		var that = this;
+		var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.ats.web.handler.ScheduleShiftListHandler&method=getGridData&transverse=1";
+		url += '&serviceId=' + encodeURIComponent(shr.getUrlRequestParam("serviceId"));
+		//选中横向列表
+		if (0 == that.showType) {
+			url += "&sidx=proposer.FINDEX,proposerid,attenddate&sord=asc";//自定义排序
+		}
+		var options = {
+			url: url,
+			postData: that.assembleParam(),
+			datatype: "json",
+			mtype: "POST",
+			multiselect: true,
+			rownumbers: false,
+			footerrow: true,  //原生jqGrid加入防止样式错乱
+			colNames: that.colChineseNames_function(),
+			colModel: that.colModel_function(),
+			rowNum: that.rowNumPerPage,
+			sortname: "",
+			pager: '#gridPager1',
+			height: 'auto',
+			rowList: [30, 50, 100, 200],
+			recordpos: 'left',
+			recordtext: '({0}-{1})/{2}',
+			gridview: true,
+			pginput: true,
+			shrinkToFit: true,
+			forceFit: true,
+			viewrecords: true,
+			synchTotal: "true",
+			customPager: '#microToolbar1',
+			afterInsertRow: function (rowid, rowdata) {
+			},
+			onSelectRow: function (rowid, status) {
+			},
+			onCellSelect: function (rowid, iCol, cellcontent, e) {
+				if (iCol > 0) {
+					var billId = $("#dataGrid").jqGrid("getCell", rowid, "id");
+					that.reloadPage({
+						uipk: 'com.kingdee.eas.hr.ats.app.ScheduleShift.form',
+						billId: billId,
+						method: 'view'
+					});
+				}
+			},
+			beforeProcessing: function (data) {
+			},
+			loadComplete: function (data) {
+				that.handleMicroToolbarInfo(data);
+				// var viewPage = shr.getCurrentViewPage();
+				// viewPage.setGridHeight();
+
+				// BT-01267019	【V8.8SP1功能测试】员工排班列表-横向显示,页面底部留白太多	
+				$('#dataGrid').jqGrid("setGridHeight", window.screen.height - 433 > 550 ? window.screen.height - 433 : 550);
+
+			}
+		};
+
+		$("#gridPager1").hide();
+		// clear table
+		$('#dataGrid').jqGrid(options);
+		//判断当前表格的列宽是否超出了body体的宽度,如果超出再设置冻结列,如不超出则不设置冻结列
+		// options.shrinkToFit 为true,即自适应,故而不需要冻结列
+		if (!options.shrinkToFit) {
+			jQuery('#dataGrid').jqGrid('setFrozenColumns');
+		} else {
+
+		}
+	},
+	doRenderDataGrid : function () {
+
+		this.isFirstTimeLoad++;
+		if(this.isFirstTimeLoad < 2){
+			return;
+		}
+		var that = this;
+		that.changeShift1 = null;
+		that.changeShift2 = null;
+		//考勤日期范围必选
+		var dateRequiredValidate = shr.fastFilterValidateUtil.requiredValidate(this,{"name":"beginDate_endDate","errorMessage":jsBizMultLan.atsManager_scheduleShiftList_i18n_28});
+		if(!dateRequiredValidate) {
+			return;
+		}
+
+		var ONE_QUARTER_TIME = 7948800000; // 92 * 24 * 60 * 60 * 1000 一个季度的时间(92天)
+		var dateRequiredValidate = shr.fastFilterValidateUtil.requiredDateRangeValidate(this,{"name":"beginDate_endDate","errorMessage":jsBizMultLan.atsManager_scheduleShiftList_26522394_i18n_0, "milliSecondRange": ONE_QUARTER_TIME});
+		if(!dateRequiredValidate) {
+			return;
+		}
+
+		if($('#gridPager1').length > 0){
+			$('#listInfo').empty();
+		}
+		
+		$('#listInfo').append('<div id="gridPager1"></div>');
+		$('#listInfo').append('<table id="dataGrid"></table>');
+		
+
+		//选中横向列表
+	    if(0 == that.showType){
+			that.doVerticalRenderDataGrid();
+		}
+	    //选中纵 向列表
+	    else if(1 == that.showType){
+			var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.custom.ats.web.handler.ScheduleShiftListHandlerEx&method=getPersonShift";
+			url += "&transverse=0&serviceId="+encodeURIComponent(shr.getUrlRequestParam("serviceId"));
+
+			$("#gridPager1").hide();
+			listWorkShift.renderListTable({
+				url:url,
+				rowNum : that.rowNumPerPage,
+				pager : '#gridPager1',
+				rowList : [30,50,100,200],
+				recordtext : '({0}-{1})/{2}',
+				viewrecords : true,
+				postData: that.assembleParam(),
+				loadComplete:{fn : that.handleMicroToolbarInfo,sequence :atsCommonUtile.SEQUENCE_AFTER,scope:this}
+			});
+			$($("#listInfo").find(".ui-jqgrid-bdiv")[0]).css("height", "500px").css("overflow", "auto");
+	    }
+	    //未排班列表
+	    else{
+	    	var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.ats.web.handler.ScheduleShiftListHandler&method=getNoShiftGridData";
+	    	url += '&serviceId='+encodeURIComponent(shr.getUrlRequestParam("serviceId"));
+	    	$("#gridPager1").hide();
+	    	listWorkShift.renderListTable({
+	    		url:url,
+	    		rowNum : that.rowNumPerPage,
+	    		pager : '#gridPager1',
+	    		rowList : [30,50,100,200],
+	    		recordtext : '({0}-{1})/{2}',
+	    		viewrecords : true,
+	    		postData: that.assembleParam(),
+	    		loadComplete:{fn : that.handleMicroToolbarInfo,sequence :atsCommonUtile.SEQUENCE_AFTER,scope:this}
+	    	});
+	    	$($("#listInfo").find(".ui-jqgrid-bdiv")[0]).css("height", "500px").css("overflow", "auto");
+	    }
+	    
+
+	},
+	// doRenderDataGrid: function () {
+
+	// 	this.isFirstTimeLoad++;
+	// 	if (this.isFirstTimeLoad < 2) {
+	// 		return;
+	// 	}
+	// 	var that = this;
+	// 	that.changeShift1 = null;
+	// 	that.changeShift2 = null;
+	// 	//考勤日期范围必选
+	// 	var dateRequiredValidate = shr.fastFilterValidateUtil.requiredValidate(this, { "name": "beginDate_endDate", "errorMessage": jsBizMultLan.atsManager_scheduleShiftList_i18n_28 });
+	// 	if (!dateRequiredValidate) {
+	// 		return;
+	// 	}
+
+	// 	var ONE_QUARTER_TIME = 7948800000; // 92 * 24 * 60 * 60 * 1000 一个季度的时间(92天)
+	// 	var dateRequiredValidate = shr.fastFilterValidateUtil.requiredDateRangeValidate(this, { "name": "beginDate_endDate", "errorMessage": jsBizMultLan.atsManager_scheduleShiftList_26522394_i18n_0, "milliSecondRange": ONE_QUARTER_TIME });
+	// 	if (!dateRequiredValidate) {
+	// 		return;
+	// 	}
+
+	// 	if ($('#gridPager1').length > 0) {
+	// 		$('#listInfo').empty();
+	// 	}
+
+	// 	$('#listInfo').append('<div id="gridPager1"></div>');
+	// 	$('#listInfo').append('<table id="dataGrid"></table>');
+
+
+	// 	//选中横向列表
+	// 	if (0 == that.showType) {
+	// 		that.doVerticalRenderDataGrid();
+	// 	}
+	// 	//选中纵 向列表
+	// 	else if (1 == that.showType) {
+	// 		var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.custom.ats.web.handler.ScheduleShiftListHandlerEx&method=getPersonShift";
+	// 		url += "&transverse=0&serviceId=" + encodeURIComponent(shr.getUrlRequestParam("serviceId"));
+
+	// 		$("#gridPager1").hide();
+	// 		listWorkShift.renderListTable({
+	// 			url: url,
+	// 			rowNum: that.rowNumPerPage,
+	// 			pager: '#gridPager1',
+	// 			rowList: [30, 50, 100, 200],
+	// 			recordtext: '({0}-{1})/{2}',
+	// 			viewrecords: true,
+	// 			postData: that.assembleParam(),
+	// 			// loadComplete:{fn : that.handleMicroToolbarInfo,sequence :atsCommonUtile.SEQUENCE_AFTER,scope:this}
+	// 			// footerrow: true, // 启用合计行
+	// 			// userDataOnFooter: true, // 将用户数据放在合计行
+	// 			clientFooter: true,
+	// 			loadComplete: {
+	// 				fn: function (data) { 
+	// 					that.handleMicroToolbarInfo(data);
+	// 					listWorkShift.setStatisticalParams(that);
+	// 					if (listWorkShift.countDialogIsOpen) {
+	// 						listWorkShift.getShiftStatisticsData();
+	// 					}
+	// 					listWorkShift.getAttentShiftsData();
+	// 				},
+	// 				sequence: atsCommonUtile.SEQUENCE_AFTER, scope: this
+	// 			}
+	// 		});
+	// 		$($("#listInfo").find(".ui-jqgrid-bdiv")[0]).css("height", "500px").css("overflow", "auto");
+
+	// 	}
+	// 	//未排班列表
+	// 	else {
+	// 		var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.ats.web.handler.ScheduleShiftListHandler&method=getNoShiftGridData";
+	// 		url += '&serviceId=' + encodeURIComponent(shr.getUrlRequestParam("serviceId"));
+	// 		$("#gridPager1").hide();
+	// 		listWorkShift.renderListTable({
+	// 			url: url,
+	// 			rowNum: that.rowNumPerPage,
+	// 			pager: '#gridPager1',
+	// 			rowList: [30, 50, 100, 200],
+	// 			recordtext: '({0}-{1})/{2}',
+	// 			viewrecords: true,
+	// 			postData: that.assembleParam(),
+	// 			loadComplete: { fn: that.handleMicroToolbarInfo, sequence: atsCommonUtile.SEQUENCE_AFTER, scope: this }
+	// 		});
+	// 		$($("#listInfo").find(".ui-jqgrid-bdiv")[0]).css("height", "500px").css("overflow", "auto");
+	// 	}
+
+
+	// }
+})

+ 295 - 0
websrc/com/kingdee/eas/custom/ats/web/handler/ScheduleShiftListHandlerEx.java

@@ -0,0 +1,295 @@
+package com.kingdee.shr.custom.ats.web.handler;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.dao.query.server.PagingHelper;
+import com.kingdee.bos.db.TempTablePool;
+import com.kingdee.eas.hr.ats.AtsUtil;
+import com.kingdee.eas.hr.ats.util.AtsBaseUtils;
+import com.kingdee.eas.hr.ats.util.AtsDateUtils;
+import com.kingdee.eas.hr.ats.util.common.AtsCommonUtile;
+import com.kingdee.eas.hr.ats.util.common.MLUtile;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+import com.kingdee.shr.ats.web.handler.ScheduleShiftListHandler;
+import com.kingdee.shr.ats.web.util.WorkCalendarItemHelper;
+import com.kingdee.shr.base.syssetting.context.SHRContext;
+import com.kingdee.shr.base.syssetting.exception.SHRWebException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.log4j.Logger;
+import org.springframework.ui.ModelMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.sql.SQLException;
+import java.text.MessageFormat;
+import java.text.ParseException;
+import java.util.*;
+
+/**
+ * @author ÇàÎà
+ * @version 1.0
+ * @description: TODO
+ * @date 2025/7/31 9:59
+ */
+public class ScheduleShiftListHandlerEx extends ScheduleShiftListHandler {
+    private Context ctx = SHRContext.getInstance().getContext();
+    private int totalCount = 0;
+    private static Logger logger = Logger.getLogger(ScheduleShiftListHandlerEx.class);
+
+    public ScheduleShiftListHandlerEx() {
+        logger.error("ScheduleShiftListHandlerEx--init--");
+    }
+
+    @Override
+    public void getPersonShiftAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, SHRWebException, SQLException, ParseException {
+        logger.error("getPersonShiftAction--statrt--");
+        super.getPersonShiftAction(request, response, modelMap);
+        logger.error("getPersonShiftAction--end--");
+    }
+
+    @Override
+    public Map<String, Object> getPersonShiftListMap(HttpServletRequest request, Map paramsMap, int rows, int page, Object[] params, String flag) throws BOSException, SQLException, SHRWebException {
+        logger.error("getPersonShiftListMap--statrt--");
+        Map<Integer, String> dateTypeMap = (new WorkCalendarItemHelper()).getDateType();
+        Set<String> timeSets = new HashSet();
+        String sql = this.getPersonScheduleShiftListSql(request, paramsMap, rows, page, flag, params);
+        IRowSet rowSet = null;
+        rowSet = DbUtil.executeQuery(this.ctx, sql, params);
+        Map<String, Object> listMap = new LinkedHashMap();
+        List<Map> list;
+        Map<String, Object> objectMap;
+        if (rowSet != null) {
+            for (; rowSet.next(); list.add(objectMap)) {
+                String key = rowSet.getString("personNum") + "@_@" + rowSet.getString("ADMINORGUNIT_ID") + "@_@" + rowSet.getString("ATTADMINORGUNIT_ID") + "@_@" + rowSet.getString("hrOrgUnit_id");
+                list = (List) listMap.get(key);
+                objectMap = new HashMap();
+                if (list == null) {
+                    list = new ArrayList();
+                    objectMap.put("key", key);
+                    objectMap.put("personNum", rowSet.getString("personNum"));
+                    objectMap.put("personName", rowSet.getString("personName"));
+                    objectMap.put("adminOrgUnit_displayName", rowSet.getString("adminOrgUnit_displayName"));
+                    objectMap.put("adminOrgName", rowSet.getString("hrOrgUnit_name"));
+                    objectMap.put("attAdminOrgUnit_displayName", rowSet.getString("attAdminOrgUnit_displayName"));
+                    objectMap.put("hrOrgUnit_displayName", rowSet.getString("hrOrgUnit_displayName"));
+                    objectMap.put("hrOrgUnit_name", rowSet.getString("hrOrgUnit_name"));
+                    objectMap.put("hrOrgName", rowSet.getString("hrOrgUnit_name"));
+                    objectMap.put("hrOrgUnit_id", rowSet.getString("hrOrgUnit_id"));
+                    objectMap.put("hrOrgUnitId", rowSet.getString("hrOrgUnit_id"));
+                    listMap.put(key, list);
+                }
+
+                objectMap.put("dayType", rowSet.getInt("dateType"));
+                objectMap.put("shiftName", rowSet.getString("shiftName"));
+                objectMap.put("attendDate", AtsCommonUtile.getDateFormat().format(rowSet.getDate("attendDate")));
+                objectMap.put("matchDayType", rowSet.getInt("matchDayType"));
+                objectMap.put("matchShiftId", rowSet.getString("matchShiftId"));
+                objectMap.put("matchShiftName", rowSet.getString("matchShiftName"));
+                if (StringUtils.isEmpty(rowSet.getString("dateType"))) {
+                    objectMap.put("dayType", objectMap.get("matchDayType"));
+                    objectMap.put("shiftName", objectMap.get("matchShiftName"));
+                }
+
+                String attendDate = AtsDateUtils.dateShortToString(rowSet.getDate("attendDate"));
+                timeSets.remove(attendDate);
+                if (!StringUtils.isEmpty((CharSequence) dateTypeMap.get(rowSet.getInt("dateType")))) {
+                    if (StringUtils.isEmpty(rowSet.getString("shiftName"))) {
+                        objectMap.put(attendDate, "[" + (String) dateTypeMap.get(rowSet.getInt("dateType")) + "]");
+                    } else {
+                        objectMap.put(attendDate, "[" + (String) dateTypeMap.get(rowSet.getInt("dateType")) + "]" + rowSet.getString("shiftName"));
+                    }
+                } else {
+                    objectMap.put(attendDate, "");
+                }
+            }
+        }
+
+        logger.error("getPersonShiftListMap--end--");
+        return listMap;
+
+    }
+
+    public String getPersonScheduleShiftListSql(HttpServletRequest request, Map paramsMap, int rs, int pg, String flag, Object[] params) throws SHRWebException, BOSException {
+        logger.error("getPersonScheduleShiftListSql--statrt--");
+        String pageSql = this.getPersonScheduleShiftPageSql(request, paramsMap, rs, pg, flag, params);
+        StringBuffer sql = new StringBuffer();
+        sql.append(" /*dialect*/ SELECT ").append(" person.FID, ").append(" person.PERSONNUM PERSONNUM, ").append(" person.PERSONNAME  PERSONNAME, ").append(" person.personIndex  PERSONINDEX, ").append(" hrOrgUnit.fdisplayName" + MLUtile.getMlFlag(this.ctx) + " HRORGUNIT_DISPLAYNAME, ").append(" hrOrgUnit.fname" + MLUtile.getMlFlag(this.ctx) + " HRORGUNIT_NAME, ").append(" hrOrgUnit.fid HRORGUNIT_ID, ").append(" adminOrgUnit.fdisplayName" + MLUtile.getMlFlag(this.ctx) + " ADMINORGUNIT_DISPLAYNAME, ").append(" attAdminOrgUnit.fdisplayName" + MLUtile.getMlFlag(this.ctx) + " ATTADMINORGUNIT_DISPLAYNAME, ").append(" scheduleShift.fattenddate ATTENDDATE, ").append(" scheduleShift.fileAdminOrgUnitId ADMINORGUNIT_ID, ").append(" scheduleShift.fAdminOrgUnitId ATTADMINORGUNIT_ID, ").append(" shift.fname" + MLUtile.getMlFlag(this.ctx) + " SHIFTNAME, ").append(" scheduleShift.fdaytype DATETYPE, ").append(" scheduleShift.fmatchDayType matchDayType, ").append(" scheduleShift.fmatchShift matchShiftId, ").append(" matchShift.fname" + MLUtile.getMlFlag(this.ctx) + " matchShiftName ").append(" FROM ( ");
+        sql.append(pageSql);
+        sql.append(" ) person ").append(" INNER JOIN ( select scheduleShift.fdefaultshiftid,scheduleShift.fattenddate, ").append(" scheduleShift.fdaytype, ").append(" scheduleShift.fmatchDayType, ").append(" scheduleShift.fmatchShift, ").append(" scheduleShift.fproposerid, ").append(" scheduleShift.fHrOrgUnitId, ").append(" scheduleShift.fAdminOrgUnitId fAdminOrgUnitId, ").append(" ATTENDFILE.FADMINORGUNITID fileAdminOrgUnitId ").append(" FROM t_hr_ats_scheduleshift scheduleShift ").append(" inner JOIN T_HR_ATS_AttendanceFileHis ATTENDFILE ").append(" ON ( scheduleShift.FProposerID = attendFile.FProposerID  ").append(" AND attendFile.feffdt <= scheduleShift.Fattenddate  ").append(" AND attendFile.fLeffdt >= scheduleShift.Fattenddate   ");
+        String isAttendance = (String) paramsMap.get("attendFile.isAttendance");
+        if (StringUtils.isNotEmpty(isAttendance)) {
+            sql.append(" AND attendFile.fisAttendance in (" + AtsUtil.getStrFromString(isAttendance) + ") ");
+        }
+        sql.append(")   ").append(" where\tscheduleShift.fattenddate >= ? ").append(" AND scheduleShift.fattenddate <= ? ");
+        String hrOrgUnit = (String) paramsMap.get("hrOrgUnit");
+        if (StringUtils.isNotEmpty(hrOrgUnit)) {
+            sql.append(" AND scheduleShift.FHrOrgUnitID in (" + AtsUtil.getStrFromStringArr(hrOrgUnit.split(",")) + ") ");
+        }
+        sql.append(" ) scheduleShift ").append(" ON person.fid = scheduleShift.fproposerid and person.fHrOrgUnitId=scheduleShift.fHrOrgUnitId and person.attAdminOrgUnitID = scheduleShift.fAdminOrgUnitId and scheduleShift.fileAdminOrgUnitId = person.fAdminOrgUnitId ").append(" INNER JOIN T_ORG_Admin adminOrgUnit ON adminOrgUnit.fid = person.fAdminOrgUnitId ").append(" INNER JOIN T_ORG_HRO hrOrgUnit ON hrOrgUnit.Fid = person.fHrOrgUnitId ").append(" INNER JOIN T_ORG_Admin attAdminOrgUnit ON person.attAdminOrgUnitID = attAdminOrgUnit.FID ").append(" LEFT JOIN t_hr_ats_shift SHIFT ON scheduleShift.fdefaultshiftid = shift.fid ").append(" LEFT JOIN t_hr_ats_shift matchShift ON scheduleShift.fmatchShift = matchShift.fid ").append(" where scheduleShift.fattenddate >=  ? ").append(" AND scheduleShift.fattenddate <=  ? ");
+        if (paramsMap.get("sidx") != null && StringUtils.isNotEmpty(paramsMap.get("sidx").toString())) {
+            sql.append(" ORDER BY PERSONINDEX," + paramsMap.get("sidx") + " " + paramsMap.get("sord"));
+        }
+        logger.error("getPersonScheduleShiftListSql--sql--" + sql.toString());
+        logger.error("getPersonScheduleShiftListSql--end--");
+        return sql.toString();
+    }
+
+    private String getPersonScheduleShiftPageSql(HttpServletRequest request, Map paramsMap, int rows, int page, String flag, Object[] params) throws SHRWebException, BOSException {
+        logger.error("getPersonScheduleShiftPageSql--statrt--");
+
+        int dbType = AtsBaseUtils.getDbType(this.ctx);
+        PagingHelper pageHelper = new PagingHelper();
+        String sql = this.getPersonScheduleShiftSql(request, paramsMap, flag);
+        String tempPersonTable = (String) paramsMap.get("tempPersonTable");
+        if (!StringUtils.isEmpty(flag) && flag.equals("export")) {
+            this.totalCount = (Integer) paramsMap.get("totalCount");
+        } else {
+            tempPersonTable = this.createPersonTable(this.ctx, paramsMap, new Object[]{params[0], params[1]}, sql);
+            this.totalCount = this.getPersontotalCount(tempPersonTable);
+        }
+
+        int length = rows;
+        if (page * rows > this.totalCount) {
+            length = this.totalCount - (page - 1) * rows;
+        }
+
+        StringBuffer personSql = new StringBuffer();
+        personSql.append(" SELECT * FROM ").append(tempPersonTable);
+        if (paramsMap.get("sidx") != null && StringUtils.isNotEmpty(paramsMap.get("sidx").toString())) {
+//            personSql.append(" ORDER BY PERSONNUM " + paramsMap.get("sord"));
+            personSql.append(" ORDER BY personIndex,PERSONNUM " + paramsMap.get("sord"));
+        }
+
+        String afterPagingSql = "";
+
+        try {
+            try {
+                afterPagingSql = pageHelper.getPagingSqlNoOptmize(dbType, personSql.toString(), (page - 1) * rows, length);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            logger.error("getPersonScheduleShiftPageSql--end--");
+            return afterPagingSql;
+        } finally {
+            ;
+        }
+
+    }
+
+    private String createPersonTable(Context ctx, Map paramsMap, Object[] objects, String sql) throws BOSException {
+        String tempPersonTable = "";
+
+        try {
+            tempPersonTable = TempTablePool.getInstance(this.ctx).createTempTableName();
+        } catch (Exception e) {
+            logger.error(MessageFormat.format("create table failed sql :{0} ", sql));
+            e.printStackTrace();
+        }
+
+        for (Object param : objects) {
+            String paramStr = com.kingdee.eas.hr.ats.vo.common.Date.getNoNullTime(param).toDateTimeStr();
+            sql = sql.replaceFirst("\\?", String.format("{ts '%s'}", paramStr));
+        }
+
+        String tempSql = "select * into " + tempPersonTable + " from (" + sql + ") T ";
+        DbUtil.execute(ctx, tempSql.toString());
+        paramsMap.put("tempPersonTable", tempPersonTable);
+        return tempPersonTable;
+    }
+
+    private String getPersonScheduleShiftSql(HttpServletRequest request, Map paramsMap, String flag) {
+        logger.error("getPersonScheduleShiftSql--statrt--");
+        String adminOrgUnitTempName = (String) paramsMap.get("adminOrgUnitTempName");
+        String hrRangeSQL = (String) paramsMap.get("hrRangeSQL");
+        String billId = (String) paramsMap.get("billId");
+        String advancedFilterItems = (String) paramsMap.get("advancedFilterItems");
+        StringBuffer sql = new StringBuffer();
+        sql.append(" SELECT * FROM ( ");
+        sql.append(" SELECT proposer.fid FID, ").append(" proposer.fname" + MLUtile.getMlFlag(this.ctx) + " PERSONNAME,  ").append(" proposer.fnumber PERSONNUM,  ").append("proposer.FINDEX personIndex, ").append(" scheduleShift.FHrOrgUnitID fHrOrgUnitId, ").append(" adminOrgUnit.fid FadminOrgUnitId, ").append(" scheduleShift.fadminOrgUnitid attAdminOrgUnitId ").append(" FROM t_bd_person PROPOSER ").append(" INNER JOIN t_hr_ats_scheduleshift SCHEDULESHIFT  ON proposer.fid = scheduleShift.fproposerid ").append(" INNER JOIN T_HR_ATS_AttendanceFileHis ATTENDFILE  ON ( scheduleShift.FProposerID = attendFile.FProposerID AND attendFile.feffdt <= scheduleShift.Fattenddate AND attendFile.fLeffdt >= scheduleShift.Fattenddate  )").append(" INNER JOIN T_ORG_Admin ADMINORGUNIT ON adminOrgUnit.fid = attendFile.FADMINORGUNITID ");
+        if (StringUtils.isNotEmpty(advancedFilterItems)) {
+            sql.append(" INNER JOIN T_ORG_Admin attAdminOrgUnit on attAdminOrgUnit.Fid = scheduleShift.FAdminOrgUnitID");
+            sql.append(" INNER JOIN T_HR_ATS_AttencePolicy attendPolicy on attendPolicy.Fid = scheduleShift.FAttendPolicyID");
+            sql.append(" LEFT OUTER JOIN T_HR_ATS_CardRule   cardRule ON scheduleShift.FCardRuleID = cardRule.FID ");
+            sql.append(" LEFT OUTER JOIN T_HR_ATS_Shift  defaultShift ON scheduleShift.FDefaultShiftID = defaultShift.FID ");
+        }
+
+        sql.append(" where scheduleShift.fattenddate >=  ? ").append(" AND scheduleShift.fattenddate <=  ? ");
+        this.getPersonGroupControlSQL(paramsMap, adminOrgUnitTempName, hrRangeSQL, sql);
+        String selectedPersonNums = request.getParameter("personNums");
+        if ("export".equalsIgnoreCase(flag) && !StringUtils.isEmpty(selectedPersonNums)) {
+            String[] selectedPersonNumsArr = selectedPersonNums.split(",");
+            StringBuffer sbuBuffer = new StringBuffer();
+
+            for (int i = 0; i < selectedPersonNumsArr.length; ++i) {
+                sbuBuffer.append("'" + selectedPersonNumsArr[i] + "'");
+                if (i != selectedPersonNumsArr.length - 1) {
+                    sbuBuffer.append(",");
+                }
+            }
+
+            if (sbuBuffer != null && sbuBuffer.length() > 0) {
+                sql.append(" AND PROPOSER.FNUMBER in (" + sbuBuffer.toString() + ") ");
+            }
+        }
+
+        String filterItems = (String) paramsMap.get("filterItems");
+        if (StringUtils.isNotEmpty(filterItems)) {
+            sql.append(" AND " + filterItems);
+        }
+
+        if (StringUtils.isNotEmpty(advancedFilterItems)) {
+            sql.append(" and " + advancedFilterItems);
+        }
+
+        String hrOrgUnit = (String) paramsMap.get("hrOrgUnit");
+        if (StringUtils.isNotEmpty(hrOrgUnit)) {
+            sql.append(" AND scheduleShift.FHrOrgUnitID in (" + AtsUtil.getStrFromStringArr(hrOrgUnit.split(",")) + ") ");
+        }
+
+        String ISDEFAULTMANAGE = (String) paramsMap.get("ISDEFAULTMANAGE");
+        if (StringUtils.isNotEmpty(ISDEFAULTMANAGE)) {
+            sql.append(" AND attendFile.FisdefaultManage in (" + AtsUtil.getStrFromStringArr(ISDEFAULTMANAGE.split(",")) + ") ");
+        }
+
+        sql.append(" ) tempTable ");
+        sql.append(" GROUP BY  FID, PERSONNAME,  PERSONNUM,  personIndex,  FHRORGUNITID,  FADMINORGUNITID,  ATTADMINORGUNITID  ");
+        logger.error("getPersonScheduleShiftSql--end--");
+        return sql.toString();
+    }
+
+    private int getPersontotalCount(String tempPersonTable) {
+        String countSql = "select count(1) from " + tempPersonTable;
+        IRowSet rowSet = null;
+
+        try {
+            rowSet = DbUtil.executeQuery(this.ctx, countSql);
+        } catch (BOSException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            return this.getTotalCount(rowSet);
+        } catch (SHRWebException e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    private int getTotalCount(IRowSet rowSet) throws SHRWebException {
+        try {
+            while (rowSet.next()) {
+                try {
+                    System.out.println("getTotalCount0321" + rowSet.getInt(1));
+                    this.totalCount = rowSet.getInt(1);
+                } catch (SQLException e) {
+                    throw new SHRWebException(e);
+                }
+            }
+        } catch (SQLException e) {
+            throw new SHRWebException(e);
+        }
+
+        return this.totalCount;
+    }
+}