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

1312 lines
57 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.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);
}
}
}