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

1312 lines
57 KiB
Java
Raw Normal View History

2026-03-13 14:37:39 +08:00
package com.engine.kq.biz;
import com.alibaba.fastjson.JSONObject;
import com.api.hrm.util.ServiceUtil;
import com.engine.kq.entity.KQBalanceOfLeaveEntity;
import com.engine.kq.log.KQLog;
import com.engine.kq.util.KQTransMethod;
import com.weaver.general.TimeUtil;
import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.StringUtil;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.common.Tools;
import weaver.hrm.resource.ResourceComInfo;
import weaver.systeminfo.SystemEnv;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class KQLeaveRulesBiz {
public static final ThreadLocal<String> THREAD_LOCAL = new ThreadLocal<>();
/**
* 记录日志
*/
private static KQLog logger = new KQLog();
/**
* 根据假期规则ID获取假期规则名称
*
* @param ruleId 假期规则的ID
* @return
*/
public static String getLeaveName(String ruleId) {
String leaveName = "";
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
leaveName = kqLeaveRulesComInfo.getLeaveName(ruleId);
return leaveName;
}
/**
* 判断是否具有假期余额
*
* @param ruleId
* @return
*/
public static boolean getBalanceEnable(String ruleId) {
int balanceEnable = 0;
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
balanceEnable = Util.getIntValue(kqLeaveRulesComInfo.getBalanceEnable(ruleId), 0);
if (balanceEnable == 1) {
return true;
} else {
return false;
}
}
/**
* 判断优先假期类型id字符串
*
* @param ruleId
* @return
*/
public static String getLeaveids(String ruleId) {
int schevacationON = 0;
String schevacation = "-1";
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
schevacationON = Util.getIntValue(kqLeaveRulesComInfo.getSchevacationON(ruleId), 0);
if (schevacationON == 1) {
schevacation=Util.null2s(kqLeaveRulesComInfo.getSchevacation(ruleId), "-1");
}
return schevacation;
}
/**
* 判断人员的假期类型id字符串
*
* @param scheLeaveids
* @param resourceId
* @return
*/
public static String getusedLeaveids(String scheLeaveids, String resourceId) {
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
String subcompanyId = resourceComInfo.getSubCompanyID(resourceId);
String departmentId = resourceComInfo.getDepartmentID(resourceId);
List<String> scheLeaveidsList = Util.splitString2List(scheLeaveids, ",");
/**
* 加载应用范围为总部的以及应用范围为分部(但是范围中包含了所属分部ID)的假期规则
*/
RecordSet recordSet = new RecordSet();
String sql = "select * from kq_LeaveRules ";
String sqlWhere = " where (isDelete is null or isDelete <>1) and isEnable=1 and balanceEnable=1 ";
/*如果找不到人员所在分部,则只返回应用范围为总部的假期规则*/
if (!resourceId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere += " and ( (scopeType=3 and ','+scopeValue+',' like '%," + resourceId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere += " and ( (scopeType=3 and concat(',',scopeValue,',') like '%," + resourceId + ",%') ";
} else {
sqlWhere += " and ( (scopeType=3 and ','||scopeValue||',' like '%," + resourceId + ",%') ";
}
}
if (!departmentId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere += " or (scopeType=2 and ','+scopeValue+',' like '%," + departmentId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere += " or (scopeType=2 and concat(',',scopeValue,',') like '%," + departmentId + ",%') ";
} else {
sqlWhere += " or (scopeType=2 and ','||scopeValue||',' like '%," + departmentId + ",%') ";
}
}
if (!subcompanyId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere += " or (scopeType=1 and ','+scopeValue+',' like '%," + subcompanyId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere += " or (scopeType=1 and concat(',',scopeValue,',') like '%," + subcompanyId + ",%') ";
} else {
sqlWhere += " or (scopeType=1 and ','||scopeValue||',' like '%," + subcompanyId + ",%') ";
}
}
sqlWhere += " or scopeType=0 )";
sql = sql + sqlWhere + " order by showOrder,id ";
scheLeaveids = "";
List<String> remleaveidsList = new ArrayList<>();
recordSet.executeQuery(sql);
/*如果指定人员所在分部下面单独设置过假期规则,则取分部下面的假期规则*/
while (recordSet.next()) {
String leaveid = recordSet.getString("id");//假期类型id
remleaveidsList.add(leaveid);
}
for (String id : scheLeaveidsList) {
if (remleaveidsList.contains(id)) {
if (scheLeaveids.equals("")) {
scheLeaveids = id;
} else {
scheLeaveids += "," + id;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return scheLeaveids;
}
/**
* 获取最小请假单位
* 1-按天请假
* 2-按半天请假
* 3-按小时请假
* 4-按整天请假
* 其他无效数据
*
* @param ruleId 指定的假期规则ID
* @return
*/
public static int getMinimumUnit(String ruleId) {
int minimumUnit = -1;//最小请假单位
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
minimumUnit = Util.getIntValue(kqLeaveRulesComInfo.getMinimumUnit(ruleId), -1);
return minimumUnit;
}
/**
* 获取请假时长计算方式
* 1-按照工作日计算请假时长
* 2-按照自然日计算请假时长
* 其他无效数据
*
* @param ruleId 指定的假期规则ID
* @return
*/
public static int getComputingMode(String ruleId) {
int computingMode = -1;//计算请假时长方式
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
computingMode = Util.getIntValue(kqLeaveRulesComInfo.getComputingMode(ruleId), -1);
return computingMode;
}
/**
* 按照自然日计算请假时长排除节假日休息日
* 0-不排除
* 1-排除节假日
* 2-排除休息日
* 1,2-排除节假日和休息日
*
* @param ruleId 指定的假期规则ID
* @return
*/
public static String getFilterHolidays(String ruleId) {
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
String filterHolidays = Util.null2s(kqLeaveRulesComInfo.getFilterHolidays(ruleId), "0");
return filterHolidays;
}
/**
* 获取日折算时长多少小时算一天
*
* @param ruleId 指定的假期规则ID
* @return
*/
public static String getHoursToDay(String ruleId) {
double hoursToDay = -1;//日折算时长
int computingMode = -1;//计算请假时长方式
int minimumUnit = -1;//最小请假单位
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
hoursToDay = Util.getDoubleValue(kqLeaveRulesComInfo.getHoursToDay(ruleId), -1);
computingMode = Util.getIntValue(kqLeaveRulesComInfo.getComputingMode(ruleId), -1);
minimumUnit = Util.getIntValue(kqLeaveRulesComInfo.getMinimumUnit(ruleId), -1);
if (computingMode != 2) {
hoursToDay = -1;
}
return String.format("%.2f", hoursToDay);
}
/**
* 1-按天请假
* 2-按半天请假
* 3-按小时请假
* 4-按整天请假
*
* @param minimumUnit
* @param lan
* @return
*/
public static String getMinimumUnitName(String minimumUnit, int lan) {
String minimumUnitName = "";
switch (minimumUnit) {
case "1":
minimumUnitName = SystemEnv.getHtmlLabelName(1925, lan);
break;
case "2":
minimumUnitName = SystemEnv.getHtmlLabelName(1925, lan);
break;
case "3":
case "5":
case "6":
minimumUnitName = SystemEnv.getHtmlLabelName(391, lan);
break;
case "4":
minimumUnitName = SystemEnv.getHtmlLabelName(1925, lan);
break;
default:
break;
}
return minimumUnitName;
}
/**
* 获取所有的假期规则
* unitType1-按天请假2-按半天请假3-按小时请假4-按整天请假-1数据异常无效数据
*
* @return
*/
public static List<Map<String, Object>> getAllLeaveRules() {
Map<String, Object> ruleMap = new HashMap<String, Object>();
List<Map<String, Object>> ruleList = new ArrayList<Map<String, Object>>();
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
kqLeaveRulesComInfo.setTofirstRow();
while (kqLeaveRulesComInfo.next()) {
if (kqLeaveRulesComInfo.getIsEnable().equals("1")) {
ruleMap = new HashMap<String, Object>();
ruleMap.put("id", kqLeaveRulesComInfo.getId());
ruleMap.put("name", kqLeaveRulesComInfo.getLeaveName());
ruleMap.put("unitType", kqLeaveRulesComInfo.getMinimumUnit());
ruleMap.put("proportion", kqLeaveRulesComInfo.getProportion());
ruleMap.put("scopeType",kqLeaveRulesComInfo.getScopeType());
ruleMap.put("scopeValue",kqLeaveRulesComInfo.getScopeValue());
ruleList.add(ruleMap);
}
}
return ruleList;
}
/**
* 根据人员ID获取其可见的所有假期类型
*
* @param resourceId 指定人员ID
* @return
*/
public static String getAllLeaveRulesByUserId(String resourceId, String languageId) {
String resultStr = "";
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
String subcomId = resourceComInfo.getSubCompanyID(resourceId);
String deptId = resourceComInfo.getDepartmentID(resourceId);
List<String> tempList = new ArrayList<String>();
Map<String, Object> itemMap = new HashMap<String, Object>();
List<Object> itemList = new ArrayList<Object>();
String sql = "select * from kq_leaveRules where 1=1 and (isDelete is null or isDelete <>1) and isEnable=1";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql);
while (recordSet.next()) {
String scopeType = recordSet.getString("scopeType");
String scopeValue = recordSet.getString("scopeValue");
String leaveName = recordSet.getString("leaveName");
String id = recordSet.getString("id");
if (scopeType.equals("1")) {
tempList = Util.TokenizerString(scopeValue, ",");
if (!tempList.contains(subcomId)) {
continue;
}
}
itemMap = new HashMap<String, Object>();
itemMap.put("name", Util.formatMultiLang(leaveName, languageId));
itemMap.put("id", id);
itemList.add(itemMap);
}
resultStr = JSONObject.toJSONString(itemList);
} catch (Exception e) {
e.printStackTrace();
}
return resultStr;
}
public static boolean filterSubLeaveRule(KQLeaveRulesComInfo kqLeaveRulesComInfo, User user, String leaveId) {
return filterSubLeaveRule(Util.null2String(user.getUID()), kqLeaveRulesComInfo.getScopeType(leaveId), kqLeaveRulesComInfo.getScopeValue(leaveId), Util.null2String(user.getUserSubCompany1()),Util.null2String(user.getUserDepartment()));
}
public static boolean filterSubLeaveRule(String userId, String scopeType, String scopeValue, String subCompany, String deptId) {
boolean isAdmin = ServiceUtil.isAdmin(userId);
if (isAdmin) {
return false;
}
if ("1".equals(scopeType)) {
if (scopeValue.indexOf(",") > 0) {
String[] split = scopeValue.split(",");
for (String v : split) {
if (!StringUtil.isEmpty(v) && v.equals(subCompany)) {
return false;
}
}
return true;
} else {
return !scopeValue.equals(subCompany);
}
}else if("2".equals(scopeType)){
if (scopeValue.indexOf(",") > 0) {
String[] split = scopeValue.split(",");
for (String v : split) {
if (!StringUtil.isEmpty(v) && v.equals(deptId)) {
return false;
}
}
return true;
} else {
return !scopeValue.equals(deptId);
}
}else if("3".equals(scopeType)){
if (scopeValue.indexOf(",") > 0) {
String[] split = scopeValue.split(",");
for (String v : split) {
if (!StringUtil.isEmpty(v) && v.equals(userId)) {
return false;
}
}
return true;
} else {
return !scopeValue.equals(userId);
}
}
return false;
}
/**
* 初始化年假
*
* @param ruleId
* @return
*/
public static boolean initAnnualLeave(int ruleId) {
boolean isInitSuccess = false;
try {
/*判断年假是否初始化过*/
RecordSet recordSet = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='年假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=1," +
"isDelete=0,isEnable=1,leaveCode='annualLeave' where id=" + ruleId;
isInitSuccess = recordSet.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
String deleteDetailSql = "delete from kq_LeaveRulesDetail where scopeType=0 and ruleId=" + ruleId;
recordSet.executeUpdate(deleteDetailSql);
String insertDetailSql = "insert into kq_LeaveRulesDetail(ruleName,ruleId,scopeType,scopeValue,distributionMode,annualAmount,priority,validityRule,expirationMonth,expirationDay,extensionEnable,extendedDays,releaseRule,calcMethod)" +
"values('年假-总部规则'," + ruleId + ",0,'',3,0,1,0,'','',0,0,0,0)";
isInitSuccess = recordSet.executeUpdate(insertDetailSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'年假-初始化',0,'',1,8,1,1,0,1,'annualLeave')";
isInitSuccess = recordSet.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String insertDetailSql = "insert into kq_LeaveRulesDetail(ruleName,ruleId,scopeType,scopeValue,distributionMode,annualAmount,priority,validityRule,expirationMonth,expirationDay,extensionEnable,extendedDays,releaseRule,calcMethod)" +
"values('年假-总部规则'," + nextId + ",0,'',3,0,1,0,'','',0,0,0,0)";
isInitSuccess = recordSet.executeUpdate(insertDetailSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set annualLeave=" + nextId + " where id=1";
isInitSuccess = recordSet.executeUpdate(historySql);
ruleId = nextId;
}
String detailId = "";
sql = "select * from kq_LeaveRulesDetail where scopeType=0 and ruleId=" + ruleId;
recordSet.executeQuery(sql);
if (recordSet.next()) {
detailId = recordSet.getString("id");
}
if (detailId.equals("")) {
return false;
}
/*先删除原来的明细记录,在插入新的明细记录*/
String detailSql = "delete from kq_WorkingAgeToLeave where leaveRulesId=" + detailId;
isInitSuccess = recordSet.executeUpdate(detailSql);
if (!isInitSuccess) {
sql = "delete from kq_LeaveRules where leaveRulesId=" + detailId;
recordSet.executeUpdate(sql);
return false;
}
/*插入明细记录*/
detailSql = "insert into kq_WorkingAgeToLeave(leaveRulesId,lowerLimit,upperLimit,amount) values(?,?,?,?)";
isInitSuccess = recordSet.executeUpdate(detailSql, detailId, 0, 1, 0);
isInitSuccess = recordSet.executeUpdate(detailSql, detailId, 1, 10, 5);
isInitSuccess = recordSet.executeUpdate(detailSql, detailId, 10, 20, 10);
isInitSuccess = recordSet.executeUpdate(detailSql, detailId, 20, 9999, 15);
} catch (Exception e) {
logger.info(e.getMessage());
}
return isInitSuccess;
}
/**
* 初始化带薪事假
*
* @param ruleId
* @return
*/
public static boolean initPaidCompassionateLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='带薪事假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='paidCompassionateLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'带薪事假-初始化',0,'',1,8,1,0,0,1,'paidCompassionateLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set paidCompassionateLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化带薪病假
*
* @param ruleId
* @return
*/
public static boolean initPaidSickLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='带薪病假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='paidSickLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'带薪病假-初始化',0,'',1,8,1,0,0,1,'paidSickLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set paidSickLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化调休
*
* @param ruleId
* @return
*/
public static boolean initVacationLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='调休-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=1," +
"isDelete=0,isEnable=1,leaveCode='vacationLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
String deleteDetailSql = "delete from kq_LeaveRulesDetail where scopeType=0 and ruleId=" + ruleId;
rs.executeUpdate(deleteDetailSql);
String insertDetailSql = "insert into kq_LeaveRulesDetail(ruleName,ruleId,scopeType,scopeValue,distributionMode,annualAmount,priority,validityRule,expirationMonth,expirationDay,extensionEnable,extendedDays,releaseRule,calcMethod)" +
"values('调休-总部规则'," + ruleId + ",0,'',5,0,1,0,'','',0,0,0,0)";
isInitSuccess = rs.executeUpdate(insertDetailSql);
if (!isInitSuccess) {
return false;
}
} else {
/*判断系统中是否已经存在调休了,如果已存在,则不允许新建新的调休假期*/
sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id in (select ruleId from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and distributionMode=5)";
rs.executeQuery(sql);
if (rs.getCounts() > 0) {
return false;
}
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'调休-初始化',0,'',1,8,1,1,0,1,'vacationLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String insertDetailSql = "insert into kq_LeaveRulesDetail(ruleName,ruleId,scopeType,scopeValue,distributionMode,annualAmount,priority,validityRule,expirationMonth,expirationDay,extensionEnable,extendedDays,releaseRule,calcMethod)" +
"values('调休-总部规则'," + nextId + ",0,'',5,0,1,0,'','',0,0,0,0)";
isInitSuccess = rs.executeUpdate(insertDetailSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set vacationLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化事假
*
* @param ruleId
* @return
*/
public static boolean initCompassionateLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='事假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='compassionateLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'事假-初始化',0,'',1,8,1,0,0,1,'compassionateLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set compassionateLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化病假
*
* @param ruleId
* @return
*/
public static boolean initSickLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='病假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='sickLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'病假-初始化',0,'',1,8,1,0,0,1,'sickLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set sickLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化产假
*
* @param ruleId
* @return
*/
public static boolean initMaternityLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='产假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=2,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='maternityLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'产假-初始化',0,'',1,8,2,0,0,1,'maternityLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set maternityLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化陪产假
*
* @param ruleId
* @return
*/
public static boolean initPaternityLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (recordSet.next()) {
String updateSql = "update kq_LeaveRules set leaveName='陪产假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=2,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='paternityLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'陪产假-初始化',0,'',1,8,2,0,0,1,'paternityLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set paternityLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化婚假
*
* @param ruleId
* @return
*/
public static boolean initMarriageLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='婚假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=2,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='marriageLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'婚假-初始化',0,'',1,8,2,0,0,1,'marriageLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set marriageLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化丧假
*
* @param ruleId
* @return
*/
public static boolean initFuneralLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='丧假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='funeralLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'丧假-初始化',0,'',1,8,1,0,0,1,'funeralLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set funeralLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 初始化哺乳假
*
* @param ruleId
* @return
*/
public static boolean initBreastfeedingLeave(int ruleId) {
/*判断是否初始化过*/
RecordSet recordSet = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete<>1) and id=" + ruleId;
recordSet.executeQuery(sql);
boolean initialized = recordSet.getCounts() > 0;
/*没有初始化过就新建,已经初始化过就更新*/
boolean isInitSuccess = false;
if (initialized) {
String updateSql = "update kq_LeaveRules set leaveName='哺乳假-初始化',scopeType=0,scopeValue='',minimumUnit=1,hoursToDay=8,computingMode=1,balanceEnable=0," +
"isDelete=0,isEnable=1,leaveCode='breastfeedingLeave' where id=" + ruleId;
isInitSuccess = rs.executeUpdate(updateSql);
if (!isInitSuccess) {
return false;
}
} else {
KQTransMethod kqTransMethod = new KQTransMethod();
int nextId = kqTransMethod.getNextId();
String insertSql = "insert into kq_LeaveRules(id,leaveName,scopeType,scopeValue,minimumUnit,hoursToDay,computingMode,balanceEnable,isDelete,isEnable,leaveCode)" +
"values(" + nextId + ",'哺乳假-初始化',0,'',1,8,1,0,0,1,'breastfeedingLeave')";
isInitSuccess = rs.executeUpdate(insertSql);
if (!isInitSuccess) {
return false;
}
String historySql = "update kq_initHistory set breastfeedingLeave=" + nextId + " where id=1";
isInitSuccess = rs.executeUpdate(historySql);
}
return isInitSuccess;
}
/**
* 根据人员ID以及名称获取对应的假期规则ID(主要对于对接小E)
*
* @param resourceId 人员ID
* @param leaveName 假期规则名称
* @return
*/
public static List<Object> getLeaveRuleIdByName(String resourceId, String leaveName) {
List<Object> dataList = new ArrayList<Object>();
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
String subcomId = resourceComInfo.getSubCompanyID(resourceId);
Map<String, Object> dataMap = new HashMap<String, Object>();
String sql = "select * from kq_LeaveRules where (isDelete is null or isDelete <>1) and isEnable=1 and leaveName like '%" + leaveName + "%'";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql);
while (recordSet.next()) {
int scopeType = Util.getIntValue(recordSet.getString("scopeType"), 0);
String scopeValue = Util.null2String(recordSet.getString("scopeValue"));
if (scopeType == 1) {
List<String> tempList = Util.TokenizerString(scopeValue, ",");
if (!tempList.contains(subcomId)) {
continue;
}
}
dataMap = new HashMap<String, Object>();
dataMap.put("ruleId", recordSet.getString("id"));
dataMap.put("name", Util.formatMultiLang(recordSet.getString("leaveName"), "7"));
dataList.add(dataMap);
}
} catch (Exception e) {
e.printStackTrace();
}
return dataList;
}
/**
* 判断此请假类型是否是由 法定年假+福利年假 组合而成的混合模式
*
* @param ruleId 指定的请假类型的id(对应于kq_LeaveRules表的主键ID)
* @return true--是混合模式false--不是
*/
public static boolean isMixMode(String ruleId) {
boolean flag = false;
try {
String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and distributionMode=6 and ruleId=?";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql, ruleId);
if (recordSet.next()) {
flag = true;
}
} catch (Exception e) {
logger.info(e.getMessage());
}
return flag;
}
/**
* 获取请假类型的颜色(随机生成)
*
* @return
*/
public static String getColor() {
String color = "";
try {
StringBuffer result = new StringBuffer();
for (int i = 0; i < 6; i++) {
//随机生成0-15的数值并转换成16进制
result.append(Integer.toHexString(new Random().nextInt(16)));
}
color = "#" + result.toString().toUpperCase();
} catch (Exception e) {
System.out.println("获取16进制字符串异常返回默认...");
color = "#00CCCC";
}
return color;
}
public static String getChildName(String balanceofleaveid){
String name = "";
try {
String sql = "select childId from kq_balanceOfLeave where id=?";
RecordSet recordSet = new RecordSet();
KQChildrenComInfo kqChildrenComInfo = new KQChildrenComInfo();
recordSet.executeQuery(sql, balanceofleaveid);
if (recordSet.next()) {
String chlid = Util.null2s(recordSet.getString("childId"), "");
if(StringUtils.isNotBlank(chlid)){
name= kqChildrenComInfo.getChildrenName(chlid);
}
}
} catch (Exception e) {
logger.info(e.getMessage());
}
return name;
}
/**
* 是否是调休
* @param ruleId
* @return
*/
public static boolean isTiaoXiu(String ruleId){
boolean flag = false;
try {
String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and distributionMode=5 and ruleId=?";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql, ruleId);
if (recordSet.next()) {
flag = true;
}
} catch (Exception e) {
logger.info(e.getMessage());
}
return flag;
}
public static boolean isTiaoXiu(String ruleId, String subCompanyId, String departmentId, String resourceId) {
boolean flag = false;
RecordSet recordSet = new RecordSet();
try {
KQLeaveRulesDetailComInfo detailComInfo = new KQLeaveRulesDetailComInfo();
recordSet.writeLog("isTiaoXiu>>1=" +ruleId+";2="+ subCompanyId+";3="+ departmentId+";4="+ resourceId );
int distributionMode = Util.getIntValue(detailComInfo.getDistributionMode(ruleId, subCompanyId, departmentId, resourceId), 1);
if (distributionMode == 5) {
flag = true;
}
recordSet.writeLog("isTiaoXiu>>distributionMode=" +distributionMode);
// if (!flag) {
if (true) {
String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) " +
"and distributionMode=5 and ruleId=? ";
String sqlWhere = "";
if (!resourceId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere = " and (scopeType=3 and ','+scopeValue+',' like '%," + resourceId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere = " and (scopeType=3 and concat(',',scopeValue,',') like '%," + resourceId + ",%') ";
} else {
sqlWhere = " and (scopeType=3 and ','||scopeValue||',' like '%," + resourceId + ",%') ";
}
recordSet.writeLog("isTiaoXiu>>sql1=" + sql + sqlWhere);
recordSet.executeQuery(sql + sqlWhere, ruleId);
if (recordSet.next()) {
return true;
}
} else if (!departmentId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere = " and (scopeType=2 and ','+scopeValue+',' like '%," + departmentId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere = " and (scopeType=2 and concat(',',scopeValue,',') like '%," + departmentId + ",%') ";
} else {
sqlWhere = " and (scopeType=2 and ','||scopeValue||',' like '%," + departmentId + ",%') ";
}
recordSet.writeLog("isTiaoXiu>>sql2=" + sql + sqlWhere);
recordSet.executeQuery(sql + sqlWhere, ruleId);
if (recordSet.next()) {
return true;
}
} else if (!subCompanyId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere = " and (scopeType=1 and ','+scopeValue+',' like '%," + subCompanyId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere = " and (scopeType=1 and concat(',',scopeValue,',') like '%," + subCompanyId + ",%') ";
} else {
sqlWhere = " and (scopeType=1 and ','||scopeValue||',' like '%," + subCompanyId + ",%') ";
}
recordSet.writeLog("isTiaoXiu>>sql3=" + sql + sqlWhere);
recordSet.executeQuery(sql + sqlWhere, ruleId);
if (recordSet.next()) {
return true;
}
} else {
sqlWhere = " and scopeType=0 ";
recordSet.writeLog("isTiaoXiu>>sql4=" + sql + sqlWhere);
recordSet.executeQuery(sql + sqlWhere, ruleId);
if (recordSet.next()) {
return true;
}
}
}
recordSet.writeLog("isTiaoXiu>>flag=" + flag);
} catch (Exception e) {
recordSet.writeLog(e.getMessage());
recordSet.writeLog(e);
}
return flag;
}
public static int getTiaoXiu(String subCompanyId, String departmentId, String resourceId) {
int ruleid = 0;
RecordSet recordSet = new RecordSet();
try {
String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) " +
"and distributionMode=5 ";
String sqlWhere = "";
if (!resourceId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere = " and (scopeType=3 and ','+scopeValue+',' like '%," + resourceId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere = " and (scopeType=3 and concat(',',scopeValue,',') like '%," + resourceId + ",%') ";
} else {
sqlWhere = " and (scopeType=3 and ','||scopeValue||',' like '%," + resourceId + ",%') ";
}
recordSet.executeQuery(sql + sqlWhere);
while (recordSet.next()) {
ruleid = recordSet.getInt("ruleId");
return ruleid;
}
}
if (!departmentId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere = " and (scopeType=2 and ','+scopeValue+',' like '%," + departmentId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere = " and (scopeType=2 and concat(',',scopeValue,',') like '%," + departmentId + ",%') ";
} else {
sqlWhere = " and (scopeType=2 and ','||scopeValue||',' like '%," + departmentId + ",%') ";
}
recordSet.executeQuery(sql + sqlWhere);
while (recordSet.next()) {
ruleid = recordSet.getInt("ruleId");
return ruleid;
}
}
if (!subCompanyId.equals("")) {
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sqlWhere = " and (scopeType=1 and ','+scopeValue+',' like '%," + subCompanyId + ",%') ";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sqlWhere = " and (scopeType=1 and concat(',',scopeValue,',') like '%," + subCompanyId + ",%') ";
} else {
sqlWhere = " and (scopeType=1 and ','||scopeValue||',' like '%," + subCompanyId + ",%') ";
}
recordSet.executeQuery(sql + sqlWhere);
while (recordSet.next()) {
ruleid = recordSet.getInt("ruleId");
return ruleid;
}
}
sqlWhere = " and scopeType=0 ";
recordSet.executeQuery(sql + sqlWhere);
while (recordSet.next()) {
ruleid = recordSet.getInt("ruleId");
return ruleid;
}
} catch (Exception e) {
recordSet.writeLog(e.getMessage());
recordSet.writeLog(e);
}
return ruleid;
}
public static Map<String, String> isRepeat(String ruleid,int scopeType,String scopeValue,User user,String ruleDetailId){
Map<String, String> result = new HashMap<>();
result.put("flag","0");//0=未重复1=重复了不让保存
// String sql = "select id,ruleid,scopetype,scopevalue,distributionmode from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and distributionMode=5 ";
String sql = "select id,ruleid,scopetype,scopevalue,distributionmode from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) ";
RecordSet recordSet = new RecordSet();
recordSet.writeLog("ruleid="+ruleid+",scopeType="+scopeType+",scopeValue="+scopeValue);
recordSet.executeQuery(sql);
while (recordSet.next()) {
String tmp_id = Util.null2String(recordSet.getString("id"));
String tmp_ruleid = Util.null2String(recordSet.getString("ruleid"));
String tmp_scopetype = Util.null2String(recordSet.getString("scopetype"));
String tmp_scopevalue = Util.null2String(recordSet.getString("scopevalue"));
String tmp_distributionmode = Util.null2String(recordSet.getString("distributionmode"));
recordSet.writeLog("tmp_id="+tmp_id+",tmp_ruleid="+tmp_ruleid+",tmp_scopetype="+tmp_scopetype+",tmp_scopevalue="+tmp_scopevalue);
if(tmp_ruleid.equals(ruleid) && ("".equals(ruleDetailId) || !tmp_id.equals(ruleDetailId))){
//同一个假期类型,不能同时设置为【加班自动计入调休】和其他的规则,比如按工龄自动发放
if(!tmp_distributionmode.equals("5")){
result.put("flag","1");
result.put("msg", SystemEnv.getHtmlLabelName(546798, user.getLanguage()));
return result;
}
}
if(tmp_distributionmode.equals("5") && tmp_scopetype.equals(Util.null2String(scopeType)) && ("".equals(ruleDetailId) || !tmp_id.equals(ruleDetailId))){
//总部级别的范围单独处理下因为存在之前是分部级别维护了分部id这个时候即便是scopytype=0但是scopevalue依然有值了所以总部级别不用进行scopevalue的比对
if("0".equals(tmp_scopetype)){
result.put("flag","1");
result.put("msg", SystemEnv.getHtmlLabelName(546797, user.getLanguage()));
return result;
}
if(null != scopeValue && scopeValue.indexOf(",")>-1){
String[] values = scopeValue.split(",");
for (String value : values) {
if((","+tmp_scopevalue+",").indexOf(","+value+",")>-1){
result.put("flag","1");
result.put("msg", SystemEnv.getHtmlLabelName(546797, user.getLanguage()));
return result;
}
}
}else {
if((","+tmp_scopevalue+",").indexOf(","+scopeValue+",")>-1){
result.put("flag","1");
result.put("msg", SystemEnv.getHtmlLabelName(546797, user.getLanguage()));
return result;
}
}
}
}
return result;
}
/**
* 是否是育儿假且不开启叠加
* @param ruleId
* @return
*/
public static boolean isLeaveOfParental(String ruleId){
boolean flag = false;
try {
String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and distributionMode=8 and ruleId=?";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql, ruleId);
if (recordSet.next()) {
String severalChildren = Util.null2s(recordSet.getString("severalChildren"), "0");
if(severalChildren.equals("0")){
flag = true;
}
}
} catch (Exception e) {
logger.info(e.getMessage());
}
return flag;
}
/**
* 是否是育儿假且开启了叠加
* @param ruleId
* @return
*/
public static boolean isLeaveOfParentalNum(String ruleId){
boolean flag = false;
try {
String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and distributionMode=8 and ruleId=?";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql, ruleId);
if (recordSet.next()) {
String severalChildren = Util.null2s(recordSet.getString("severalChildren"), "0");
if(severalChildren.equals("1")){
flag = true;
}
}
} catch (Exception e) {
logger.info(e.getMessage());
}
return flag;
}
/**
* 半天单位 时间选择方式1-下拉框选择 2-具体时间
* @param ruleId
* @return
*/
public static int getTimeselection(String ruleId) {
int timeselection = 1;//最小请假单位
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
timeselection = Util.getIntValue(kqLeaveRulesComInfo.getTimeSelection(ruleId), 1);
return timeselection;
}
public void updateChildLeaveDate(int scopeType,String scopeValue,int validityRule,String ruleId){
RecordSet rs = new RecordSet();
try {
// 查询当年育儿假数据
String sql = "select * from kq_balanceOfLeave where (isDelete is null or isDelete<>1) and leaveRulesId = "+ruleId ;
if (scopeType == 1 ) {
sql += " and resourceid in (select id from hrmresource where subCompanyId1 in (" + scopeValue + ") )";
}else if (scopeType == 2 ) {
sql += " and resourceid in (select id from hrmresource where departmentId in (" + scopeValue + ") )";
}else if (scopeType == 3) {
sql += " and (" + Tools.getOracleSQLIn(scopeValue, "resourceid") + ") ";
}
KQBalanceOfLeaveEntity balanceEntity = null;
ArrayList<KQBalanceOfLeaveEntity> balanceEntities = new ArrayList<>();
rs.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String childId = Util.null2s(rs.getString("childId"), "");
if(StringUtils.isNotBlank(childId)){
String expirationDate = Util.null2s(rs.getString("expirationDate"), "");
String effectiveDate = Util.null2s(rs.getString("effectiveDate"), "");
balanceEntity = new KQBalanceOfLeaveEntity();
balanceEntity.setId(id);
balanceEntity.setExpirationDate(expirationDate);
balanceEntity.setEffectiveDate(effectiveDate);
balanceEntities.add(balanceEntity);
}
}
sql = " update kq_balanceOfLeave set expirationDate =? where id= ? ";
for (int i = 0; balanceEntities != null && i < balanceEntities.size(); i++) {
KQBalanceOfLeaveEntity balance = balanceEntities.get(i);
String uid = Util.null2String(balance.getId());
String effectiveDate = Util.null2String(balance.getEffectiveDate());
String expirationDate = "2222-12-31";
if (validityRule != 0) {
expirationDate = TimeUtil.dateAdd(TimeUtil.yearAdd(effectiveDate, 1), -1);
}
rs.executeUpdate(sql, expirationDate,uid);
}
}catch (Exception e){
e.printStackTrace();
rs.writeLog(e);
}
}
}