ecology-kq/src/com/engine/kq/biz/KQOneStopUp.java

2270 lines
101 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.engine.kq.biz;
import com.engine.kq.cmd.hrmAttProcSet.KqTempletEnum;
import com.engine.kq.log.KQLog;
import com.engine.kq.wfset.attendance.manager.HrmAttProcSetManager;
import weaver.common.DateUtil;
import weaver.common.StringUtil;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.attendance.domain.HrmPaidLeaveTime;
import weaver.hrm.attendance.manager.HrmPaidLeaveTimeManager;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.moduledetach.ManageDetachComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.systeminfo.SystemEnv;
import weaver.workflow.action.WorkflowActionManager;
import weaver.workflow.workflow.WorkflowBillComInfo;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
* E9新考勤 兼容升级E8考勤数据
*/
public class KQOneStopUp {
public String separator = "#";
public static KQLog kqLog = new KQLog();
/**
* 根据新版考勤的请假类型更新旧版本的考勤请假类型
*/
public void upFlowLeaveType() {
WorkflowBillComInfo workflowBillComInfo = new WorkflowBillComInfo();
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
String sql = "select * from hrm_att_proc_set where field006=0 ";
Map<String,String> tableMap = new HashMap<>();
rs.executeQuery(sql);
while(rs.next()){
String setid = rs.getString("id");
String formid = rs.getString("field002");
String tablename = workflowBillComInfo.getTablename(formid);
String fieldnameSql = " select * from hrm_att_proc_relation where field002 in(select id from hrm_att_proc_fields where field001 = 180 and field002='newLeaveType') and field001 = "+setid;
String fieldname = "";
rs1.executeQuery(fieldnameSql);
if(rs1.next()){
fieldname = rs1.getString("field004");
}
if(tablename.length() > 0 && fieldname.length() > 0){
tableMap.put(tablename, fieldname);
}
}
List<String> updateSqls = new ArrayList<>();
String leavetypeSql = "select * from hrm_to_kq_LeaveRules ";
rs2.executeQuery(leavetypeSql);
while(rs2.next()){
String hrmleaveid = rs2.getString("hrmleaveid");
String kqleaveid = rs2.getString("kqleaveid");
for(Map.Entry<String,String> me: tableMap.entrySet()){
String upSql = "update "+me.getKey()+" set "+me.getValue()+" = " +kqleaveid+ " where "+me.getValue()+"="+hrmleaveid;
updateSqls.add(upSql);
}
}
for(String upSql : updateSqls){
rs.executeUpdate(upSql);
}
}
/**
* 在流程數據拆分前,需要初始化出差规则、公出规则和加班规则
* @return
*/
public boolean upFLowRule() {
boolean isDone = false;
isDone = upEvectionRule();
if(!isDone){
return isDone;
}
isDone = upOutRule();
if(!isDone){
return isDone;
}
isDone = upOvertimeRuleUnit();
if(!isDone){
return isDone;
}
isDone = upOvertimeRule("",null,"");
if(!isDone){
return isDone;
}
return isDone;
}
/**
* 初始化加班规则单位
* @return
*/
public boolean upOvertimeRuleUnit() {
int id = 1;////暂为备用字段加班单位ID固定为1
int organizationType = 0;//暂为备用字段所属机构类型0-总部、1-分部、2-部门
int organizationId = -1;//暂为备用字段所属机构的ID机构类型为分部时为分部ID
int minimumUnit = 1;//最小加班单位1-按天加班、2-按半天加班、3-按小时加班、4-按整天加班
double hoursToday = 8.00;//日折算时长
boolean flag = true;
String sql = "update kq_OvertimeUnit set minimumUnit=?,hoursToday=? where id=?";
RecordSet recordSet = new RecordSet();
flag = recordSet.executeUpdate(sql, minimumUnit, hoursToday, id);
return flag;
}
/**
* 升级初始化加班规则
*/
public boolean upOvertimeRule(String groupids, User user,String rulefrom) {
RecordSet rs = new RecordSet();
if(groupids.length() > 0){
groupids = groupids.substring(1);
Map<String, Object> params = new HashMap<>();
if("scheduleset".equalsIgnoreCase(rulefrom)){
params.put("name", "一般工作时间升级加班规则");
}else{
params.put("name", "排班升级加班规则");
}
params.put("groupIds", groupids);
params.put("minimumLen2", "1");
params.put("startTime2", "0");
params.put("minimumLen3", "1");
params.put("minimumLen1", "1");
params.put("paidLeaveEnableType2", "2");
params.put("paidLeaveEnableType3", "2");
params.put("paidLeaveEnableType1", "2");
params.put("paidLeaveEnableFlowType2", "1");
params.put("paidLeaveEnableFlowType3", "1");
params.put("paidLeaveEnableFlowType1", "1");
int ruleId = KQOvertimeRulesBiz.addOvertimeRules(params, user);
if(ruleId > 0){
String overRuleSql = "insert into hrm_to_kq_OverRules(kqid,rulefrom) values(?,?)";
return rs.executeUpdate(overRuleSql, ruleId,rulefrom);
}else{
kqLog.info("upOvertimeRule 生成加班规则失败 "+params);
return false;
}
}else{
kqLog.info("upOvertimeRule 生成加班规则失败 groupids为空");
return false;
}
}
/**
* 升级初始化公出规则
*/
public boolean upOutRule() {
RecordSet recordSet = new RecordSet();
String exit_ruleId = "1";//暂为备用字段规则ID固定为1
String exit_name = "出差";//暂为备用字段,规则名称,目前固定为出差
int exit_organizationType = 0;//暂为备用字段所属机构类型0-总部、1-分部、2-部门
int exit_organizationId = 0;//暂为备用字段所属机构的ID机构类型为分部时为分部ID
int exit_minimumUnit = 1;//最小公出单位1-按天公出、2-按半天公出、3-按小时公出、4-按整天公出
double exit_proportion = 8.00;//换算比例(当单位由天、半天、整天切换成小时或者由小时切换成天、半天、整天时,历史数据的转换比例)
int exit_computingMode = 1;//计算公出时长方式1-按工作日计算公出时长、2-按自然日计算公出时长
double exit_hoursToDay = 8.00;//日折算时长(当按天公出、按半天公出且按自然日计算公出时长时有效)
String sql = "update kq_exitRules set minimumUnit=?,proportion=?,computingMode=?,hoursToDay=? where id=?";
boolean flag = recordSet.executeUpdate(sql, exit_minimumUnit, exit_proportion, exit_computingMode, exit_hoursToDay, exit_ruleId);
return flag;
}
/**
* 升级初始化出差规则
*/
public boolean upEvectionRule() {
String ruleId = "1";//暂为备用字段规则ID固定为1
String name = "出差";//暂为备用字段,规则名称,目前固定为出差
int organizationType = 0;//暂为备用字段所属机构类型0-总部、1-分部、2-部门
int organizationId = 0;//暂为备用字段所属机构的ID机构类型为分部时为分部ID
int minimumUnit = 1;//最小出差单位1-按天出差、2-按半天出差、3-按小时出差、4-按整天出差
double proportion = 8.00;//换算比例(当单位由天、半天、整天切换成小时或者由小时切换成天、半天、整天时,历史数据的转换比例)
int computingMode = 1;//计算公出时长方式1-按工作日计算出差时长、2-按自然日计算出差时长
double hoursToDay = 8.00;//折算时长(当按天出差、按半天出差且按自然日计算出差时长时有效)
boolean flag = true;
String sql = "update kq_travelRules set minimumUnit=?,proportion=?,computingMode=?,hoursToDay=? where id=?";
RecordSet recordSet = new RecordSet();
flag = recordSet.executeUpdate(sql, minimumUnit, proportion, computingMode, hoursToDay, ruleId);
return flag;
}
/**
* 所有相關的緩存需要刷新下
*/
public void refreshCominfo() {
try{
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
subCompanyComInfo.removeCompanyCache();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
departmentComInfo.removeCompanyCache();
ResourceComInfo resourceComInfo = new ResourceComInfo();
resourceComInfo.removeResourceCache();
}catch (Exception e){
}
KQAttFlowSetComInfo kqAttFlowSetComInfo = new KQAttFlowSetComInfo();
KQShiftManagementComInfo kqShiftManagementComInfo = new KQShiftManagementComInfo();
KQShiftOnOffWorkSectionComInfo onOffWorkSectionComInfo = new KQShiftOnOffWorkSectionComInfo();
KQShiftRestTimeSectionComInfo restTimeSectionComInfo = new KQShiftRestTimeSectionComInfo();
KQGroupMemberComInfo groupMemberComInfo = new KQGroupMemberComInfo();
KQFixedSchedulceComInfo kqFixedSchedulceComInfo = new KQFixedSchedulceComInfo();
KQShiftScheduleComInfo kqShiftScheduleComInfo = new KQShiftScheduleComInfo();
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
KQHolidaySetComInfo holidaySetComInfo = new KQHolidaySetComInfo();
KQTravelRulesComInfo travelRulesComInfo = new KQTravelRulesComInfo();
KQExitRulesComInfo exitRulesComInfo = new KQExitRulesComInfo();
KQLeaveRulesDetailComInfo rulesDetailComInfo = new KQLeaveRulesDetailComInfo();
KQGroupComInfo kqGroupComInfo = new KQGroupComInfo();
kqShiftManagementComInfo.removeShiftManagementCache();
onOffWorkSectionComInfo.removeShiftWorkSectionCache();
restTimeSectionComInfo.removeShiftRestTimeSectionCache();
groupMemberComInfo.removeCache();
kqFixedSchedulceComInfo.removeCache();
kqShiftScheduleComInfo.removeCache();
kqLeaveRulesComInfo.removeCache();
holidaySetComInfo.removeCache();
travelRulesComInfo.removeCache();
exitRulesComInfo.removeCache();
kqAttFlowSetComInfo.removeKQAttFlowSetComInfoCache();
kqLeaveRulesComInfo.removeCache();
rulesDetailComInfo.removeCache();
kqGroupComInfo.removeCache();
}
public void upReportData(String startdate,String enddate) {
KQFormatData kqFormatData = new KQFormatData();
LocalDate localFromDate = LocalDate.parse(startdate);
LocalDate localToDate = LocalDate.parse(enddate);
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
long betweenDays = localToDate.toEpochDay() - localFromDate.toEpochDay();
for (int i = 0; i <= betweenDays; i++) {
LocalDate curLocalDate = localFromDate.plusDays(i);
String kqDate = curLocalDate.format(dateFormatter);
new KQFormatBiz().formatDateByKQDate(kqDate);
}
}
/**
* 升級流程數據 對流程數據進行拆分
* @param startdate
* @param enddate
* @return
*/
public void upFlowData(String startdate,String enddate) {
try{
RecordSet rs = new RecordSet();
KQFlowActiontBiz kqFlowActiontBiz = new KQFlowActiontBiz();
String sql1 = " select * from kq_ATT_PROC_SET where id in(select kqid from hrm_to_attSet) ";
rs.executeQuery(sql1);
while(rs.next()){
String proc_set_id = rs.getString("id");
//得到这个考勤流程设置是否使用明细
String usedetails = rs.getString("usedetail");
String workflowid = rs.getString("field001");
int kqtype = Util.getIntValue(rs.getString("field006"));
String valueWhere = " and ( fromDate between '"+startdate+"' and '"+enddate+"' or toDate between '"+startdate+"' and '"+enddate+"' "
+ " or '"+startdate+"' between fromDate and toDate or '"+enddate+"' between fromDate and toDate) ";
Map<String, String> map = new HashMap<String, String>();
if(kqtype != 5 && kqtype != 6 && kqtype != 7){
map.put("fromDate", valueWhere);
map.put("currentNodeType", " and currentNodeType = '3' ");
}
Map<String,String> result = kqFlowActiontBiz.handleKQFlowAction(proc_set_id, usedetails, 0, kqtype, Util.getIntValue(workflowid), false,true,map);
if(!result.isEmpty()){
String error = Util.null2String(result.get("message"));
kqLog.info("升级考勤流程拆分:"+error);
continue;
}
}
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 生成处理的sql
* @param proc_set_id
* @param usedetails
* @param kqtype
* @return
*/
public Map<String,String> handleSql(String proc_set_id,String usedetails,int kqtype) {
HrmAttProcSetManager hrmAttProcSetManager= new HrmAttProcSetManager();
Map<String, String> map = new HashMap<String, String>();
Map<String,String> sqlMap = new HashMap<>();
sqlMap = hrmAttProcSetManager.getSQLByField006Map(kqtype, map, true, true, proc_set_id,usedetails);
return sqlMap;
}
/**
* 升级考勤流程设置
*/
public boolean upAttSet() {
boolean isDone = false;
try{
//1、考勤流程基本信息
upAttProcSet();
//2、新/老 考勤流程字段生成映射
upAttProcField();
//3、新考勤流程字段對應
isDone = upKQAttProcField();
//4、考勤流程動作設置
isDone = upAttProcAction();
}catch (Exception e){
isDone = false;
e.printStackTrace();
}
return isDone;
}
/**
* 考勤流程動作設置對應
*/
public boolean upAttProcAction() throws Exception{
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs3 = new RecordSet();
boolean isDone = false;
//请假加班的先做一下
String sql4 = "select a.*,b.field001 as workflowid,b.field006 as kqtype from hrm_ATT_PROC_ACTION a left join HRM_ATT_PROC_SET b on a.FIELD001=b.id where a.FIELD001 >0 and b.FIELD006 in (0,3) ";
rs.executeQuery(sql4);
while(rs.next()){
String att_proc_action_id = rs.getString("id");
String field001 = rs.getString("field001");
String field002 = rs.getString("field002");
String field003 = rs.getString("field003");
String field004 = rs.getString("field004");
String field005 = rs.getString("field005");
String field006 = rs.getString("field006");
String field007 = rs.getString("field007");
String field008 = rs.getString("field008");
String kqtype = rs.getString("kqtype");
String workflowid = rs.getString("workflowid");
long mfid = UUID.randomUUID().getMostSignificantBits();
String att_proc_set_id = "";
String attsetIdSql = "select * from hrm_to_attSet where hrmid="+field001;
rs2.executeQuery(attsetIdSql);
if(rs2.next()){
att_proc_set_id = Util.null2String(rs2.getString("kqid"));
}
if(att_proc_set_id.length() == 0){
continue;
}
String actionname = "";
switch (field002){
case "deduction":
actionname ="KqDeductionVacationAction";
break;
case "freeze":
actionname ="KqFreezeVacationAction";
break;
case "release":
actionname ="KqReleaseVacationAction";
break;
case "HrmScheduleShift":
actionname ="KqSplitShiftAction";
break;
case "HrmPaidLeaveAction":
actionname ="KqPaidLeaveAction";
break;
default:
break;
}
if(actionname.length() > 0){
String updateSql = "update kq_ATT_PROC_ACTION set field003=?,field004=?,field005=?,field006=?,field007=?,field008=? where field001=? and field002= ? ";
isDone = rs1.executeUpdate(updateSql,field003,field004,field005,field006,field007,field008,att_proc_set_id,actionname);
if(!isDone){
break;
}
rs2.executeSql("delete from workflowactionset where workflowid = "+workflowid+" and interfaceid in ('"+actionname+"')");
int preoperator = 0;
if(StringUtil.parseToInt(field005) == 2){
preoperator = 1;
}
String field003Name = SystemEnv.getHtmlLabelNames(field003,7);
WorkflowActionManager workflowActionManager = new WorkflowActionManager();
workflowActionManager.setActionid(0);
workflowActionManager.setActionname(field003Name);
workflowActionManager.setWorkflowid(StringUtil.parseToInt(workflowid));
workflowActionManager.setNodeid(StringUtil.parseToInt(field006));
workflowActionManager.setNodelinkid(0);
workflowActionManager.setIspreoperator(preoperator);
workflowActionManager.setActionorder(1);
workflowActionManager.setInterfaceid(actionname);
workflowActionManager.setInterfacetype(3);
workflowActionManager.setIsused(1);
if(field007.equalsIgnoreCase("1")){
workflowActionManager.setDrawbackflag(1);
}
workflowActionManager.doSaveWsAction();
}
if(workflowid.length() > 0){
String nodeid = "";
String getNodeSql = "select * from workflow_flownode where workflowid = ? and nodetype=3 ";
rs3.executeQuery(getNodeSql, workflowid);
if(rs3.next()){
nodeid = rs3.getString("nodeid");
String updateSql = "update kq_ATT_PROC_ACTION set field005=?,field006=?,field007=?,field008=? where field001=? and field002= ? ";
isDone = rs1.executeUpdate(updateSql,"2",nodeid,"1","1",att_proc_set_id,"KqSplitAction");
int preoperator = 0;
if(StringUtil.parseToInt(field005) == 2){
preoperator = 1;
}
rs2.executeSql("delete from workflowactionset where workflowid = "+workflowid+" and interfaceid in ('KqSplitAction')");
String field003Name = SystemEnv.getHtmlLabelName(81543, Util.getIntValue(7));
WorkflowActionManager workflowActionManager = new WorkflowActionManager();
workflowActionManager.setActionid(0);
workflowActionManager.setActionname(field003Name);
workflowActionManager.setWorkflowid(StringUtil.parseToInt(workflowid));
workflowActionManager.setNodeid(StringUtil.parseToInt(nodeid));
workflowActionManager.setNodelinkid(0);
workflowActionManager.setIspreoperator(preoperator);
workflowActionManager.setActionorder(1);
workflowActionManager.setInterfaceid("KqSplitAction");
workflowActionManager.setInterfacetype(3);
workflowActionManager.setIsused(1);
workflowActionManager.doSaveWsAction();
}
}
}
//再处理下出差,公出和异常流程的
String sql_5 = "select * from HRM_ATT_PROC_SET where FIELD006 in (1,2,4) ";
rs.executeQuery(sql_5);
while(rs.next()){
String workflowid = rs.getString("field001");
String attid = rs.getString("id");
String att_proc_set_id = "";
String attsetIdSql = "select * from hrm_to_attSet where hrmid="+attid;
rs2.executeQuery(attsetIdSql);
if(rs2.next()){
att_proc_set_id = Util.null2String(rs2.getString("kqid"));
}
if(att_proc_set_id.length() == 0){
continue;
}
if(workflowid.length() > 0){
String nodeid = "";
String getNodeSql = "select * from workflow_flownode where workflowid = ? and nodetype=3 ";
rs3.executeQuery(getNodeSql, workflowid);
if(rs3.next()){
nodeid = rs3.getString("nodeid");
}
String updateSql = "update kq_ATT_PROC_ACTION set field005=?,field006=?,field007=?,field008=? where field001=? and field002= ? ";
isDone = rs1.executeUpdate(updateSql,"2",nodeid,"1","1",att_proc_set_id,"KqSplitAction");
rs2.executeSql("delete from workflowactionset where workflowid = "+workflowid+" and interfaceid in ('KqSplitAction')");
String field003Name = SystemEnv.getHtmlLabelName(81543, Util.getIntValue(7));
WorkflowActionManager workflowActionManager = new WorkflowActionManager();
workflowActionManager.setActionid(0);
workflowActionManager.setActionname(field003Name);
workflowActionManager.setWorkflowid(StringUtil.parseToInt(workflowid));
workflowActionManager.setNodeid(StringUtil.parseToInt(nodeid));
workflowActionManager.setNodelinkid(0);
workflowActionManager.setIspreoperator(1);
workflowActionManager.setActionorder(1);
workflowActionManager.setInterfaceid("KqSplitAction");
workflowActionManager.setInterfacetype(3);
workflowActionManager.setIsused(1);
workflowActionManager.doSaveWsAction();
}
}
return isDone;
}
/**
* 新考勤流程字段對應
*/
public boolean upKQAttProcField() throws Exception{
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
boolean isDone = false;
String sql3 = "select * from hrm_ATT_PROC_RELATION ";
rs.executeQuery(sql3);
while(rs.next()){
String att_proc_relation_id = rs.getString("id");
String field001 = rs.getString("field001");
String field002 = rs.getString("field002");
String field003 = rs.getString("field003");
String field004 = rs.getString("field004");
long mfid = UUID.randomUUID().getMostSignificantBits();
String att_proc_set_id = "";
String attsetIdSql = "select * from hrm_to_attSet where hrmid="+field001;
rs2.executeQuery(attsetIdSql);
if(rs2.next()){
att_proc_set_id = Util.null2String(rs2.getString("kqid"));
}
String att_proc_field_id = "";
String attfieldIdSql = "select * from hrm_to_attfield where hrmid="+field002;
rs2.executeQuery(attfieldIdSql);
if(rs2.next()){
att_proc_field_id = Util.null2String(rs2.getString("kqid"));
}
if(att_proc_set_id.length() == 0 || att_proc_field_id.length() == 0){
continue;
}
String insertSql = "insert into kq_ATT_PROC_RELATION(mfid,field001,field002,field003,field004) "
+ " values(?,?,?,?,?) ";
isDone = rs1.executeUpdate(insertSql,mfid,att_proc_set_id,att_proc_field_id,field003,field004);
if(!isDone){
break;
}
}
return isDone;
}
/**
* 新/老 考勤流程字段生成映射
*/
public void upAttProcField() throws Exception{
Map<String,String> fieldMap = new HashMap<>();
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
String sql2 = "select * from HRM_ATT_PROC_FIELDS ";
rs.executeQuery(sql2);
while(rs.next()){
String att_proc_field_id = rs.getString("id");
String field001 = rs.getString("field001");
String field002 = rs.getString("field002");
if("leaveDays".equalsIgnoreCase(field002)){
field002 = "duration";
}
if("tilldate".equalsIgnoreCase(field002)){
field002 = "toDate";
}
if("tilltime".equalsIgnoreCase(field002)){
field002 = "toTime";
}
if("overtimeDays".equalsIgnoreCase(field002)){
field002 = "duration";
}
if("otype".equalsIgnoreCase(field002)){
field002 = "overtime_type";
}
field001 = field001.toLowerCase();
field002 = field002.toLowerCase();
String key = field001+"_"+field002;
fieldMap.put(key, att_proc_field_id);
}
sql2 = "select * from kq_ATT_PROC_FIELDS ";
rs.executeQuery(sql2);
while(rs.next()){
String att_proc_field_kqid = rs.getString("id");
String field001 = rs.getString("field001");
String field002 = rs.getString("field002");
field001 = field001.toLowerCase();
field002 = field002.toLowerCase();
String key = field001+"_"+field002;
if(fieldMap.get(key) != null){
String att_proc_field_id = fieldMap.get(key);
String bindSql = "insert into hrm_to_attfield(hrmid,kqid) values("+att_proc_field_id+","+att_proc_field_kqid+") ";
boolean isBinded = rs1.executeUpdate(bindSql);
}
}
}
/**
* 考勤流程設置基本信息
*/
public void upAttProcSet() throws Exception{
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs3 = new RecordSet();
RecordSet rs4 = new RecordSet();
Map<String,String> tableMap = new HashMap<>();
String tablenameSql = "select * from workflow_bill where id in(select field002 from hrm_att_proc_set)";
rs4.execute(tablenameSql);
while(rs4.next()){
String formid = rs4.getString("id");
String tablename = rs4.getString("tablename");
tableMap.put(formid, tablename);
}
String sql1 = "select * from hrm_att_proc_set ";
rs.executeQuery(sql1);
while(rs.next()){
String att_proc_set_id = rs.getString("id");
String field001 = rs.getString("field001");
String field002 = rs.getString("field002");
String field003 = rs.getString("field003");
String field004 = rs.getString("field004");
String field005 = rs.getString("field005");
String field006 = rs.getString("field006");
String field007 = rs.getString("field007");
String field008 = rs.getString("field008");
String field009 = rs.getString("field009");
String field010 = rs.getString("field010");
String field011 = rs.getString("field011");
String field012 = rs.getString("field012");
String field013 = rs.getString("field013");
String field014 = rs.getString("field014");
String field015 = rs.getString("field015");
long mfid = UUID.randomUUID().getLeastSignificantBits();
int ishalfday = Util.getIntValue(rs.getString("ishalfday"),-1);
String tablename = Util.null2String(tableMap.get(field002));
String usedetail = "0";
String custompage = "";
String custompage4Emoble = "";
String templetroute = "";
switch (field006){
case "0" :
custompage = KqTempletEnum.LEAVE.getTempletfile();
custompage4Emoble = KqTempletEnum.LEAVE.getTempletmobilefile();
templetroute = KqTempletEnum.LEAVE.getTempletroute();
break;
case "1" :
custompage = KqTempletEnum.EVECTION.getTempletfile();
custompage4Emoble = KqTempletEnum.EVECTION.getTempletmobilefile();
templetroute = KqTempletEnum.EVECTION.getTempletroute();
break;
case "2" :
custompage = KqTempletEnum.OUT.getTempletfile();
custompage4Emoble = KqTempletEnum.OUT.getTempletmobilefile();
templetroute = KqTempletEnum.OUT.getTempletroute();
break;
case "3" :
custompage = KqTempletEnum.OVERTIME.getTempletfile();
custompage4Emoble = KqTempletEnum.OVERTIME.getTempletmobilefile();
templetroute = KqTempletEnum.OVERTIME.getTempletroute();
break;
case "4" :
custompage = KqTempletEnum.OTHER.getTempletfile();
custompage4Emoble = KqTempletEnum.OTHER.getTempletmobilefile();
templetroute = KqTempletEnum.OTHER.getTempletroute();
break;
case "5" :
custompage = KqTempletEnum.SHIFT.getTempletfile();
custompage4Emoble = KqTempletEnum.SHIFT.getTempletmobilefile();
templetroute = KqTempletEnum.SHIFT.getTempletroute();
break;
case "6" :
custompage = KqTempletEnum.LEAVEBACK.getTempletfile();
custompage4Emoble = KqTempletEnum.LEAVEBACK.getTempletmobilefile();
templetroute = KqTempletEnum.LEAVEBACK.getTempletroute();
break;
default:
break;
}
String insertSql = "insert into kq_ATT_PROC_SET(field001,field002,field003,field004,field005,"
+ "field006,field007,field008,field009,field010,field011,field012,field013,field014,field015,"
+ "mfid,ishalfday,usedetail,templetroute,templetmobilefile,templetfile,tablename) "
+ " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
boolean isUpdated = rs1.executeUpdate(insertSql,field001,field002,field003,field004,field005,
field006,field007,field008,field009,field010,field011,field012,
field013,field014,field015,mfid,ishalfday,usedetail,templetroute,
custompage4Emoble,custompage,tablename);
if(isUpdated){
rs2.executeQuery("select max(id) from kq_ATT_PROC_SET ");
if(rs2.next()){
String kq_att_set_id = rs2.getString(1);
String actionSql = "";
String actionSql1 = "";
String actionSql2 = "";
String actionSql3 = "";
switch (field006){
case "0" :
actionSql = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqSplitAction','81543',0,-1,-1,1,4)";
actionSql1 = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqDeductionVacationAction','82823,25842',0,-1,-1,1,1)";
actionSql2 = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqFreezeVacationAction','1232,25842',0,-1,-1,1,2)";
actionSql3 = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqReleaseVacationAction','82824,25842',0,-1,-1,1,3)";
break;
case "1" :
actionSql = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqSplitAction','81543',0,-1,-1,1,1)";
break;
case "2" :
actionSql = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqSplitAction','81543',0,-1,-1,1,1)";
break;
case "3" :
actionSql = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqSplitAction','81543',0,-1,-1,1,2)";
actionSql1 = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqPaidLeaveAction','126739',0,-1,-1,1,1)";
break;
case "4" :
actionSql = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqSplitAction','81543',0,-1,-1,1,1)";
break;
case "5" :
actionSql = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqSplitAction','390737',0,-1,-1,1,1)";
break;
case "6" :
actionSql = "insert into kq_ATT_PROC_ACTION(mfid,field001,field002,field003,field004,field005,field006,field007,field008) values(-1,"+kq_att_set_id+",'KqSplitAction','81543',0,-1,-1,1,1)";
break;
default:
break;
}
if(actionSql.length() > 0){
rs3.execute(actionSql);
}
if(actionSql1.length() > 0){
rs3.execute(actionSql1);
}
if(actionSql2.length() > 0){
rs3.execute(actionSql2);
}
if(actionSql3.length() > 0){
rs3.execute(actionSql3);
}
HrmAttProcSetManager attProcSetManager = new HrmAttProcSetManager();
attProcSetManager.welcomeToSet(Util.getIntValue(field001), Util.getIntValue(field006),custompage,custompage4Emoble,templetroute);
String bindSql = "insert into hrm_to_attSet(hrmid,kqid) values("+att_proc_set_id+","+kq_att_set_id+") ";
boolean isBinded = rs4.executeUpdate(bindSql);
}
}
}
}
/**
* 请假类型数据迁移
* @param year
*/
public boolean upLeave(String year) {
boolean isLeaveDone = true;
try {
Map<String, String> leaveMap = new HashMap<>();
upLeaveRule();
//TODO 正式系统的历史数据excel导入这里不做处理
if(!leaveMap.isEmpty() && false){
isLeaveDone = upLeaveData(leaveMap,year);
}
}catch (Exception e){
isLeaveDone = false;
e.printStackTrace();
}
return isLeaveDone;
}
/**
* 根据假期规则生成相应的假期数据
* @param leaveMap
* @param year
*/
public boolean upLeaveData(Map<String,String> leaveMap,String year) throws Exception{
boolean isLeaveDataDone = true;
for(Map.Entry<String,String> me : leaveMap.entrySet()){
String leaveid = me.getKey();
String leavecode = me.getValue();
switch (leavecode){
case "annualLeave":
upAnnual();
break;
case "vacationLeave":
upOvertimePiad();
break;
default:
upPaid();
break;
}
}
return isLeaveDataDone;
}
/**
* 迁移带薪数据
*/
public void upPaid() {
RecordSet rs = new RecordSet();
String insertSql = "insert into kq_BalanceOfLeave(leaverulesid,resourceid,belongyear,extraAmount,status) select leavetype,resourceid,pslyear,psldays,0 from hrmpslmanagement where status = 1 and pslyear is not null or pslyear !='' ";
rs.executeUpdate(insertSql);
}
/**
* 迁移调休数据
*/
public void upOvertimePiad() {
RecordSet rs = new RecordSet();
String curYear = DateUtil.getYear(DateUtil.getCalendar());
String firstdate = DateUtil.getFirstDayOfYear(DateUtil.getCurrentDate());
String enddate = DateUtil.getLastDayOfYear(DateUtil.getCurrentDate());
String insertSql = "insert into kq_BalanceOfLeave(leaverulesid,resourceid,belongyear,extraAmount,status) values(?,?,?,?,?)";
List<List> params = new ArrayList<List>();
HrmPaidLeaveTimeManager paidLeaveTimeManager = new HrmPaidLeaveTimeManager();
Map<String,String> otherparams = new HashMap<>();
otherparams.put("fromdate", firstdate);
otherparams.put("enddate", enddate);
otherparams.put("sql_field001", " and field001 >0 ");
Map<String,Comparable> paramMap = new HashMap<String,Comparable>();
Iterator it = otherparams.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = (Map.Entry) it.next();
paramMap.put((String)entry.getKey(), (String)entry.getValue());
}
List<HrmPaidLeaveTime> tList = paidLeaveTimeManager.find(paramMap);
for(HrmPaidLeaveTime paidLeaveTime : tList){
Long resourceid = paidLeaveTime.getId();
String extraVal = String.valueOf(paidLeaveTime.getField004());
List<Object> beanParams = new ArrayList<Object>();
beanParams.add("-13");
beanParams.add(resourceid);
beanParams.add(curYear);
beanParams.add(extraVal);
beanParams.add("0");
params.add(beanParams);
}
boolean isOk = rs.executeBatchSql(insertSql, params);
}
/**
* 迁移年假数据
*/
public void upAnnual() {
RecordSet rs = new RecordSet();
String insertSql = "insert into kq_BalanceOfLeave(leaverulesid,resourceid,belongyear,extraAmount,status) select -6,resourceid,annualyear,annualdays,0 from HrmAnnualManagement where status = 1 and resourceid is not null ";
rs.executeUpdate(insertSql);
}
/**
* 升级假期规则
* @return
* @throws Exception
*/
public void upLeaveRule() throws Exception{
RecordSet rs = new RecordSet();
RecordSet recordSet = new RecordSet();
//请假类型 数据迁移
String leaveSql = " select * from hrmleavetypecolor order by field006 ";
rs.execute(leaveSql);
while (rs.next()) {
String leaveid = rs.getString("id");
String leaveName = ""+Util.formatMultiLang(rs.getString("field001"),"7")+"";
String isuse = rs.getString("field002");
String leavecode = rs.getString("field004");
String iscalworkday = rs.getString("iscalworkday");
//自然日调配按照周几计算时长无法迁移,这个地方定死一个值吧 hoursToDay
int relateweekday = Util.getIntValue(rs.getString("relateweekday"));
String ispaidleave = rs.getString("ispaidleave");
String leavecodeRule = "";
int scopeType = 0;
String scopeValue = "";
int minimumUnit = 1;
int hoursToDay = 8;
int computingMode = 1;
int isEnable = 1;
int balanceEnable = 0;
int distributionMode = 1;
int annualAmount = 0;
int priority = 1;
int validityRule = 0;//不限制
String expirationMonth = "";
String expirationDay = "";
int extensionEnable = 0;
int extendedDays = 0;
int releaseRule = 0;
if (!"1".equalsIgnoreCase(isuse)) {
isEnable = 0;
}
if ("0".equalsIgnoreCase(iscalworkday)) {
computingMode = 2;
}
if ("1".equalsIgnoreCase(ispaidleave)) {
balanceEnable = 1;
}
if ("-6".equalsIgnoreCase(leavecode)) {
balanceEnable = 1;
leavecodeRule = "annualLeave";
}
if ("-12".equalsIgnoreCase(leavecode)) {
leavecodeRule = "paidSickLeave";
balanceEnable = 1;
}
if ("-13".equalsIgnoreCase(leavecode)) {
balanceEnable = 1;
leavecodeRule = "vacationLeave";
distributionMode = 5;
minimumUnit = 3;
}
boolean flag = false;//数据是否插入成功
String sql = "insert into kq_LeaveRules(Id,leaveName,scopeType,scopeValue,minimumUnit,computingMode,hoursToDay,balanceEnable,isEnable,isDelete,leavecode) values(?,?,?,?,?,?,?,?,?,?,?)";
flag = recordSet.executeUpdate(sql, leavecode, leaveName, scopeType, scopeValue, minimumUnit, computingMode, hoursToDay, balanceEnable, isEnable, 0,leavecodeRule);
if (!flag) {
kqLog.info("升级假期规则 upLeaveRule 失败 hrmleavetypecolorfield004: "+leavecode);
break;
}
String bindSql = "insert into hrm_to_kq_LeaveRules(hrmid,kqid) values(?,?) ";
boolean isBind = recordSet.executeUpdate(bindSql,leaveid,leavecode);
if(isBind && balanceEnable == 1){
//带薪假和系统假期都需要处理下请假类型明细设置
sql = "insert into kq_LeaveRulesDetail(ruleId,ruleName,scopeType,scopeValue," +
"distributionMode,annualAmount,priority,validityRule,expirationMonth,expirationDay,extensionEnable,extendedDays,releaseRule,calcMethod,isDelete) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)";
flag = recordSet.executeUpdate(sql, leavecode, leaveName+"规则", scopeType, scopeValue,
distributionMode, annualAmount, priority, validityRule, expirationMonth, expirationDay, extensionEnable, extendedDays, releaseRule, 0);
}
}
refreshCominfo();
}
/**
* 如果升级错了,或者需要重新升级需要先删除数据
* @return
*/
public boolean refreshData(){
try{
List<String> delSql = new ArrayList<>();
delSql.add("delete from kq_group ");
delSql.add("delete from kq_fixedschedulce ");
delSql.add("delete from kq_groupmember ");
delSql.add("delete from kq_ShiftManagement ");
delSql.add("delete from kq_ShiftRestTimeSections ");
delSql.add("delete from kq_ShiftOnOffWorkSections ");
delSql.add("delete from kq_shiftschedule ");
delSql.add("delete from kq_LeaveRules ");
delSql.add("delete from kq_balanceOfLeave ");
delSql.add("delete from KQ_HOLIDAYSET ");
delSql.add("delete from kq_OvertimeRules ");
delSql.add("delete from kq_OvertimeRulesDetail ");
delSql.add("delete from kq_att_proc_set ");
delSql.add("delete from kq_ATT_PROC_RELATION ");
delSql.add("delete from kq_ATT_PROC_ACTION where field001 <>'-1' ");
delSql.add("delete from kq_flow_split_leave ");
delSql.add("delete from kq_flow_split_evection ");
delSql.add("delete from kq_flow_split_out ");
delSql.add("delete from kq_flow_split_overtime ");
RecordSet rs = new RecordSet();
for(String del : delSql){
rs.executeUpdate(del);
}
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
* 排班人员升级
* 升级 考勤组+班次
* @return
*/
public void upScheduleGroupData() throws Exception{
RecordSet rs0 = new RecordSet();
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs3 = new RecordSet();
RecordSet rs4 = new RecordSet();
RecordSet rs5 = new RecordSet();
RecordSet rs6 = new RecordSet();
RecordSet rs7 = new RecordSet();
RecordSet rs8 = new RecordSet();
RecordSet rs9 = new RecordSet();
ManageDetachComInfo manageDetachComInfo = new ManageDetachComInfo();
boolean hrmdetachable = manageDetachComInfo.isUseHrmManageDetach();//是否开启了人力资源模块的管理分权
String hrmdftsubcomid = manageDetachComInfo.getHrmdftsubcomid();//分权默认分部
String shiftsetSql = "select * from hrm_schedule_shifts_set where delflag=0 ";
rs0.executeQuery(shiftsetSql);
while (rs0.next()) {
String shifts_set_id = rs0.getString("id");
String groupname = "排班("+Util.formatMultiLang(rs0.getString("field001"),"7")+")";
int subcompanyid = Util.getIntValue(rs0.getString("field002"), 0);
if(hrmdetachable){
subcompanyid = Util.getIntValue(hrmdftsubcomid);
}
boolean is4worklen = false;
String shiftOnOffWorkCount = "1";
String isresttimeopen = "0";
String[] worktimeids = null;
String getworkTimeSql = "select * from hrm_schedule_shifts_detail where field001='" + shifts_set_id
+ "' and delflag=0 ";
rs1.executeQuery(getworkTimeSql);
kqLog.info("upScheduleGroupData getworkTimeSql:"+getworkTimeSql);
if (rs1.next()) {
String worktimeid = rs1.getString("field002");
worktimeids = worktimeid.split(";");
if (worktimeids.length == 1) {
shiftOnOffWorkCount = "1";
}else if(worktimeids.length == 2){
shiftOnOffWorkCount = "2";
}else if(worktimeids.length == 3){
shiftOnOffWorkCount = "3";
}else{
is4worklen = true;
}
}
if(is4worklen){
continue;
}
String worktimes = "";
if(worktimeids != null){
for(String workid : worktimeids){
worktimes += ","+workid;
}
}
if(worktimes.length() > 0){
worktimes = worktimes.substring(1);
}
if(worktimes.length() > 0){
List<Object> timesList = new ArrayList<>();
String uuid = UUID.randomUUID().toString();
int worktime = 0;
String serials = "排班";
String serialname= "";
String serialcontent= "";
String punchsettings= "1";
String isoffdutyfreecheck= "0";
String worktimeSql = "select * from hrm_schedule_worktime where delflag=0 and id in ("+worktimes+") order by field002";
rs.execute(worktimeSql);
while(rs.next()) {
String worktimename = Util.null2s(rs.getString("field001"),"");
String starttime = Util.null2s(rs.getString("field002"),"");
String endtime = Util.null2s(rs.getString("field003"),"");
String starttime_min = Util.null2s(rs.getString("field004"),"");
String endtime_min = Util.null2s(rs.getString("field005"),"");
String workhour = Util.null2s(rs.getString("field007"),"");
worktime += Util.getDoubleValue(workhour)*60;
if(serialname.length() > 0){
serialname += ";"+worktimename;
serialcontent += ";"+(starttime+"-"+endtime);
}else {
serialname += worktimename;
serialcontent += (starttime+"-"+endtime);
}
Map<String,String> timeMap = new HashMap<>();
timeMap.put("starttime", starttime);
timeMap.put("endtime", endtime);
timeMap.put("starttime_min", starttime_min);
timeMap.put("endtime_min", endtime_min);
timesList.add(timeMap);
}
if(serialname.length() > 0){
serials += "("+Util.formatMultiLang(serialname,"7")+")";
}
String serialSql = "insert into kq_ShiftManagement(serial,subcompanyid,shiftonoffworkcount,punchsettings,isoffdutyfreecheck,isresttimeopen,worktime,uuid,color)"
+ " values('"+serials+"',"+subcompanyid+","+shiftOnOffWorkCount+","+punchsettings+","+isoffdutyfreecheck+","+isresttimeopen+","+worktime+",'"+uuid+"',null)";
boolean isSerial = rs2.executeUpdate(serialSql);
kqLog.info("upScheduleGroupData serialSql:"+serialSql+":isSerial:"+isSerial);
if(isSerial) {
int serialid = 0;
String getSerialIdSql = "select max(id) from kq_ShiftManagement ";
rs4.execute(getSerialIdSql);
if(rs4.next()) {
serialid = Util.getIntValue(rs4.getString(1));
if(serialid > 0){
String bindSql =
"insert into hrm_to_kq_serial(hrmid,kqid,serial,serialfrom) values(" + shifts_set_id
+ "," + serialid + ",'"+serialcontent+"','shiftset') ";
boolean isBinded = rs3.executeUpdate(bindSql);
kqLog.info("upScheduleGroupData bindSql:"+bindSql+":isBinded:"+isBinded);
for(int i = 0 ; i < timesList.size() ; i++){
Map<String,String> tmpTimeMap = (Map<String, String>) timesList.get(i);
String starttime = Util.null2s(tmpTimeMap.get("starttime"),"");
String endtime = Util.null2s(tmpTimeMap.get("endtime"),"");
String starttime_min = Util.null2s(tmpTimeMap.get("starttime_min"),"30");
String endtime_min = Util.null2s(tmpTimeMap.get("endtime_min"),"30");
String across = "0";
String workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+","+across+","+starttime_min+",'"+starttime+"','start',"+i+",0)";
boolean isSection = rs3.executeUpdate(workSql);
kqLog.info("upScheduleGroupData workSql:"+workSql+":isSection:"+isSection);
if(starttime.compareTo(endtime) > 0){
across = "1";
}
workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+","+across+","+endtime_min+",'"+endtime+"','end',"+i+",0)";
isSection = rs3.executeUpdate(workSql);
kqLog.info("upScheduleGroupData workSql:"+workSql+":isSection:"+isSection);
}
String groupSql = " insert into kq_group (" +
" groupname,subcompanyid,excludeid,kqtype,shiftcyclename,shiftcycleday,shiftcycleserialids,serialids," +
" weekday,signstart,workhour,signintype,validity,validityfromdate,validityenddate,locationcheckscope) " +
" values('"+groupname+"',"+subcompanyid+",null,2,null,null,null,'"+serialid+"',null,null,null,1,0,null,null,300)";
boolean isOk = rs5.executeUpdate(groupSql);
kqLog.info("groupSql:"+groupSql);
if(isOk){
int groupid = 0;
String getGroupIdSql = "select max(id) from kq_group ";
rs6.execute(getGroupIdSql);
if(rs6.next()){
groupid = Util.getIntValue(rs6.getString(1));
}
if(groupid > 0) {
bindSql ="insert into hrm_to_kq_group(hrmid,kqid,groupfrom) values("
+ shifts_set_id + "," + groupid + ",'shiftset') ";
isBinded = rs6.executeUpdate(bindSql);
if (isBinded) {
String memSql = " INSERT INTO kq_groupmember ( groupid ,typevalue ,type ,alllevel ," +
" seclevel ,seclevelto ,jobtitlelevelvalue ,jobtitlelevel,validatefrom,validateto) " +
" VALUES (? ,? ,? ,?,? ,? ,? ,?, ?, ?)";
List<List> params = new ArrayList<List>();
List<String> resourceids = new ArrayList<>();
String shiftDetail =" select * from hrm_schedule_set_detail where delflag=0 and field001 = '" + shifts_set_id + "'";;
rs7.executeQuery(shiftDetail);
kqLog.info("shiftDetail:"+shiftDetail);
while (rs7.next()) {
String resourceid = rs7.getString("field002");
if (!resourceids.contains(resourceid)) {
List<Object> beanParams = new ArrayList<Object>();
beanParams.add(groupid);
beanParams.add(resourceid);
beanParams.add(1);
beanParams.add(null);
beanParams.add(0);
beanParams.add(100);
beanParams.add(null);
beanParams.add(null);
beanParams.add(KQGroupBiz.GROUPMEMBER_VALIDATE_FROMDATE);
beanParams.add(KQGroupBiz.GROUPMEMBER_VALIDATE_TODATE);
params.add(beanParams);
resourceids.add(resourceid);
}
}
kqLog.info("params:"+params);
boolean isMemDone = rs8.executeBatchSql(memSql, params);
if (isMemDone) {
String detailsql = "";
if(rs.getDBType().equals("oracle")){
detailsql = "insert into kq_shiftschedule(kqdate,serialid,resourceid,groupid) " +
"select field003,(case when nvl(FIELD005,'-1')='-1' then '-1' when nvl(FIELD005,'')='' then '-1' else '"+serialid+"' end ),field002," + groupid
+ " from hrm_schedule_set_detail where delflag=0 and field001 = '" + shifts_set_id + "'";
}else if(rs.getDBType().equals("mysql")){
detailsql = "insert into kq_shiftschedule(kqdate,serialid,resourceid,groupid) " +
"select field003,(case when ifnull(FIELD005,'-1')='-1' then '-1' when ifnull(FIELD005,'')='' then '-1' else '"+serialid+"' end ),field002," + groupid
+ " from hrm_schedule_set_detail where delflag=0 and field001 = '" + shifts_set_id + "'";
}else{
detailsql = "insert into kq_shiftschedule(kqdate,serialid,resourceid,groupid) " +
"select field003,(case when isnull(FIELD005,'-1')='-1' then '-1' when isnull(FIELD005,'')='' then '-1' else '"+serialid+"' end ),field002," + groupid
+ " from hrm_schedule_set_detail where delflag=0 and field001 = '" + shifts_set_id + "'";
}
kqLog.info("detailsql:"+detailsql);
boolean isDetailDone = rs8.executeUpdate(detailsql);
}
}
}
}
}
}
}
}
}
refreshCominfo();
}
/**
* 排班人员 更新考勤组成员和具体设置排班数据
* @param groupidMap
* @param year
*/
public boolean upScheduleGroupMem(Map<String, String> groupidMap,Map<String, String> groupSerialMap,String year) {
RecordSet rs_shiftdetail = new RecordSet();
RecordSet rs_groupmem = new RecordSet();
RecordSet rs_scheduledetail = new RecordSet();
String firstdate = DateUtil.getFirstDayOfYear(year + "-01-01");
String enddate = DateUtil.getLastDayOfYear(year + "-01-01");
boolean isDetailDone = true;
//3、考勤组成员搞一波
for (Map.Entry<String, String> groupdetail : groupidMap.entrySet()) {
List<List> params = new ArrayList<List>();
List<String> resourceids = new ArrayList<>();
String groupid = groupdetail.getKey();
String shifts_set_id = groupdetail.getValue();
String shiftDetail =
" select * from hrm_schedule_set_detail where delflag=0 and field003 between '"
+ firstdate + "' and '" + enddate + "'";
if (shifts_set_id.length() == 0) {
continue;
}
String serialid = Util.null2String(groupSerialMap.get(groupid), "-1");
shiftDetail += " and field001 = '" + shifts_set_id + "'";
rs_shiftdetail.executeQuery(shiftDetail);
while (rs_shiftdetail.next()) {
String resourceid = rs_shiftdetail.getString("field002");
if (!resourceids.contains(resourceid)) {
List<Object> beanParams = new ArrayList<Object>();
beanParams.add(groupid);
beanParams.add(resourceid);
beanParams.add(1);
beanParams.add(null);
beanParams.add(0);
beanParams.add(100);
beanParams.add(null);
beanParams.add(null);
beanParams.add(KQGroupBiz.GROUPMEMBER_VALIDATE_FROMDATE);
beanParams.add(KQGroupBiz.GROUPMEMBER_VALIDATE_TODATE);
params.add(beanParams);
resourceids.add(resourceid);
}
}
String memSql = " INSERT INTO kq_groupmember ( groupid ,typevalue ,type ,alllevel ," +
" seclevel ,seclevelto ,jobtitlelevelvalue ,jobtitlelevel,validatefrom,validateto) " +
" VALUES (? ,? ,? ,?,? ,? ,? ,?,?,?)";
if (!params.isEmpty()) {
boolean isMemDone = rs_groupmem.executeBatchSql(memSql, params);
if (isMemDone) {
String detailsql = "insert into kq_shiftschedule(kqdate,serialid,resourceid,groupid) " +
"select field003," + serialid + ",field002," + groupid
+ " from hrm_schedule_set_detail where delflag=0 and field003 between '"
+ firstdate + "' and '" + enddate + "' and field001 = '" + shifts_set_id + "'";
isDetailDone = rs_scheduledetail.executeUpdate(detailsql);
if (!isDetailDone) {
break;
}
}
}
}
return isDetailDone;
}
/**
* 排班人员 考勤组里设置下班次
* @param groupSerialMap
* @return
*/
public boolean upScheduleGroupSerial(Map<String, String> groupSerialMap) {
RecordSet rs_groupschedule = new RecordSet();
boolean isUpGroupDone = true;
for (Map.Entry<String, String> me : groupSerialMap.entrySet()) {
String groupid = me.getKey();
String serialid = me.getValue();
String updteGroupSrial = "update kq_group set serialids = ? where id= ? ";
isUpGroupDone = rs_groupschedule.executeUpdate(updteGroupSrial, serialid, groupid);
if (!isUpGroupDone) {
break;
}
}
return isUpGroupDone;
}
/**
* 升级排班人员 班次数据
* @param groupidMap
* @param groupidShiftMap
* @param groupSerialMap
* @param worktimeSerialMap
* @param year
* @param upSignSql
*/
public void upScheduleSerial(Map<String, String> groupidMap,Map<String, String> groupidShiftMap,
Map<String, String> groupSerialMap, Map<String, String> worktimeSerialMap,
String year,List<String> upSignSql) {
String worktimeSep = ";";
RecordSet rs = new RecordSet();
RecordSet rs_shift = new RecordSet();
RecordSet rs_shift1 = new RecordSet();
RecordSet rs_shift2 = new RecordSet();
RecordSet rs_shift3 = new RecordSet();
String mainSql =
"insert into kq_ShiftManagement(serial,subcompanyid,shiftonoffworkcount,punchsettings,isoffdutyfreecheck,isresttimeopen,worktime,uuid,color)"
+ " values(?,?,?,?,?,?,?,?,?)";
String shiftOnOffWorkCount = "1";
//针对考勤组 然后对应班次
for (Map.Entry<String, String> me : groupidShiftMap.entrySet()) {
String groupid = me.getKey();
String worktimeid = me.getValue();
String shifts_set_id = groupidMap.get(groupid);
String[] worktimeids = worktimeid.split(worktimeSep);
String shiftworktimeSql = "select * from hrm_schedule_worktime where delflag=0 ";
if (worktimeids.length == 3) {
String worktimeid1 = worktimeids[0];
String worktimeid2 = worktimeids[1];
String worktimeid3 = worktimeids[2];
shiftworktimeSql +=
" and id in (" + worktimeid1 + "," + worktimeid2 + "," + worktimeid3 + ") ";
shiftOnOffWorkCount = "3";
} else if (worktimeids.length == 2) {
String worktimeid1 = worktimeids[0];
String worktimeid2 = worktimeids[1];
shiftworktimeSql += " and id in (" + worktimeid1 + "," + worktimeid2 + ") ";
shiftOnOffWorkCount = "2";
} else if (worktimeids.length == 1) {
String worktimeid1 = worktimeids[0];
shiftworktimeSql += " and id in (" + worktimeid1 + ") ";
shiftOnOffWorkCount = "1";
} else {
//当前E9就支持最多三个班次
rs.writeLog("班次创建失败当前E9就支持最多三个班次");
}
shiftworktimeSql += " order by field002 ";
List<Map<String, String>> workserctionList = new ArrayList<>();
String serailname = "";
int workminTotal = 0;
rs.executeQuery(shiftworktimeSql);
while (rs.next()) {
Map<String, String> workserctionMap = new HashMap<>();
String serial = rs.getString("field001");
serailname += "," + serial;
String starttime = rs.getString("field002");
String endtime = rs.getString("field003");
String starttime_min = rs.getString("field004");
String endtime_min = rs.getString("field005");
String workhour = rs.getString("field007");
workminTotal += (Util.getDoubleValue(workhour, 0.0) * 60.0);
String startacross = "0";
String endacross = "0";
if (starttime.compareTo(endtime) > 0) {
endacross = "1";
}
workserctionMap.put("starttime", starttime);
workserctionMap.put("endtime", endtime);
workserctionMap.put("starttime_min", starttime_min);
workserctionMap.put("endtime_min", endtime_min);
workserctionMap.put("startacross", startacross);
workserctionMap.put("endacross", endacross);
workserctionList.add(workserctionMap);
}
//获取更新签到签退的sql
upScheduleSignSql(workserctionList,year,upSignSql,shifts_set_id);
if (serailname.length() > 0) {
serailname = serailname.substring(1);
}
String subcompanyid = null;
String punchSettings = null;
String isOffDutyFreeCheck = null;
String isRestTimeOpen = null;
String uuid = UUID.randomUUID().toString();
String color = null;
String worktime = workminTotal + "";
boolean isUpdated = rs_shift
.executeUpdate(mainSql, serailname, subcompanyid, shiftOnOffWorkCount, punchSettings,
isOffDutyFreeCheck, isRestTimeOpen, worktime, uuid, color);
if (isUpdated) {
int serialid = 0;
String idSql = "select id from kq_ShiftManagement where uuid=? ";
rs_shift1.executeQuery(idSql, uuid);
if (rs_shift1.next()) {
serialid = rs_shift1.getInt("id");
}
if (serialid > 0) {
String workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) values(?,?,?,?,?,?,?)";
int record = 0;
for (Map<String, String> workMap : workserctionList) {
String starttime = workMap.get("starttime");
String endtime = workMap.get("endtime");
String starttime_min = workMap.get("starttime_min");
String endtime_min = workMap.get("endtime_min");
String startacross = workMap.get("startacross");
String endacross = workMap.get("endacross");
boolean issectionOK = rs_shift3
.executeUpdate(workSql, serialid, startacross, starttime_min, starttime,
"start", record + "",0);
if (issectionOK) {
issectionOK = rs_shift3
.executeUpdate(workSql, serialid, endacross, endtime_min, endtime, "end",
record + "",0);
}
record++;
}
groupSerialMap.put(groupid, serialid + "");
worktimeSerialMap.put(worktimeid, serialid + "");
}
}
}
}
/**
* 更新排班人员的签到签退数据
* @param workserctionList
* @param year
* @param upSignSql
* @param shifts_set_id
*/
public void upScheduleSignSql(List<Map<String, String>> workserctionList, String year,
List<String> upSignSql, String shifts_set_id) {
String firstdate = DateUtil.getFirstDayOfYear(year + "-01-01");
String enddate = DateUtil.getLastDayOfYear(year + "-01-01");
int cnt = workserctionList.size();
for(int i = 0 ; i < cnt ;i++){
Map<String, String> workserctionMap = workserctionList.get(i);
String starttime = workserctionMap.get("starttime");
String endtime = workserctionMap.get("endtime");
int starttime_min = Util.getIntValue(workserctionMap.get("starttime_min"),0);
int endtime_min = Util.getIntValue(workserctionMap.get("endtime_min"),0);
String startacross = workserctionMap.get("startacross");
String endacross = workserctionMap.get("endacross");
if("1".equalsIgnoreCase(endacross)){
new BaseBean().writeLog("排班数据存在跨天,不处理跨天的签到签退数据!");
}
if(endtime.length() == 0){
return ;
}
String worksection = starttime + "-" + endtime;
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime canStartTime = LocalTime.parse(starttime+":00",dateTimeFormatter).minusMinutes(starttime_min);
LocalTime canEndTime = LocalTime.parse(endtime+":00",dateTimeFormatter).plusMinutes(endtime_min);
String canSignInTime = canStartTime.format(dateTimeFormatter);
String canSignOutTime = canEndTime.format(dateTimeFormatter);
String signWhere = " and userid in (select field002 from hrm_schedule_set_detail where delflag=0 and field001 in(select id from hrm_schedule_shifts_set where delflag=0 and id='"+shifts_set_id+"') and field003 between '"+firstdate+"' and '"+enddate+"') and signdate between '"+firstdate+"' and '"+enddate+"'";
String signSql1 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection+"' , belongtime='"+starttime+"' where signtype=1 and signtime >= '"+canSignInTime+"' and signtime <= '"+canSignOutTime+"' "+signWhere;
upSignSql.add(signSql1);
String signSql2 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection+"' , belongtime='"+endtime+"' where signtype=2 and signtime >= '"+canSignInTime+"' and signtime <= '"+canSignOutTime+"' "+signWhere;
upSignSql.add(signSql2);
}
}
/**
* 一般工作时间
* 升级三类数据 考勤组 + 班次
* @return
*/
public void upCommonGroupData() throws Exception{
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs4 = new RecordSet();
RecordSet rs5 = new RecordSet();
SubCompanyComInfo sci = new SubCompanyComInfo();
ManageDetachComInfo manageDetachComInfo = new ManageDetachComInfo();
boolean hrmdetachable = manageDetachComInfo.isUseHrmManageDetach();//是否开启了人力资源模块的管理分权
String hrmdftsubcomid = manageDetachComInfo.getHrmdftsubcomid();//分权默认分部
String scheduleSql = "select * from hrmschedule where scheduletype >= 3 ORDER BY scheduletype ";
rs.execute(scheduleSql);
while(rs.next()) {
String id = rs.getString("id");
String scheduletype = rs.getString("scheduletype");
String relatedid = Util.null2String(rs.getString("relatedid"), "0");
String validedatefrom = rs.getString("validedatefrom");
String validedateto = rs.getString("validedateto");
String needsign = rs.getString("needsign");
String onlyworkday = rs.getString("onlyworkday");
String signtimescope = rs.getString("signtimescope");
String signipscope = rs.getString("signipscope");
String sign_type = rs.getString("sign_type");
String sign_start_time = rs.getString("sign_start_time");
String subcompanyid = "0";
if(hrmdetachable){
subcompanyid = hrmdftsubcomid;
}
// 0周一 1周二 2周三 3周四 4周五 5周六 6周日
String monstarttime1 = rs.getString("monstarttime1");
String monendtime1 = rs.getString("monendtime1");
String monstarttime2 = rs.getString("monstarttime2");
String monendtime2 = rs.getString("monendtime2");
if(monstarttime1.length() > 0 && monendtime1.length() > 0 &&
monstarttime2.length() > 0 && monendtime2.length() > 0){
setSerial(monstarttime1, monendtime1, monstarttime2, monendtime2, subcompanyid, sign_type, id, "0",sign_start_time);
}
String tuestarttime1 = rs.getString("tuestarttime1");
String tueendtime1 = rs.getString("tueendtime1");
String tuestarttime2 = rs.getString("tuestarttime2");
String tueendtime2 = rs.getString("tueendtime2");
if(tuestarttime1.length() > 0 && tueendtime1.length() > 0 &&
tuestarttime2.length() > 0 && tueendtime2.length() > 0){
setSerial(tuestarttime1, tueendtime1, tuestarttime2, tueendtime2, subcompanyid, sign_type, id, "1",sign_start_time);
}
String wedstarttime1 = rs.getString("wedstarttime1");
String wedendtime1 = rs.getString("wedendtime1");
String wedstarttime2 = rs.getString("wedstarttime2");
String wedendtime2 = rs.getString("wedendtime2");
if(wedstarttime1.length() > 0 && wedendtime1.length() > 0 &&
wedstarttime2.length() > 0 && wedendtime2.length() > 0){
setSerial(wedstarttime1, wedendtime1, wedstarttime2, wedendtime2, subcompanyid, sign_type, id, "2",sign_start_time);
}
String thustarttime1 = rs.getString("thustarttime1");
String thuendtime1 = rs.getString("thuendtime1");
String thustarttime2 = rs.getString("thustarttime2");
String thuendtime2 = rs.getString("thuendtime2");
if(thustarttime1.length() > 0 && thuendtime1.length() > 0 &&
thustarttime2.length() > 0 && thuendtime2.length() > 0){
setSerial(thustarttime1, thuendtime1, thustarttime2, thuendtime2, subcompanyid, sign_type, id, "3",sign_start_time);
}
String fristarttime1 = rs.getString("fristarttime1");
String friendtime1 = rs.getString("friendtime1");
String fristarttime2 = rs.getString("fristarttime2");
String friendtime2 = rs.getString("friendtime2");
if(fristarttime1.length() > 0 && friendtime1.length() > 0 &&
fristarttime2.length() > 0 && friendtime2.length() > 0){
setSerial(fristarttime1, friendtime1, fristarttime2, friendtime2, subcompanyid, sign_type, id, "4",sign_start_time);
}
String satstarttime1 = rs.getString("satstarttime1");
String satendtime1 = rs.getString("satendtime1");
String satstarttime2 = rs.getString("satstarttime2");
String satendtime2 = rs.getString("satendtime2");
if(satstarttime1.length() > 0 && satendtime1.length() > 0 &&
satstarttime2.length() > 0 && satendtime2.length() > 0){
setSerial(satstarttime1, satendtime1, satstarttime2, satendtime2, subcompanyid, sign_type, id, "5",sign_start_time);
}
String sunstarttime1 = rs.getString("sunstarttime1");
String sunendtime1 = rs.getString("sunendtime1");
String sunstarttime2 = rs.getString("sunstarttime2");
String sunendtime2 = rs.getString("sunendtime2");
if(sunstarttime1.length() > 0 && sunendtime1.length() > 0 &&
sunstarttime2.length() > 0 && sunendtime2.length() > 0){
setSerial(sunstarttime1, sunendtime1, sunstarttime2, sunendtime2, subcompanyid, sign_type, id, "6",sign_start_time);
}
String groupname = "";
if ("3".equalsIgnoreCase(scheduletype)) {
groupname += "一般工作时间:总部" + "(" + validedatefrom + "" + validedateto + ")";
} else {
groupname += "一般工作时间:分部" + "(" + Util.formatMultiLang(sci.getSubcompanyname(relatedid),"7") + ")" + "("
+ validedatefrom + "" + validedateto + ")";
}
String groupSql = " insert into kq_group (" +
" groupname,subcompanyid,excludeid,kqtype,shiftcyclename,shiftcycleday,shiftcycleserialids,serialids," +
" weekday,signstart,workhour,signintype,validity,validityfromdate,validityenddate,locationcheckscope) " +
" values('"+groupname+"',"+subcompanyid+",null,1,null,null,null,null,null,null,null,1,1,'"+validedatefrom+"','"+validedateto+"',300)";
boolean isOk = rs1.executeUpdate(groupSql);
if(isOk){
int groupid = 0;
String getGroupIdSql = "select max(id) from kq_group ";
rs1.execute(getGroupIdSql);
if(rs1.next()){
groupid = Util.getIntValue(rs1.getString(1));
}
if(groupid > 0){
String bindSql = "insert into hrm_to_kq_group(hrmid,kqid,groupfrom) values("+id+","+groupid+",'scheduleset') ";
boolean isBinded = rs2.executeUpdate(bindSql);
if(isBinded){
String kq_signintype = "1".equalsIgnoreCase(needsign)?"1":"4";
String updateGroupInfo = " update kq_group set signintype="+kq_signintype+", ipscope='"+signipscope+"',locationcheck=null,locationcheckscope=300,wificheck=null,outsidesign=null where id= "+groupid;
boolean isUpdated = rs2.executeUpdate(updateGroupInfo);
if(isUpdated){
String weekSql = "select * from hrm_to_kq_group_weekday where hrmid = "+id+" order by weekday ";
rs4.executeQuery(weekSql);
while (rs4.next()){
String weekday = Util.null2s(rs4.getString("weekday"),"");
String serialid = Util.null2s(rs4.getString("serialid"),"");
String connectSql = "insert into kq_fixedschedulce(weekday,serialid,groupid) values("+weekday+","+serialid+","+groupid+")";
rs5.executeUpdate(connectSql);
}
String type = "";
if("3".equalsIgnoreCase(scheduletype)){
//所有人
type = "6";
}else if("4".equalsIgnoreCase(scheduletype)){
//分部
type = "2";
}
String memSql = " INSERT INTO kq_groupmember ( groupid ,typevalue ,type ,alllevel ," +
" seclevel ,seclevelto ,jobtitlelevelvalue ,jobtitlelevel,validatefrom,validateto) " +
" VALUES ("+groupid+" ,"+relatedid+" ,"+type+" ,null,0 ,100 ,null ,null,'"+KQGroupBiz.GROUPMEMBER_VALIDATE_FROMDATE+"','"+KQGroupBiz.GROUPMEMBER_VALIDATE_TODATE+"')";
rs4.executeUpdate(memSql);
}
}
}
}
}
refreshCominfo();
}
/**
* 升级班次数据
* @param starttime1
* @param endtime1
* @param starttime2
* @param endtime2
* @param subcompanyid
* @param sign_type
* @param id
* @param weekday
* @param sign_start_time 打二次打卡时间
* @throws Exception
*/
public void setSerial(String starttime1,String endtime1,String starttime2,String endtime2,String subcompanyid,String sign_type,String id,String weekday,String sign_start_time) throws Exception{
try{
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
LocalTime localTime_0 = LocalTime.parse("00:00", timeFormatter);
LocalTime localTime_24 = LocalTime.parse("23:59", timeFormatter);
LocalTime localTime_sign_start = null;
if(sign_start_time.length() > 0){
localTime_sign_start = LocalTime.parse(sign_start_time, timeFormatter);
}
boolean isBinded = false;
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs3 = new RecordSet();
RecordSet rs4 = new RecordSet();
RecordSet rs5 = new RecordSet();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm");
Duration duration1 = Duration.between(
LocalTime.parse(starttime1, dtf), LocalTime.parse(endtime1, dtf));
Duration duration2 = Duration.between(LocalTime.parse(starttime2, dtf), LocalTime.parse(endtime2, dtf));
String worktime = ""+(duration1.toMinutes()+duration2.toMinutes());
String shiftOnOffWorkCount = "1";
String isresttimeopen = "1";
if("2".equalsIgnoreCase(sign_type)){
shiftOnOffWorkCount = "2";
isresttimeopen = "0";
}
String uuid = UUID.randomUUID().toString();
String serial = starttime1+"-"+endtime1+" "+starttime2+"-"+endtime2;
String serialContent = serial+"_"+shiftOnOffWorkCount;
String checkSerial = "select * from hrm_to_kq_serial where serial='"+serialContent+"' and serialfrom ='scheduleset' ";
rs4.executeQuery(checkSerial);
if(rs4.next()){
String serialid = rs4.getString("kqid");
if(Util.getIntValue(serialid) > 0){
String bindSql =
"insert into hrm_to_kq_group_weekday(hrmid,weekday,serialid) values(" + id
+ ",'"+weekday+"',"+serialid+") ";
isBinded = rs2.executeUpdate(bindSql);
}
}else{
String serialname = "一般工作时间("+Util.formatMultiLang(serial,"7")+")";
String serialSql = "insert into kq_ShiftManagement(serial,subcompanyid,shiftonoffworkcount,punchsettings,isoffdutyfreecheck,isresttimeopen,worktime,uuid,color)"
+ " values('"+serialname+"',"+subcompanyid+","+shiftOnOffWorkCount+",0,0,"+isresttimeopen+","+worktime+",'"+uuid+"',null)";
boolean isSerial = rs3.executeUpdate(serialSql);
if(isSerial){
int serialid = 0;
String getSerialIdSql = "select max(id) from kq_ShiftManagement ";
rs1.execute(getSerialIdSql);
if(rs1.next()){
serialid = Util.getIntValue(rs1.getString(1));
if(serialid > 0) {
int mins = 30;
String bindSql =
"insert into hrm_to_kq_serial(hrmid,kqid,serial,serialfrom) values(" + id
+ "," + serialid + ",'"+serialContent+"','scheduleset') ";
isBinded = rs2.executeUpdate(bindSql);
if(isBinded){
bindSql =
"insert into hrm_to_kq_group_weekday(hrmid,weekday,serialid) values(" + id
+ ",'"+weekday+"',"+serialid+") ";
isBinded = rs2.executeUpdate(bindSql);
if(isBinded){
if(!"2".equalsIgnoreCase(sign_type)){
LocalTime localTime = LocalTime.parse(starttime1, timeFormatter);
long start_mins = Duration.between(localTime_0, localTime).toMinutes();
String workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+",0,"+start_mins+",'"+starttime1+"','start',0,0)";
boolean isSection = rs5.executeUpdate(workSql);
if(isSection){
LocalTime localTime2 = LocalTime.parse(endtime2, timeFormatter);
long end_mins = Duration.between(localTime2, localTime_24).toMinutes();
workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+",0,"+end_mins+",'"+endtime2+"','end',0,0)";
rs5.executeUpdate(workSql);
}
}else{
LocalTime localTime = LocalTime.parse(starttime1, timeFormatter);
long start_mins1 = Duration.between(localTime_0, localTime).toMinutes();
String workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+",0,"+start_mins1+",'"+starttime1+"','start',0,0)";
boolean isSection = rs5.executeUpdate(workSql);
if(isSection){
LocalTime localTime2 = LocalTime.parse(endtime1, timeFormatter);
long end_mins1 = Duration.between(localTime2, localTime_sign_start).toMinutes();
workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+",0,"+end_mins1+",'"+endtime1+"','end',0,0)";
isSection = rs5.executeUpdate(workSql);
if(isSection){
LocalTime localTime3 = LocalTime.parse(starttime2, timeFormatter);
long start_mins2 = Duration.between(localTime_sign_start, localTime3).toMinutes();
workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+",0,"+start_mins2+",'"+starttime2+"','start',1,0)";
isSection = rs5.executeUpdate(workSql);
if(isSection){
LocalTime localTime4 = LocalTime.parse(endtime2, timeFormatter);
long end_mins2 = Duration.between(localTime4, localTime_24).toMinutes();
workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) "
+ "values("+serialid+",0,"+end_mins2+",'"+endtime2+"','end',1,0)";
isSection = rs5.executeUpdate(workSql);
}
}
}
}
if(!"2".equalsIgnoreCase(sign_type)){
String restSql = "insert into kq_ShiftRestTimeSections(serialid,resttype,time,across) values("+serialid+",'start','"+endtime1+"',0)";
rs5.executeUpdate(restSql);
restSql = "insert into kq_ShiftRestTimeSections(serialid,resttype,time,across) values("+serialid+",'end','"+starttime2+"',0)";
rs5.executeUpdate(restSql);
}
}
}
}
}
}
}
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 工作日期调整迁移
* @return
*/
public void upPub() {
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs3 = new RecordSet();
RecordSet rs4 = new RecordSet();
String pubSql = "select * from hrmpubholiday";
String groupSql = " select * from hrm_to_kq_group where groupfrom = 'scheduleset' and hrmid in( select id from hrmschedule) ";
rs.executeQuery(groupSql);
while (rs.next()){
String groupid = Util.null2s(rs.getString("kqid"),"");
if(groupid.length() >0){
rs1.executeQuery(pubSql);
while (rs1.next()){
String id = Util.null2s(rs1.getString("id"),"");
String holidaydate = Util.null2s(rs1.getString("holidaydate"),"");
String holidayname = Util.null2s(rs1.getString("holidayname"),"");
String changetype = Util.null2s(rs1.getString("changetype"),"");
int relateweekday = Util.getIntValue(Util.null2s(rs1.getString("relateweekday"),"0"),0);
String insertSql = "insert into KQ_HOLIDAYSET(holidaydate,holidaydesc,changetype,relatedday,groupid) "
+ " values('"+holidaydate+"','"+Util.formatMultiLang(holidayname,"7")+"','"+changetype+"','"+relateweekday+"','"+groupid+"')";
boolean isOk = rs2.executeUpdate(insertSql);
if(isOk){
int pubid = 0;
String getPubIdSql = "select max(id) from KQ_HOLIDAYSET ";
rs3.execute(getPubIdSql);
if(rs3.next()){
pubid = Util.getIntValue(rs3.getString(1));
}
if(pubid > 0){
String bindSql = "insert into hrm_to_kq_pub(hrmid,kqid) values("+id+","+pubid+")";
rs4.executeUpdate(bindSql);
}
}
}
}
}
refreshCominfo();
}
/**
* 一般工作时间 更新签到签退数据
* @param upSignSql
*/
public void updateSign(List<String> upSignSql) throws Exception{
RecordSet rs1 = new RecordSet();
for(int i = 0 ; i < upSignSql.size() ; i++){
String signSql = upSignSql.get(i);
rs1.executeUpdate(signSql);
}
}
/**
* 按照E9新考勤规则 更新签到签退数据
* @param relatedid
* @param signFromDate
* @param signtoDate
* @param sign_start_time
* @param scheduletype
* @param sign_type
* @param worktime1s
* @param upSignSql
*/
public void upSignSql(String relatedid, String signFromDate,String signtoDate,String sign_start_time, String scheduletype, String sign_type, String[] worktime1s, List<String> upSignSql) {
if("2".equalsIgnoreCase(sign_type)){
if(worktime1s.length == 5){
String worksection1 = worktime1s[0]+"-"+worktime1s[1];
String worksection2 = worktime1s[2]+"-"+worktime1s[3];
if("3".equalsIgnoreCase(scheduletype)){
String signSql1 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection1+"' , belongtime='"+worktime1s[0]+"' where signtype=1 and signtime <= '"+sign_start_time+"' and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql1);
String signSql2 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection1+"' , belongtime='"+worktime1s[1]+"' where signtype=2 and signtime <= '"+sign_start_time+"' and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql2);
String signSql3 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection2+"' , belongtime='"+worktime1s[2]+"' where signtype=1 and signtime >= '"+sign_start_time+"' and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql3);
String signSql4 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection2+"' , belongtime='"+worktime1s[3]+"' where signtype=2 and signtime >= '"+sign_start_time+"' and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql4);
}else if("4".equalsIgnoreCase(scheduletype)){
String signSql1 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection1+"' , belongtime='"+worktime1s[0]+"' where signtype=1 and signtime <= '"+sign_start_time+"' and userid in (select id from hrmresource where subcompanyid1 in ("+relatedid+")) and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql1);
String signSql2 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection1+"' , belongtime='"+worktime1s[1]+"' where signtype=2 and signtime <= '"+sign_start_time+"' and userid in (select id from hrmresource where subcompanyid1 in ("+relatedid+")) and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql2);
String signSql3 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection2+"' , belongtime='"+worktime1s[2]+"' where signtype=1 and signtime >= '"+sign_start_time+"' and userid in (select id from hrmresource where subcompanyid1 in ("+relatedid+")) and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql3);
String signSql4 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection2+"' , belongtime='"+worktime1s[3]+"' where signtype=2 and signtime >= '"+sign_start_time+"' and userid in (select id from hrmresource where subcompanyid1 in ("+relatedid+")) and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql4);
}
}
}else{
if(worktime1s.length == 5) {
String worksection = worktime1s[0] + "-" + worktime1s[3];
if("3".equalsIgnoreCase(scheduletype)){
String signSql1 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection+"' , belongtime='"+worktime1s[0]+"' where signtype=1 and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql1);
String signSql2 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection+"' , belongtime='"+worktime1s[3]+"' where signtype=2 and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql2);
}else if("4".equalsIgnoreCase(scheduletype)){
String signSql1 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection+"' , belongtime='"+worktime1s[0]+"' where signtype=1 and userid in (select id from hrmresource where subcompanyid1 in ("+relatedid+")) and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql1);
String signSql2 = "update hrmschedulesign set belongdate=signdate,worksection='"+worksection+"' , belongtime='"+worktime1s[3]+"' where signtype=2 and userid in (select id from hrmresource where subcompanyid1 in ("+relatedid+")) and signdate between '"+signFromDate+"' and '"+signtoDate+"'";
upSignSql.add(signSql2);
}
}
}
}
/**
* 升级关联考勤组成员
* @param memMap
* @throws Exception
*/
public void upGroupMem(Map<String, String> memMap) throws Exception{
RecordSet rs_groupmem = new RecordSet();
for(Map.Entry<String,String> me : memMap.entrySet()){
String groupid = me.getKey();
String mems = me.getValue();
String[] memsArr = mems.split(separator);
if(memsArr.length == 2){
String scheduletype = memsArr[0];
String type = "";
if("3".equalsIgnoreCase(scheduletype)){
//所有人
type = "6";
}else if("4".equalsIgnoreCase(scheduletype)){
//分部
type = "2";
}
String relatedid = memsArr[1];
String memSql = " INSERT INTO kq_groupmember ( groupid ,typevalue ,type ,alllevel ," +
" seclevel ,seclevelto ,jobtitlelevelvalue ,jobtitlelevel,validatefrom,validateto) " +
" VALUES (? ,? ,? ,?,? ,? ,? ,?, ?,?)";
rs_groupmem.executeUpdate(memSql,groupid,relatedid,type,null,0,100,null,null,KQGroupBiz.GROUPMEMBER_VALIDATE_FROMDATE, KQGroupBiz.GROUPMEMBER_VALIDATE_TODATE);
}
}
}
/**
* 班次生成完成,绑定考勤组和班次
* @param weekMap
* @param serialMap
*/
public void upGroupSerial(Map<String, Object> weekMap, Map<String, String> serialMap) throws Exception{
RecordSet rs_groupfixed = new RecordSet();
for(Map.Entry<String,Object> me : weekMap.entrySet()){
String groupid = me.getKey();
List<String> fixedList = (List<String>) me.getValue();
if(fixedList != null && !fixedList.isEmpty()){
for(int i = 0 ; i < fixedList.size() ; i++){
String worktimeKey = fixedList.get(i);
String weekday = ""+i;//星期几
String serialid = "";
if(serialMap.get(worktimeKey) != null){
serialid = serialMap.get(worktimeKey);
}
String connectSql = "insert into kq_fixedschedulce(weekday,serialid,groupid) values(?,?,?)";
rs_groupfixed.executeUpdate(connectSql,weekday,serialid.length()==0?null:serialid,groupid);
}
}
}
}
/**
* 生成班次数据
* @param serialMap
* @param worktimeLists
*/
public void upSerial(Map<String, String> serialMap, List<String> worktimeLists) throws Exception{
RecordSet rs_shift = new RecordSet();
RecordSet rs_shift1 = new RecordSet();
RecordSet rs_shift2 = new RecordSet();
RecordSet rs_shift3 = new RecordSet();
for(int i = 0 ; i < worktimeLists.size() ; i++){
String mainSql = "insert into kq_ShiftManagement(serial,subcompanyid,shiftonoffworkcount,punchsettings,isoffdutyfreecheck,isresttimeopen,worktime,uuid,color)"
+ " values(?,?,?,?,?,?,?,?,?)";
String times = worktimeLists.get(i);
String[] timeArr = times.split(separator);
if(timeArr.length == 5){
List<String> list_work = new ArrayList<>();
List<String> list_rest = new ArrayList<>();
String serial = "历史考勤数据:";
String worktime = "";
String subcompanyid = null;
String shiftOnOffWorkCount = "1";
String punchSettings = null;
String isOffDutyFreeCheck = null;
String isRestTimeOpen = "1";
String uuid = UUID.randomUUID().toString();
String color = null;
String work1 = timeArr[0];
String work2 = timeArr[1];
String work3 = timeArr[2];
String work4 = timeArr[3];
String sign_type = timeArr[4];
if(work1.length() == 0 || work2.length() == 0 && work3.length() == 0 && work4.length() == 0){
continue;
}
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm");
if("2".equalsIgnoreCase(sign_type)){
list_work.add(work1+separator+work2);
list_work.add(work3+separator+work4);
isRestTimeOpen = "0";
serial += work1+"-"+work2+" "+work3+"-"+work4;
//二次考勤
shiftOnOffWorkCount = "2";
}else{
list_work.add(work1+separator+work4);
list_rest.add(work2+separator+work3);
serial += work1+"-"+work4;
}
if(work1.length() > 0 && work2.length() > 0 &&
work3.length() > 0 && work4.length() > 0){
Duration duration1 = Duration.between(LocalTime.parse(work1, dtf), LocalTime.parse(work2, dtf));
Duration duration2 = Duration.between(LocalTime.parse(work3, dtf), LocalTime.parse(work4, dtf));
worktime = ""+(duration1.toMinutes()+duration2.toMinutes());
}
boolean isUpdated = rs_shift.executeUpdate(mainSql, serial,subcompanyid,shiftOnOffWorkCount,punchSettings,isOffDutyFreeCheck,isRestTimeOpen,worktime,uuid,color);
if(isUpdated){
int serialid = 0;
String idSql = "select id from kq_ShiftManagement where uuid=? ";
rs_shift1.executeQuery(idSql,uuid);
if(rs_shift1.next()) {
serialid = rs_shift1.getInt("id");
}
if(serialid > 0){
if("1".equalsIgnoreCase(isRestTimeOpen)){
String restSql = "insert into kq_ShiftRestTimeSections(serialid,resttype,time) values(?,?,?)";
for(String rest : list_rest){
String[] rests = rest.split(separator);
if(rests.length == 2){
rs_shift2.executeUpdate(restSql, serialid,"start",rests[0]);
rs_shift2.executeUpdate(restSql, serialid,"end",rests[1]);
}
}
}
String workSql = "insert into kq_ShiftOnOffWorkSections(serialid,across,mins,times,onoffworktype,record,clockinnot) values(?,?,?,?,?,?,?)";
int record = 0;
for(String work : list_work){
String[] works = work.split(separator);
if(works.length == 2){
rs_shift3.executeUpdate(workSql, serialid,"0","",works[0],"start",record+"",0);
rs_shift3.executeUpdate(workSql, serialid,"0","",works[1],"end",record+"",0);
}
record++;
}
}
serialMap.put(times, serialid+"");
}
}
}
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空一般工作时间里的升级数据
*/
public void clearCommonGroupData() {
RecordSet rs = new RecordSet();
String sql_1 = " delete from kq_shiftmanagement where id in(select kqid from hrm_to_kq_serial where serialfrom ='scheduleset')";
rs.executeUpdate(sql_1);
String sql_2 = "delete from kq_ShiftOnOffWorkSections where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='scheduleset')";
rs.executeUpdate(sql_2);
String sql_3 = "delete from kq_ShiftRestTimeSections where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='scheduleset')" ;
rs.executeUpdate(sql_3);
String sql_5 = "delete from hrm_to_kq_group_weekday where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='scheduleset') ";
rs.executeUpdate(sql_5);
String sql_6 ="delete from kq_group where id in( select kqid from hrm_to_kq_group where groupfrom = 'scheduleset')";
rs.executeUpdate(sql_6);
String sql_7 ="delete from kq_fixedschedulce where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'scheduleset')";
rs.executeUpdate(sql_7);
String sql_8 = "delete from kq_shiftschedule where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'scheduleset')";
rs.executeUpdate(sql_8);
String sql_9 = "delete from kq_groupmember where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'scheduleset')";
rs.executeUpdate(sql_9);
String sql_10 ="delete from hrm_to_kq_group where groupfrom = 'scheduleset'";
rs.executeUpdate(sql_10);
String sql_4 = "delete from hrm_to_kq_serial where serialfrom ='scheduleset' ";
rs.executeUpdate(sql_4);
String sql_11 = "delete from kq_OvertimeRulesDetail where ruleId in(select kqid from hrm_to_kq_OverRules where rulefrom ='scheduleset') ";
rs.executeUpdate(sql_11);
String sql_12 = "delete from kq_OvertimeRules where id in( select kqid from hrm_to_kq_OverRules where rulefrom ='scheduleset' )";
rs.executeUpdate(sql_12);
String sql_13 = "delete from hrm_to_kq_OverRules where rulefrom ='scheduleset' ";
rs.executeUpdate(sql_13);
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空排班时间里的升级数据
*/
public void clearScheduleGroupData() {
RecordSet rs = new RecordSet();
String sql_1 = " delete from kq_shiftmanagement where id in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset')";
rs.executeUpdate(sql_1);
String sql_2 = "delete from kq_ShiftOnOffWorkSections where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset')";
rs.executeUpdate(sql_2);
String sql_3 = "delete from kq_ShiftRestTimeSections where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset')" ;
rs.executeUpdate(sql_3);
String sql_5 = "delete from hrm_to_kq_group_weekday where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset') ";
rs.executeUpdate(sql_5);
String sql_6 ="delete from kq_group where id in( select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_6);
String sql_7 ="delete from kq_fixedschedulce where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_7);
String sql_8 = "delete from kq_shiftschedule where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_8);
String sql_9 = "delete from kq_groupmember where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_9);
String sql_10 ="delete from hrm_to_kq_group where groupfrom = 'shiftset'";
rs.executeUpdate(sql_10);
String sql_4 = "delete from hrm_to_kq_serial where serialfrom ='shiftset'";
rs.executeUpdate(sql_4);
String sql_11 = "delete from kq_OvertimeRulesDetail where ruleId in(select kqid from hrm_to_kq_OverRules where rulefrom ='shiftset') ";
rs.executeUpdate(sql_11);
String sql_12 = "delete from kq_OvertimeRules where id in( select kqid from hrm_to_kq_OverRules where rulefrom ='shiftset' )";
rs.executeUpdate(sql_12);
String sql_13 = "delete from hrm_to_kq_OverRules where rulefrom ='shiftset' ";
rs.executeUpdate(sql_13);
}
/**
* 清空加班规则
*/
public void clearPaidRule() {
RecordSet rs = new RecordSet();
String sql_1 = " delete from kq_OvertimeRules where id in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset')";
rs.executeUpdate(sql_1);
String sql_2 = "delete from kq_ShiftOnOffWorkSections where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset')";
rs.executeUpdate(sql_2);
String sql_3 = "delete from kq_ShiftRestTimeSections where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset')" ;
rs.executeUpdate(sql_3);
String sql_5 = "delete from hrm_to_kq_group_weekday where serialid in(select kqid from hrm_to_kq_serial where serialfrom ='shiftset') ";
rs.executeUpdate(sql_5);
String sql_6 ="delete from kq_group where id in( select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_6);
String sql_7 ="delete from kq_fixedschedulce where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_7);
String sql_8 = "delete from kq_shiftschedule where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_8);
String sql_9 = "delete from kq_groupmember where groupid in(select kqid from hrm_to_kq_group where groupfrom = 'shiftset')";
rs.executeUpdate(sql_9);
String sql_10 ="delete from hrm_to_kq_group where groupfrom = 'shiftset'";
rs.executeUpdate(sql_10);
String sql_4 = "delete from hrm_to_kq_serial where serialfrom ='shiftset'";
rs.executeUpdate(sql_4);
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空请假类型的升级数据
*/
public void clearLeaveRule() {
RecordSet rs = new RecordSet();
String sql_1 = " delete from kq_LeaveRules where id in(select kqid from hrm_to_kq_LeaveRules)";
rs.executeUpdate(sql_1);
String sql_2 = " delete from kq_LeaveRulesDetail where ruleid in(select kqid from hrm_to_kq_LeaveRules)";
rs.executeUpdate(sql_2);
String sql_3 = " delete from hrm_to_kq_LeaveRules";
rs.executeUpdate(sql_3);
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空工作日期调整的升级数据
*/
public void clearPub() {
RecordSet rs = new RecordSet();
String sql_1 = " delete from KQ_HOLIDAYSET where id in(select kqid from hrm_to_kq_pub)";
rs.executeUpdate(sql_1);
String sql_2 = " delete from hrm_to_kq_pub";
rs.executeUpdate(sql_2);
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空假期余额的升级数据
*/
public void clearBalance(String rulesql) {
RecordSet rs = new RecordSet();
String sql_1 = "delete from kq_BalanceOfLeave where leaverulesid in ("+rulesql+")";
rs.executeUpdate(sql_1);
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空考勤流程设置的升级数据
*/
public void clearAttSet() {
RecordSet rs = new RecordSet();
String sql_1 = "delete from kq_ATT_PROC_SET where id in(select kqid from hrm_to_attSet) ";
rs.executeUpdate(sql_1);
String sql_2 = "delete from kq_ATT_PROC_RELATION where field001 in(select kqid from hrm_to_attSet) ";
rs.executeUpdate(sql_2);
String sql_3 = "delete from kq_ATT_PROC_ACTION where field001 in(select kqid from hrm_to_attSet) ";
rs.executeUpdate(sql_3);
String sql_4 = "delete from hrm_to_attfield ";
rs.executeUpdate(sql_4);
String sql_5 = "delete from hrm_to_attSet ";
rs.executeUpdate(sql_5);
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空考勤流程的升级数据
*/
public void clearFlowData(String startdate, String enddate) {
RecordSet rs = new RecordSet();
String sql_11 = "delete from hrm_to_flow_split where splitid in (select requestid from kq_flow_split_overtime where fromdate >='"+startdate+"' and todate <='"+enddate+"')";
rs.executeUpdate(sql_11);
String sql_12 = "delete from hrm_to_flow_split where splitid in (select requestid from kq_flow_split_out where fromdate >='"+startdate+"' and todate <='"+enddate+"')";
rs.executeUpdate(sql_12);
String sql_13 = "delete from hrm_to_flow_split where splitid in (select requestid from kq_flow_split_evection where fromdate >='"+startdate+"' and todate <='"+enddate+"')";
rs.executeUpdate(sql_13);
String sql_14 = "delete from hrm_to_flow_split where splitid in (select requestid from kq_flow_split_leave where fromdate >='"+startdate+"' and todate <='"+enddate+"')";
rs.executeUpdate(sql_14);
String sql_15 = "delete from hrm_to_flow_split where splitid in (select requestid from kq_flow_split_other where fromdate >='"+startdate+"' and todate <='"+enddate+"')";
rs.executeUpdate(sql_15);
String sql_1 = "delete from kq_flow_split_overtime where fromdate >='"+startdate+"' and todate <='"+enddate+"' ";
rs.executeUpdate(sql_1);
String sql_111 = "delete from kq_flow_overtime where belongdate >='"+startdate+"' and belongdate <='"+enddate+"' ";
rs.executeUpdate(sql_111);
String sql_2 = "delete from kq_flow_split_out where fromdate >='"+startdate+"' and todate <='"+enddate+"' ";
rs.executeUpdate(sql_2);
String sql_3 = "delete from kq_flow_split_evection where fromdate >='"+startdate+"' and todate <='"+enddate+"' ";
rs.executeUpdate(sql_3);
String sql_4 = "delete from kq_flow_split_leave where fromdate >='"+startdate+"' and todate <='"+enddate+"' ";
rs.executeUpdate(sql_4);
String sql_5 = "delete from kq_flow_split_other where fromdate >='"+startdate+"' and todate <='"+enddate+"' ";
rs.executeUpdate(sql_5);
}
/**
* 可以重复升级数据 那就是需要升级之前先清空数据
* 清空考勤报表的升级数据
*/
public void clearReportData(String startdate, String enddate) {
RecordSet rs = new RecordSet();
String sql_1 = "delete from kq_format_pool where kqdate between '"+startdate+"' and '"+enddate+"'";
rs.executeUpdate(sql_1);
String sql_2 = "delete from kq_format_detail where kqdate between '"+startdate+"' and '"+enddate+"'";
rs.executeUpdate(sql_2);
String sql_3 = "delete from kq_format_total where kqdate between '"+startdate+"' and '"+enddate+"'";
rs.executeUpdate(sql_3);
}
}