Merge branch 'dev' into dev-chenwnj

# Conflicts:
#	src/com/engine/kq/cmd/report/GetKQReportCmd.java
dev-chenwnj
chenwei 1 year ago
commit 3836779156

@ -0,0 +1,64 @@
<%@ page import="weaver.general.*" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.lang3.StringUtils" %>
<%@ page import="java.time.format.DateTimeFormatter" %>
<%@ page import="java.time.LocalDate" %>
<%@ page import="java.time.Period" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="com.engine.kq.biz.KQWorkTime" %>
<%@ page import="com.engine.kq.biz.KQHolidaySetBiz" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> dataMap = null;
JSONObject jsonObject = new JSONObject();
int count = 0;
int weekendHour = 8 ;
User user = HrmUserVarify.getUser(request , response) ;
KQWorkTime kqWorkTime = new KQWorkTime();
KQHolidaySetBiz kqHolidaySetBiz = new KQHolidaySetBiz();
String currentuserid = Util.null2String(request.getParameter("userid"));
if(StringUtils.isBlank(currentuserid)){
currentuserid = user.getUID() +"";
}
String startdate = Util.null2String(request.getParameter("startdate"));
String enddate = Util.null2String(request.getParameter("enddate"));
if(StringUtils.isNotBlank(startdate) && StringUtils.isNotBlank(enddate)){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localstartdate = LocalDate.parse(startdate, formatter);
LocalDate localenddate = LocalDate.parse(enddate, formatter);
Period period = Period.between(localstartdate, localenddate);
int days = period.getDays();
for(int i=0;i<=days;i++){
LocalDate localCurrentDate = localstartdate.plusDays(i);
String currentDate= localCurrentDate.toString();
// out.println("currentDate:"+currentDate);
// out.println("isworkday:"+kqHolidaySetBiz.isHoliday(currentuserid,currentDate,true)+"</br>");
if(kqHolidaySetBiz.isHoliday(currentuserid,currentDate,true)){//非工作日
dataMap = new HashMap<String, String>();
dataMap.put("currentDate",currentDate);
dataMap.put("hour",weekendHour+"");
list.add(dataMap);
count = count+ weekendHour ;
}
}
}
jsonObject.put("code","200");
jsonObject.put("data",list);
jsonObject.put("count",count);
%>
<%=jsonObject.toString() %>

@ -935,8 +935,8 @@ public class KQFormatData extends BaseBean {
*/
BaseBean bb = new BaseBean();
String offdutyId = Util.null2String(PropBean.getUfPropValue("shift.offduty.id"),"7");
bb.writeLog("offdutyId:"+offdutyId);
if(offdutyId.equals(workTime.getSerialId())){
bb.writeLog("userid:"+userId+" offdutyId:"+offdutyId+" getSerialId:"+serialid);
if(offdutyId.equals(serialid)){
bb.writeLog("start 公休(09:00-18:00) ");
params.add(null);
@ -959,16 +959,18 @@ public class KQFormatData extends BaseBean {
params.add(0);
params.add(0);
Map<String,Object> leaveInfo_gx = new HashMap<>();//请假信息
Map<String,Object> otherinfo_gx = new HashMap<>();//存一些用得到的信息
Map<String,Object> leaveInfo_gx = new HashMap<String,Object>();//请假信息
Map<String,Object> otherinfo_gx = new HashMap<String,Object>();//存一些用得到的信息
params.add(JSONObject.toJSONString(leaveInfo_gx));
params.add(null);
params.add(0);
params.add(0);
params.add(0);
params.add(JSONObject.toJSONString(otherinfo_gx));
params.add(null);
}else{
bb.writeLog("qit start");
params.add(signInDate);
params.add(signInTime);
params.add(signInId.length() == 0 ? null : signInId);

@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.kq.biz.*;
import com.engine.kq.biz.KQReportBiz;
import com.engine.kq.cmd.shiftmanagement.toolkit.ShiftManagementToolKit;
import com.engine.kq.util.ExcelUtil;
import com.engine.kq.util.KQDurationCalculatorUtil;
@ -176,12 +176,20 @@ public class ExportDailyExcelCmd extends AbstractCommonCommand<Map<String, Objec
titleList.add(title);
}
//刘浩 导出新增列[夜班天数]-begin
//刘浩 导出新增列[夜班天数]-begin
title = new HashMap<>();
title.put("title","夜班天数");
title.put("title","夜班天数");
title.put("width",30*256);
title.put("rowSpan", 3);
titleList.add(title);
//刘浩 导出新增列[小夜班天数]-begin
title = new HashMap<>();
title.put("title","小夜班天数");
title.put("width",30*256);
title.put("rowSpan", 3);
titleList.add(title);
//刘浩 导出新增列[夜班天数]-end
sheet.put("titleList", titleList);
@ -492,11 +500,22 @@ public class ExportDailyExcelCmd extends AbstractCommonCommand<Map<String, Objec
}
}
//刘浩 夜班天数 -- begin
//刘浩 夜班天数 -- begin
writeLog("howec-serialidx:::::::::"+serialidx);
writeLog("howec-signintime1x:::::::::"+signintime1x);
writeLog("howec-signouttime1x:::::::::"+signouttime1x);
if(serialidx.contains("夜班")) {
if(serialidx.contains("值夜班")) {
if((!"未打卡".equals(signintime1x)) && (!"未打卡".equals(signouttime1x))) {
data.add("1");
}else {
data.add("0");
}
}else {
data.add("0");
}
// 刘浩 小夜班天数 --
if(serialidx.contains("两班夜班")) {
if((!"未打卡".equals(signintime1x)) && (!"未打卡".equals(signouttime1x))) {
data.add("1");
}else {
@ -505,7 +524,8 @@ public class ExportDailyExcelCmd extends AbstractCommonCommand<Map<String, Objec
}else {
data.add("0");
}
//刘浩 夜班天数 -- end
//刘浩 大小夜班天数 -- end
dataList.add(data);
}

@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.kq.biz.*;
import com.engine.kq.biz.KQReportBiz;
import com.engine.kq.util.ExcelUtil;
import com.engine.kq.util.KQDurationCalculatorUtil;
import com.engine.kq.util.UtilKQ;
@ -191,12 +191,19 @@ public class ExportExcelCmd extends AbstractCommonCommand<Map<String, Object>> {
}
titleList.add(title);
}
//刘浩 新增一列[夜班天数]
//刘浩 新增一列[夜班天数]
title = new HashMap();
title.put("title","夜班天数");
title.put("title","夜班天数");
title.put("width", 30 * 256);
title.put("rowSpan",3);
titleList.add(title);
//刘浩 新增一列[小夜班天数]
title = new HashMap();
title.put("title","小夜班天数");
title.put("width", 30 * 256);
title.put("rowSpan",3);
titleList.add(title);
sheet.put("titleList", titleList);
String forgotBeginWorkCheck_field = " sum(b.forgotBeginWorkCheck) ";
@ -488,12 +495,13 @@ public class ExportExcelCmd extends AbstractCommonCommand<Map<String, Object>> {
}
s1 = s1.substring(0,s1.length()-1);
String sql88 = "select b.resourceid,b.signintime,b.signouttime,b.serialid from kq_format_detail b where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
//刘浩--大夜班天数统计
String sql88 = "select b.resourceid,b.signintime,b.signouttime,b.serialid from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and b.serialid in (3,5,6)";
String sql99 = "select count(b.resourceid) as sums from kq_format_detail b where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.kqdate in("+s1+") and c.serial like '%值夜班%'";
String sql99 = "select count(b.resourceid) as sums from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and b.serialid in (3,5,6)";
" and b.kqdate in("+s1+") and c.serial like '%值夜班%'";
writeLog("howec:::::sql2:"+sql88);
RecordSet rs99 = new RecordSet();
rs99.execute(sql99);
@ -502,8 +510,26 @@ public class ExportExcelCmd extends AbstractCommonCommand<Map<String, Object>> {
counts99 = String.valueOf(rs99.getInt("sums"));
}
data.add(counts99);
//刘浩--小夜班天数统计
sql88 = "select b.resourceid,b.signintime,b.signouttime,b.serialid from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and c.serial like '%两班夜班%'";
sql99 = "select count(b.resourceid) as sums from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and c.serial like '%两班夜班%'";
writeLog("howec:::::sql2-1:"+sql88);
rs99 = new RecordSet();
rs99.execute(sql99);
counts99 = "0";
if (rs99.next()){
counts99 = String.valueOf(rs99.getInt("sums"));
}
data.add(counts99);
}else {
data.add("0");
data.add("0");
}
dataList.add(data);
}

@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.kq.biz.*;
import com.engine.kq.biz.KQReportBiz;
import com.engine.kq.cmd.shiftmanagement.toolkit.ShiftManagementToolKit;
import com.engine.kq.entity.WorkTimeEntity;
import com.engine.kq.log.KQLog;
@ -44,8 +44,8 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
RecordSet rs = new RecordSet();
String sql = "";
try{
writeLog("howeccccccccccccggggggg1"+ new Date());
String pageUid = PageUidFactory.getHrmPageUid("KQDailyReport");
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
@ -54,7 +54,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
ShiftManagementToolKit shiftManagementToolKit = new ShiftManagementToolKit();
KQReportBiz kqReportBiz = new KQReportBiz();
KQLeaveRulesBiz kqLeaveRulesBiz = new KQLeaveRulesBiz();
writeLog("howeccccccccccccggggggg2"+ new Date());
String rightSql = new KQReportBiz().getReportRight("2",""+user.getUID(),"a");
JSONObject jsonObj = JSON.parseObject(Util.null2String(params.get("data")));
@ -71,6 +71,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
toDate = TimeUtil.getDateByOption(typeselect,"1");
}
}
writeLog("howeccccccccccccggggggg3"+ new Date());
//人员状态
String status = Util.null2String(jsonObj.get("status"));
String subCompanyId = Util.null2String(jsonObj.get("subCompanyId"));
@ -86,7 +87,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
int pageCount = 0;
int isHavePre = 0;
int isHaveNext = 0;
writeLog("howeccccccccccccggggggg4"+ new Date());
List<Map<String, Object>> leaveRules = kqLeaveRulesBiz.getAllLeaveRules();
List<Object> columns = new ArrayList();
Map<String,Object> column = null;
@ -95,6 +96,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
Map<String,Object> mapChildColumnInfo = null;
List<Object> childColumns = null;
KQReportFieldComInfo kqReportFieldComInfo = new KQReportFieldComInfo();
writeLog("howeccccccccccccggggggg5"+ new Date());
while (kqReportFieldComInfo.next()){
if(Util.null2String(kqReportFieldComInfo.getParentid()).length()>0)continue;
boolean isDaily = kqReportFieldComInfo.getReportType().equals("daily");
@ -117,6 +119,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
column.put("rowSpan", 3);
column.put("width", Util.getIntValue(kqReportFieldComInfo.getWidth()));
}
writeLog("howeccccccccccccggggggg6"+ new Date());
if(kqReportFieldComInfo.getReportType1().equals("daily")){
column.put("isdaily", "1");
}
@ -132,6 +135,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
// fromDate = today;
// }
// }
writeLog("howeccccccccccccggggggg7"+ new Date());
String forgotBeginWorkCheck_field = " b.forgotbeginworkcheck ";
if(rs.getDBType().equalsIgnoreCase("oracle")&&!Util.null2String(rs.getOrgindbtype()).equals("dm")&&!Util.null2String(rs.getOrgindbtype()).equals("st")&&!Util.null2String(rs.getOrgindbtype()).equals("jc")) {
@ -152,7 +156,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
if(subCompanyId.length()>0){
sqlWhere +=" and a.subcompanyid1 in("+subCompanyId+") ";
}
writeLog("howeccccccccccccggggggg8"+ new Date());
if(departmentId.length()>0){
sqlWhere +=" and a.departmentid in("+departmentId+") ";
}
@ -198,7 +202,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
String orderBy = " order by a.dsporder asc, a.lastname asc, b.kqdate asc ";
String descOrderBy = " order by a.dsporder desc, a.lastname desc, b.kqdate desc ";
sql = backFields + sqlFrom + sqlWhere + orderBy;
writeLog("howeccccccccccccggggggg9"+ new Date());
if (pageIndex > 0 && pageSize > 0) {
if (rs.getDBType().equals("oracle")) {
sql = " select " + sql;
@ -239,7 +243,6 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
String isShowFullPath = Util.null2String(kqSettingsComInfo.getMain_val(fullPathMainKey),"0");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
rs.execute(sql);
writeLog("howec::::::::::::::::sql:"+sql);
while (rs.next()) {
@ -291,6 +294,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
}
data.put(fieldName + "Id", fieldValueID);
data.put(fieldName, fieldValue);
} else if (fieldName.equals("jobtitle")) {
String fieldValueID = rs.getString("jobtitle");
fieldValue = jobTitlesComInfo.getJobTitlesname(rs.getString("jobtitle"));
@ -300,6 +304,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
}
data.put(fieldName + "Id", fieldValueID);
data.put(fieldName, fieldValue);
} else if (kqReportFieldComInfo.getParentid().equals("overtime") || kqReportFieldComInfo.getParentid().equals("overtime_nonleave")
|| kqReportFieldComInfo.getParentid().equals("overtime_4leave") || fieldName.equals("businessLeave") || fieldName.equals("officialBusiness")) {
if (fieldName.equals("overtimeTotal")) {
@ -322,9 +327,11 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
} else {
fieldValue = KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(id + "|" + kqdate + "|" + fieldName)));
}
data.put(fieldName, fieldValue);
} else if (fieldName.equals("serialid")) {
fieldValue = Util.null2String(rs.getString(fieldName));
if (fieldValue.length()>0) {//弹性工作制没有班次
// data.put("serialid", shiftManagementToolKit.getShiftOnOffWorkSections(fieldValue, user.getLanguage()));
@ -357,6 +364,7 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
data.put(fieldName, fieldValue);
}
}
data.putAll(this.getSignDetailInfo(id, kqdate));
//请假
@ -413,7 +421,6 @@ public class GetKQDailyReportCmd extends AbstractCommonCommand<Map<String, Objec
data.put("kqdate", kqdate);
datas.add(data);
}
List<Object> lsHolidays = KQHolidaySetBiz.getHolidaySetListByScope(""+user.getUID(),fromDate,toDate);
retmap.put("holidays", lsHolidays);
retmap.put("columns",columns);

