|
|
|
package com.engine.kq.nbjh;
|
|
|
|
|
|
|
|
import com.engine.kq.biz.KQWorkTime;
|
|
|
|
import weaver.common.DateUtil;
|
|
|
|
import weaver.conn.RecordSet;
|
|
|
|
import weaver.general.TimeUtil;
|
|
|
|
import weaver.general.Util;
|
|
|
|
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Title
|
|
|
|
* @Author wangchaofa
|
|
|
|
* @CreateDate 2024/4/2
|
|
|
|
* @Version 1.0
|
|
|
|
* @Description
|
|
|
|
*/
|
|
|
|
public class KqUtil {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 判断日期是否在 哺乳假流程日期范围内
|
|
|
|
* @param userid
|
|
|
|
* @param date
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public static boolean checkIsBetweenRange(String userid,String date){
|
|
|
|
boolean bool = false;
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
String breastfeedLeave_table = rs.getPropValue("nbjh_ygdjblc","breastfeedLeave_table");
|
|
|
|
rs.executeQuery(" select a.mtgjxs as result,a.ksrq,a.jsrq from "+ breastfeedLeave_table +" a,workflow_requestbase b " +
|
|
|
|
" where a.requestid=b.requestid and b.currentnodetype=3 " +
|
|
|
|
" and a.ksrq <= ? and a.jsrq >= ? and a.xm = ?",date,date,userid);
|
|
|
|
if(rs.next()){
|
|
|
|
bool = true;
|
|
|
|
}
|
|
|
|
return bool;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取 哺乳假 数据
|
|
|
|
* @param fromDate
|
|
|
|
* @param toDate
|
|
|
|
* @param userid
|
|
|
|
* @return
|
|
|
|
* 查询的 2024-03-01 2024-03-31
|
|
|
|
* 流程里的 2024-03-12 2024-11-21
|
|
|
|
* 2024-02-10 2024-04-10
|
|
|
|
* 2024-02-10 2024-02-20
|
|
|
|
*/
|
|
|
|
public static double getBreastfeedLeave(String fromDate,String toDate,String userid){
|
|
|
|
double result = 0.00;
|
|
|
|
int ycqdays = 0;
|
|
|
|
double day = 0.00;
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
String lc_fromDate = "";
|
|
|
|
String lc_toDate = "";
|
|
|
|
rs.writeLog("============== fromDate =================== "+ fromDate);
|
|
|
|
rs.writeLog("============== toDate =================== "+ toDate);
|
|
|
|
String currentdate = TimeUtil.getCurrentDateString();
|
|
|
|
|
|
|
|
String breastfeedLeave_table = rs.getPropValue("nbjh_ygdjblc","breastfeedLeave_table");
|
|
|
|
rs.executeQuery(" select a.mtgjxs as result,a.ksrq,a.jsrq from "+ breastfeedLeave_table +" a,workflow_requestbase b " +
|
|
|
|
" where a.requestid=b.requestid and b.currentnodetype=3 " +
|
|
|
|
" and a.xm = ?",userid);
|
|
|
|
if(rs.next()){
|
|
|
|
lc_fromDate = Util.null2String(rs.getString("ksrq"));
|
|
|
|
lc_toDate = Util.null2String(rs.getString("jsrq"));
|
|
|
|
day = Util.getDoubleValue(rs.getString("result"),0.00);
|
|
|
|
|
|
|
|
// 流程里的开始日期 2024-03-12 >= 查询的开始日期 2024-03-01
|
|
|
|
if(compareDate(lc_fromDate,fromDate)){
|
|
|
|
//流程里的开始日期 2024-03-12 <= 查询的结束日期 2024-03-031
|
|
|
|
if(compareDate(toDate,lc_fromDate)){
|
|
|
|
//流程里的结束日期 2024-03-20 <= 查询的结束日期 2024-03-31 。 此时 应该 计算 流程里的开始日期 到 流程里的结束日期,这个范围内的 应出勤天数
|
|
|
|
if(compareDate(toDate,lc_toDate)){
|
|
|
|
ycqdays = getWorkdays(lc_fromDate,lc_toDate,userid);
|
|
|
|
}
|
|
|
|
//流程里的结束日期 2024-04-10 > 查询的结束日期 2024-03-31 。此时 应该 计算 流程里的开始日期 到 查询的结束日期,这个范围内的 应出勤天数
|
|
|
|
else{
|
|
|
|
ycqdays = getWorkdays(lc_fromDate,toDate,userid);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//流程里的开始日期 2024-04-10 > 查询的结束日期 2024-03-31
|
|
|
|
else{
|
|
|
|
ycqdays = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//流程里的开始日期 2024-02-10 < 查询的开始日期 2024-03-01
|
|
|
|
else{
|
|
|
|
//流程里的结束日期 2024-03-10 >= 查询的开始日期 2024-03-01
|
|
|
|
if(compareDate(lc_toDate,fromDate)){
|
|
|
|
//流程里的结束日期 2024-03-10 <= 查询的结束日期 2024-03-31 。此时 应该 计算 查询的开始日期 到 流程里的结束日期,这个范围内的 应出勤天数
|
|
|
|
if(compareDate(toDate,lc_toDate)){
|
|
|
|
//流程里的结束日期 >= 当前日期
|
|
|
|
if(compareDate(lc_toDate,currentdate)){
|
|
|
|
ycqdays = getWorkdays(fromDate,currentdate,userid);
|
|
|
|
}else{
|
|
|
|
ycqdays = getWorkdays(fromDate,lc_toDate,userid);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 流程里的结束日期 2024-04-10 > 查询的结束日期 2024-03-31 。此时 应该 计算 查询的开始日期 到 查询的结束日期,这个范围内的 应出勤天数
|
|
|
|
else{
|
|
|
|
//流程里的结束日期 >= 当前日期
|
|
|
|
if(compareDate(toDate,currentdate)){
|
|
|
|
ycqdays = getWorkdays(fromDate,currentdate,userid);
|
|
|
|
}else{
|
|
|
|
ycqdays = getWorkdays(fromDate,toDate,userid);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//查询的开始日期 2024-03-01 > 流程里的结束日期 2024-02-20
|
|
|
|
else{
|
|
|
|
ycqdays = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rs.writeLog("=============== ycqdays ================= "+ ycqdays);
|
|
|
|
rs.writeLog("=============== day ================= "+ day);
|
|
|
|
result = ycqdays * day;
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取日期范围内某个人的应出勤天数
|
|
|
|
* @param fromDate 开始日期
|
|
|
|
* @param toDate 结束日期
|
|
|
|
* @param resourceId 人员id
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public static int getWorkdays(String fromDate, String toDate, String resourceId) {
|
|
|
|
int workDays = 0;
|
|
|
|
/**统计应出勤天数*/
|
|
|
|
KQWorkTime kqWorkTime = new KQWorkTime();
|
|
|
|
boolean isEnd = false;
|
|
|
|
for (String date = fromDate; !isEnd; ) {
|
|
|
|
if (date.compareTo(toDate)>=0) {
|
|
|
|
isEnd = true;
|
|
|
|
}
|
|
|
|
boolean isWorkDay = kqWorkTime.isWorkDay(resourceId, date);
|
|
|
|
if (isWorkDay) {
|
|
|
|
workDays += 1;
|
|
|
|
}
|
|
|
|
date = DateUtil.getDate(date, 1);
|
|
|
|
}
|
|
|
|
return workDays;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 比较时间的大小
|
|
|
|
* @param a
|
|
|
|
* @param b
|
|
|
|
* @return
|
|
|
|
* @throws ParseException
|
|
|
|
*/
|
|
|
|
public static boolean compareDate(String a, String b){
|
|
|
|
boolean bool = false;
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
try {
|
|
|
|
long t1 = sdf.parse(a).getTime();
|
|
|
|
long t2 = sdf.parse(b).getTime();
|
|
|
|
if (t1 >= t2) {
|
|
|
|
bool = true;
|
|
|
|
}
|
|
|
|
return bool;
|
|
|
|
}catch (Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
return bool;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|