package com.engine.kq.util; import com.alibaba.fastjson.JSONObject; import com.engine.kq.biz.*; import com.google.common.collect.Lists; import weaver.common.DateUtil; import weaver.common.StringUtil; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.company.DepartmentComInfo; import weaver.hrm.company.SubCompanyComInfo; import weaver.hrm.job.JobTitlesComInfo; import weaver.hrm.resource.ResourceComInfo; import weaver.systeminfo.SystemEnv; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import weaver.workflow.workflow.WorkflowRequestComInfo; /** * 列表的显示转换方法 */ public class KQTransMethod { /***************************************假期的相关方法***************************************/ /** * 判断假期类型能否进行编辑、删除、查看日志 * (被流程引用过的假期类型不可删除,新建过假期规则的假期类型不可删除、未启用的假期类型不可编辑) * * @param ruleId 假期类型的ID * @param param canEdit:canDelete:canLog * @return */ public ArrayList getLeaveRulesOperate(String ruleId, String param) { ArrayList resultList = new ArrayList(); String[] allParam = param.split(":"); String canEdit = allParam[0]; String canDelete = allParam[1]; String canLog = allParam[2]; boolean leaveTypeUsed = false; boolean isEnable = true; boolean hasLeaveRules = false; try { String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and ruleId=?"; RecordSet recordSet = new RecordSet(); recordSet.executeQuery(sql, ruleId); if (recordSet.next()) { hasLeaveRules = true; } leaveTypeUsed = KQFlowDataBiz.leaveTypeUsed(ruleId);//判断是否有发起过该请假类型的请假流程 KQLeaveRulesComInfo rulesComInfo = new KQLeaveRulesComInfo(); isEnable = rulesComInfo.getIsEnable(ruleId).equals("1");//判断该请假是否启用 } catch (Exception e) { e.printStackTrace(); } resultList.add(isEnable ? canEdit : "false");//是否可以编辑 resultList.add((leaveTypeUsed || hasLeaveRules) ? "false" : canDelete);//是否可以删除 resultList.add(canLog);//是否可以查看日志 return resultList; } /** * 判断假期类型是否可以勾选,即是否可以删除 * (被流程引用过的假期类型不可删除、新建过假期规则的假期类型不可删除) * * @param ruleId 假期类型ID * @return */ public String getLeaveRulesCheckbox(String ruleId) { boolean leaveTypeUsed = false; boolean hasLeaveRules = false; try { String sql = "select * from kq_LeaveRulesDetail where (isDelete is null or isDelete<>1) and ruleId=?"; RecordSet recordSet = new RecordSet(); recordSet.executeQuery(sql, ruleId); if (recordSet.next()) { hasLeaveRules = true; } leaveTypeUsed = KQFlowDataBiz.leaveTypeUsed(ruleId);//判断是否有发起过该请假类型的请假流程 } catch (Exception e) { e.printStackTrace(); } return String.valueOf(!leaveTypeUsed && !hasLeaveRules); } /** * 获取最小请假单位 * 1-按天请假 * 2-按半天请假 * 3-按小时请假 * 4-按整天请假 * * @param minimumUnit * @param languageId * @return */ public String getMinimumUnitName4Browser(String minimumUnit, String languageId) { String minimumUnitName = ""; int language = Util.getIntValue(languageId, 7); switch (minimumUnit) { case "1": minimumUnitName = SystemEnv.getHtmlLabelName(1925, language); break; case "2": minimumUnitName = SystemEnv.getHtmlLabelName(128559, language); break; case "3": minimumUnitName = SystemEnv.getHtmlLabelName(391, language); break; case "4": minimumUnitName = SystemEnv.getHtmlLabelName(390728, language); break; case "5": minimumUnitName = SystemEnv.getHtmlLabelName(124952, language); break; case "6": minimumUnitName = SystemEnv.getHtmlLabelName(529675, language); break; default: minimumUnitName = ""; break; } return minimumUnitName; } /** * 获取最小请假单位 * 1-按天请假 * 2-按半天请假 * 3-按小时请假 * 4-按整天请假 * * @param minimumUnit * @param languageId * @return */ public String getMinimumUnitName(String minimumUnit, String languageId) { String minimumUnitName = ""; int language = Util.getIntValue(languageId, 7); switch (minimumUnit) { case "1": minimumUnitName = SystemEnv.getHtmlLabelName(388885, language); break; case "2": minimumUnitName = SystemEnv.getHtmlLabelName(388886, language); break; case "3": minimumUnitName = SystemEnv.getHtmlLabelName(388887, language); break; case "4": minimumUnitName = SystemEnv.getHtmlLabelName(389680, language); break; case "5": minimumUnitName = SystemEnv.getHtmlLabelName(514712, language); break; case "6": minimumUnitName = SystemEnv.getHtmlLabelName(514786, language); break; default: minimumUnitName = ""; break; } return minimumUnitName; } /** * 计算请假时长方式 * 1-按工作日计算请假时长 * 2-按自然日计算请假时长 * * @param computingMode * @param languageId * @return */ public String getComputingModeName(String computingMode, String languageId) { String computingModeName = ""; int language = Util.getIntValue(languageId, 7); switch (computingMode) { case "1": computingModeName = SystemEnv.getHtmlLabelName(388889, language); break; case "2": computingModeName = SystemEnv.getHtmlLabelName(388890, language); break; default: computingModeName = ""; break; } return computingModeName; } /** * 获取余额规则 * 1-手动发放 * 2-按司龄自动发放 * 3-按工龄自动发放 * 4-每年自动发放固定天数 * 5-加班时长自动计入余额 * 6-按工龄+司龄自动发放 * * @param distributionMode * @return */ public String getDistributionModName(String distributionMode, String languageId) { int language = Util.getIntValue(languageId, 7); String distributionModeName = ""; switch (distributionMode) { case "1": distributionModeName = SystemEnv.getHtmlLabelName(388947, language); break; case "2": distributionModeName = SystemEnv.getHtmlLabelName(390374, language); break; case "3": distributionModeName = SystemEnv.getHtmlLabelName(388949, language); break; case "4": distributionModeName = SystemEnv.getHtmlLabelName(388950, language); break; case "5": distributionModeName = SystemEnv.getHtmlLabelName(388951, language); break; case "6": distributionModeName = SystemEnv.getHtmlLabelName(390822, language); break; case "7": distributionModeName = SystemEnv.getHtmlLabelName(514025, language); break; case "8": distributionModeName = SystemEnv.getHtmlLabelName(536880, language); break; default: distributionModeName = ""; break; } return distributionModeName; } /** * 获取应用范围的显示名称 * * @param scopeType * @param languageId * @return */ public String getScopeTypeName(String scopeType, String languageId) { int language = Util.getIntValue(languageId, 7); String scopeTypeName = ""; if (scopeType.equals("0")) { scopeTypeName = SystemEnv.getHtmlLabelName(140, language); } else if (scopeType.equals("1")) { scopeTypeName = SystemEnv.getHtmlLabelName(33553, language); } return scopeTypeName; } /** * 获取分部的名称 * * @param organizationType * @param organizationId * @return */ public String getOrganizationIdName(String organizationId, String organizationType) { SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); String showName = ""; if (organizationType.equals("1")) { showName = subCompanyComInfo.getSubCompanyname(organizationId); } return showName; } /** * 获取应用范围的显示名称 * * @param organizationType * @param languageId * @return */ public String getOrganizationTypeName(String organizationType, String languageId) { int language = Util.getIntValue(languageId, 7); String showName = ""; if (organizationType.equals("0")) { showName = SystemEnv.getHtmlLabelName(140, language); } else { showName = SystemEnv.getHtmlLabelName(141, language); } return showName; } /** * 获取释放规则的显示名称 * * @param releaseRule * @param languageId * @return */ public String getReleaseRuleName(String releaseRule, String languageId) { String releaseRuleName = ""; int language = Util.getIntValue(languageId, 7); if (releaseRule.equals("0")) { releaseRuleName = SystemEnv.getHtmlLabelName(32499, language); } else if (releaseRule.equals("1")) { releaseRuleName = SystemEnv.getHtmlLabelName(390280, language); } else if (releaseRule.equals("2")) { releaseRuleName = SystemEnv.getHtmlLabelName(390281, language); } return releaseRuleName; } /** * 获取有效期规则的显示名称 * * @param validityRule * @param languageId * @return */ public String getValidityRuleShow(String validityRule, String languageId) { String validityRuleShow = ""; int language = Util.getIntValue(languageId, 7); if (validityRule.equals("0")) { validityRuleShow = SystemEnv.getHtmlLabelName(22135, language); } else if (validityRule.equals("1")) { validityRuleShow = SystemEnv.getHtmlLabelName(388953, language); } else if (validityRule.equals("2")) { validityRuleShow = SystemEnv.getHtmlLabelName(388954, language); } else if (validityRule.equals("3")) { validityRuleShow = SystemEnv.getHtmlLabelName(389739, language); } else if (validityRule.equals("4")) { validityRuleShow = SystemEnv.getHtmlLabelName(508428, language); } else if (validityRule.equals("5")) { validityRuleShow = SystemEnv.getHtmlLabelName(513525, language); } else if (validityRule.equals("6")) { validityRuleShow = SystemEnv.getHtmlLabelName(515135, language); } else if (validityRule.equals("7")) { validityRuleShow = SystemEnv.getHtmlLabelName(536941, language); } return validityRuleShow; } /** * 获取是否启用假期余额的显示名称 * * @param balanceEnable 是否显示假期余额 * @param languageId 系统语言 * @return */ public String getBalanceEnableShow(String balanceEnable, String languageId) { String balanceEnableShow = ""; try { int language = Util.getIntValue(languageId, 7); if (balanceEnable.equals("1")) { balanceEnableShow = SystemEnv.getHtmlLabelName(18095, language); } else { balanceEnableShow = SystemEnv.getHtmlLabelName(32386, language); } } catch (Exception e) { e.printStackTrace(); } return balanceEnableShow; } /** * 获取假期类型的显示名称 * * @param typeId 假期类型的ID(对应于数据库表kq_leaveRules的主键ID) * @param languageId 系统语言 * @return */ public String getLeaveTypesName(String typeId, String languageId) { String leaveTypesName = ""; try { KQLeaveRulesComInfo rulesComInfo = new KQLeaveRulesComInfo(); leaveTypesName = Util.formatMultiLang(rulesComInfo.getLeaveName(typeId), languageId); } catch (Exception e) { e.printStackTrace(); } return leaveTypesName; } /***************************************员工假期余额的相关方法***************************************/ /** * 为了前端校验时取值,故将分页控件的值做一下转换显示 * * @param value * @return */ public String getOriginalShow(String value) { BigDecimal bigDecimal = new BigDecimal(Util.null2s(value.trim(), "0")); return bigDecimal.setScale(2, RoundingMode.HALF_UP).toPlainString(); } /** * 获取当前可用的假期余额(假期余额基数*释放比例) * * @param balanceId 假期余额表的主键ID * @param otherPara 指定的人员ID+指定的假期规则ID+指定的所属年份+假期基数+是计算法定年假还是计算福利年假('neither'-非混合模式、legal-法定年假、welfare-福利年假) * @return */ public String getCanUseAmount(String balanceId, String otherPara) { BigDecimal canUseAmount = new BigDecimal(0); String otherParaArr[] = otherPara.split("\\+", 5); String resourceId = otherParaArr[0]; String leaveRulesId = otherParaArr[1]; String belongYear = otherParaArr[2]; BigDecimal baseAmount = new BigDecimal(Util.null2s(otherParaArr[3].trim(), "0")); try { String legalOrWelfare = Util.null2String(otherParaArr[4]); /*获取当前日期*/ String date = DateUtil.getCurrentDate(); //判断查询年份是否是小孩出生日期的第三年 new BaseBean().writeLog("-KQTransMethod-belongYear:"+belongYear); boolean isLastYearChildcareLeave = UtilKQHS.isLastYearChildcareLeave(resourceId, belongYear); new BaseBean().writeLog("-KQTransMethod-isLastYearChildcareLeave:"+isLastYearChildcareLeave); if(isLastYearChildcareLeave && "36".equals(leaveRulesId)){ canUseAmount = KQBalanceOfLeaveBiz.getCanUseAmountChildcareLeave(resourceId, leaveRulesId, belongYear, baseAmount, legalOrWelfare, date, isLastYearChildcareLeave); }else{ canUseAmount = KQBalanceOfLeaveBiz.getCanUseAmount(resourceId, leaveRulesId, belongYear, baseAmount, legalOrWelfare, date); } } catch (Exception e) { e.printStackTrace(); } String canUseAmountStr = canUseAmount.setScale(2, RoundingMode.HALF_UP).toPlainString(); //36:育儿假 37:独生子女护理假 if("36".equals(leaveRulesId) || "37".equals(leaveRulesId)){ canUseAmountStr = UtilKQHS.handleAmount(canUseAmountStr,baseAmount.toPlainString()); } return canUseAmountStr; } /** * 获取剩余的假期余额(假期余额基数*释放比例+额外余额-已用余额) * * @param balanceId 假期余额表的主键ID * @param otherPara 指定的人员ID+指定的假期规则ID+指定的所属年份+假期基数+额外假期余额+已休假期余额+是计算法定年假还是计算福利年假(neither-非混合模式、legal-法定年假、welfare-福利年假) * @return */ public String getRestAmount(String balanceId, String otherPara) { String restAmount = "0.00"; try { String otherParaArr[] = otherPara.split("\\+", 7); String resourceId = otherParaArr[0]; String leaveRulesId = otherParaArr[1]; String belongYear = otherParaArr[2]; double baseAmount = Util.getDoubleValue(otherParaArr[3], 0.00); double extraAmount = Util.getDoubleValue(otherParaArr[4], 0.00); double usedAmount = Util.getDoubleValue(otherParaArr[5], 0.00); String legalOrWelfare = Util.null2s(otherParaArr[6], ""); String str = resourceId + "+" + leaveRulesId + "+" + belongYear + "+" + baseAmount + "+" + legalOrWelfare; double canUseAmount = Util.getDoubleValue(getCanUseAmount(balanceId, str), 0.00); restAmount = String.format("%.2f", canUseAmount + extraAmount - usedAmount); } catch (Exception e) { e.printStackTrace(); } return restAmount; } /** * 判断假期余额是否有效 * * @param leaveRulesId * @param otherParams * @return */ public String getBalanceStatusShow(String leaveRulesId, String otherParams) { String statusShow = ""; try { String resourceId = otherParams.split("\\+", 5)[0]; String belongYear = otherParams.split("\\+", 5)[1]; String languageId = otherParams.split("\\+", 5)[2]; String effectiveDate = otherParams.split("\\+", 5)[3]; String expirationDate = otherParams.split("\\+", 5)[4]; /*获取今天的日期、此刻的时间*/ Calendar today = Calendar.getInstance(); String currentDate = Util.add0(today.get(Calendar.YEAR), 4) + "-" + Util.add0(today.get(Calendar.MONTH) + 1, 2) + "-" + Util.add0(today.get(Calendar.DAY_OF_MONTH), 2); boolean status = KQBalanceOfLeaveBiz.getBalanceStatus(leaveRulesId, resourceId, belongYear, currentDate, effectiveDate, expirationDate); if (status) { statusShow = SystemEnv.getHtmlLabelName(2246, Util.getIntValue(languageId, 7)); } else { statusShow = SystemEnv.getHtmlLabelName(2245, Util.getIntValue(languageId, 7)); } } catch (Exception e) { e.printStackTrace(); } return statusShow; } public String getTotalAmountShow(String baseAmount, String otherParams) { String extraAmount = otherParams; BigDecimal _baseAmount = new BigDecimal(Util.null2s(baseAmount.trim(), "0")); BigDecimal _extraAmount = new BigDecimal(Util.null2s(extraAmount.trim(), "0")); BigDecimal _totalAmount = _baseAmount.add(_extraAmount); String totalAmount = _totalAmount.setScale(2, RoundingMode.HALF_UP).toPlainString(); return totalAmount; } public String getTiaoxiuamountShow(String tiaoxiuamount) { BigDecimal _tiaoxiuamount = new BigDecimal(Util.null2s(tiaoxiuamount, "0")); String totalAmount = _tiaoxiuamount.setScale(2, RoundingMode.HALF_UP).toPlainString(); return totalAmount; } /** * 获取已经失效的调休值(针对单条记录而言的,不是汇总的) * * @param invalidAmount * @param otherParams * @return */ public String getInvalidAmountShow(String invalidAmount, String otherParams) { /*获取当前日期,当前时间*/ Calendar today = Calendar.getInstance(); String currentDate = Util.add0(today.get(Calendar.YEAR), 4) + "-" + Util.add0(today.get(Calendar.MONTH) + 1, 2) + "-" + Util.add0(today.get(Calendar.DAY_OF_MONTH), 2); // tiaoxiuamount String[] otherParamArr = otherParams.split("\\+", 5); BigDecimal baseAmount = new BigDecimal(Util.null2s(otherParamArr[0].trim(), "0"));//基数 BigDecimal extraAmount = new BigDecimal(Util.null2s(otherParamArr[1].trim(), "0"));//额外 BigDecimal tiaoxiuAmount = new BigDecimal(Util.null2s(otherParamArr[4].trim(), "0"));//加班生成的调休 BigDecimal totalAmount = baseAmount.add(extraAmount).add(tiaoxiuAmount); BigDecimal usedAmount = new BigDecimal(Util.null2s(otherParamArr[2].trim(), "0"));//已休 String expirationDate = Util.null2String(otherParamArr[3]).trim(); if ("".equals(expirationDate) || expirationDate.compareTo(currentDate) >= 0) { invalidAmount = "0.00"; } else { invalidAmount = totalAmount.subtract(usedAmount).setScale(2, RoundingMode.HALF_UP).toPlainString(); } return invalidAmount; } /** * 获取剩余的调休值(针对单条记录而言的,不是汇总的) * * @param restAmount * @param otherParam * @return */ public String getRestAmountShow(String restAmount, String otherParam) { /*获取当前日期,当前时间*/ Calendar today = Calendar.getInstance(); String currentDate = Util.add0(today.get(Calendar.YEAR), 4) + "-" + Util.add0(today.get(Calendar.MONTH) + 1, 2) + "-" + Util.add0(today.get(Calendar.DAY_OF_MONTH), 2); String[] otherParamArr = otherParam.split("\\+", 5); BigDecimal baseAmount = new BigDecimal(Util.null2s(otherParamArr[0].trim(), "0"));//基数 BigDecimal extraAmount = new BigDecimal(Util.null2s(otherParamArr[1].trim(), "0"));//额外 BigDecimal usedAmount = new BigDecimal(Util.null2s(otherParamArr[2].trim(), "0"));//已休 BigDecimal tiaoxiuamount = new BigDecimal(Util.null2s(otherParamArr[4].trim(), "0"));//加班生成调休 BigDecimal totalAmount = baseAmount.add(extraAmount).add(tiaoxiuamount); String expirationDate = Util.null2String(otherParamArr[3]).trim(); if ("".equals(expirationDate) || expirationDate.compareTo(currentDate) >= 0) { restAmount = totalAmount.subtract(usedAmount).setScale(2, RoundingMode.HALF_UP).toPlainString(); } else { restAmount = "0.00"; } return restAmount; } /** * 获取加班类型 * * @param overtimeType * @param language * @return */ public String getOvertimeTypeShow(String overtimeType, String language) { if (overtimeType.equals("3")) { //打卡生成的调休 return SystemEnv.getHtmlLabelName(509982, Util.getIntValue(language, 7)); } else if (overtimeType.equals("4")) { //加班流程生成的调休 return SystemEnv.getHtmlLabelName(509981, Util.getIntValue(language, 7)); } else if (overtimeType.equals("7")) { //Excel导入生成的调休 return SystemEnv.getHtmlLabelName(509980, Util.getIntValue(language, 7)); } else { //原有的调休 return SystemEnv.getHtmlLabelName(509983, Util.getIntValue(language, 7)); } } public String getAllTotalAmount(String allTotalAmount, String otherParams) { String[] otherParamArr = otherParams.split("\\+", 6); BigDecimal allBaseAmountB = new BigDecimal(Util.null2s(otherParamArr[0].trim(), "0")); BigDecimal allExtraAmountB = new BigDecimal(Util.null2s(otherParamArr[1].trim(), "0")); BigDecimal allBaseAmountC = new BigDecimal(Util.null2s(otherParamArr[2].trim(), "0")); BigDecimal allExtraAmountC = new BigDecimal(Util.null2s(otherParamArr[3].trim(), "0")); BigDecimal alltiaoxiuamountB = new BigDecimal(Util.null2s(otherParamArr[4].trim(), "0")); BigDecimal alltiaoxiuamountC = new BigDecimal(Util.null2s(otherParamArr[5].trim(), "0")); allTotalAmount = allBaseAmountB.add(allExtraAmountB).add(allBaseAmountC).add(allExtraAmountC) .add(alltiaoxiuamountB).add(alltiaoxiuamountC).setScale(2, RoundingMode.HALF_UP).toPlainString(); return allTotalAmount; } public String getAllUsedAmount(String allUsedAmount, String otherParams) { String[] otherParamArr = otherParams.split("\\+", 2); BigDecimal allUsedAmountB = new BigDecimal(Util.null2s(otherParamArr[0].trim(), "0")); BigDecimal allUsedAmountC = new BigDecimal(Util.null2s(otherParamArr[1].trim(), "0")); allUsedAmount = allUsedAmountB.add(allUsedAmountC).setScale(2, RoundingMode.HALF_UP).toString(); return allUsedAmount; } public String getAllInvalidAmount(String allInvalidAmount, String otherParams) { String[] otherParamArr = otherParams.split("\\+", 4); BigDecimal allBaseAmountC = new BigDecimal(Util.null2s(otherParamArr[0].trim(), "0")); BigDecimal allExtraAmountC = new BigDecimal(Util.null2s(otherParamArr[1].trim(), "0")); BigDecimal alltiaoxiuAmountC = new BigDecimal(Util.null2s(otherParamArr[3].trim(), "0")); BigDecimal allUsedAmountC = new BigDecimal(Util.null2s(otherParamArr[2].trim(), "0")); allInvalidAmount = allBaseAmountC.add(allExtraAmountC).add(alltiaoxiuAmountC).subtract(allUsedAmountC).setScale(2, RoundingMode.HALF_UP).toPlainString(); return allInvalidAmount; } public String getAllRestAmount(String allRestAmount, String otherParams) { String[] otherParamArr = otherParams.split("\\+", 4); BigDecimal allBaseAmountB = new BigDecimal(Util.null2s(otherParamArr[0].trim(), "0")); BigDecimal allExtraAmountB = new BigDecimal(Util.null2s(otherParamArr[1].trim(), "0")); BigDecimal allUsedAmountB = new BigDecimal(Util.null2s(otherParamArr[2].trim(), "0")); BigDecimal alltiaoxiuamountB = new BigDecimal(Util.null2s(otherParamArr[3].trim(), "0")); allRestAmount = allBaseAmountB.add(allExtraAmountB).add(alltiaoxiuamountB).subtract(allUsedAmountB).setScale(2, RoundingMode.HALF_UP).toPlainString(); return allRestAmount; } /** * 获取明细列的转换显示 * * @param detaiShow * @param language * @return */ public String getDetailShow(String detaiShow, String language) { return SystemEnv.getHtmlLabelName(17463, Util.getIntValue(language, 7)); } /** * 获取有效期的显示 * * @param expirationDate * @param language * @return */ public String getExpirationDateShow(String expirationDate, String language) { String expirationDateShow = ""; if ("2222-12-31".equals(expirationDate)) { expirationDateShow = SystemEnv.getHtmlLabelName(10000846, Util.getIntValue(Util.getIntValue(language, 7))); } else { expirationDateShow = expirationDate; } return expirationDateShow; } /** * 获取员工假期余额明细操作日志中对象的显示名称 * * @param id * @param params * @return */ public String getTargetName4BalanceDetail(String id, String params) { String targetName = ""; try { String[] paramArr = params.split("\\+"); String resourceId = paramArr[0]; String belongYear = paramArr[1]; String belongMonth = paramArr[2]; String languageId = paramArr[3]; //人力资源缓存类 ResourceComInfo resourceComInfo = new ResourceComInfo(); String lastName = Util.formatMultiLang(resourceComInfo.getResourcename(resourceId), languageId); targetName = SystemEnv.getHtmlLabelName(512690, Util.getIntValue(languageId, 7)); targetName = targetName.replace("${lastName}", lastName).replace("${belongYear}", belongYear).replace("${belongMonth}", belongMonth).replace("${ID}", id); } catch (Exception e) { e.printStackTrace(); } return targetName; } /** * 员工假期余额的右键日志对象名称 * * @param id * @param otherParams * @return */ public String getTargetName4Balance(String id, String otherParams) { String targetName = ""; try { String[] otherParaArr = otherParams.split("\\+"); String resourceId = otherParaArr[0]; String leaveRulesId = otherParaArr[1]; ResourceComInfo resourceComInfo = new ResourceComInfo(); KQLeaveRulesComInfo rulesComInfo = new KQLeaveRulesComInfo(); String lastName = resourceComInfo.getResourcename(resourceId); String ruleName = rulesComInfo.getLeaveName(leaveRulesId); targetName = lastName + "-" + ruleName; } catch (Exception e) { e.printStackTrace(); } return targetName; } /***************************************加班的相关方法***************************************/ /** * 获取加班规则的具体的规则内容 * * @param ruleId 加班规则的ID * @return */ public String getRuleContent(String ruleId, String languageId) { if (ruleId.equals("")) { return ""; } int language = Util.getIntValue(languageId, 7); /*需要显示的内容*/ String resultStr = ""; /*日期类型:1-工作日、2-周末、3-节假日*/ int dayType = 0; /*是否允许加班:0-不允许、1-允许*/ int overtimeEnable = 0; /*加班方式:1-需审批,以审批单为准、2-需审批,以打卡为准,但是不能超过审批时长、3-无需审批,根据打卡时间计算加班时长*/ int computingMode = 0; List dayTypeList = Lists.newArrayList(); String sql = "select * from kq_OvertimeRulesDetail where ruleId=" + ruleId + " order by id"; RecordSet recordSet = new RecordSet(); recordSet.executeQuery(sql); while (recordSet.next()) { dayType = recordSet.getInt("dayType"); overtimeEnable = recordSet.getInt("overtimeEnable"); computingMode = recordSet.getInt("computingMode"); if (dayTypeList.contains(("" + dayType))) { continue; } else { dayTypeList.add(("" + dayType)); } if (dayType == 2) {//工作日 resultStr += SystemEnv.getHtmlLabelName(28387, language) + ":"; if (overtimeEnable == 0) { resultStr += SystemEnv.getHtmlLabelName(389562, language);//不允许加班 } else if (computingMode == 1) { resultStr += SystemEnv.getHtmlLabelName(500382, language);//需审批,以加班流程为准 } else if (computingMode == 2) { resultStr += SystemEnv.getHtmlLabelName(500383, language);//需审批,以打卡为准,但是不能超过加班流程时长 } else if (computingMode == 3) { resultStr += SystemEnv.getHtmlLabelName(390837, language);//无需审批,根据打卡时间计算加班时长 } else if (computingMode == 4) { resultStr += SystemEnv.getHtmlLabelName(524827, language);//流程和打卡取交集 } } else if (dayType == 3) {//休息日 resultStr += "
" + SystemEnv.getHtmlLabelName(458, language) + ":"; if (overtimeEnable == 0) { resultStr += SystemEnv.getHtmlLabelName(389562, language);//不允许加班 } else if (computingMode == 1) { resultStr += SystemEnv.getHtmlLabelName(500382, language);//需审批,以加班流程为准 } else if (computingMode == 2) { resultStr += SystemEnv.getHtmlLabelName(500383, language);//需审批,以打卡为准,但是不能超过加班流程时长 } else if (computingMode == 3) { resultStr += SystemEnv.getHtmlLabelName(390837, language);//无需审批,根据打卡时间计算加班时长 } else if (computingMode == 4) { resultStr += SystemEnv.getHtmlLabelName(524827, language);//流程和打卡取交集 } } else if (dayType == 1) {//节假日 resultStr += "
" + SystemEnv.getHtmlLabelName(28386, language) + ":"; if (overtimeEnable == 0) { resultStr += SystemEnv.getHtmlLabelName(389562, language);//不允许加班 } else if (computingMode == 1) { resultStr += SystemEnv.getHtmlLabelName(500382, language);//需审批,以加班流程为准 } else if (computingMode == 2) { resultStr += SystemEnv.getHtmlLabelName(500383, language);//需审批,以打卡为准,但是不能超过加班流程时长 } else if (computingMode == 3) { resultStr += SystemEnv.getHtmlLabelName(390837, language);//无需审批,根据打卡时间计算加班时长 } else if (computingMode == 4) { resultStr += SystemEnv.getHtmlLabelName(524827, language);//流程和打卡取交集 } } } System.out.println("getRuleContent resultStr:::" + resultStr); return resultStr; } /** * 获取加班规则的应用范围列的显示名称 * * @param groupIds * @param languageId * @return */ public String getGroupName(String groupIds, String languageId) { String groupName = ""; int language = Util.getIntValue(languageId, 7); if (groupIds.equals("")) { groupName = SystemEnv.getHtmlLabelName(165, language); return groupName; } KQGroupComInfo kqGroupComInfo = new KQGroupComInfo(); String[] groupIdArr = groupIds.split(","); groupName = kqGroupComInfo.getGroupname(groupIdArr[0]); if (groupIdArr.length > 1) { groupName = SystemEnv.getHtmlLabelName(516131, language).replace("{groupname}", groupName).replace("{count}", "" + groupIdArr.length); } return groupName; } /** * 获取加班计算单位的日志的对象名 * * @param targetId * @param otherParams * @return */ public String getTargetName4OvertimeUnit(String targetId, String otherParams) { String targetName = ""; String languageId = otherParams.split("\\+")[0]; targetName = SystemEnv.getHtmlLabelName(505608, Util.getIntValue(languageId, 7)); return targetName; } /***************************************节假日设置的相关方法***************************************/ /** * 根据changeType获取显示名 * * @param changeType * @return */ public String getChangeTypeName(String changeType, String languageId) { int language = Util.getIntValue(languageId, 7); String changeTypeName = ""; if (changeType.equals("1")) { changeTypeName = SystemEnv.getHtmlLabelName(16478, language); } else if (changeType.equals("2")) { changeTypeName = SystemEnv.getHtmlLabelName(16751, language); } else if (changeType.equals("3")) { changeTypeName = SystemEnv.getHtmlLabelName(16752, language); } return changeTypeName; } /** * 获取对应工作日的显示名称 * * @param relatedDay 对应工作日:0-星期一、1-星期二、2-星期三、3-星期四、4-星期五、5-星期六、6-星期日 * @return */ public String getRelatedDayName(String relatedDay, String languageId) { String relatedDayName = ""; int language = Util.getIntValue(languageId, 7); switch (relatedDay) { case "6": relatedDayName = SystemEnv.getHtmlLabelName(398, language); break; case "0": relatedDayName = SystemEnv.getHtmlLabelName(392, language); break; case "1": relatedDayName = SystemEnv.getHtmlLabelName(393, language); break; case "2": relatedDayName = SystemEnv.getHtmlLabelName(394, language); break; case "3": relatedDayName = SystemEnv.getHtmlLabelName(395, language); break; case "4": relatedDayName = SystemEnv.getHtmlLabelName(396, language); break; case "5": relatedDayName = SystemEnv.getHtmlLabelName(397, language); break; default: relatedDayName = ""; break; } return relatedDayName; } /** * 获取节假日设置的日志的对象名 * * @param targetId * @param otherParams * @return */ public String getTargetName4HolidaySet(String targetId, String otherParams) { String targetName = ""; try { String groupId = otherParams.split("\\+")[0]; String holidayDate = otherParams.split("\\+")[1]; String languageId = otherParams.split("\\+")[2]; KQGroupComInfo groupComInfo = new KQGroupComInfo(); String groupName = Util.formatMultiLang(groupComInfo.getGroupname(groupId), languageId); targetName = groupName + " " + holidayDate; } catch (Exception e) { e.printStackTrace(); } return targetName; } /***************************************原始打卡记录的相关方法***************************************/ /** * 获取考勤日期显示 * * @param belongDate * @param languageId * @return */ public String getBelongDateShow(String belongDate, String languageId) { String belongDateShow = belongDate + " "; int index = DateUtil.getWeek(belongDate); if (index == 1) { belongDateShow += getRelatedDayName("0", languageId); } else if (index == 2) { belongDateShow += getRelatedDayName("1", languageId); } else if (index == 3) { belongDateShow += getRelatedDayName("2", languageId); } else if (index == 4) { belongDateShow += getRelatedDayName("3", languageId); } else if (index == 5) { belongDateShow += getRelatedDayName("4", languageId); } else if (index == 6) { belongDateShow += getRelatedDayName("5", languageId); } else if (index == 7) { belongDateShow += getRelatedDayName("6", languageId); } return belongDateShow; } /** * 获取考勤时间显示 * * @param belongTime * @param belongDate * @return */ public String getBelongTimeShow(String belongTime, String belongDate, String languageId) { String belongTimeShow = belongDate + " " + new KQTimesArrayComInfo().turn48to24Time(belongTime); int language = Util.getIntValue(languageId, 7); if (belongTime.equals("free")) { belongTimeShow = belongDate + " " + SystemEnv.getHtmlLabelName(500375, language); } return belongTimeShow; } /** * 获取打卡时间显示 * * @param signDate * @param signTime * @return */ public String getSignDateShow(String signDate, String signTime) { String tmpsignDate = signDate.replaceAll("-", "/"); return tmpsignDate + " " + signTime; } public String getSignDateShowNew(String signDate, String signTime) { String tmpsignDate = signDate.replaceAll("-", "/"); return tmpsignDate + " " + signTime; } /** * 获取原始打卡记录的数据来源列的显示名称 * * @param signFrom * @return */ public String getSignFromShow(String signFrom, String languageId) { String signFromShow = ""; int language = Util.getIntValue(languageId, 7); if (signFrom.equalsIgnoreCase("e9pc")) { signFromShow = SystemEnv.getHtmlLabelName(503612, language); } else if (signFrom.equalsIgnoreCase("e9mobile")) { signFromShow = SystemEnv.getHtmlLabelName(503613, language); } else if (signFrom.equalsIgnoreCase("e9e")) { signFromShow = SystemEnv.getHtmlLabelName(503614, language); } else if (signFrom.equalsIgnoreCase("e9ewx")) { signFromShow = SystemEnv.getHtmlLabelName(503615, language); } else if (signFrom.startsWith("card")) { signFromShow = SystemEnv.getHtmlLabelName(503616, language); } else if (signFrom.equalsIgnoreCase("e9_mobile_out")) { signFromShow = SystemEnv.getHtmlLabelName(82634, language); } else if (signFrom.equalsIgnoreCase("importExcel")) { signFromShow = SystemEnv.getHtmlLabelName(503617, language); } else if (signFrom.equalsIgnoreCase("EMSyn")) { signFromShow = SystemEnv.getHtmlLabelName(503618, language); } else if (signFrom.equalsIgnoreCase("EMSyn_out")) { signFromShow = SystemEnv.getHtmlLabelName(517845, language); } else if (signFrom.equalsIgnoreCase("OutDataSourceSyn")) { signFromShow = SystemEnv.getHtmlLabelName(503619, language); } else if (signFrom.equalsIgnoreCase("DingTalk")) { signFromShow = SystemEnv.getHtmlLabelName(506318, language); } else if (signFrom.equalsIgnoreCase("DingTalk_out")) { signFromShow = SystemEnv.getHtmlLabelName(506319, language); } else if (signFrom.equalsIgnoreCase("Wechat_out")) { signFromShow = SystemEnv.getHtmlLabelName(506652, language); } else if (signFrom.equalsIgnoreCase("Wechat")) { signFromShow = SystemEnv.getHtmlLabelName(506653, language); } else if (signFrom.equalsIgnoreCase("auto_card")) { signFromShow = SystemEnv.getHtmlLabelName(521191, language); } else if (signFrom.equalsIgnoreCase("null")) { signFromShow = ""; } else { signFromShow = signFrom; } return signFromShow; } /***************************************考勤报表权限共享的相关方法***************************************/ /** * 获取考勤报表名称的显示 * * @param reportName * @param languageId * @return */ public String getReportNameShow(String reportName, String languageId) { String reportNameShow = ""; int language = Util.getIntValue(languageId, 7); if (reportName.equals("0")) { reportNameShow = SystemEnv.getHtmlLabelName(332, language); } else if (reportName.equals("1")) { reportNameShow = SystemEnv.getHtmlLabelName(390351, language); } else if (reportName.equals("2")) { reportNameShow = SystemEnv.getHtmlLabelName(390352, language); } else if (reportName.equals("3")) { reportNameShow = SystemEnv.getHtmlLabelName(390248, language); } else if (reportName.equals("4")) { reportNameShow = SystemEnv.getHtmlLabelName(389441, language); } return reportNameShow; } /** * 获取共享级别的显示 * * @param shareLevel 0-分部、1-部门、2-人员、3-岗位、4-所有人 * @param languageId * @return */ public String getShareLevelShow(String shareLevel, String languageId) { String shareLevelShow = ""; int language = Util.getIntValue(languageId, 7); if (shareLevel.equals("0")) { shareLevelShow = SystemEnv.getHtmlLabelName(33553, language); } else if (shareLevel.equals("1")) { shareLevelShow = SystemEnv.getHtmlLabelName(27511, language); } else if (shareLevel.equals("2")) { shareLevelShow = SystemEnv.getHtmlLabelName(179, language); } else if (shareLevel.equals("3")) { shareLevelShow = SystemEnv.getHtmlLabelName(6086, language); } else if (shareLevel.equals("4")) { shareLevelShow = SystemEnv.getHtmlLabelName(1340, language); } return shareLevelShow; } /** * 获取共享对象的显示 * * @param id * @param languageId * @return */ public String getReportShareShow(String id, String languageId) { String showName = ""; try { int language = Util.getIntValue(languageId, 7); String sql = "select * from kq_ReportShare where id=" + id; RecordSet recordSet = new RecordSet(); recordSet.executeQuery(sql); if (recordSet.next()) { String shareLevel = recordSet.getString("shareLevel"); String subcomId = Util.null2String(recordSet.getString("subcomId")); String deptId = Util.null2String(recordSet.getString("deptId")); String jobtitleId = Util.null2String(recordSet.getString("jobtitleId")); String userId = Util.null2String(recordSet.getString("userId")); if (shareLevel.equals("0")) { SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); showName = subCompanyComInfo.getSubcompanynames(subcomId); } else if (shareLevel.equals("1")) { DepartmentComInfo departmentComInfo = new DepartmentComInfo(); showName = departmentComInfo.getDepartmentNames(deptId); } else if (shareLevel.equals("2")) { ResourceComInfo resourceComInfo = new ResourceComInfo(); List tempList = Util.TokenizerString(userId, ","); for (int i = 0; i < tempList.size(); i++) { showName += "," + resourceComInfo.getResourcename(tempList.get(i)); } showName = showName.startsWith(",") ? showName.substring(1) : showName; } else if (shareLevel.equals("3")) { JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo(); List tempList = Util.TokenizerString(jobtitleId, ","); for (int i = 0; i < tempList.size(); i++) { showName += "," + jobTitlesComInfo.getJobTitlesname(tempList.get(i)); } showName = showName.length() > 0 ? showName.substring(1) : showName; } else if (shareLevel.equals("4")) { showName = SystemEnv.getHtmlLabelName(1340, language); } } } catch (Exception e) { e.printStackTrace(); } return showName; } /** * 获取考勤报表权限共享日志的对象名 * * @param targetId * @param otherParams * @return */ public String getTargetName4ReportShare(String targetId, String otherParams) { String targetName = ""; try { String reportName = otherParams.split("\\+")[0]; String resourceType = otherParams.split("\\+")[1]; String resourceId = otherParams.split("\\+", 4)[2]; String languageId = otherParams.split("\\+", 4)[3]; switch (reportName) { case "1": targetName += SystemEnv.getHtmlLabelName(16559, Util.getIntValue(languageId, 7)); break; case "2": targetName += SystemEnv.getHtmlLabelName(82801, Util.getIntValue(languageId, 7)); break; case "3": targetName += SystemEnv.getHtmlLabelName(390248, Util.getIntValue(languageId, 7)); break; case "4": targetName += SystemEnv.getHtmlLabelName(389441, Util.getIntValue(languageId, 7)); break; } ResourceComInfo resourceComInfo = new ResourceComInfo(); targetName += " " + Util.formatMultiLang(resourceComInfo.getLastnames(resourceId), languageId); } catch (Exception e) { e.printStackTrace(); } return targetName; } /***************************************公出出差规则的相关方法***************************************/ /** * 获取出差公出规则的日志的对象名 * * @param targetId * @param otherParams * @return */ public String getTargetName4TravelRules(String targetId, String otherParams) { String targetName = ""; String languageId = otherParams.split("\\+")[0]; targetName = SystemEnv.getHtmlLabelName(390004, Util.getIntValue(languageId, 7)); return targetName; } /***************************************一键已用考勤的相关方法***************************************/ /** * 获取目前新考勤的请假类型表的ID字段的下一个值 * 考虑到历史数据迁移,过去的请假类型表和目前的请假类型表不是同一张,所以新考勤请假类型表kq_leaveRules的id(非自增)对应于旧的老考勤请假类型表HrmLeaveTypeColor的Id,并作为主键使用 * * @return */ public int getNextId() { int nextId = 0; int maxId = 0; String maxColorIdSql = "select max(id) maxId from kq_leaveRules"; RecordSet recordSet = new RecordSet(); recordSet.executeQuery(maxColorIdSql); if (recordSet.next()) { maxId = Util.getIntValue(recordSet.getString("maxId"), 1); } nextId = maxId <= 0 ? 1 : (maxId + 1); return nextId; } /***************************************正式系统会用到的相关方法***************************************/ /** * 获取人员的年假计算开始日期 * * @param companyStartDate * @param resourceId * @return */ public String getCompanyStartDate(String companyStartDate, String resourceId) { return companyStartDate; } /** * 获取考勤流程校验规则的 校验规则 * * @return */ public String get_rules(String rule_type_uuid, String otherparam) { List otherparams = Util.splitString2List(otherparam, "+"); if (otherparams.size() == 4 && rule_type_uuid.length() > 0) { String ruleid = otherparams.get(0); String rule_table = otherparams.get(1); String key_fieldname = otherparams.get(2); String fieldname = ""; RecordSet rs = new RecordSet(); if (key_fieldname.length() > 0) { String sql = "select * from kq_att_checkrule_fields where rule_type_uuid=? and key_fieldname=? "; rs.executeQuery(sql, rule_type_uuid, key_fieldname); if (rs.next()) { fieldname = rs.getString("fieldname"); } else { fieldname = key_fieldname; } } else { return ""; } String lanid = otherparams.get(3); String sql = "select * from " + rule_table + " where id = ? "; rs.executeQuery(sql, ruleid); if (rs.next()) { String val = rs.getString(fieldname); if ("check_rule".equalsIgnoreCase(key_fieldname)) { if ("kq_att_frequency_rule".equalsIgnoreCase(rule_table)) { //次数校验需要单独处理 String val_count = rs.getString(fieldname + "_count"); String frequencyContent = getFrequencyContent(val, Util.getIntValue(lanid)); String content = frequencyContent + SystemEnv.getHtmlLabelName(516776, Util.getIntValue(Util.getIntValue(lanid))) + val_count + SystemEnv.getHtmlLabelName(18083, Util.getIntValue(Util.getIntValue(lanid))); return content; } else { if ("1".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(516104, Util.getIntValue(Util.getIntValue(lanid))); } else { return SystemEnv.getHtmlLabelName(516103, Util.getIntValue(Util.getIntValue(lanid))); } } } else if ("check_level".equalsIgnoreCase(key_fieldname)) { if ("0".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(32137, Util.getIntValue(Util.getIntValue(lanid))); } else if ("1".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(32138, Util.getIntValue(Util.getIntValue(lanid))); } else if ("2".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(26009, Util.getIntValue(Util.getIntValue(lanid))); } else { return ""; } } else if ("check_message".equalsIgnoreCase(key_fieldname)) { return val; } else { return ""; } } } return ""; } public String getCheckRuleName(String labelids, String lanid) { return SystemEnv.getHtmlLabelNames(labelids, Util.getIntValue(lanid, 7)); } public String getFrequencyContent(String val, int lanid) { if ("0".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(539, Util.getIntValue(lanid)); } else if ("1".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(545, Util.getIntValue(lanid)); } else if ("2".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(541, Util.getIntValue(lanid)); } else if ("3".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(543, Util.getIntValue(lanid)); } else if ("4".equalsIgnoreCase(val)) { return SystemEnv.getHtmlLabelName(546, Util.getIntValue(lanid)); } return ""; } /** * 获取设备信息 * * @param deviceinfo * @return */ public String getDeviceinfo(String deviceinfo) { String info = ""; try { if (deviceinfo.length() > 0) { JSONObject jsonObject = JSONObject.parseObject(deviceinfo); if (jsonObject != null && !jsonObject.isEmpty()) { String deviceId = Util.null2String(jsonObject.get("deviceId")); if (deviceId.length() > 0) { info = deviceId; } } } } catch (Exception e) { e.printStackTrace(); } return info; } /** * 判断是否在地理范围内 * * @param isincom * @param otherParam * @return */ public String getIsincom(String isincom, String otherParam) { String info = ""; try { if (isincom.length() > 0) { int lan = Util.getIntValue(otherParam); if ("1".equalsIgnoreCase(isincom)) { info = SystemEnv.getHtmlLabelName(163, lan); } else { info = SystemEnv.getHtmlLabelName(161, lan); } } } catch (Exception e) { e.printStackTrace(); } return info; } public String getWorkFlowUrl4mobile(String requestid) { WorkflowRequestComInfo workflowRequestComInfo = new WorkflowRequestComInfo(); String flowName = workflowRequestComInfo.getRequestName(requestid); if (StringUtil.isNotNull(flowName)) { String url = weaver.general.GCONST.getContextPath() + "/spa/workflow/static4mobileform/index.html#/req?ismonitor=1&requestid=" + requestid; String a_href = "" + flowName + " "; return a_href; } else { return ""; } } public String getWorkFlowUrl(String requestid) { WorkflowRequestComInfo workflowRequestComInfo = new WorkflowRequestComInfo(); String flowName = workflowRequestComInfo.getRequestName(requestid); if (StringUtil.isNotNull(flowName)) { return "" + flowName + " "; } else { return ""; } } public String getLabelName(String id, String otherPara) { String otherParaArr[] = otherPara.split("\\+", 5); String labelId = otherParaArr[0]; String LanId = otherParaArr[1]; return SystemEnv.getHtmlLabelNames(labelId, LanId); } }