@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.kq.biz.*;
import com.engine.kq.biz.KQReportBiz;
import com.engine.kq.util.KQDurationCalculatorUtil;
import com.engine.kq.util.PageUidFactory;
import weaver.common.DateUtil;
@ -23,7 +23,6 @@ import weaver.systeminfo.SystemEnv;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
@ -44,12 +43,11 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
String pageUid = PageUidFactory.getHrmPageUid("KQReport");
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
KQLeaveRulesBiz kqLeaveRulesBiz = new KQLeaveRulesBiz();
KQReportBiz kqReportBiz = new KQReportBiz();
JSONObject jsonObj = JSON.parseObject(Util.null2String(params.get("data")));
String attendanceSerial = Util.null2String(jsonObj.get("attendanceSerial"));
String fromDate = Util.null2String(jsonObj.get("fromDate"));
@ -101,7 +99,6 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
if(KQReportFieldComInfo.cascadekey2fieldname.keySet().contains(kqReportFieldComInfo.getFieldname()))continue;
if(!kqReportFieldComInfo.getReportType().equals("all") && !kqReportFieldComInfo.getReportType().equals("month"))continue;
if("leave".equalsIgnoreCase(kqReportFieldComInfo.getFieldname())&&leaveRules.size()==0)continue;
column = new HashMap();
column.put("title", SystemEnv.getHtmlLabelNames(kqReportFieldComInfo.getFieldlabel(), user.getLanguage()));
column.put("unit", KQReportBiz.getUnitType(kqReportFieldComInfo, user));
@ -124,13 +121,13 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
columns.addAll(this.getCascadeKeyColumnsInfo(kqReportFieldComInfo.getCascadekey(),user));
}
//Liuhao 新增列[夜班天数] --begin
//Liuhao 新增列[夜班天数] --begin
column = new HashMap();
column.put("title","夜班天数");
column.put("title","夜班天数");
column.put("unit","天");
column.put("dataIndex","nightdays");
column.put("dataIndex","nightdaysd");
column.put("type","businessLeave");
column.put("key","nightdays");
column.put("key","nightdaysd");
column.put("isSystem","1");
column.put("rowSpan","3");
column.put("width",65);
@ -176,26 +173,25 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
columns.add(column);
String forgotBeginWorkCheck_field = " sum(b.forgotBeginWorkCheck) ";
if(rs.getDBType().equalsIgnoreCase("oracle")) {
forgotBeginWorkCheck_field = " sum(nvl(b.forgotBeginWorkCheck,0)) ";
}else if((rs.getDBType()).equalsIgnoreCase("mysql")){
forgotBeginWorkCheck_field = " sum(ifnull(b.forgotBeginWorkCheck,0)) ";
}else {
forgotBeginWorkCheck_field = " sum(isnull(b.forgotBeginWorkCheck,0)) ";
}
if(rs.getDBType().equalsIgnoreCase("oracle")) {
forgotBeginWorkCheck_field = " sum(nvl(b.forgotBeginWorkCheck,0)) ";
}else if((rs.getDBType()).equalsIgnoreCase("mysql")){
forgotBeginWorkCheck_field = " sum(ifnull(b.forgotBeginWorkCheck,0)) ";
}else {
forgotBeginWorkCheck_field = " sum(isnull(b.forgotBeginWorkCheck,0)) ";
}
Map<String,Object> definedFieldInfo = new KQFormatBiz().getDefinedField();
String definedFieldSum = Util.null2String(definedFieldInfo.get("definedFieldSum"));
String backFields = " a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1 as subcompanyid,a.departmentid,a.jobtitle," +
" sum(b.workdays) as workdays,sum(b.workMins) as workMins,sum(b.attendancedays) as attendancedays," +
" sum(b.attendanceMins) as attendanceMins,sum(b.beLate) as beLate,sum(b.beLateMins) as beLateMins, " +
" sum(b.graveBeLate) as graveBeLate, sum(b.graveBeLateMins) as graveBeLateMins,sum(b.leaveEearly) as leaveEearly," +
" sum(b.leaveEarlyMins) as leaveEarlyMins, sum(b.graveLeaveEarly) as graveLeaveEarly, " +
" sum(b.graveLeaveEarlyMins) as graveLeaveEarlyMins,sum(b.absenteeism) as absenteeism, " +
" sum(b.signdays) as signdays,sum(b.signmins) as signmins, "+
" sum(b.absenteeismMins) as absenteeismMins, sum(b.forgotCheck)+"+forgotBeginWorkCheck_field+" as forgotCheck "+(definedFieldSum.length()>0?","+definedFieldSum+"":"");
" sum(b.workdays) as workdays,sum(b.workMins) as workMins,sum(b.attendancedays) as attendancedays," +
" sum(b.attendanceMins) as attendanceMins,sum(b.beLate) as beLate,sum(b.beLateMins) as beLateMins, " +
" sum(b.graveBeLate) as graveBeLate, sum(b.graveBeLateMins) as graveBeLateMins,sum(b.leaveEearly) as leaveEearly," +
" sum(b.leaveEarlyMins) as leaveEarlyMins, sum(b.graveLeaveEarly) as graveLeaveEarly, " +
" sum(b.graveLeaveEarlyMins) as graveLeaveEarlyMins,sum(b.absenteeism) as absenteeism, " +
" sum(b.signdays) as signdays,sum(b.signmins) as signmins, "+
" sum(b.absenteeismMins) as absenteeismMins, sum(b.forgotCheck)+"+forgotBeginWorkCheck_field+" as forgotCheck "+(definedFieldSum.length()>0?","+definedFieldSum+"":"");
if(rs.getDBType().equals("oracle")){
backFields = "/*+ index(kq_format_total IDX_KQ_FORMAT_TOTAL_KQDATE) */ "+backFields;
@ -206,7 +202,6 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
if(subCompanyId.length()>0){
sqlWhere +=" and a.subcompanyid1 in("+subCompanyId+") ";
}
if(departmentId.length()>0){
sqlWhere +=" and a.departmentid in("+departmentId+") ";
}
@ -226,14 +221,13 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
sqlWhere += " and a.loginid is not null "+(rs.getDBType().equals("oracle")?"":" and a.loginid<>'' ");
}
if(status.length()>0){
if (!status.equals("8") && !status.equals("9")) {
sqlWhere += " and a.status = "+status+ "";
}else if (status.equals("8")) {
sqlWhere += " and (a.status = 0 or a.status = 1 or a.status = 2 or a.status = 3) ";
}
}
if(status.length()>0){
if (!status.equals("8") && !status.equals("9")) {
sqlWhere += " and a.status = "+status+ "";
}else if (status.equals("8")) {
sqlWhere += " and (a.status = 0 or a.status = 1 or a.status = 2 or a.status = 3) ";
}
}
sql = " select count(*) as c from ( select 1 as c "+sqlFrom+sqlWhere+groupBy+") t";
rs.execute(sql);
if (rs.next()){
@ -291,7 +285,7 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
if (rs.getDBType().equals("oracle")) {
sql = " select * from (select " + sql+") t "+orderBy;
sql = "select * from ( select row_.*, rownum rownum_ from ( " + sql + " ) row_ where rownum <= "
+ (pageIndex * pageSize) + ") where rownum_ > " + ((pageIndex - 1) * pageSize);
+ (pageIndex * pageSize) + ") where rownum_ > " + ((pageIndex - 1) * pageSize);
} else if (rs.getDBType().equals("mysql")) {
sql = " select * from (select " + sql+") t "+orderBy;
sql = "select t1.* from (" + sql + ") t1 limit " + ((pageIndex - 1) * pageSize) + "," + pageSize;
@ -309,7 +303,7 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
topSize = count - (pageSize * (pageIndex - 1));
}
sql = " select top " + topSize + " * from ( select top " + topSize + " * from ( select top "
+ (pageIndex * pageSize) + sql + orderBy+ " ) tbltemp1 " + descOrderBy + ") tbltemp2 " + orderBy;
+ (pageIndex * pageSize) + sql + orderBy+ " ) tbltemp1 " + descOrderBy + ") tbltemp2 " + orderBy;
} else {
sql = " select top " + pageSize + sql+orderBy;
}
@ -318,7 +312,7 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
sql = " select " + sql;
}
writeLog("howeccccccccccccggggggg10"+ System.currentTimeMillis());
// #1475814-概述:满足考勤报分部部门显示及导出时显示全路径
String fullPathMainKey = "show_full_path";
KQSettingsComInfo kqSettingsComInfo = new KQSettingsComInfo();
@ -337,6 +331,7 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
/*考勤二开--转事假end*/
rs.execute(sql);
writeLog("howeccccccccccccggggggg11"+ System.currentTimeMillis());
while (rs.next()) {
data = new HashMap<>();
kqReportFieldComInfo.setTofirstRow();
@ -390,8 +385,9 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
data.put(serialIds.get(i), kqReportBiz.getSerialCount(id,fromDate,toDate,serialIds.get(i)));
}
}else if(kqReportFieldComInfo.getParentid().equals("overtime")||kqReportFieldComInfo.getParentid().equals("overtime_nonleave")
||kqReportFieldComInfo.getParentid().equals("overtime_4leave")||fieldName.equals("businessLeave") || fieldName.equals("officialBusiness")){
||kqReportFieldComInfo.getParentid().equals("overtime_4leave")||fieldName.equals("businessLeave") || fieldName.equals("officialBusiness")){
if(fieldName.equals("overtimeTotal")){
writeLog("howeccccccccccccggggggg12"+ System.currentTimeMillis());
double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|workingDayOvertime_4leave")));
workingDayOvertime_4leave = workingDayOvertime_4leave<0?0:workingDayOvertime_4leave;
double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|restDayOvertime_4leave")));
@ -399,37 +395,37 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
double holidayOvertime_4leave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|holidayOvertime_4leave")));
holidayOvertime_4leave = holidayOvertime_4leave<0?0:holidayOvertime_4leave;
double workingDayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|workingDayOvertime_nonleave")));
workingDayOvertime_nonleave = workingDayOvertime_nonleave<0?0:workingDayOvertime_nonleave;
double restDayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|restDayOvertime_nonleave")));
restDayOvertime_nonleave = restDayOvertime_nonleave<0?0:restDayOvertime_nonleave;
double holidayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|holidayOvertime_nonleave")));
holidayOvertime_nonleave = holidayOvertime_nonleave<0?0:holidayOvertime_nonleave;
double workingDayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|workingDayOvertime_nonleave")));
workingDayOvertime_nonleave = workingDayOvertime_nonleave<0?0:workingDayOvertime_nonleave;
double restDayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|restDayOvertime_nonleave")));
restDayOvertime_nonleave = restDayOvertime_nonleave<0?0:restDayOvertime_nonleave;
double holidayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|holidayOvertime_nonleave")));
holidayOvertime_nonleave = holidayOvertime_nonleave<0?0:holidayOvertime_nonleave;
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(workingDayOvertime_4leave+restDayOvertime_4leave+holidayOvertime_4leave+
workingDayOvertime_nonleave+restDayOvertime_nonleave+holidayOvertime_nonleave));
}else if(fieldName.equals("businessLeave") || fieldName.equals("officialBusiness")){
String businessLeaveData = Util.null2s(Util.null2String(flowData.get(id+"|"+fieldName)),"0.0");
String backType = fieldName+"_back";
String businessLeavebackData = Util.null2s(Util.null2String(flowData.get(id+"|"+backType)),"0.0");
String businessLeave = "";
try{
//以防止出现精度问题
if(businessLeaveData.length() == 0){
businessLeaveData = "0.0";
}
if(businessLeavebackData.length() == 0){
businessLeavebackData = "0.0";
}
BigDecimal b_businessLeaveData = new BigDecimal(businessLeaveData);
BigDecimal b_businessLeavebackData = new BigDecimal(businessLeavebackData);
businessLeave = b_businessLeaveData.subtract(b_businessLeavebackData).toString();
if(Util.getDoubleValue(businessLeave, -1) < 0){
businessLeave = "0.0";
String businessLeaveData = Util.null2s(Util.null2String(flowData.get(id+"|"+fieldName)),"0.0");
String backType = fieldName+"_back";
String businessLeavebackData = Util.null2s(Util.null2String(flowData.get(id+"|"+backType)),"0.0");
String businessLeave = "";
try{
//以防止出现精度问题
if(businessLeaveData.length() == 0){
businessLeaveData = "0.0";
}
if(businessLeavebackData.length() == 0){
businessLeavebackData = "0.0";
}
BigDecimal b_businessLeaveData = new BigDecimal(businessLeaveData);
BigDecimal b_businessLeavebackData = new BigDecimal(businessLeavebackData);
businessLeave = b_businessLeaveData.subtract(b_businessLeavebackData).toString();
if(Util.getDoubleValue(businessLeave, -1) < 0){
businessLeave = "0.0";
}
}catch (Exception e){
}
}catch (Exception e){
}
fieldValue = KQDurationCalculatorUtil.getDurationRound(businessLeave);
fieldValue = KQDurationCalculatorUtil.getDurationRound(businessLeave);
}else{
fieldValue = KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(id+"|"+fieldName)));
}
@ -447,7 +443,7 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
}
data.put(fieldName,fieldValue);
}
writeLog("howeccccccccccccggggggg13"+ System.currentTimeMillis());
//请假
List<Map<String, Object>> allLeaveRules = kqLeaveRulesBiz.getAllLeaveRules();
Map<String, Object> leaveRule = null;
@ -458,45 +454,31 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
String flowLeaveBackType = Util.null2String("leavebackType_"+leaveRule.get("id"));
String leavebackData = Util.null2s(Util.null2String(flowData.get(id+"|"+flowLeaveBackType)),"0.0");
String b_flowLeaveData = "";
String flowLeaveData = "";
String flowLeaveData = "";
try{
//以防止出现精度问题
if(leaveData.length() == 0){
leaveData = "0.0";
leaveData = "0.0";
}
if(leavebackData.length() == 0){
leavebackData = "0.0";
leavebackData = "0.0";
}
BigDecimal b_leaveData = new BigDecimal(leaveData);
BigDecimal b_leavebackData = new BigDecimal(leavebackData);
b_flowLeaveData = b_leaveData.subtract(b_leavebackData).toString();
if(Util.getDoubleValue(b_flowLeaveData, -1) < 0){
b_flowLeaveData = "0.0";
b_flowLeaveData = "0.0";
}
}catch (Exception e){
writeLog("GetKQReportCmd:leaveData"+leaveData+":leavebackData:"+leavebackData+":"+e);
}
writeLog("howeccccccccccccggggggg14"+ System.currentTimeMillis());
//考虑下冻结的数据
if(b_flowLeaveData.length() > 0){
flowLeaveData = KQDurationCalculatorUtil.getDurationRound(b_flowLeaveData);
}else{
flowLeaveData = KQDurationCalculatorUtil.getDurationRound(Util.null2String(Util.getDoubleValue(leaveData,0.0)-Util.getDoubleValue(leavebackData,0.0)));
}
/*考勤二开--转事假start*/
if ( flowType.equals( ("leaveType_" + calLeaveId) ) ) {
bb.writeLog("GetKQReportCmd flowLeaveData start ");
bb.writeLog("flowLeaveData: " + flowLeaveData);
double temp = Util.getDoubleValue(Util.null2String(flowData.get("ToComLeaveData|" + resourceId)));
bb.writeLog("temp: " + temp);
if (temp >= 0.00) {
flowLeaveData = flowLeaveData + temp;
}
bb.writeLog("flowLeaveData: " + flowLeaveData);
}
/*考勤二开--转事假end*/
data.put(flowType,flowLeaveData);
}
@ -535,13 +517,13 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
s1 = s1+"'"+strdate+"',";
}
s1 = s1.substring(0,s1.length()-1);
String sql88 = "select b.resourceid,b.signintime,b.signouttime,b.serialid from kq_format_detail b where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
//刘浩 大夜班天数
String sql88 = "select b.resourceid,b.signintime,b.signouttime,b.serialid from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and b.serialid in (3,5,6)";
String sql99 = "select count(b.resourceid) as sums from kq_format_detail b where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.kqdate in("+s1+") and c.serial like '%值夜班%'";
String sql99 = "select count(b.resourceid) as sums from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and b.serialid in (3,5,6)";
" and b.kqdate in("+s1+") and c.serial like '%值夜班%'";
writeLog("howec:::::sql1:"+sql88);
RecordSet rs99 = new RecordSet();
rs99.execute(sql99);
@ -549,9 +531,25 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
if (rs99.next()){
counts99 = String.valueOf(rs99.getInt("sums"));
}
data.put("nightdays",counts99);
data.put("nightdaysd",counts99);
//刘浩 小夜班天数
sql88 = "select b.resourceid,b.signintime,b.signouttime,b.serialid from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and c.serial like '%两班夜班%'";
sql99 = "select count(b.resourceid) as sums from kq_format_detail b inner join kq_ShiftManagement c on c.id = b.serialid where b.resourceid = "+resourceid+" and b.signintime is not null and b.signouttime is not null " +
" and b.signintime !='' and b.signouttime !='' " +
" and b.kqdate in("+s1+") and c.serial like '%两班夜班%'";
writeLog("howec:::::sql1-1:"+sql88);
rs99 = new RecordSet();
rs99.execute(sql99);
counts99 = "0";
if (rs99.next()){
counts99 = String.valueOf(rs99.getInt("sums"));
}
data.put("nightdaysx",counts99);
}else {
data.put("nightdays","0");
data.put("nightdaysd","0");
data.put("nightdaysx","0");
}
datas.add(data);
}
@ -592,7 +590,7 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
column.put("width", 65);
column.put("dataIndex", serialIds.get(i));
column.put("key", serialIds.get(i));
column.put("rowSpan", 2);
column.put("rowSpan", 2);
column.put("colSpan", 1);
sumChildColumnWidth+=65;
lsChildColumns.add(column);
@ -618,48 +616,48 @@ public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
lsChildColumns.add(column);
}
}else if(parentid.equals("overtime")){
String[] overtimeChild = {"overtime_nonleave","overtime_4leave","overtimeTotal"};
for(int i=0;i<overtimeChild.length;i++){
String id = overtimeChild[i];
column = new HashMap();
String fieldlabel = "";
column.put("unit", "");
if("overtime_nonleave".equalsIgnoreCase(id)){
fieldlabel = "125805";
}else if("overtime_4leave".equalsIgnoreCase(id)){
fieldlabel = "125804";
}else{
fieldlabel = "523";
column.put("showDetial","1");
String unitType = (KQOvertimeRulesBiz.getMinimumUnit()==3 || KQOvertimeRulesBiz.getMinimumUnit()==5 ||KQOvertimeRulesBiz.getMinimumUnit()==6)?"2":"1";
String unitTypeName = "";
if(Util.null2String(unitType).length()>0){
if(unitType.equals("1")){
unitTypeName=SystemEnv.getHtmlLabelName(1925, user.getLanguage());
}else if(unitType.equals("2")){
unitTypeName=SystemEnv.getHtmlLabelName(391, user.getLanguage());
}else if(unitType.equals("3")){
unitTypeName=SystemEnv.getHtmlLabelName(18083, user.getLanguage());
}
}
column.put("unit", unitTypeName);
}
column.put("title", SystemEnv.getHtmlLabelNames(fieldlabel, user.getLanguage()));
column.put("dataIndex", id);
column.put("key", id);
column.put("rowSpan", 1);
Map<String,Object> mapChildColumnInfo = getChildColumnsInfo(id, user);
int childWidth = 65;
List<Object> childColumns = (List<Object>)mapChildColumnInfo.get("childColumns");
if(childColumns.size()>0) {//跨列width取子列的width
column.put("children", childColumns);
childWidth = Util.getIntValue(Util.null2String(mapChildColumnInfo.get("sumChildColumnWidth")),65);
}
column.put("width", childWidth+"");
sumChildColumnWidth+=childWidth;
lsChildColumns.add(column);
}
}else{
String[] overtimeChild = {"overtime_nonleave","overtime_4leave","overtimeTotal"};
for(int i=0;i<overtimeChild.length;i++){
String id = overtimeChild[i];
column = new HashMap();
String fieldlabel = "";
column.put("unit", "");
if("overtime_nonleave".equalsIgnoreCase(id)){
fieldlabel = "125805";
}else if("overtime_4leave".equalsIgnoreCase(id)){
fieldlabel = "125804";
}else{
fieldlabel = "523";
column.put("showDetial","1");
String unitType = (KQOvertimeRulesBiz.getMinimumUnit()==3 || KQOvertimeRulesBiz.getMinimumUnit()==5 ||KQOvertimeRulesBiz.getMinimumUnit()==6)?"2":"1";
String unitTypeName = "";
if(Util.null2String(unitType).length()>0){
if(unitType.equals("1")){
unitTypeName=SystemEnv.getHtmlLabelName(1925, user.getLanguage());
}else if(unitType.equals("2")){
unitTypeName=SystemEnv.getHtmlLabelName(391, user.getLanguage());
}else if(unitType.equals("3")){
unitTypeName=SystemEnv.getHtmlLabelName(18083, user.getLanguage());
}
}
column.put("unit", unitTypeName);
}
column.put("title", SystemEnv.getHtmlLabelNames(fieldlabel, user.getLanguage()));
column.put("dataIndex", id);
column.put("key", id);
column.put("rowSpan", 1);
Map<String,Object> mapChildColumnInfo = getChildColumnsInfo(id, user);
int childWidth = 65;
List<Object> childColumns = (List<Object>)mapChildColumnInfo.get("childColumns");
if(childColumns.size()>0) {//跨列width取子列的width
column.put("children", childColumns);
childWidth = Util.getIntValue(Util.null2String(mapChildColumnInfo.get("sumChildColumnWidth")),65);
}
column.put("width", childWidth+"");
sumChildColumnWidth+=childWidth;
lsChildColumns.add(column);
}
}else{
KQReportFieldComInfo kqReportFieldComInfo = new KQReportFieldComInfo();
while (kqReportFieldComInfo.next()){
if(kqReportFieldComInfo.getParentid().equals(parentid)) {

@ -0,0 +1,917 @@
package weaver.interfaces.sskj.action;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
*/
@Slf4j
public class WorkLeaveAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
RecordSet rs = new RecordSet();
//获取流程requestId
String requestId = Util.null2String(requestInfo.getRequestid());
// 根据requestId查询考勤建模表信息
List<Map<String, String>> list = getKqFlowLeaveInfo(requestId);
// 记录调休分片扣除后余额(隔月)
double txye = 0;
// 记录调休分片扣除后余额(三月)
double fpyeTwo = 0;
double fpye = 0;
//本月-- 假设:平时=a,休息日=b,节假日=c
double a = 0;
double b = 0;
double c = 0;
//隔月-- 假设:平时=a1,休息日=b1,节假日=c1
double a1 = 0;
double b1 = 0;
double c1 = 0;
//隔月循坏次数累加,本月循环次数累加
int numLast2 = 0;
int numLast = 0;
int numNow =0;
//隔2月-- 假设:平时=a2,休息日=b2,节假日=c2
double a2 = 0;
double b2 = 0;
double c2 = 0;
//遍历数据更新
for (int i = 0; i < list.size(); i++) {
Map<String, String> map = list.get(i);
String mainTableName;
// 获取部门、姓名、请假月份
String departmentid = map.get("departmentid");
String resourceid = map.get("resourceid");
String fromdate = map.get("fromdate");
// 请假时长
String durationdb = map.get("durationdb");
// 加班类别为:本月发放
String field28 = map.get("field28");
// 计算本月剩余加班时长
mainTableName = getMainTableName(field28);
String nowBalance = getOvertimeBalance(mainTableName, departmentid, resourceid, fromdate,field28);
// 判断请假类型上是否为:调休
if (!StringUtils.equals(map.get("newleavetype"), "5")) {
return Action.FAILURE_AND_CONTINUE;
}
if (StringUtils.equals(field28, "4")) {
// 请假时长
double duration = Double.parseDouble(map.get("duration"));
// 判断剩余时长是否大于请假时长
if (Double.parseDouble("".equals(nowBalance)?"0":nowBalance) < Double.parseDouble(durationdb)) {
return Action.FAILURE_AND_CONTINUE;
}
// 获取建模主表名称
mainTableName = getMainTableName(field28);
// 1.查询建模表主键id + 各假期类型对应的值
String id = "";
String psjb = "";
String zmjb = "";
String jrjb = "";
String psjbsy = "";
String zmjbsy = "";
String jrjbsy = "";
String sql2 = " select id,psjb,psjbsy,zmjb,zmjbsy,jrjb,jrjbsy from " + mainTableName + " where bm = ? and xm = ? and ny = ? and jblb = ?";
log.info("-WorkLeaveAction- sql2{}", sql2);
rs.executeQuery(sql2, departmentid, resourceid, fromdate.substring(0, 7),field28);
if (rs.next()) {
id = rs.getString("id");
psjb = rs.getString("psjb");
zmjb = rs.getString("zmjb");
jrjb = rs.getString("jrjb");
psjbsy = rs.getString("psjbsy");
zmjbsy = rs.getString("zmjbsy");
jrjbsy = rs.getString("jrjbsy");
}
log.info("-WorkLeaveAction- id{},psjb{},zmjb{},jrjb{}", id,psjb,zmjb,jrjb);
// 赋值给变量a,b,c
if(i==0){
if(!StringUtils.equals(psjbsy,"")){
a = Double.parseDouble(psjbsy);
}else{
a = Double.parseDouble("".equals(psjb)?"0":psjb);
}
if(!StringUtils.equals(zmjbsy,"")){
b = Double.parseDouble(zmjbsy);
}else{
b = Double.parseDouble("".equals(zmjb)?"0":zmjb);
}
if(!StringUtils.equals(jrjbsy,"")){
c = Double.parseDouble(jrjbsy);
}else{
c = Double.parseDouble("".equals(jrjb)?"0":jrjb);
}
}
String dtlTableName = mainTableName + "_dt2";
log.info("-WorkLeaveAction- dtlTableName{}", dtlTableName);
String insert_detail;
// 1.直接增加明细表数据
insert_detail = "insert into " + dtlTableName + " (mainid,qjr,qjlx,ksrq,kssj,jsrq,jssj,qjsc,qjyy,jblc) values (?,?,?,?,?,?,?,?,?,?)";
log.info("-WorkLeaveAction-insert_detail sql[{}]", insert_detail);
boolean d = rs.executeUpdate(insert_detail, id, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
if (!d) {
log.info("调休申请流程转建模数据失败!");
return Action.FAILURE_AND_CONTINUE;
}
// 增加判断,加班时长扣除顺序:平时>休息日>节假日
holidayDeduction(a,b,c,duration,mainTableName,id,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
} else if (StringUtils.equals(field28, "5")) {
double duration = Double.parseDouble(map.get("duration"));
//隔月发放
//1.查询上个月是否有加班剩余时长lastSum , 本月剩余nowSum
try {
// 上月
String lastMonth = getLastMonth(fromdate);
log.info("-WorkLeaveAction- lastMonth{}", lastMonth);
// 上月加班剩余
String lastBalance = "";
if (i == 0) {
lastBalance = getOvertimeBalance(mainTableName, departmentid, resourceid, lastMonth,field28);
txye = Double.parseDouble("".equals(lastBalance)?"0":lastBalance);
log.info("-WorkLeaveAction- lastBalance{},txye{}", lastBalance,txye);
}
String insert1 = "insert into " + mainTableName + "_dt2" + " (mainid,qjr,qjlx,ksrq,kssj,jsrq,jssj,qjsc,qjyy,jblc) values (?,?,?,?,?,?,?,?,?,?)";
// 上月和本月剩余和小于请假时长
if ((Double.parseDouble("".equals(lastBalance)?"0":lastBalance) + Double.parseDouble("".equals(nowBalance)?"0":nowBalance)) < Double.parseDouble(durationdb)) {
return Action.FAILURE_AND_CONTINUE;
} else {
// 上个月加班不为空
if (StringUtils.isNotBlank(lastBalance)) {
numLast++;
// 查询上个月的主表id
Map<String, String> mainMap = getMonthMainId(mainTableName, departmentid, resourceid, lastMonth);
String mainId = mainMap.get("mainId");
String psjb = mainMap.get("psjb");
String zmjb = mainMap.get("zmjb");
String jrjb = mainMap.get("jrjb");
String psjbsy = mainMap.get("psjbsy");
String zmjbsy = mainMap.get("zmjbsy");
String jrjbsy = mainMap.get("jrjbsy");
// 第一次循坏给全局变量赋值:各类型加班数
// 赋值给变量a1,b1,c1
if(numLast==1){
if(!StringUtils.equals(psjbsy,"")){
a1 = Double.parseDouble(psjbsy);
}else{
a1 = Double.parseDouble("".equals(psjb)?"0":psjb);
}
if(!StringUtils.equals(zmjbsy,"")){
b1 = Double.parseDouble(zmjbsy);
}else{
b1 = Double.parseDouble("".equals(zmjb)?"0":zmjb);
}
if(!StringUtils.equals(jrjbsy,"")){
c1 = Double.parseDouble(jrjbsy);
}else{
c1 = Double.parseDouble("".equals(jrjb)?"0":jrjb);
}
}
// 上个月时长够用直接插入明细表2
if (Double.parseDouble("".equals(lastBalance)?"0":lastBalance) > Double.parseDouble(durationdb)) {
rs.executeUpdate(insert1, mainId, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
// 上个月加班够用,按顺序抵扣:平时》周末》节假日
holidayDeduction(a1,b1,c1,duration,mainTableName,mainId,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
} else {
// 不够用要插入2条明细
if (duration < txye) {
//小于上月剩余,插入上月明细
rs.executeUpdate(insert1, mainId, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
txye = txye - duration;
log.info("-WorkLeaveAction- txye2{}", txye);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a1,b1,c1,duration,mainTableName,mainId,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
} else {
if (txye >= 0) {
if(txye>0){
// 上月还有剩余,但是不够扣除
rs.executeUpdate(insert1, mainId, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), fpye, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a1,b1,c1,fpye,mainTableName,mainId,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
}
// 需要用到本月数据
numNow++;
//本月剩余:
double value = duration - fpye;
// 查询本月的主表id
Map<String, String> mainMapNow = getMonthMainId(mainTableName, departmentid, resourceid, fromdate);
String mainIdNow = mainMapNow.get("mainId");
String psjbNow = mainMapNow.get("psjb");
String zmjbNow = mainMapNow.get("zmjb");
String jrjbNow = mainMapNow.get("jrjb");
String psjbsyNow = mainMapNow.get("psjbsy");
String zmjbsyNow = mainMapNow.get("zmjbsy");
String jrjbsyNow = mainMapNow.get("jrjbsy");
// 赋值给变量a,b,c
if(numNow==1){
if(!StringUtils.equals(psjbsyNow,"")){
a = Double.parseDouble(psjbsyNow);
}else{
a = Double.parseDouble("".equals(psjbNow)?"0":psjbNow);
}
if(!StringUtils.equals(zmjbsyNow,"")){
b = Double.parseDouble(zmjbsyNow);
}else{
b = Double.parseDouble("".equals(zmjbNow)?"0":zmjbNow);
}
if(!StringUtils.equals(jrjbsyNow,"")){
c = Double.parseDouble(jrjbsyNow);
}else{
c = Double.parseDouble("".equals(jrjbNow)?"0":jrjbNow);
}
}
log.info("-WorkLeaveAction5555- nowMonth-mainMapNow{}", mainMapNow);
rs.executeUpdate(insert1, mainIdNow, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), value, "",requestId);
// 上月加班剩余清零
txye = 0;
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a,b,c,value,mainTableName,mainIdNow,psjbNow,zmjbNow,jrjbNow,departmentid,resourceid,fromdate,field28);
}
}
}
} else {
numNow++;
//为空,本月插入一条就行
// 查询本月的主表id
Map<String, String> mainMapNow = getMonthMainId(mainTableName, departmentid, resourceid, fromdate);
log.info("-WorkLeaveAction- lastMonth-mainMapNow3{}", mainMapNow);
String mainIdNow = mainMapNow.get("mainId");
String psjbNow = mainMapNow.get("psjb");
String zmjbNow = mainMapNow.get("zmjb");
String jrjbNow = mainMapNow.get("jrjb");
String psjbsyNow = mainMapNow.get("psjbsy");
String zmjbsyNow = mainMapNow.get("zmjbsy");
String jrjbsyNow = mainMapNow.get("jrjbsy");
// 赋值给变量a,b,c
if(numNow==1){
if(!StringUtils.equals(psjbsyNow,"")){
a = Double.parseDouble(psjbsyNow);
}else{
a = Double.parseDouble("".equals(psjbNow)?"0":psjbNow);
}
if(!StringUtils.equals(zmjbsyNow,"")){
b = Double.parseDouble(zmjbsyNow);
}else{
b = Double.parseDouble("".equals(zmjbNow)?"0":zmjbNow);
}
if(!StringUtils.equals(jrjbsyNow,"")){
c = Double.parseDouble(jrjbsyNow);
}else{
c = Double.parseDouble("".equals(jrjbNow)?"0":jrjbNow);
}
}
rs.executeUpdate(insert1, mainIdNow, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a,b,c,duration,mainTableName,mainIdNow,psjbNow,zmjbNow,jrjbNow,departmentid,resourceid,fromdate,field28);
}
}
} catch (ParseException e) {
return Action.FAILURE_AND_CONTINUE;
}
} else if (StringUtils.equals(field28, "6")) {
double duration = Double.parseDouble(map.get("duration"));
//三月发放
//1.查询上上个月、上个月、本月加班剩余时长lastTwoSum , lastSum , 本月剩余nowSum
// 上上月
String lastTwoMonth;
// 上月
String lastMonth;
try {
lastTwoMonth = getLastTwoMonth(fromdate);
lastMonth = getLastTwoMonth(fromdate);
// 上上个月加班剩余
String lastTwoBalance = "";
// 上个月加班剩余
String lastBalance = "";
if (i == 0) {
lastTwoBalance = getOvertimeBalance(mainTableName, departmentid, resourceid, lastTwoMonth,field28);
fpyeTwo = Double.parseDouble("".equals(lastTwoBalance)?"0":lastTwoBalance);
lastBalance = getOvertimeBalance(mainTableName, departmentid, resourceid, lastMonth,field28);
fpye = Double.parseDouble("".equals(lastBalance)?"0":lastBalance);
log.info("-WorkLeaveAction- lastTwoMonth-lastTwoBalance{},lastTwoBalance{},lastTwoBalance{},lastTwoBalance{}" +
lastTwoBalance, fpyeTwo,lastBalance,fpye);
}
String insert1 = "insert into " + mainTableName + "_dt2" + " (mainid,qjr,qjlx,ksrq,kssj,jsrq,jssj,qjsc,qjyy,jblc) values (?,?,?,?,?,?,?,?,?,?)";
// 上月和本月剩余和小于请假时长
if (Double.parseDouble("".equals(lastTwoBalance)?"0":lastTwoBalance) + Double.parseDouble("".equals(lastBalance)?"0":lastBalance) + Double.parseDouble("".equals(nowBalance)?"0":nowBalance) < Double.parseDouble(durationdb)) {
return Action.FAILURE_AND_CONTINUE;
} else {
// 加班时长够用
// 上上个月时长够用直接插入明细表2
if (StringUtils.isNotBlank(lastTwoBalance)) {
numLast2++;
// 查询上上个月的主表id
Map<String, String> mainMapLast2 = getMonthMainId(mainTableName, departmentid, resourceid, lastTwoMonth);
String mainIdLast2 = mainMapLast2.get("mainId");
String psjbLast2 = mainMapLast2.get("psjb");
String zmjbLast2 = mainMapLast2.get("zmjb");
String jrjbLast2 = mainMapLast2.get("jrjb");
String psjbsyLast2 = mainMapLast2.get("psjbsy");
String zmjbsyLast2 = mainMapLast2.get("zmjbsy");
String jrjbsyLast2 = mainMapLast2.get("jrjbsy");
log.info("-WorkLeaveAction- lastTwoMonth-mainMapLast2{}", mainMapLast2);
// 赋值给变量a2,b2,c2
if(numLast2==1){
if(!StringUtils.equals(psjbsyLast2,"")){
a2 = Double.parseDouble(psjbsyLast2);
}else{
a2 = Double.parseDouble("".equals(psjbLast2)?"0":psjbLast2);
}
if(!StringUtils.equals(zmjbsyLast2,"")){
b2 = Double.parseDouble(zmjbsyLast2);
}else{
b2 = Double.parseDouble("".equals(zmjbLast2)?"0":zmjbLast2);
}
if(!StringUtils.equals(jrjbsyLast2,"")){
c2 = Double.parseDouble(jrjbsyLast2);
}else{
c2 = Double.parseDouble("".equals(jrjbLast2)?"0":jrjbLast2);
}
}
// 上上个月加班大于
if (Double.parseDouble("".equals(lastTwoBalance)?"0":lastTwoBalance) > Double.parseDouble(durationdb)) {
// 全部插入上上个月
rs.executeUpdate(insert1, mainIdLast2, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a2,b2,c2,duration,mainTableName,mainIdLast2,psjbLast2,zmjbLast2,jrjbLast2,departmentid,resourceid,fromdate,field28);
} else {
// 不够用要插入上个月明细2
if (duration < fpyeTwo) {
//小于上上月剩余,插入上上月明细
rs.executeUpdate(insert1, mainIdLast2, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
fpyeTwo = fpyeTwo - duration;
log.info("-WorkLeaveAction- lastTwoMonth-fpyeTwo2{}", fpyeTwo);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a2,b2,c2,duration,mainTableName,mainIdLast2,psjbLast2,zmjbLast2,jrjbLast2,departmentid,resourceid,fromdate,field28);
} else {
if (fpyeTwo >= 0) {
//特殊情况fpyeTwo=0上上月不用插入明细了。。。。。
if(fpyeTwo>0){
// 上上月还有剩余,但是不够扣除
rs.executeUpdate(insert1, mainIdLast2, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), fpyeTwo, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a2,b2,c2,fpyeTwo,mainTableName,mainIdLast2,psjbLast2,zmjbLast2,jrjbLast2,departmentid,resourceid,fromdate,field28);
fpyeTwo = 0;
}
//剩余
double value = duration - fpyeTwo;
log.info("-WorkLeaveAction- lastTwoMonth-value{}", value);
// 判断上个月是否有剩余
if (StringUtils.isNotBlank(lastBalance)) {
numLast++;
// 查询上月的主表id
Map<String, String> mainMapLast = getMonthMainId(mainTableName, departmentid, resourceid, lastMonth);
log.info("-WorkLeaveAction- lastMonth-mainMapLast{}", mainMapLast);
String mainIdLast = mainMapLast.get("mainId");
String psjbLast = mainMapLast.get("psjb");
String zmjbLast = mainMapLast.get("zmjb");
String jrjbLast = mainMapLast.get("jrjb");
String psjbsyLast = mainMapLast2.get("psjbsy");
String zmjbsyLast = mainMapLast2.get("zmjbsy");
String jrjbsyLast = mainMapLast2.get("jrjbsy");
// 赋值给变量a,b,c
if(numLast==1){
if(!StringUtils.equals(psjbsyLast,"")){
a1 = Double.parseDouble(psjbsyLast);
}else{
a1 = Double.parseDouble("".equals(psjbLast)?"0":psjbLast);
}
if(!StringUtils.equals(zmjbsyLast,"")){
b1 = Double.parseDouble(zmjbsyLast);
}else{
b1 = Double.parseDouble("".equals(zmjbLast)?"0":zmjbLast);
}
if(!StringUtils.equals(jrjbsyLast,"")){
c1 = Double.parseDouble(jrjbsyLast);
}else{
c1 = Double.parseDouble("".equals(jrjbLast)?"0":jrjbLast);
}
}
if(fpye > value){
// 上月剩余大于,直接抵扣
rs.executeUpdate(insert1, mainIdLast, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), value, "",requestId);
fpye = fpye - value;
log.info("-WorkLeaveAction- lastTwoMonth-fpye3{}", fpye);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a1,b1,c1,value,mainTableName,mainIdLast,psjbLast,zmjbLast,jrjbLast,departmentid,resourceid,fromdate,field28);
}else{
// 否则,上个月也不够 本月接着扣除
double value2 = value - Double.parseDouble("".equals(lastBalance)?"0":lastBalance);
log.info("-WorkLeaveAction- lastTwoMonth-value2{}", value2);
rs.executeUpdate(insert1, mainIdLast, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), lastBalance, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a1,b1,c1,Double.parseDouble("".equals(lastBalance)?"0":lastBalance),mainTableName,mainIdLast,psjbLast,zmjbLast,jrjbLast,departmentid,resourceid,fromdate,field28);
//本月剩余:
numNow++;
// 查询本月的主表id
Map<String, String> mainMap = getMonthMainId(mainTableName, departmentid, resourceid, fromdate);
String mainId = mainMap.get("mainId");
String psjb = mainMap.get("psjb");
String zmjb = mainMap.get("zmjb");
String jrjb = mainMap.get("jrjb");
String psjbsy = mainMap.get("psjbsy");
String zmjbsy = mainMap.get("zmjbsy");
String jrjbsy = mainMap.get("jrjbsy");
// 赋值给变量a,b,c
if(numNow==1){
if(!StringUtils.equals(psjbsy,"")){
a = Double.parseDouble(psjbsy);
}else{
a = Double.parseDouble("".equals(psjb)?"0":psjb);
}
if(!StringUtils.equals(zmjbsy,"")){
b = Double.parseDouble(zmjbsy);
}else{
b = Double.parseDouble("".equals(zmjb)?"0":zmjb);
}
if(!StringUtils.equals(jrjbsy,"")){
c = Double.parseDouble(jrjbsy);
}else{
c = Double.parseDouble("".equals(jrjb)?"0":jrjb);
}
}
log.info("-WorkLeaveAction- nowMonth-mainMap{}", mainMap);
rs.executeUpdate(insert1, mainId, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), value2, "",requestId);
fpye = 0;
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a,b,c,value2,mainTableName,mainId,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
}
} else {
numNow++;
// 上月为空,本月全部抵扣
// 查询本月的主表id
Map<String, String> mainMap = getMonthMainId(mainTableName, departmentid, resourceid, fromdate);
log.info("-WorkLeaveAction- nowMonth2-mainMap2{}", mainMap);
String mainId = mainMap.get("mainId");
String psjb = mainMap.get("psjb");
String zmjb = mainMap.get("zmjb");
String jrjb = mainMap.get("jrjb");
String psjbsy = mainMap.get("psjbsy");
String zmjbsy = mainMap.get("zmjbsy");
String jrjbsy = mainMap.get("jrjbsy");
// 赋值给变量a,b,c
if(numNow==1){
if(!StringUtils.equals(psjbsy,"")){
a = Double.parseDouble(psjbsy);
}else{
a = Double.parseDouble("".equals(psjb)?"0":psjb);
}
if(!StringUtils.equals(zmjbsy,"")){
b = Double.parseDouble(zmjbsy);
}else{
b = Double.parseDouble("".equals(zmjb)?"0":zmjb);
}
if(!StringUtils.equals(jrjbsy,"")){
c = Double.parseDouble(jrjbsy);
}else{
c = Double.parseDouble("".equals(jrjb)?"0":jrjb);
}
}
rs.executeUpdate(insert1, mainId, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), value, "",requestId);
fpyeTwo = 0;
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a,b,c,value,mainTableName,mainId,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
}
}
}
}
} else {
// 上月和本月剩余和小于请假时长
if ((Double.parseDouble("".equals(lastBalance)?"0":lastBalance) + Double.parseDouble("".equals(nowBalance)?"0":nowBalance)) < Double.parseDouble(durationdb)) {
return Action.FAILURE_AND_CONTINUE;
} else {
// 上个月时长够用直接插入明细表2
if (StringUtils.isNotBlank(lastBalance)) {
numLast++;
// 查询上个月的主表id
Map<String,String> mainMapLast = getMonthMainId(mainTableName, departmentid, resourceid, lastMonth);
log.info("-WorkLeaveAction- lastMonth-mainMapLast3{}", mainMapLast);
String mainIdLast = mainMapLast.get("mainId");
String psjbLast = mainMapLast.get("psjb");
String zmjbLast = mainMapLast.get("zmjb");
String jrjbLast = mainMapLast.get("jrjb");
String psjbsyLast = mainMapLast.get("psjbsy");
String zmjbsyLast = mainMapLast.get("zmjbsy");
String jrjbsyLast = mainMapLast.get("jrjbsy");
// 赋值给变量a,b,c
if(numLast==1){
if(!StringUtils.equals(psjbsyLast,"")){
a1 = Double.parseDouble(psjbsyLast);
}else{
a1 = Double.parseDouble("".equals(psjbLast)?"0":psjbLast);
}
if(!StringUtils.equals(zmjbsyLast,"")){
b1 = Double.parseDouble(zmjbsyLast);
}else{
b1 = Double.parseDouble("".equals(zmjbLast)?"0":zmjbLast);
}
if(!StringUtils.equals(jrjbsyLast,"")){
c1 = Double.parseDouble(jrjbsyLast);
}else{
c1 = Double.parseDouble("".equals(jrjbLast)?"0":jrjbLast);
}
}
// 上个月加班够用
if (Double.parseDouble("".equals(lastBalance)?"0":lastBalance) > Double.parseDouble(durationdb)) {
rs.executeUpdate(insert1, mainIdLast, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a1,b1,c1,duration,mainTableName,mainIdLast,psjbLast,zmjbLast,jrjbLast,departmentid,resourceid,fromdate,field28);
} else {
// 不够用要插入2条明细
if (duration < fpye) {
//小于上月剩余,插入上月明细
rs.executeUpdate(insert1, mainIdLast, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
fpye = fpye - duration;
log.info("-WorkLeaveAction- lastTwoMonth-fpye6{}", fpye);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a1,b1,c1,duration,mainTableName,mainIdLast,psjbLast,zmjbLast,jrjbLast,departmentid,resourceid,fromdate,field28);
} else {
if (fpye >= 0) {
if(fpye>0){
// 上月还有剩余,但是不够扣除
rs.executeUpdate(insert1, mainIdLast, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), fpye, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a1,b1,c1,fpye,mainTableName,mainIdLast,psjbLast,zmjbLast,jrjbLast,departmentid,resourceid,fromdate,field28);
}
numNow++;
//本月剩余:
double value = duration - fpye;
log.info("-WorkLeaveAction- lastTwoMonth-value5{}", value);
// 查询本月的主表id
Map<String,String> mainMap = getMonthMainId(mainTableName, departmentid, resourceid, fromdate);
String mainId = mainMap.get("mainId");
String psjb = mainMap.get("psjb");
String zmjb = mainMap.get("zmjb");
String jrjb = mainMap.get("jrjb");
String psjbsy = mainMap.get("psjbsy");
String zmjbsy = mainMap.get("zmjbsy");
String jrjbsy = mainMap.get("jrjbsy");
// 赋值给变量a,b,c
if(numNow==1){
if(!StringUtils.equals(psjbsy,"")){
a = Double.parseDouble(psjbsy);
}else{
a = Double.parseDouble("".equals(psjb)?"0":psjb);
}
if(!StringUtils.equals(zmjbsy,"")){
b = Double.parseDouble(zmjbsy);
}else{
b = Double.parseDouble("".equals(zmjb)?"0":zmjb);
}
if(!StringUtils.equals(jrjbsy,"")){
b = Double.parseDouble(jrjbsy);
}else{
c = Double.parseDouble("".equals(jrjb)?"0":jrjb);
}
}
rs.executeUpdate(insert1, mainId, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), value, "",requestId);
// 上月加班剩余清零
fpye = 0;
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a,b,c,value,mainTableName,mainId,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
}
}
}
} else {
numNow++;
//为空,本月插入一条就行
// 查询本月的主表id
Map<String,String> mainMap = getMonthMainId(mainTableName, departmentid, resourceid, fromdate);
log.info("-WorkLeaveAction- nowMonth-mainMap555{}", mainMap);
String mainId = mainMap.get("mainId");
String psjb = mainMap.get("psjb");
String zmjb = mainMap.get("zmjb");
String jrjb = mainMap.get("jrjb");
String psjbsy = mainMap.get("psjbsy");
String zmjbsy = mainMap.get("zmjbsy");
String jrjbsy = mainMap.get("jrjbsy");
// 赋值给变量a,b,c
if(numNow==1){
if(!StringUtils.equals(psjbsy,"")){
a = Double.parseDouble(psjbsy);
}else{
a = Double.parseDouble("".equals(psjb)?"0":psjb);
}
if(!StringUtils.equals(zmjbsy,"")){
b = Double.parseDouble(zmjbsy);
}else{
b = Double.parseDouble("".equals(zmjb)?"0":zmjb);
}
if(!StringUtils.equals(jrjbsy,"")){
b = Double.parseDouble(jrjbsy);
}else{
c = Double.parseDouble("".equals(jrjb)?"0":jrjb);
}
}
rs.executeUpdate(insert1, mainId, resourceid, "5", fromdate,
map.get("fromtime"), map.get("todate"), map.get("totime"), duration, "",requestId);
// 只要插入1条调休明细就执行一次顺序
holidayDeduction(a,b,c,duration,mainTableName,mainId,psjb,zmjb,jrjb,departmentid,resourceid,fromdate,field28);
}
}
}
}
} catch (ParseException e) {
return Action.FAILURE_AND_CONTINUE;
}
}
}
log.info("调休申请流程转建模数据成功!");
return Action.SUCCESS;
}
/**
*
*
* @return
*/
public static void holidayDeduction(double a, double b, double c, double duration,String mainTableName,String id,String psjb,
String zmjb,String jrjb,String bm,String xm,String fromDate,String field28) {
RecordSet rs = new RecordSet();
log.info("-holidayDeduction- a{},b{},c{},duration{},mainTableName{},id{},psjb{},zmjb{},jrjb{}",
a,b,c,duration,mainTableName,id,psjb,zmjb,jrjb);
// 增加判断,加班时长扣除顺序:平时>休息日>节假日
String updateSql;
double value = 0;
// 1.平时加班够用
if(a>duration){
a = a-duration;
value = Double.parseDouble("".equals(psjb)?"0":psjb) - a;
// 抵扣 = a - value
// 更新主表平时加班汇总字段a-duration
updateSql = "update " + mainTableName+ " set psjbsy = ? , psjbdk = ? where id = ? ";
log.info("-holidayDeduction- updateSql1{}", updateSql);
rs.executeUpdate(updateSql,a,value,id);
// 更新加班总剩余
String balance = getOvertimeBalance(mainTableName, bm, xm, fromDate, field28);
updateSql = "update " + mainTableName+ " set jbzsy = ? where id = ? ";
log.info("-holidayDeduction更新加班总剩余- updateSql{}", updateSql);
rs.executeUpdate(updateSql,balance,id);
}else {
// 2.平时加班不够,休息日加班补上
if(a+b>duration){
//a = 0;
// 平时加班清零0然 duration-a
b = a+b-duration;
value = Double.parseDouble("".equals(zmjb)?"0":zmjb)-b;
// 更新主表:休息日加班汇总字段
updateSql = "update " + mainTableName+ " set psjbsy = ? , psjbdk = ?, zmjbsy = ?,zmjbdk = ? where id = ? ";
log.info("-holidayDeduction- updateSql2{}", updateSql);
rs.executeUpdate(updateSql,"0.0",psjb,b,value,id);
// 更新加班总剩余
String balance = getOvertimeBalance(mainTableName, bm, xm, fromDate, field28);
updateSql = "update " + mainTableName+ " set jbzsy = ? where id = ? ";
log.info("-holidayDeduction更新加班总剩余- updateSql{}", updateSql);
rs.executeUpdate(updateSql,balance,id);
}else{
// 3.周末加班也不够,节假日加班补上
// 平时、休息日加班都清零
// a = 0;
//b = 0;
c = a+b+c-duration;
value = Double.parseDouble("".equals(jrjb)?"0":jrjb)-c;
// 更新主表:节假日
updateSql = "update " + mainTableName+ " set psjbsy = ? , psjbdk = ? , zmjbsy = ? ,zmjbdk=?, jrjbsy = ?,jrjbdk=? where id = ? ";
rs.executeUpdate(updateSql,"0.0",psjb,"0.0",zmjb,c,value,id);
log.info("-holidayDeduction- updateSql3{}", updateSql);
// 更新加班总剩余
String balance = getOvertimeBalance(mainTableName, bm, xm, fromDate, field28);
updateSql = "update " + mainTableName+ " set jbzsy = ? where id = ? ";
log.info("-holidayDeduction更新加班总剩余- updateSql{}", updateSql);
rs.executeUpdate(updateSql,balance,id);
}
}
}
/**
* id
*
* @return
*/
public static Map<String,String> getMonthMainId(String tableName, String bm, String xm, String fromDate) {
Map<String,String> map = new HashMap<>();
RecordSet rs = new RecordSet();
String mainId = "";
String psjb = "";
String zmjb = "";
String jrjb = "";
String psjbsy = "";
String zmjbsy = "";
String jrjbsy = "";
String sql = " select id,psjb,psjbsy,zmjb,zmjbsy,jrjb,jrjbsy from " + tableName + " where bm = ? and xm = ? and ny = ? ";
log.info("-getLastMonthMainId- sql{}", sql);
rs.executeQuery(sql, bm, xm, fromDate.substring(0, 7));
if (rs.next()) {
mainId = rs.getString("id");
psjb = rs.getString("psjb");
zmjb = rs.getString("zmjb");
jrjb = rs.getString("jrjb");
psjbsy = rs.getString("psjbsy");
zmjbsy = rs.getString("zmjbsy");
jrjbsy = rs.getString("jrjbsy");
map.put("mainId",mainId);
map.put("psjb",psjb);
map.put("zmjb",zmjb);
map.put("jrjb",jrjb);
map.put("psjbsy",psjbsy);
map.put("zmjbsy",zmjbsy);
map.put("jrjbsy",jrjbsy);
}
log.info("-getLastMonthMainId- mainId{},psjb{},zmjb{},jrjb{}", mainId,psjb,zmjb,jrjb);
return map;
}
/**
*
*
* @return
*/
public static String getOvertimeBalance(String tableName, String bm, String xm, String fromDate,String field28) {
RecordSet rs = new RecordSet();
String jbzsy = "";
String sql = " select IF(IF(psjbsy is null,psjb,psjbsy) is null,0,IF(psjbsy is null,psjb,psjbsy)) + " +
" IF(IF(zmjbsy is null,zmjb,zmjbsy) is null,0,IF(zmjbsy is null,zmjb,zmjbsy)) + " +
" IF(IF(jrjbsy is null,jrjb,jrjbsy) is null,0,IF(jrjbsy is null,jrjb,jrjbsy)) as jbzsy from " + tableName + " where bm = ? and xm = ? and ny = ? and jblb = ?";
log.info("-getOvertimeBalance- sql{}", sql);
rs.executeQuery(sql, bm, xm, fromDate.substring(0, 7),field28);
if (rs.next()) {
jbzsy = rs.getString("jbzsy");
}
log.info("-getOvertimeBalance- jbzsy{}", jbzsy);
return jbzsy;
}
/**
*
*
* @return
*/
public static String getLastMonth(String fromDate) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
Date date = format.parse(fromDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 设置为当前时间
calendar.add(Calendar.MONTH, -1);
date = calendar.getTime();
return format.format(date);
}
/**
*
*
* @return
*/
public static String getLastTwoMonth(String fromDate) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
Date date = format.parse(fromDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 设置为当前时间
calendar.add(Calendar.MONTH, -2);
date = calendar.getTime();
return format.format(date);
}
/**
* field28
*/
public static String getMainTableName(String field28) {
String mainTableName = "";
if (StringUtils.equals(field28, "4")) {//当月发放
mainTableName = "uf_jbtxdyfjs";
} else if (StringUtils.equals(field28, "5") || StringUtils.equals(field28, "6")) {//隔月发放/三月发放
mainTableName = "uf_jbtxgyfff";
} else {
//默认值(暂时)
mainTableName = "uf_jbtxdyfjs";
}
return mainTableName;
}
/**
* requestInfo
*/
public static List<Map<String, String>> getKqFlowLeaveInfo(String requestId) {
List<Map<String, String>> list = new ArrayList<>();
RecordSet rs = new RecordSet();
String resourceid;
String fromdate;
String fromtime;
String todate;
String totime;
String duration;
String newleavetype;//请假类型
String departmentid;
String jobtitle;
String durationdb;
String field28;
String sql = "select resourceid,fromdate,fromtime,todate,totime,duration,newleavetype,departmentid,jobtitle,durationdb,field28 from kq_flow_split_leave a left join " +
"cus_fielddata b on a.resourceid = b.id where SCOPE = 'HrmCustomFieldByInfoType' and SCOPEID = '3' and a.requestId = ?";
rs.executeQuery(sql, requestId);
while (rs.next()) {
Map<String, String> map = new HashMap<>();
resourceid = rs.getString("resourceid");
fromdate = rs.getString("fromdate");
fromtime = rs.getString("fromtime");
todate = rs.getString("todate");
totime = rs.getString("totime");
duration = rs.getString("duration");
newleavetype = rs.getString("newleavetype");
departmentid = rs.getString("departmentid");
durationdb = rs.getString("durationdb");
jobtitle = rs.getString("jobtitle");
field28 = rs.getString("field28");
map.put("resourceid", resourceid);
map.put("fromdate", fromdate);
map.put("fromtime", fromtime);
map.put("todate", todate);
map.put("totime", totime);
map.put("duration", duration);
map.put("newleavetype", newleavetype);
map.put("departmentid", departmentid);
map.put("jobtitle", jobtitle);
map.put("durationdb", durationdb);
map.put("field28", field28);
list.add(map);
}
log.info("getKqFlowLeaveInfo-list:{}", list);
return list;
}
/**
* requestInfo
*/
public static Map<String, Object> getMainInfo(RequestInfo requestInfo) {
Map<String, Object> map = new HashMap();
Property[] property = requestInfo.getMainTableInfo().getProperty();
for (int i = 0; i < property.length; i++) {
map.put(property[i].getName().toLowerCase(), Util.null2String(property[i].getValue()));
}
return map;
}
/**
* requestInfo
*/
public static List getDetailInfo(RequestInfo requestInfo, int num) {
DetailTable detailTable = requestInfo.getDetailTableInfo().getDetailTable(num);
//dtltable数组中的行数据集合
Row[] rows = detailTable.getRow();
List sublist = new ArrayList();
for (int i = 0; i < rows.length; i++) {
Row row = rows[i];
Map onerow = new HashMap();
sublist.add(onerow);
Cell[] cells = row.getCell();
for (int j = 0; j < cells.length; j++) {
Cell cell = cells[j];
onerow.put(cell.getName(), Util.null2String(cell.getValue()));
}
}
return sublist;
}
}

