计算员工的年假天数
作者:互联网
1.通过在职位天数和职位等级,得出年总天数
1.jsp
<tr> <th scope="col" width="1%">Formula</th> <th scope="col" width="1%">Service Year</th> <th width="12%">JobGrade</th> <th scope="col" width="10%">Period From</th> <th scope="col" width="10%">Periond To</th> <th scope="col" width="8%">Entitlement</th> <th scope="col" width="8%">Acutual</th> <th scope="col" width="25%">Taken</th> <th scope="col" width="25%"></th> </tr> <% for (int i = 0; i < jobgrades.size(); i++) { Map map = (Map) jobgrades.get(i); String nyear1 = StringHelper.null2String(map.get("nyear")); String bdate = StringHelper.null2String(map.get("bdate")); //职级开始日期 String edate = StringHelper.null2String(map.get("edate")); //职级结束日期 String serviceyear = StringHelper.null2String(map.get("serviceyear")); //已在职年数 String jobgrade1 = StringHelper.null2String(map.get("jobgrade")); //职级 if (StringHelper.isNotEmpty(quitdate)){ if ((isDate(quitdate)>=isDate(bdate)) && (isDate(quitdate)<=isDate(edate))){ edate=quitdate; } } String zhijidays = zhijidays(serviceyear, jobgrade1); String value = dataService.getValue(zhijidays); int nyear = Integer.valueOf(nyear1); int yeardays = 365; if (nyear % 4 == 0 && nyear % 100 != 0 || nyear % 400 == 0) { yeardays = 366; } double Acutual = 0; Acutual =((addDays(edate) - addDays(bdate) + 1) / yeardays) * Integer.valueOf(value); %> <tr> <td scope="row"><%=nyear%> </td> <td scope="row"><%=serviceyear%> </td> <td scope="row"><%=jobgrade1%> </td> <td scope="row"><%=bdate%> </td> <td scope="row"><%=edate%> </td> <td scope="row"><%=value%> </td> <td scope="row"><%=math(Acutual)%> </td> <td scope="row"> <% if (i==jobgrades.size()-1){ %> <%=math(TakenSum)%> <%}%> </td> <td scope="row"></td> </tr> <% if (StringHelper.isNotEmpty(quitdate)){ if ((isDate(quitdate)>=isDate(bdate)) && (isDate(quitdate)<=isDate(edate))){ break; } } } %>
2.获取对应职级的年假天数
/** * 获取对应职级的年假天数 */ public String zhijidays(String service, String job) { Integer intservice = Integer.valueOf(service); String dayssql = ""; if (intservice <= 1) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=0 " + " and field001='" + name(job) + "'"; } else if (intservice > 1 && intservice <= 3) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=1 " + " and field001='" + name(job) + "'"; } else if (intservice > 3 && intservice <= 10) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=3 " + " and field001='" + name(job) + "'"; } else if (intservice > 10) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=10 " + " and field001='" + name(job) + "'"; } return dayssql; }
3.职级名称与id相互转化
/** * 职级名称与id相互转化 */ public String name(String name) { // DataService dataService = (DataService) BaseContext.getBean(request, "dataService"); // String sql="SELECT id,objdesc FROM selectitem WHERE typeid = '2c923daf73e3322e0173e863c72f083e'"; // List values = dataService.getValues(sql); // for (int i=0;i<values.size();i++){ // Map map = (Map) values.get(i); // String ids = StringHelper.null2String(map.get("id")); // String objdesc = StringHelper.null2String(map.get("objdesc")); // System.out.println(ids+"==============================="+objdesc); // } if (name.equals("1")) { return "2c923daf73e3322e0173e87e327c0861"; } else if (name.equals("2")) { return "2c923daf73e3322e0173e87e327c0862"; } else if (name.equals("3")) { return "2c923daf73e3322e0173e87e327c0863"; } else if (name.equals("4")) { return "2c923daf73e3322e0173e87e327c0864"; } else if (name.equals("5")) { return "2c923daf73e3322e0173e87e327c0865"; } else if (name.equals("6")) { return "2c923daf73e3322e0173e87e327c0866"; } else if (name.equals("7")) { return "2c923daf73e3322e0173e87e327c0867"; } else if (name.equals("8")) { return "2c923daf73e3322e0173e87e327c0868"; } else if (name.equals("9")) { return "2c923daf73e3322e0173e87e327c0869"; } else if (name.equals("2c923daf73e3322e0173e87e327c0861")) { return "1"; } else if (name.equals("2c923daf73e3322e0173e87e327c0862")) { return "2"; } else if (name.equals("2c923daf73e3322e0173e87e327c0863")) { return "3"; } else if (name.equals("2c923daf73e3322e0173e87e327c0864")) { return "4"; } else if (name.equals("2c923daf73e3322e0173e87e327c0865")) { return "5"; } else if (name.equals("2c923daf73e3322e0173e87e327c0866")) { return "6"; } else if (name.equals("2c923daf73e3322e0173e87e327c0867")) { return "7"; } else if (name.equals("2c923daf73e3322e0173e87e327c0868")) { return "8"; } else { return "9"; } }
4.获取一年中每个职级对应的年假数
/** * 获取一年中每个职级对应的年假数 */ public double everyzhiji(String nyear1,String bdate,String edate,String value){ int nyear = Integer.valueOf(nyear1); int yeardays = 365; if (nyear % 4 == 0 && nyear % 100 != 0 || nyear % 400 == 0) { yeardays = 366; } double Acutual = ((addDays(edate) - addDays(bdate)+1) / yeardays) * Integer.valueOf(value); return Acutual; }
5.获取对应日期的天数
/** * 获取对应日期的天数 * @param date * @return */ private double addDays(String date) { Date date1 = null; try { date1 = new SimpleDateFormat("yyyy-MM-dd").parse(date); } catch (ParseException e) { e.printStackTrace(); } SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy"); SimpleDateFormat sdf1 = new SimpleDateFormat("MM"); SimpleDateFormat sdf2 = new SimpleDateFormat("dd"); double year = Double.valueOf(sdf0.format(date1)); //年 double month = Double.valueOf(sdf1.format(date1)); //月 double days = Double.valueOf(sdf2.format(date1)); //日 //定义数组,这里2月的天数取28,假设是平年。 int[] Day = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //如果是闰年,那么2月应该有29天。 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { Day[1] = 29; } double sum = 0; for (int i = 0; i < month - 1; i++) { sum += Day[i]; } return sum + days; }
最后整一个jsp
<%@page import="com.velcro.license.LicenseCenter" %> <%@ page contentType="text/html; charset=UTF-8" %> <%@ include file="/vbase/init.jsp" %> <%@ page import="java.util.*" %> <%@ page import="java.text.SimpleDateFormat" %> <%@ page import="com.velcro.base.DataService" %> <%@ page import="com.velcro.workflow.workflow.service.WorkflowbaseService" %> <%@ page import="com.velcro.workflow.workflow.model.Workflowbase" %> <%@ page import="com.velcro.base.util.StringHelper" %> <%@ page import="com.velcro.humres.base.service.HumresService" %> <%@ page import="java.net.URLEncoder" %> <%@ page import="com.velcro.kernel.humres.base.service.IHumresService" %> <%@ page import="com.velcro.kernel.base.IDataService" %> <%@ page import="java.text.ParseException" %> <%@ page import="java.math.BigDecimal" %> <%@ page import="com.sun.tools.jdi.ReferenceTypeImpl" %> <%@ page import="com.velcro.workflow.pipe.service.ExtendJspService" %> <%@ page import="com.velcro.workflow.AbstractWorkflowService" %> <% SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar today = Calendar.getInstance(); //String Year= String.valueOf(today.get(Calendar.YEAR)); //String lastYear=String.valueOf(today.get(Calendar.YEAR)-1); // String lastYear=sdf.format(); DataService dataService = (DataService) BaseContext.getBean(request, "dataService"); String selectDate = StringHelper.null2String(request.getParameter("selectDate")); String lidate = StringHelper.null2String(request.getParameter("lidate")); String action = StringHelper.null2String(request.getParameter("lidateaction")); System.out.println("action"+action); IHumresService humresService = (IHumresService) BaseContext.getBean(request, "humresService"); String humresid = StringHelper.null2String(request.getParameter("humresid")); if (humresid.equals("")) { humresid = currentuser.getId(); } if (StringHelper.isNotEmpty(lidate)){ String quitdateNum=dataService.getValue("select count(*) from quitdate where humresid='"+humresid+"'"); if (quitdateNum.equals("0")){ dataService.executeSql("insert into quitdate(id,humresid,date) values(replace(uuid(),'-',''),'"+humresid+"','"+lidate+"')"); }else { dataService.executeSql("update quitdate set date='"+lidate+"' where humresid='"+humresid+"'"); } } if (StringHelper.isEmpty(lidate) && action.equals("qc")){ dataService.executeSql("delete from quitdate where humresid='"+humresid+"'"); } // String quitdate=dataService.getValue("select count(*) from quitdate where humresid='"+humresid+"'"); String quitdate=dataService.getValue("select date from quitdate where humresid='"+humresid+"'"); System.out.println("quitdate"+quitdate); IHumres humres = (IHumres) humresService.getHumresById(humresid); String humresname = humres.getObjname(); if (selectDate.equals("")) { selectDate = sdf.format(today.getTime()); } //Integer.parseInt(selectDate.subString(0,4))-1; String year = String.valueOf(Integer.parseInt(selectDate.substring(0, 4))); String yeah = selectDate.substring(0, 4); String lastyear = String.valueOf(Integer.parseInt(selectDate.substring(0, 4)) - 1); String beforlastyear = String.valueOf(Integer.parseInt(selectDate.substring(0, 4)) - 2); System.out.println("year====" + year + "beforlastyear===" + beforlastyear + "====lastyear=====" + lastyear); %> <html> <head> <script src="/vjs/base/InputMsg.js" type="text/javascript"></script> <script src="/vjs/base/DataHelper.js" type="text/javascript"></script> <script src="/vjs/functions.js" type="text/javascript"></script> <script src="/js/browser.js" type="text/javascript"></script> <script src="/vjs/selectitemjs.js" type="text/javascript"></script> <script language="JScript.Encode" src="/vjs/rtxint.js"></script> <script language="JScript.Encode" src="/vjs/browinfo.js"></script> <script src="/public/vendor/layer/layer.min.js"></script> <script src="/js/plugins/My97DatePicker/WdatePicker.js"></script> <script language="JScript.Encode" src="/vjs/rtxint.js"></script> <link rel="stylesheet" type="text/css" href="/vcss/report/tables.css"> <script src="/vjs/base/Validator.js" type="text/javascript"></script> <!-- JQuery --> <script type="text/javascript" src="/vjs/jquery/jquery.min.js"></script> <script type="text/javascript" src="/vjs/jquery/jquery.migrate.min.js"></script> <!-- JQuery EasyUI --> <script type="text/javascript" src="/vjs/jquery-easyui/jquery.easyui.min.js"></script> <!--<script type="text/javascript" src="/vjs/init/portalLoader.js"></script>--> </head> <body> <form name="VelcroForm" id="VelcroForm" aciton=""> <div class="bBac" style="margin-left:3%;"> <tr> <button id="button_wb-search" class="btn btn-primary ladda-button" onclick="onSubmit()" type="button"> <span class="ladda-label">搜索</span></button> <button id="button_wb-search1" class="btn btn-primary ladda-button" onclick="daying()" type="button" target="_blank"> <span class="ladda-label">打印</span></button> <% if (currentuser.getId().equals("5a91c68456c08fad0156c4aba61e0056") || currentuser.getId().equals("402881e70be6d209010be75668750014")){ %> <button id="button_wb-search1" class="btn btn-primary ladda-button" onclick="NewFile()" type="button" target="_blank"> <span class="ladda-label">编辑离职日期</span></button> <%}%> </tr> </div> <div style="margin-left:5%;margin-right: 5%;"> <center> <div class="sTab"> <%--WdatePicker({ dateFmt: 'yyyy', minDate: '1900', maxDate: '2099' })--%> <tr> <%--<th>查询时间:</th>--%> <%--<td><input size="5" type="text"--%> <%--onclick="WdatePicker({ dateFmt: 'yyyy', minDate: '1900', maxDate: '2099' })"--%> <%--placeholder="<%=selectDate%>" id="selectDate" name="selectDate" value="<%=year%>"/></td>--%> <th>查询时间:</th> <td> <select id="selectDate" name="selectDate"> <option></option> <!-- 是 --> <% String selectitemListSql = "SELECT s.id AS id,s.objname AS nameid,l.labelname AS names FROM selectitem s LEFT JOIN label l ON " + " s.objname = l.id WHERE s.typeid='8ae8e83a58dcc91a0158ddb5760d0391' AND l.labelname>2019 and s.pid IS NULL ORDER BY names"; List selectitemList = dataService.getValues(selectitemListSql); String yearsid = ""; String newyearsid = ""; for (int n = 0; n < selectitemList.size(); n++) { Map selectMap = (Map) selectitemList.get(n); String names = (String) selectMap.get("names"); if (!names.equals("2020")){ %> <option <%if (names.equals(year)) { %> selected <% newyearsid = (String) selectMap.get("id"); int h = n - 1; String lastid = ""; if (n != 0) { lastid = (String) ((Map) (selectitemList.get(h))).get("id"); } yearsid = lastid; } %> value="<%=names%>"> <%=names%> </option> <% } } %> </select> </td> <th>人员姓名:</th> <td class="input-group"> <input id="humresid" name="humresid" type="hidden" value="<%=humresid%>"> <input class="form-control" id="humresid_span" onkeyup="InputMsg.get('/ServiceAction/com.velcro.humres.base.servlet.InputMsgAction?action=getHumres&filter=humres','humresid','humresid_span',false)" type="text" value="<%=humresname%>"> <button class="icoR iRSin btn btn-primary" onclick="javascript:getnewrefobj('humresid','humresid_span','402881e70bc70ed1010bc75e0361000f','','/vhumres/base/humresview.jsp?id=','0');" type="button" style="right: 33px;"> </button> </td> </tr> <div style="margin-left:80%;"> <img src="/vcss/images/logo1.png" width="75%"> </div> </div> <table id="eTab" cellspacing="0" style="table-layout:fixed;"> <tr> <th scope="col" rowspan="3" width="4%">Staff No.</th> <th scope="col" rowspan="3" width="13%">Staff Name</th> <th scope="col" rowspan="3" width="15%">DOJ</th> <th scope="col" colspan="11">Leaves taken in <%=year%> </th> <th scope="col" rowspan="3" width="5%">remarks</th> </tr> <tr> <th scope="col" colspan="2" width="30%">Leave Date</th> <th scope="col" colspan="5" width="46%">Annual Leave</th> <th scope="col" rowspan="2" width="6%">Sick Leave</th> <th scope="col" rowspan="2" width="6%">Wedding Leave</th> <th scope="col" rowspan="2" width="6%">Nopay Leave</th> <th scope="col" rowspan="2" width="6%">Others</th> </tr> <tr> <th width="20%">From</th> <th width="20%">To</th> <th scope="col" width="10%"><%=lastyear%> Balance</th> <th scope="col" width="10%"><%=year%> Entitlement</th> <th scope="col" width="10%"><%=year%> Actual Entitlement</th> <th scope="col" width="10%"><%=year%> Taken</th> <th scope="col" width="10%"><%=year%>Actual Balance</th> </tr> <% String jobgradeSql = "select * from humreslevellist where field001='" + humresid + "' and nyear='" + yeah + "' order by bdate"; List jobgrades = dataService.getValues(jobgradeSql); double sum = 0; double days = 0; String Entitlements = ""; for (int i = 0; i < jobgrades.size(); i++) { Map map = (Map) jobgrades.get(i); String nyear1 = StringHelper.null2String(map.get("nyear")); String bdate = StringHelper.null2String(map.get("bdate")); //职级开始日期 String edate = StringHelper.null2String(map.get("edate")); //职级结束日期 String serviceyear = StringHelper.null2String(map.get("serviceyear")); //已在职年数 String jobgrade1 = StringHelper.null2String(map.get("jobgrade")); //职级 String zhijidays = zhijidays(serviceyear, jobgrade1); String value = dataService.getValue(zhijidays); if (StringHelper.isNotEmpty(quitdate)){ if ((isDate(quitdate)>=isDate(bdate)) && (isDate(quitdate)<=isDate(edate))){ edate=quitdate; } } double Acutual = everyzhiji(nyear1,bdate,edate,value); //职级对应的年假数 sum += math(Acutual); //计算一年实际获取年假总和 if (StringHelper.isNotEmpty(quitdate)){ if ((isDate(quitdate)>=isDate(bdate)) && (isDate(quitdate)<=isDate(edate))){ break; } } // double entitlement = Double.valueOf(value); //每类职级对应的年假数 // if (days != entitlement) { // if (i == 0) { // Entitlements += "" + (int) entitlement + ""; // } else { // Entitlements += "/" + (int) entitlement; // } // days = entitlement; // } } /** * 上一年员工年假剩余天数 */ String lastyears = ""; if (!yearsid.equals("")) { lastyears = dataService.getValue("SELECT surplustime FROM uft9c2x01609814704081 "+ " WHERE id=(SELECT MAX(id) FROM uft9c2x01609814704081 WHERE years='" + yearsid + "' AND humresid='" + humresid + "' AND yearstype='a')"); } if (lastyears.equals("")) { lastyears = "0"; } String lastyearb = ""; if (!yearsid.equals("")) { lastyearb = dataService.getValue("select surplustime from uft9c2x01609814704081 where years='" + yearsid + "' and humresid='" + humresid + "' and yearstype='b'"); } if (lastyearb.equals("")) { lastyearb = "0"; } %> <tr> <td scope="row"><%=humres.getExttextfield0()%> </td> <td scope="row"><%=humres.getObjname()%> </td> <td scope="row"><%=humres.getExtdatefield0()%> </td> <td scope="row"></td> <td scope="row"></td> </td> <td scope="row"><%=lastyears%> </td> <td scope="row"><%=math(sum)%> </td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> </tr> <% String selectSql = "select * from ufe2u6z01347003295281 where field001='" + humresid + "' " + "and field005 >= '" + yeah + "-03-01' and field005 < '" + (Integer.valueOf(yeah) + 1) + "-03-01' and requestid IN (SELECT id FROM workflowbase WHERE isdelete=0) order by field005"; List values = dataService.getValues(selectSql); String selectSqllast = "select * from ufe2u6z01347003295281 where field001='" + humresid + "' " + "and field005 >= '" + yeah + "-01-01' and field005 < '" + yeah + "-03-01' "+ " and requestid IN (SELECT id FROM workflowbase WHERE isdelete=0) order by field005"; List lastjia = dataService.getValues(selectSqllast); //List lastdateid = new ArrayList(); double TakenSum = 0; double SickLeaveSum = 0; double WeddingLeaveSum = 0; double NopayLeaveSum = 0; double OthersSum = 0; double takens = 0; double takenb = 0; if (!lastyears.equals("")) { takens = Double.valueOf(lastyears); } if (!lastyearb.equals("")) { takenb = Double.valueOf(lastyearb); } double ActualEntitlement = sum+ takens; double ActualBalance = sum + takens; double sumds = 0; sumds = sum + takens; double oneyear=0; //ActualEntitlement = math(ActualEntitlement); //ActualBalance = math(ActualBalance); if (math(takenb)<0){ String selectSqllastyear = "select * from ufe2u6z01347003295281 where field001='" + humresid + "' " + "and field005 >= '" + (Integer.valueOf(yeah) - 1) + "-01-01' and field005 <= '" + (Integer.valueOf(yeah) - 1) + "-12-31' "+ " and requestid IN (SELECT id FROM workflowbase WHERE isdelete=0) order by field005 desc"; List lastjiayear = dataService.getValues(selectSqllastyear); for (int i = 0; i < lastjiayear.size(); i++) { Map map = (Map) lastjiayear.get(i); String field005 = StringHelper.null2String(map.get("field005")); //请假开始日期 String field007 = StringHelper.null2String(map.get("field007")); //请假结束日期 String field013 = StringHelper.null2String(map.get("field013")); //请假天数 String field003 = StringHelper.null2String(map.get("field003")); //请假类别 String requestid = StringHelper.null2String(map.get("requestid")); String field021 = StringHelper.null2String(map.get("field021")); String Taken = "0"; String SickLeave = ""; String WeddingLeave = ""; String NopayLeave = ""; String Others = ""; if (field003.equals("ff80808133a4ca6e0133a4df1a230047")) { if ((-math(takenb))>=math(Double.valueOf(field013))){ takenb=(-takenb)-Double.valueOf(field013); Taken = field013; }else if ((-math(takenb))>0 && (-math(takenb))<math(Double.valueOf(field013))){ Taken = (-math(takenb))+""; takenb=0; } ActualBalance = ActualEntitlement - Double.valueOf(Taken); if (ActualBalance < 0) { ActualBalance = 0; Taken = math(ActualEntitlement) +""; } TakenSum += math(Double.valueOf(Taken)); } if (field003.equals("ff80808133a4ca6e0133a4df1a230045")) { SickLeave = field013; SickLeaveSum += Double.valueOf(SickLeave); SickLeaveSum = math(SickLeaveSum); } else if (field003.equals("ff80808133a4ca6e0133a4df1a230049")) { WeddingLeave = field013; WeddingLeaveSum += Double.valueOf(WeddingLeave); WeddingLeaveSum = math(WeddingLeaveSum); } else if (field003.equals("ff80808133a4ca6e0133a4df1a23004c")) { Others = field013; OthersSum += Double.valueOf(Others); OthersSum = math(OthersSum); } else if (!field003.equals("ff80808133a4ca6e0133a4df1a230047")) { NopayLeave = field013; NopayLeaveSum += Double.valueOf(NopayLeave); } %> <tr> <td scope="row"></td> <td scope="row"></td> <td scope="row"> <% if (currentuser.getId().equals("5a91c68456c08fad0156c4aba61e0056")){ %> <a href="/ServiceAction/com.velcro.workflow.workflow.servlet.WfViewAction?workflowid=<%=requestid%>" target="_blank">编辑</a> <%}%> </td> <td scope="row"><%=field005%> </td> <td scope="row"><%=field007%> </td> <td scope="row"></td> <td scope="row"></td> <td scope="row"><%=math(ActualEntitlement)%> </td> <td scope="row"><%=Taken%> </td> <td scope="row"><%=math(ActualBalance)%> </td> <td scope="row"><%=SickLeave%> </td> <td scope="row"><%=WeddingLeave%> </td> <td scope="row"><%=NopayLeave%> </td> <td scope="row"><%=Others%> <td scope="row"><%=field021%> </td> </tr> <% ActualEntitlement = ActualBalance; if (takenb==0){ break; } } } for (int i = 0; i < lastjia.size(); i++) { Map map = (Map) lastjia.get(i); String field005 = StringHelper.null2String(map.get("field005")); //请假开始日期 String field007 = StringHelper.null2String(map.get("field007")); //请假结束日期 String field013 = StringHelper.null2String(map.get("field013")); //请假天数 String field003 = StringHelper.null2String(map.get("field003")); //请假类别 String requestid = StringHelper.null2String(map.get("requestid")); String field021 = StringHelper.null2String(map.get("field021")); String id = StringHelper.null2String(map.get("id")); String Taken = "0"; String SickLeave = ""; String WeddingLeave = ""; String NopayLeave = ""; String Others = ""; if (field003.equals("ff80808133a4ca6e0133a4df1a230047")) { if (math(takenb)>=math(Double.valueOf(field013))){ takenb=takenb-Double.valueOf(field013); Taken = "0"; }else if (math(takenb)>0 && math(takenb)<math(Double.valueOf(field013))){ Taken = math(Double.valueOf(field013)-takenb)+""; takenb=0; }/*else if (math(takenb)<0){ ActualEntitlement=ActualEntitlement+math(takenb); ActualBalance=ActualBalance+math(takenb); takenb=0; }*/else { Taken = field013; takenb=0; } if (isDate(field005) >=isDate(yeah+"-01-01") && isDate(field005) <=isDate(yeah+"-12-31")){ oneyear+= Double.valueOf(Taken); } ActualBalance = ActualEntitlement - Double.valueOf(Taken); if (ActualBalance < 0) { ActualBalance = 0; Taken = math(ActualEntitlement) +""; } TakenSum += math(Double.valueOf(Taken)); } if (field003.equals("ff80808133a4ca6e0133a4df1a230045")) { SickLeave = field013; SickLeaveSum += Double.valueOf(SickLeave); SickLeaveSum = math(SickLeaveSum); } else if (field003.equals("ff80808133a4ca6e0133a4df1a230049")) { WeddingLeave = field013; WeddingLeaveSum += Double.valueOf(WeddingLeave); WeddingLeaveSum = math(WeddingLeaveSum); } else if (field003.equals("ff80808133a4ca6e0133a4df1a23004c")) { Others = field013; OthersSum += Double.valueOf(Others); OthersSum = math(OthersSum); } else if (!field003.equals("ff80808133a4ca6e0133a4df1a230047")) { NopayLeave = field013; NopayLeaveSum += Double.valueOf(NopayLeave); } %> <tr> <td scope="row"></td> <td scope="row"></td> <td scope="row"> <% if (currentuser.getId().equals("5a91c68456c08fad0156c4aba61e0056")){ %> <a href="/ServiceAction/com.velcro.workflow.workflow.servlet.WfViewAction?workflowid=<%=requestid%>" target="_blank">编辑</a> <%}%> </td> <td scope="row"><%=field005%> </td> <td scope="row"><%=field007%> </td> <td scope="row"></td> <td scope="row"></td> <td scope="row"><%=math(ActualEntitlement)%> </td> <td scope="row"><%=Taken%> </td> <td scope="row"><%=math(ActualBalance)%> </td> <td scope="row"><%=SickLeave%> </td> <td scope="row"><%=WeddingLeave%> </td> <td scope="row"><%=NopayLeave%> </td> <td scope="row"><%=Others%> <td scope="row"><%=field021%> </td> </tr> <% ActualEntitlement = ActualBalance; } %> <% for (int i = 0; i < values.size(); i++) { Map map = (Map) values.get(i); String field005 = StringHelper.null2String(map.get("field005")); //请假开始日期 String field007 = StringHelper.null2String(map.get("field007")); //请假结束日期 String field013 = StringHelper.null2String(map.get("field013")); //请假天数 String field003 = StringHelper.null2String(map.get("field003")); //请假类别 String requestid = StringHelper.null2String(map.get("requestid")); String field021 = StringHelper.null2String(map.get("field021")); String id = StringHelper.null2String(map.get("id")); String Taken = "0"; String SickLeave = ""; String WeddingLeave = ""; String NopayLeave = ""; String Others = ""; // if (takens>0){ if (field003.equals("ff80808133a4ca6e0133a4df1a230047")) { Taken = field013; if (isDate(field005) >=isDate(yeah+"-01-01") && isDate(field005) <=isDate(yeah+"-12-31")){ oneyear+= Double.valueOf(Taken); } ActualBalance = ActualEntitlement - Double.valueOf(Taken); if (ActualBalance < 0) { ActualBalance = 0; Taken = math(ActualEntitlement) +""; } TakenSum += math(Double.valueOf(Taken)); } // } if (field003.equals("ff80808133a4ca6e0133a4df1a230045")) { SickLeave = field013; SickLeaveSum += Double.valueOf(SickLeave); SickLeaveSum = math(SickLeaveSum); } else if (field003.equals("ff80808133a4ca6e0133a4df1a230049")) { WeddingLeave = field013; WeddingLeaveSum += Double.valueOf(WeddingLeave); WeddingLeaveSum = math(WeddingLeaveSum); } else if (field003.equals("ff80808133a4ca6e0133a4df1a23004c")) { Others = field013; OthersSum += Double.valueOf(Others); OthersSum = math(OthersSum); } else if (!field003.equals("ff80808133a4ca6e0133a4df1a230047")) { NopayLeave = field013; NopayLeaveSum += Double.valueOf(NopayLeave); } %> <tr> <td scope="row"></td> <td scope="row"></td> <td scope="row"> <% if (currentuser.getId().equals("5a91c68456c08fad0156c4aba61e0056")){ %> <a href="/ServiceAction/com.velcro.workflow.workflow.servlet.WfViewAction?workflowid=<%=requestid%>" target="_blank">编辑</a> <%}%> </td> <td scope="row"><%=field005%> </td> <td scope="row"><%=field007%> </td> <td scope="row"></td> <td scope="row"></td> <td scope="row"><%=math(ActualEntitlement)%> </td> <td scope="row"><%=Taken%> </td> <td scope="row"><%=math(ActualBalance)%> </td> <td scope="row"><%=SickLeave%> </td> <td scope="row"><%=WeddingLeave%> </td> <td scope="row"><%=NopayLeave%> </td> <td scope="row"><%=Others%> <td scope="row"><%=field021%> </td> </tr> <% ActualEntitlement = ActualBalance; } %> <tr> <td scope="row"></td> <td scope="row">Total:</td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"><%=math(TakenSum)%> </td> <td scope="row"><%=math(ActualBalance)%> </td> <td scope="row"><%=SickLeaveSum%> </td> <td scope="row"><%=WeddingLeaveSum%> </td> <td scope="row"><%=NopayLeaveSum%> </td> <td scope="row"><%=OthersSum%> </td> <td scope="row"></td> </tr> <% if (isDate(yeah+"-01-01")>=isDate("2020-01-01")){ List intyear = dataService.getValues("select * from uft9c2x01609814704081 where yearstype='b' and years='"+newyearsid+"' "+ " and humresid='"+humresid+"'"); if (intyear.isEmpty()){ dataService.executeSql("insert into uft9c2x01609814704081(id,requestid,nodeid,humresid,years,surplustime,yearstype)"+ " values (replace(uuid(),'-',''),'2c923daf7838c1610178a6211ca0295d','2c923daf76b7d9e30176d079a1c01309',"+ "'"+humresid+"','"+newyearsid+"','"+math(sumds-oneyear)+"','b')"); }else { dataService.executeSql("update uft9c2x01609814704081 set surplustime='"+math(sumds-oneyear)+"' "+ " where yearstype='b' and years='"+newyearsid+"' and humresid='"+humresid+"'"); } } // dataService.executeSql("update uft9c2x01609814704081 set surplustime='"+math(sum-oneyear)+"' "+ // " where requestid='2c923daf7838c1610178a6211ca0295d' and humresid='"+humresid+"'"); // dataService.executeSql("insert into uft9c2x01609814704081(id,requestid,nodeid,humresid,years,surplustime,yearstype)"+ // " values (replace(uuid(),'-',''),'2c923daf7838c1610178a6211ca0295d','2c923daf76b7d9e30176d079a1c01309',"+ // "'"+humresid+"','8ae8e83a58dcc91a0158ddb654c703a9','"+math(sum-oneyear)+"','b')"); %> </table> <table id="eTab" cellspacing="0"> <tr> <th scope="col" width="1%">Formula</th> <th scope="col" width="1%">Service Year</th> <th width="12%">JobGrade</th> <th scope="col" width="10%">Period From</th> <th scope="col" width="10%">Periond To</th> <th scope="col" width="8%">Entitlement</th> <th scope="col" width="8%">Acutual</th> <th scope="col" width="25%">Taken</th> <th scope="col" width="25%"></th> </tr> <% for (int i = 0; i < jobgrades.size(); i++) { Map map = (Map) jobgrades.get(i); String nyear1 = StringHelper.null2String(map.get("nyear")); String bdate = StringHelper.null2String(map.get("bdate")); //职级开始日期 String edate = StringHelper.null2String(map.get("edate")); //职级结束日期 String serviceyear = StringHelper.null2String(map.get("serviceyear")); //已在职年数 String jobgrade1 = StringHelper.null2String(map.get("jobgrade")); //职级 if (StringHelper.isNotEmpty(quitdate)){ if ((isDate(quitdate)>=isDate(bdate)) && (isDate(quitdate)<=isDate(edate))){ edate=quitdate; } } String zhijidays = zhijidays(serviceyear, jobgrade1); String value = dataService.getValue(zhijidays); int nyear = Integer.valueOf(nyear1); int yeardays = 365; if (nyear % 4 == 0 && nyear % 100 != 0 || nyear % 400 == 0) { yeardays = 366; } double Acutual = 0; Acutual =((addDays(edate) - addDays(bdate) + 1) / yeardays) * Integer.valueOf(value); %> <tr> <td scope="row"><%=nyear%> </td> <td scope="row"><%=serviceyear%> </td> <td scope="row"><%=jobgrade1%> </td> <td scope="row"><%=bdate%> </td> <td scope="row"><%=edate%> </td> <td scope="row"><%=value%> </td> <td scope="row"><%=math(Acutual)%> </td> <td scope="row"> <% if (i==jobgrades.size()-1){ %> <%=math(TakenSum)%> <%}%> </td> <td scope="row"></td> </tr> <% if (StringHelper.isNotEmpty(quitdate)){ if ((isDate(quitdate)>=isDate(bdate)) && (isDate(quitdate)<=isDate(edate))){ break; } } } %> <tr> <td scope="row">剩余假期</td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"></td> <td scope="row"><%=math(ActualBalance)%> </td> <td scope="row"> </td> <td scope="row"> </td> </tr> </table> </center> </div> </form> <div style="display: none"> <div id="openwin" title="编辑离职日期" style="overflow: hidden;"> <script src="/vjs/base/Validator.js" type="text/javascript"></script> <form name="dates" id="dates" aciton=""> <div class="vTab"> <table> <tr> <th>离职日期</th><!-- 联系人 --> <%--<td><input type="text" id="lidate" name="lidate" />--%> <td> <input name="lidate" id="lidate" type="hidden" value="<%=quitdate%>"> <input name="lidatespan" id="lidatespan" style="width: 295px;" readonly="readonly" onchange="changeDate('lidate')" type="text" value="<%=quitdate%>"> <button class="icoR iRDat" id="button_lidate" onclick="javascript:getdate(event,'lidate','lidatespan','0');" type="button"></button> <input name="form_need_check" disabled="disabled" id="form_need_check_lidatespan" required="false" type="hidden" value="lidatespan" requiredfield="false" datatype="date('yyyy-MM-dd')"> <input name="lidateaction" id="lidateaction" type="hidden" value="qc"> <input name="selectDate" id="selectDate" type="hidden" value="<%=selectDate%>"> <input name="humresid" id="humresid" type="hidden" value="<%=humresid%>"> </td> </tr> </table> </div> <div style="float: right;" class="bBac"> <div class="fMid"> <button class="btn" accessKey="S" onclick="onconfirm()"><%=labelService.getLabelName(locale,"402881eb0bcbfd19010bcc6e71870022") %></button> </div> </div> </form> </div></div> </body> </html> <%! /** * 向上取一位小数 * */ public double math(double t) { BigDecimal bigDecimal2 = new BigDecimal(t).setScale(2, BigDecimal.ROUND_HALF_UP);//向上取小数点后两位数 t = bigDecimal2.doubleValue(); BigDecimal bigDecimal1 = new BigDecimal(t).setScale(1, BigDecimal.ROUND_HALF_UP); t = bigDecimal1.doubleValue(); return t; } /** * 获取时间值,用于进行时间比较 */ public long isDate(String Date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date parse = sdf.parse(Date); long time = parse.getTime(); return time; } /** * 获取对应职级的年假天数 */ public String zhijidays(String service, String job) { Integer intservice = Integer.valueOf(service); String dayssql = ""; if (intservice <= 1) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=0 " + " and field001='" + name(job) + "'"; } else if (intservice > 1 && intservice <= 3) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=1 " + " and field001='" + name(job) + "'"; } else if (intservice > 3 && intservice <= 10) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=3 " + " and field001='" + name(job) + "'"; } else if (intservice > 10) { dayssql = "select field003 from ufa0p7g41597332545253 where " + " requestid='402880e978492dea017849f7f7690009' and field004=10 " + " and field001='" + name(job) + "'"; } return dayssql; } /** * 获取对应日期的天数 * @param date * @return */ private double addDays(String date) { Date date1 = null; try { date1 = new SimpleDateFormat("yyyy-MM-dd").parse(date); } catch (ParseException e) { e.printStackTrace(); } SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy"); SimpleDateFormat sdf1 = new SimpleDateFormat("MM"); SimpleDateFormat sdf2 = new SimpleDateFormat("dd"); double year = Double.valueOf(sdf0.format(date1)); //年 double month = Double.valueOf(sdf1.format(date1)); //月 double days = Double.valueOf(sdf2.format(date1)); //日 //定义数组,这里2月的天数取28,假设是平年。 int[] Day = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //如果是闰年,那么2月应该有29天。 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { Day[1] = 29; } double sum = 0; for (int i = 0; i < month - 1; i++) { sum += Day[i]; } return sum + days; } /** * 职级名称与id相互转化 */ public String name(String name) { // DataService dataService = (DataService) BaseContext.getBean(request, "dataService"); // String sql="SELECT id,objdesc FROM selectitem WHERE typeid = '2c923daf73e3322e0173e863c72f083e'"; // List values = dataService.getValues(sql); // for (int i=0;i<values.size();i++){ // Map map = (Map) values.get(i); // String ids = StringHelper.null2String(map.get("id")); // String objdesc = StringHelper.null2String(map.get("objdesc")); // System.out.println(ids+"==============================="+objdesc); // } if (name.equals("1")) { return "2c923daf73e3322e0173e87e327c0861"; } else if (name.equals("2")) { return "2c923daf73e3322e0173e87e327c0862"; } else if (name.equals("3")) { return "2c923daf73e3322e0173e87e327c0863"; } else if (name.equals("4")) { return "2c923daf73e3322e0173e87e327c0864"; } else if (name.equals("5")) { return "2c923daf73e3322e0173e87e327c0865"; } else if (name.equals("6")) { return "2c923daf73e3322e0173e87e327c0866"; } else if (name.equals("7")) { return "2c923daf73e3322e0173e87e327c0867"; } else if (name.equals("8")) { return "2c923daf73e3322e0173e87e327c0868"; } else if (name.equals("9")) { return "2c923daf73e3322e0173e87e327c0869"; } else if (name.equals("2c923daf73e3322e0173e87e327c0861")) { return "1"; } else if (name.equals("2c923daf73e3322e0173e87e327c0862")) { return "2"; } else if (name.equals("2c923daf73e3322e0173e87e327c0863")) { return "3"; } else if (name.equals("2c923daf73e3322e0173e87e327c0864")) { return "4"; } else if (name.equals("2c923daf73e3322e0173e87e327c0865")) { return "5"; } else if (name.equals("2c923daf73e3322e0173e87e327c0866")) { return "6"; } else if (name.equals("2c923daf73e3322e0173e87e327c0867")) { return "7"; } else if (name.equals("2c923daf73e3322e0173e87e327c0868")) { return "8"; } else { return "9"; } } /** * 获取一年中每个职级对应的年假数 */ public double everyzhiji(String nyear1,String bdate,String edate,String value){ int nyear = Integer.valueOf(nyear1); int yeardays = 365; if (nyear % 4 == 0 && nyear % 100 != 0 || nyear % 400 == 0) { yeardays = 366; } double Acutual = ((addDays(edate) - addDays(bdate)+1) / yeardays) * Integer.valueOf(value); return Acutual; } %> <script> function onSubmit() { document.VelcroForm.submit(); } function daying() { a=$("#selectDate option:selected").val(); b=$("#humresid").val(); c = $('#VelcroForm').serialize(); window.location.href="/vworkflow/workflow/fhumresannualleave.jsp?"+c } //显示新建文件提示页 function NewFile() { $('#openwin').dialog({ modal : true, width : "400", height : "130" }); $('#openwin').dialog("open"); date('yyyy-MM-dd') }; //新建文件确认 function onconfirm() { $('#openwin').dialog("close"); //var fileName = document.getElementById("lidate").value; //文件名 document.dates.submit(); //window.location.href="/vworkflow/workflow/fhumresannualleave.jsp?"+c //alert("fileName:" + fileName); }; </script>
标签:&&,isDate,String,double,valueOf,员工,dataService,计算,天数 来源: https://www.cnblogs.com/jk200/p/16463378.html