diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java index db00ed2..98fd885 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java @@ -175,9 +175,9 @@ public class RecordDataCmd extends AbstractCommonCommand> { DbTools.update(sql,insertDatas.toArray()); } - if (overTimeHolidayList.size() > 0 || overTimeResultList.size() >0){ - updateWorkOverTimeDate(userId,analysisDate,overTimeHolidayList,overTimeResultList); - } + + updateWorkOverTimeDate(userId,analysisDate,overTimeHolidayList,overTimeResultList); + return null; } diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java index 1eb3575..5c0b48a 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java @@ -203,21 +203,22 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand holidayItem = getHolidayItem(workTimeBeLateItems.get(0).get("zrdjb").toString(),attendanceItems); //20240914逻辑修改,加班转调休中,加班时长、转入假期时长不进行核算量相关逻辑处理 // double ktsc = Utils.getItemdurationDown(Double.valueOf(holidayItem.get("hsl").toString()),holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES); - // double ktsc = Utils.getItemdurationDownWithoutHsl(holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES); - double ktsc = itemduration; + double ktsc = Utils.getItemdurationDownWithoutHsl(holidayItem.get("hsdw").toString(),itemduration,workOverTimeHsdw); + //double ktsc = itemduration; double addJxsc = 0; //加班计划明细中计薪时长规则和时长判断 if (scheduleMap.get("jxgz") != null){ String jxgz = scheduleMap.get("jxgz").toString(); if ("0".equals(jxgz)) { //全部计薪 - addJxsc = itemduration; + addJxsc = ktsc; ktsc = 0; } else if ("1".equals(jxgz)) { //指定计薪时长 double jxsc = Double.parseDouble(scheduleMap.getOrDefault("jxsc", "0").toString()); - addJxsc = itemduration - jxsc > 0 ? jxsc : itemduration; - ktsc = itemduration - addJxsc; + jxsc = Utils.getItemdurationDownWithoutHsl(holidayItem.get("hsdw").toString(),jxsc,AccountingUnitEnum.HOUR.getKey()); + addJxsc = ktsc - jxsc > 0 ? jxsc : ktsc; + ktsc = ktsc - addJxsc; } } insertHoliDayParam.put("ktsc",ktsc); diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java index 1214126..341ed46 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java @@ -294,7 +294,7 @@ public class ByIntervalPayMentWay implements HolidayGenerationWay{ companystartdate=""; } - VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate); + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate,wscl); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java index 9ebc086..3965e24 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java @@ -195,7 +195,7 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{ companystartdate=""; } - VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate); + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate,wscl); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye",insertHoliDayParam,dataList,edyxq); return insertHoliDayParam; diff --git a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java index 018fb5d..6e5f3b7 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java +++ b/src/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java @@ -228,7 +228,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay { companystartdate=""; } - VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate); + VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate,wscl); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); } return insertHoliDayParam; diff --git a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java index 394e48b..8eccb86 100644 --- a/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java +++ b/src/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.java @@ -640,7 +640,7 @@ public class VocationCommonUtil { * @param insertHoliDayParam * @param jzrqzd */ - public static void computeRestTimeByjzrqzd(Map insertHoliDayParam,String jzrqzd,String companystartdate){ + public static void computeRestTimeByjzrqzd(Map insertHoliDayParam,String jzrqzd,String companystartdate,String wscl){ String sxrq = Util.null2String(insertHoliDayParam.get("sxrq")); String jzrq = Util.null2String(insertHoliDayParam.get("jzrq")); int alldays = DateUtil.getBetWeenDays(sxrq,jzrq)+1; @@ -656,6 +656,6 @@ public class VocationCommonUtil { endtDate=jzrqzd; } int days = DateUtil.getBetWeenDays(startDate,endtDate)+1; - insertHoliDayParam.put("ktsc",Utils.divide(days*ktsc,alldays)); + insertHoliDayParam.put("ktsc",computeRestDays(days,alldays,ktsc)); } } diff --git a/src/com/engine/jucailinkq/common/util/Utils.java b/src/com/engine/jucailinkq/common/util/Utils.java index 0a5b4cd..789f363 100644 --- a/src/com/engine/jucailinkq/common/util/Utils.java +++ b/src/com/engine/jucailinkq/common/util/Utils.java @@ -411,30 +411,30 @@ public class Utils { * @param unit 时间值单位 * @return */ - public static double getItemdurationDownWithoutHsl(String hsdw,int duration, AccountingUnitEnum unit){ + public static double getItemdurationDownWithoutHsl(String hsdw,double duration, String unit){ String itemDuration = "0.00"; if (AccountingUnitEnum.ONCE.getKey().equals(hsdw)){ itemDuration = "1"; }else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){ - if (unit.equals(AccountingUnitEnum.MINUTES)){ + if (unit.equals(AccountingUnitEnum.MINUTES.getKey())){ double durationHour = duration/60.0; itemDuration = String.format("%.2f", durationHour); - }else if (unit.equals(AccountingUnitEnum.HOUR)){ + }else if (unit.equals(AccountingUnitEnum.HOUR.getKey())){ itemDuration = String.valueOf(duration); } }else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){ - if (unit.equals(AccountingUnitEnum.MINUTES)){ + if (unit.equals(AccountingUnitEnum.MINUTES.getKey())){ itemDuration = String.valueOf(duration); - }else if (unit.equals(AccountingUnitEnum.HOUR)){ - int durationMinute = duration*60; + }else if (unit.equals(AccountingUnitEnum.HOUR.getKey())){ + double durationMinute = duration*60; itemDuration = String.valueOf(durationMinute); } }else if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){ //默认一天8小时 - if (unit.equals(AccountingUnitEnum.MINUTES)){ + if (unit.equals(AccountingUnitEnum.MINUTES.getKey())){ double durationDay = duration/480.0; itemDuration = String.format("%.2f", durationDay); - }else if (unit.equals(AccountingUnitEnum.HOUR)){ + }else if (unit.equals(AccountingUnitEnum.HOUR.getKey())){ double durationDay = duration/8.0; itemDuration = String.format("%.2f", durationDay); diff --git a/workflow/request/hrmattendance/HrmjucailAskForLeave_e9.jsp b/workflow/request/hrmattendance/HrmjucailAskForLeave_e9.jsp index 9b1a160..8aeb831 100644 --- a/workflow/request/hrmattendance/HrmjucailAskForLeave_e9.jsp +++ b/workflow/request/hrmattendance/HrmjucailAskForLeave_e9.jsp @@ -25,6 +25,11 @@ jssd: WfForm.getFieldValue(WfForm.convertFieldNameToId("jssd")), qjsc: WfForm.getFieldValue(WfForm.convertFieldNameToId("qjsc")) } + generateHoliday(mainTableData); + }) + + function generateHoliday(mainTableData){ + let detailTableData=[]; let param = { @@ -40,6 +45,7 @@ dataType:'json', async:false, success:function(res){ + debugger; if(res.api_status){ if(res.data.status){ WfForm.delDetailRow("detail_1", "all"); @@ -72,7 +78,7 @@ addObj[WfForm.convertFieldNameToId("jssj", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("kssd", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssd", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("qtj", "detail_3")]={value:''};//设置全天假为不勾选 addObj[WfForm.convertFieldNameToId("btj", "detail_3")]={value:''};//设置半天假为不勾选 switch(mainTableData.cxjqj) { @@ -83,7 +89,7 @@ addObj[WfForm.convertFieldNameToId("jssj", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("kssd", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssd", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("btj", "detail_3")]={value:''};//设置半天假为不勾选 break; @@ -95,7 +101,7 @@ addObj[WfForm.convertFieldNameToId("kssd", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssd", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("qtj", "detail_3")]={value:''};//设置全天假为不勾选 addObj[WfForm.convertFieldNameToId("btj", "detail_3")]={value:''};//设置半天假为不勾选 } else { @@ -104,7 +110,7 @@ addObj[WfForm.convertFieldNameToId("kssj", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssj", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("qtj", "detail_3")]={value:''};//设置全天假为不勾选 addObj[WfForm.convertFieldNameToId("btj", "detail_3")]={value:''};//设置半天假为不勾选 } @@ -134,13 +140,13 @@ } WfForm.addDetailRow("detail_3", addObj); }else{ - var v_tmpbdate = new Date(mainTableData.ksrq); + var v_tmpbdate = new Date(item.ksrq); var v_tmpedate = new Date(v_tmpbdate); - if (!DateCheck(mainTableData.ksrq,mainTableData.kssj,mainTableData.jsrq,mainTableData.jssj)) { + if (!DateCheck(item.ksrq,item.kssj,item.jsrq,item.jssj)) { v_tmpedate = v_tmpedate.setDate(v_tmpedate.getDate() + 1); v_tmpedate = new Date(v_tmpedate); } - while (v_tmpbdate<=new Date(mainTableData.jsrq)){ + while (v_tmpbdate<=new Date(item.jsrq)){ addObj = {}; addObj[WfForm.convertFieldNameToId("yesygz", "detail_3")]={value:mainTableData.yesygz}; addObj[WfForm.convertFieldNameToId("sxwxz", "detail_3")]={value:mainTableData.sxwxz}; @@ -157,7 +163,7 @@ addObj[WfForm.convertFieldNameToId("jssj", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("kssd", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssd", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("btj", "detail_3")]={value:''};//设置半天假为不勾选 break; @@ -169,7 +175,7 @@ addObj[WfForm.convertFieldNameToId("kssd", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssd", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("qtj", "detail_3")]={value:''};//设置全天假为不勾选 addObj[WfForm.convertFieldNameToId("btj", "detail_3")]={value:''};//设置半天假为不勾选 } else { @@ -178,7 +184,7 @@ addObj[WfForm.convertFieldNameToId("kssj", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssj", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("qtj", "detail_3")]={value:''};//设置全天假为不勾选 addObj[WfForm.convertFieldNameToId("btj", "detail_3")]={value:''};//设置半天假为不勾选 } @@ -190,7 +196,7 @@ addObj[WfForm.convertFieldNameToId("jssj", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("kssd", "detail_3")]={value:''}; addObj[WfForm.convertFieldNameToId("jssd", "detail_3")]={value:''}; - addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:''}; + addObj[WfForm.convertFieldNameToId("qjsc", "detail_3")]={value:""}; addObj[WfForm.convertFieldNameToId("qtj", "detail_3")]={value:''};//设置全天假为不勾选 break; case '3'://按时间长度请假 @@ -214,45 +220,92 @@ v_tmpedate = new Date(v_tmpedate); } } - }) + }); }else{ WfForm.showMessage(res.data.errorInfo, 2, 5); } } + + resetqjfs(); } }) - }) + } + + function generateHolidayNoDetail(mainTableData){ + let detailTableData=[]; + let param = { + mainTableData:JSON.stringify(mainTableData), + detailTableData:JSON.stringify(detailTableData), + } + console.log(param); + $.ajax({ + url:'/api/attendance/askforleave/generateLeaveInfoList', + data:param, + type:'GET', + dataType:'json', + async:false, + success:function(res){ + debugger; + if(res.api_status){ + if(res.data.status){ + let resultData = res.data.data; + resultData.filter(item => { + let addObj = {} + addObj[WfForm.convertFieldNameToId("qjr", "detail_1")] = {value:item.qjr,specialobj:[{id:item.qjr,name:item.qjrName}]}; + addObj[WfForm.convertFieldNameToId("qjlx", "detail_1")] = {value:item.qjlx,specialobj:[{id:item.qjlx,name:item.qjlxName}]}; + addObj[WfForm.convertFieldNameToId("ksrq", "detail_1")]={value:item.ksrq} + addObj[WfForm.convertFieldNameToId("kssj", "detail_1")]={value:item.kssj} + addObj[WfForm.convertFieldNameToId("jsrq", "detail_1")]={value:item.jsrq} + addObj[WfForm.convertFieldNameToId("jssj", "detail_1")]={value:item.jssj} + addObj[WfForm.convertFieldNameToId("qjsc", "detail_1")]={value:item.qjsc} + addObj[WfForm.convertFieldNameToId("qtj", "detail_1")]={value:item.qtj} + addObj[WfForm.convertFieldNameToId("btj", "detail_1")]={value:item.btj} + addObj[WfForm.convertFieldNameToId("jqye", "detail_1")]={value:item.jqye==undefined?'':item.jqye} + + WfForm.addDetailRow("detail_1", addObj); + + }); + }else{ + WfForm.showMessage(res.data.errorInfo, 2, 5); + } + } + + resetqjfs(); + } + }) + } + //绑定全天假栏位值变更事件 jQuery(document).ready(function(){ WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("ksrq", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); + generateDetail1() }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("jsrq", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); + generateDetail1() }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("kssj", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); + generateDetail1() }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("jssj", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); + generateDetail1() }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("kssd", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); + generateDetail1() }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("jssd", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); + generateDetail1() }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qjsc", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); + generateDetail1() }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qtj", "detail_3"),function(id,rowIndex,value){ @@ -263,6 +316,7 @@ WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("btj", "detail_3"),function(id,rowIndex,value){ if (null2String(WfForm.getFieldValue(WfForm.convertFieldNameToId("qtj", "detail_3")+"_"+rowIndex))=="1" && null2String(value) == "1") { WfForm.changeFieldValue(WfForm.convertFieldNameToId("qtj","detail_3")+"_"+rowIndex,{ value: '0' });//重置开始时间 + generateDetail1(); } }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("sxwxz", "detail_3"),function(id,rowIndex,value){ @@ -278,9 +332,9 @@ WfForm.changeFieldAttr(WfForm.convertFieldNameToId("kssd","detail_3")+"_"+rowIndex, 1);//开始时段 WfForm.changeFieldAttr(WfForm.convertFieldNameToId("jssd","detail_3")+"_"+rowIndex, 1);//结束时段 } + generateDetail1(); }); WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("qjfs", "detail_3"),function(id,rowIndex,value){ - WfForm.delDetailRow("detail_1", "all"); if(rowIndex !== ""){ WfForm.changeFieldAttr(WfForm.convertFieldNameToId("sxwxz","detail_3")+"_"+rowIndex, 1);//按上下午请假功能不开放 WfForm.changeFieldValue(WfForm.convertFieldNameToId("kssj","detail_3")+"_"+rowIndex,{ value: '' });//重置开始时间 @@ -329,9 +383,13 @@ break; } } + generateDetail1(); }); + + resetqjfs(); }); + //请假方式变更时,同样进行页面显示属性的调整 WfForm.bindFieldChangeEvent(WfForm.convertFieldNameToId("cxjqj"),function(obj,id,value){ resetAttr(value); @@ -339,7 +397,6 @@ WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){ //清空明细1,重新根据明细3生成明细1及明细2 - WfForm.delDetailRow("detail_1", "all"); callback(); // let detailNum = WfForm.getDetailRowCount("detail_1") // if(detailNum > 0){ @@ -350,6 +407,84 @@ }); resetAttr(WfForm.getFieldValue(WfForm.convertFieldNameToId("cxjqj"))) + + + function generateDetail1(){ + WfForm.delDetailRow("detail_1", "all"); + let detail3Index = WfForm.getDetailAllRowIndexStr("detail_3").split(","); + for(var i=0; i