@ -0,0 +1,298 @@
package weaver.interfaces.sskj.action;
import cn.hutool.core.date.DateUtil;
import com.engine.kq.biz.KQTimesArrayComInfo;
import com.engine.sskj.util.SskjUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.*;
import java.util.*;
/**
*
*/
@Slf4j
public class WorkOverTimeAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
BaseBean bb = new BaseBean();
RecordSet rs = new RecordSet();
SskjUtil sskjUtil = new SskjUtil();
KQTimesArrayComInfo kqTimesArrayComInfo = new KQTimesArrayComInfo();
//获取流程requestId
String requestId = Util.null2String(requestInfo.getRequestid());
// 根据requestId查询考勤建模表信息
List<Map<String, String>> list = getKqFlowOverTimeInfo(requestId);
//遍历数据更新
for (Map<String, String> map : list) {
// 部门
String bm = map.get("departmentid");
// 姓名
String xm = map.get("resourceid");
//日期
String fromdate = map.get("fromdate").substring(0, 7);
// 加班类型
String changetype = map.get("changetype");
// 加班类别
String field28 = map.get("field28");
// 获取建模主表名称
String mainTableName = getMainTableName(field28);
// 1.先判断建模主表是否有记录
String id = "";
String sql2 = " select id from " + mainTableName + " where bm = ? and xm = ? and ny = ? and jblb = ? ";
log.info("-WorkOverTimeAction- sql2{}",sql2);
rs.executeQuery(sql2, bm,xm,fromdate,field28);
if (rs.next()) {
id = rs.getString("id");
}
log.info("-WorkOverTimeAction- id{}",id);
Map<String, String> tableNameMap = getDtlTableName(changetype, mainTableName);
String dtlTableName = tableNameMap.get("dtlTableName");
String updateName = tableNameMap.get("updateName");
log.info("-WorkOverTimeAction- tableNameMap{}",tableNameMap);
String insert_detail;
String updateSql;
String conOvertimeModeId = "";
if (StringUtils.isBlank(id)) {
// 2. 新增主表信息,再新增明细表信息
String insert_main = "insert into " + mainTableName + " (bm,xm,ny,jblb,formmodeid, modedatacreater, modedatacreatertype, modedatacreatedate, modedatacreatetime, MODEUUID) " +
" values (?,?,?,?,?,?,?,?,?,?) ";
// 3.权限重构
if(StringUtils.equals(mainTableName,"uf_jbtxdyfjs")){
//当月
conOvertimeModeId = bb.getPropValue("project_sskj", "workOvertimeDyModeId");
}else{
//隔月
conOvertimeModeId = bb.getPropValue("project_sskj", "workOvertimeGyModeId");
}
Integer modedatacreater = 1;
Integer modedatacreatertype = 0;
String modedatacreatedate = DateUtil.format(new Date(), "yyyy-MM-dd");
String modedatacreatetime = DateUtil.format(new Date(), "HH:mm:ss");
String uuid = UUID.randomUUID().toString();
log.info("-WorkOverTimeAction-insert_main sql[{}]",insert_main);
boolean b = rs.executeUpdate(insert_main, bm, xm, fromdate,field28, conOvertimeModeId, modedatacreater, modedatacreatertype, modedatacreatedate, modedatacreatetime, uuid);
log.info("addFlag{}" , b);
if (b) {
String billid = "-1";
// 2. 先查询主表id
//String main_id = "";
//String sql3 = " select id from " + mainTableName + " where bm = ? and xm = ? and ny = ? and jblb = ? ";
String sql3 = " select id from " + mainTableName + " where MODEUUID = ? ";
log.info("-WorkOverTimeAction- sql3{}",sql3);
rs.executeQuery(sql3, uuid);
if (rs.next()) {
billid = Util.null2String(rs.getString("id"));
}
log.info("billid{}" , billid);
sskjUtil.modePerRecon(modedatacreater, conOvertimeModeId, billid);
// 3.新增明细表数据,需先判断加班类型
insert_detail = "insert into "+ dtlTableName + " (mainid,jbry,szbm,gw,ksrq,kssj,jsrq,jssj,jbsch,xglc,lcgzrq) values (?,?,?,?,?,?,?,?,?,?,?) ";
rs.executeUpdate(insert_detail, billid,xm,bm,map.get("jobtitle"), map.get("fromdate"),
map.get("fromtime"), map.get("todate"),map.get("totime"),map.get("duration"),requestId,map.get("belongdate"));
// 4.更新主表信息
updateSql = "update " + mainTableName + " set " + updateName + "= ?,jbzsy = ? where id = ? ";
log.info("更新首条加班时长到主表-sql:{}",updateSql);
rs.executeUpdate(updateSql,map.get("duration"),map.get("duration"),billid);
}else{
log.info("加班申请流程转建模数据失败!");
return Action.FAILURE_AND_CONTINUE;
}
} else {
// 更新主表信息之前,先查询有没有事假记录
boolean b1 = sskjUtil.handleCasLeave(xm, map.get("belongdate"), requestId, Double.parseDouble(map.get("duration")));
log.info("处理有事假情况结果-b1:{}",b1);
if(!b1){
log.info("加班申请流程转建模数据失败!");
return Action.FAILURE_AND_CONTINUE;
}
// 1.直接增加明细表数据
insert_detail = "insert into "+ dtlTableName + " (mainid,jbry,szbm,gw,ksrq,kssj,jsrq,jssj,jbsch,xglc,lcgzrq) values (?,?,?,?,?,?,?,?,?,?,?)";
boolean b = rs.executeUpdate(insert_detail, id, xm, bm, map.get("jobtitle"), map.get("fromdate"),
map.get("fromtime"), map.get("todate"), map.get("totime"), map.get("duration"),requestId,map.get("belongdate"));
if(!b){
log.info("加班申请流程转建模数据失败!");
return Action.FAILURE_AND_CONTINUE;
}
// 明细表加班时长求和
//String value = "";
String sum = "";
String sql = "select sum(jbsch) as num from "+ dtlTableName + " b WHERE b.mainid = ? ";
rs.executeQuery(sql, id);
if (rs.next()) {
//value = rs.getString(updateName);
sum = rs.getString("num");
}
double updateValue = Double.parseDouble(sum);
log.info("加班累计时长-updateValue:{}",updateValue);
// 更新最终求和到主表待更新字段
updateSql = "update " + mainTableName + " set " + updateName + " = ? where id = ? ";
log.info("更新累计加班时长到主表-sql:{}",updateSql);
rs.executeUpdate(updateSql,updateValue,id);
String balance = getOvertimeBalance(mainTableName, bm, xm, map.get("fromdate"), field28);
log.info("加班总剩余-balance:{}",balance);
// 更新最终求和到主表待更新字段
updateSql = "update " + mainTableName + " set jbzsy = ? where id = ? ";
log.info("更新累计加班时长到主表-sql:{}",updateSql);
rs.executeUpdate(updateSql,balance,id);
}
log.info("-WorkOverTimeAction-insert_detail sql[{}]",insert_detail);
}
log.info("加班申请流程转建模数据成功!");
return Action.SUCCESS;
}
/**
*
*
* @return
*/
public static String getOvertimeBalance(String tableName, String bm, String xm, String fromDate,String field28) {
RecordSet rs = new RecordSet();
String jbzsy = "";
String sql = " select IF(IF(psjbsy is null,psjb,psjbsy) is null,0,IF(psjbsy is null,psjb,psjbsy)) + " +
" IF(IF(zmjbsy is null,zmjb,zmjbsy) is null,0,IF(zmjbsy is null,zmjb,zmjbsy)) + " +
" IF(IF(jrjbsy is null,jrjb,jrjbsy) is null,0,IF(jrjbsy is null,jrjb,jrjbsy)) as jbzsy from " + tableName + " where bm = ? and xm = ? and ny = ? and jblb = ?";
log.info("-getOvertimeBalance- sql{}", sql);
rs.executeQuery(sql, bm, xm, fromDate.substring(0, 7),field28);
if (rs.next()) {
jbzsy = rs.getString("jbzsy");
}
log.info("-getOvertimeBalance- jbzsy{}", jbzsy);
return jbzsy;
}
/**
* field28
* */
public static String getMainTableName(String field28){
String mainTableName = "";
if(StringUtils.equals(field28,"4")){//当月发放
mainTableName = "uf_jbtxdyfjs";
}else if(StringUtils.equals(field28,"5")||StringUtils.equals(field28,"6")){//隔月发放/三月发放
mainTableName = "uf_jbtxgyfff";
}else{
//默认值(暂时)
mainTableName = "uf_jbtxdyfjs";
}
return mainTableName;
}
/**
* changetype
* */
public static Map<String,String> getDtlTableName(String changetype,String name){
Map<String,String> map = new HashMap<>();
//1-节假日、2-工作日、3-休息日
String dtlTableName = "";
String updateName = "";
if(StringUtils.equals(changetype,"1")){
dtlTableName = name+"_dt1";
updateName = "jrjb";
}else if(StringUtils.equals(changetype,"2")){
dtlTableName = name+"_dt3";
updateName = "psjb";
}else if(StringUtils.equals(changetype,"3")){
dtlTableName = name+"_dt4";
updateName = "zmjb";
}
map.put("dtlTableName",dtlTableName);
map.put("updateName",updateName);
log.info("获取明细表信息-map{}",map);
return map;
}
/**
* requestInfo
* */
public static List<Map<String,String>> getKqFlowOverTimeInfo(String requestId){
List<Map<String,String>> list = new ArrayList<>();
RecordSet rs = new RecordSet();
String resourceid;
String fromdate;
String fromtime;
String todate;
String totime;
String belongdate;
String duration;
String changetype;
String departmentid;
String jobtitle;
String field28;
String sql = "select resourceid,fromdate,fromtime,todate,totime,belongdate,duration,changetype,departmentid,jobtitle,field28 from kq_flow_split_overtime a left join " +
"cus_fielddata b on a.resourceid = b.id where SCOPE = 'HrmCustomFieldByInfoType' and SCOPEID = '3' and a.requestId = ?";
rs.executeQuery(sql,requestId);
while (rs.next()){
Map<String,String> map = new HashMap<>();
resourceid = rs.getString("resourceid");
fromdate = rs.getString("fromdate");
fromtime = rs.getString("fromtime");
todate = rs.getString("todate");
totime = rs.getString("totime");
belongdate = rs.getString("belongdate");
duration = rs.getString("duration");
changetype = rs.getString("changetype");
departmentid = rs.getString("departmentid");
jobtitle = rs.getString("jobtitle");
field28 = rs.getString("field28");
map.put("resourceid",resourceid);
map.put("fromdate",fromdate);
map.put("fromtime",fromtime);
map.put("todate",todate);
map.put("totime",totime);
map.put("belongdate",belongdate);
map.put("duration",duration);
map.put("changetype",changetype);
map.put("departmentid",departmentid);
map.put("jobtitle",jobtitle);
map.put("field28",field28);
list.add(map);
}
log.info("getKqFlowOverTimeInfo-list:{}",list);
return list;
}
/**
* requestInfo
* */
public static Map<String,Object> getMainInfo(RequestInfo requestInfo){
Map<String,Object> map = new HashMap();
Property[] property = requestInfo.getMainTableInfo().getProperty();
for (int i = 0; i < property.length; i++) {
map.put(property[i].getName().toLowerCase(), Util.null2String(property[i].getValue()));
}
return map;
}
/**
* requestInfo
* */
public static List getDetailInfo(RequestInfo requestInfo, int num){
DetailTable detailTable = requestInfo.getDetailTableInfo().getDetailTable(num);
//dtltable数组中的行数据集合
Row[] rows = detailTable.getRow();
List sublist = new ArrayList();
for (int i = 0; i < rows.length; i++) {
Row row = rows[i];
Map onerow = new HashMap();
sublist.add(onerow);
Cell[] cells = row.getCell();
for (int j = 0; j < cells.length; j++) {
Cell cell = cells[j];
onerow.put(cell.getName(), Util.null2String(cell.getValue()));
}
}
return sublist;
}
}

@ -0,0 +1,71 @@
package weaver.interfaces.sskj.job;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.schedule.BaseCronJob;
/**
* Created with IntelliJ IDEA.
*
* @Auther: xuxy
* @Date: 2023/11/10/10:03
* @Description:
*/
public class SyncNdzpDataJob extends BaseCronJob {
@Override
public void execute() {
new BaseBean();
BaseBean bb = new BaseBean();
bb.writeLog("年度计划招聘申请同步招聘人数信息!!!");
try {
//获取年度计划招聘申请
RecordSet rs = new RecordSet();
String sql = "SELECT a.nf,b.id,b.bm,b.xygw,b.xqrs,b.jhnzprs,b.jhwzprs from uf_ndzpjhsq a left join uf_ndzpjhsq_dt1 b on a.id = b.mainid";
rs.executeQuery(sql);
bb.writeLog("SELECT uf_ndzpjhsq,uf_ndzpjhsq_dt1.sql:" + sql);
while (rs.next()) {
String nf = Util.null2String(rs.getString("nf"));
String id = Util.null2String(rs.getString("id"));
String bm = Util.null2String(rs.getString("bm"));
String xygw = Util.null2String(rs.getString("xygw"));
String xqrs = Util.null2String(rs.getString("xqrs"));
String jhnzprs = Util.null2String(rs.getString("jhnzprs"));
String jhwzprs = Util.null2String(rs.getString("jhwzprs"));
//根据结果查询当年、部门、现有岗位的入职人数
String str = " SELECT count(*) as num from hrmresource WHERE companystartdate=? and departmentid = ? and jobtitle = ? ";
bb.writeLog("SELECT hrmresource.sql:" + str);
rs.executeQuery(str, nf, bm, xygw);
String num = "";
if (rs.next()) {
num = Util.null2String(rs.getString("num"));
//计算人数
jhnzprs = num;
if (Util.getIntValue(jhnzprs) > Util.getIntValue(xqrs)) {
jhnzprs = xqrs;
jhwzprs = String.valueOf(Util.getIntValue(num) - Util.getIntValue(xqrs));
} else {
jhnzprs = xqrs;
jhwzprs = "0";
}
}
//如果num为空设置内外招聘人员为默认值0
if(StringUtils.isBlank(num)){
jhnzprs = "0";
jhwzprs = "0";
}
//回填计划招聘人数信息到明细表
String sql2 = "update uf_ndzpjhsq_dt1 set jhnzprs = ?,jhwzprs = ? where id = ? ";
rs.executeUpdate(sql2, jhnzprs, jhwzprs, id);
bb.writeLog("update uf_ndzpjhsq_dt1.sql2:" + sql2);
}
} catch (Exception e) {
e.printStackTrace();
bb.writeLog(e);
bb.writeLog("年度计划招聘申请同步招聘人数信息--error"+e.getMessage());
}
}
}

@ -0,0 +1,104 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="org.apache.commons.lang3.StringUtils" %>
<%@ page import="java.math.BigDecimal" %>
<%@ page import="java.text.DecimalFormat" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%--
User: xuxy
Design Ideas
天华化工-查询-得分评定员工身份信息
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%! org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger("getDfpdUserInfo"); %>
<%
JSONObject data = new JSONObject();
try {
//1.查询得分评定建模表部门为空的台账,并更新相关信息
updateAllDfpdData();
} catch (Exception e) {
new BaseBean().writeLog("getUserInfo---Exception:" + e.getMessage());
}
out.print(data.toJSONString());
%>
<%!
public List<Map<String,String>> getAllDfpdData() {
List<Map<String,String>> list = new ArrayList<>();
RecordSet rs = new RecordSet();
rs.execute("select gh,yxbz,jxkh,jxpf from uf_glgbryjxhzb where bm is null");
while (rs.next()) {
Map<String,String> map = new HashMap<>();
String gh = Util.null2String(rs.getString("gh"));
String yxbz = Util.null2String(rs.getString("yxbz"));
String jxkh = Util.null2String(rs.getString("jxkh"));
String jxpf = Util.null2String(rs.getString("jxpf"));
log.info("-getAllDfpdData-gh:{},yxbz:{},jxkh:{},jxpf:{}", gh,yxbz,jxkh,jxpf);
map.put("gh",gh);
map.put("yxbz",yxbz);
map.put("jxkh",jxkh);
map.put("jxpf",jxpf);
log.info("-getAllDjpdData-gh:{},yxbz:{},jxkh:{},jxpf:{}", gh, yxbz, jxkh, jxpf);
list.add(map);
}
log.info("getAllDfpdData-最终输出的list-----------list{}",list);
return list;
}
%>
<%!
public void updateAllDfpdData() {
List<Map<String, String>> list = getAllDfpdData();
RecordSet rs = new RecordSet();
for (Map<String, String> map : list) {
//通过gh查询员工部门等信息
String departmentid = "";
String JOBTITLE = "";
String companystartdate = "";
String status = "";
rs.execute("select departmentid,JOBTITLE,companystartdate,status from hrmresource where workcode = '" + map.get("gh") + "'");
if (rs.next()) {
departmentid = Util.null2String(rs.getString("departmentid"));
JOBTITLE = Util.null2String(rs.getString("JOBTITLE"));
companystartdate = Util.null2String(rs.getString("companystartdate"));
status = Util.null2String(rs.getString("status"));
}
log.info("-getAllDfpdData-departmentid:{},JOBTITLE:{},companystartdate:{},status:{}", departmentid,JOBTITLE,companystartdate,status);
// 先计算核算结果
BigDecimal hsjg;
DecimalFormat df = new DecimalFormat("#0.00");
// 更新对应的建模表数据
if(StringUtils.equals(status,"1")) {
//判断绩效等级
hsjg = new BigDecimal(map.get("yxbz")).multiply(new BigDecimal(map.get("jxkh"))).multiply(BigDecimal.valueOf(0.0001)).multiply(new BigDecimal(map.get("jxpf")));
log.info("-getAllDfpdData-hsjg1:{}", hsjg);
//绩效评分大于等于60
if(new BigDecimal(map.get("jxpf")).compareTo(BigDecimal.valueOf(60))>=0){
hsjg = hsjg.multiply(BigDecimal.valueOf(2));
log.info("-getAllDfpdData-hsjg2:{}", hsjg);
}
String value = df.format(hsjg);
String updateSql = "update uf_glgbryjxhzb set bm = ?,gw=?,rzrq=?,sfzz=?,hsjgz=? where gh = ? ";
log.info("-getAllDfpdData-updateSql1:{}", updateSql);
rs.executeUpdate(updateSql,departmentid,JOBTITLE,companystartdate,status,value,map.get("gh"));
}else {
String updateSql = "update uf_glgbryjxhzb set bm = ?,gw=?,rzrq=?,sfzz=? where gh = ? ";
rs.executeUpdate(updateSql,departmentid,JOBTITLE,companystartdate,status,map.get("gh"));
log.info("-getAllDfpdData-updateSql2:{}", updateSql);
}
}
}
%>

@ -0,0 +1,118 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="org.apache.commons.lang3.StringUtils" %>
<%@ page import="java.math.BigDecimal" %>
<%@ page import="java.text.DecimalFormat" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%--
User: xuxy
Design Ideas
天华化工-查询-等级评定员工身份信息
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%! org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger("getDjpdUserInfo"); %>
<%
JSONObject data = new JSONObject();
try {
//1.查询建模表部门为空的台账,并更新相关信息
updateAllDjpdData();
} catch (Exception e) {
new BaseBean().writeLog("getUserInfo---Exception:" + e.getMessage());
}
out.print(data.toJSONString());
%>
<%!
public List<Map<String,String>> getAllDjpdData() {
List<Map<String,String>> list = new ArrayList<>();
RecordSet rs = new RecordSet();
rs.execute("select gh,yxbz,jxkh,jxpf,jxdj from uf_xzryjxkhhzb where bm is null");
while (rs.next()) {
Map<String,String> map = new HashMap<>();
String gh = Util.null2String(rs.getString("gh"));
String yxbz = Util.null2String(rs.getString("yxbz"));
String jxkh = Util.null2String(rs.getString("jxkh"));
String jxpf = Util.null2String(rs.getString("jxpf"));
String jxdj = Util.null2String(rs.getString("jxdj"));
map.put("gh",gh);
map.put("yxbz",yxbz);
map.put("jxkh",jxkh);
map.put("jxpf",jxpf);
map.put("jxdj",jxdj);
log.info("-getAllDjpdData-gh:{},yxbz:{},jxkh:{},jxpf:{},jxdj:{}", gh, yxbz, jxkh, jxpf, jxdj);
list.add(map);
}
return list;
}
%>
<%!
public void updateAllDjpdData() {
List<Map<String,String>> list = getAllDjpdData();
RecordSet rs = new RecordSet();
for (Map<String, String> map : list) {
//通过gh查询员工部门等信息
String departmentid = "";
String JOBTITLE = "";
String companystartdate = "";
String status = "";
rs.execute("select departmentid,JOBTITLE,companystartdate,status from hrmresource where workcode = '" + map.get("gh") + "'");
if (rs.next()) {
departmentid = Util.null2String(rs.getString("departmentid"));
JOBTITLE = Util.null2String(rs.getString("JOBTITLE"));
companystartdate = Util.null2String(rs.getString("companystartdate"));
status = Util.null2String(rs.getString("status"));
}
log.info("-getAllDjpdData-departmentid:{},JOBTITLE:{},companystartdate:{},status:{}", departmentid,JOBTITLE,companystartdate,status);
// 先计算核算结果
BigDecimal hsjg;
String value = "";
DecimalFormat df = new DecimalFormat("#0.00");
// 更新对应的建模表数据
if(StringUtils.equals(status,"1")) {
String updateSql = "";
//判断绩效等级
hsjg = new BigDecimal(map.get("yxbz")).multiply(new BigDecimal(map.get("jxkh"))).multiply(BigDecimal.valueOf(0.01));
log.info("-getAllDjpdData-hsjg:{}", hsjg);
if (StringUtils.equals(map.get("jxdj"), "0")||StringUtils.equals(map.get("jxdj"), "1")||StringUtils.equals(map.get("jxdj"), "2")) {
if (StringUtils.equals(map.get("jxdj"), "0")) {
hsjg = hsjg.multiply(BigDecimal.valueOf(0.4));
} else if (StringUtils.equals(map.get("jxdj"), "1")) {
hsjg = hsjg.multiply(BigDecimal.valueOf(0.2));
} else if (StringUtils.equals(map.get("jxdj"), "2")) {
hsjg = hsjg.multiply(BigDecimal.valueOf(0.0));
}
log.info("-getAllDjpdData-value1:{}", value);
updateSql = "update uf_xzryjxkhhzb set bm = ?,gw=?,rzrq=?,sfzz=?,hsjgz=? where gh = ? ";
}else{
if (StringUtils.equals(map.get("jxdj"), "3")) {
hsjg = hsjg.multiply(BigDecimal.valueOf(0.2));
}else if (StringUtils.equals(map.get("jxdj"), "4")) {
hsjg = hsjg.multiply(BigDecimal.valueOf(0.4));
}
log.info("-getAllDjpdData-value2:{}", value);
updateSql = "update uf_xzryjxkhhzb set bm = ?,gw=?,rzrq=?,sfzz=?,hsjgf=? where gh = ? ";
}
value = df.format(hsjg);
log.info("-getAllDjpdData-updateSql1:{}", updateSql);
rs.executeUpdate(updateSql,departmentid,JOBTITLE,companystartdate,status,value,map.get("gh"));
}else {
String updateSql = "update uf_xzryjxkhhzb set bm = ?,gw=?,rzrq=?,sfzz=? where gh = ? ";
log.info("-getAllDjpdData-updateSql2:{}", updateSql);
rs.executeUpdate(updateSql,departmentid,JOBTITLE,companystartdate,status,map.get("gh"));
}
}
}
%>
Loading…
Cancel
Save