package com.engine.kq.bean; import com.engine.kq.biz.KQLeaveRulesComInfo; import com.engine.kq.biz.KQUsageHistoryBiz; import com.engine.kq.entity.KQUsageHistoryEntity; import weaver.conn.RecordSet; import weaver.file.Prop; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.common.database.dialect.DialectUtil; 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 java.util.regex.Matcher; import java.util.regex.Pattern; /** * 用于调休明细的导入 */ public class KQBalanceDetail extends BaseBean { /** * 人员ID */ private String resourceId; /** * 人员姓名 */ private String lastName; /** * 工号 */ private String workCode; /** * 年份 */ private String belongYear; /** * 月份 */ private String belongMonth; /** * 假期类型ID */ private String leaveRulesId; /** * 操作类型: * 3--加班流程生成调休 * 4--打卡数据生成调休 * 7--管理员Excel导入 */ private String overtimeType = "7"; /** * 总数 */ private String totalAmount; /** * 已休 */ private String usedAmount; /** * 生效日期 */ private String effectiveDate; /** * 失效日期 */ private String expirationDate; /** * 用户语言 */ private int userLanguage = 7; /** * 关键字 */ private String keyField; /** * 操作者 */ private String operator; /** * 验证模板数据有效性 * * @return */ public String valExcelData() { String errorInfo = ""; if (!isExist()) { errorInfo = SystemEnv.getHtmlLabelName(83535, userLanguage);//人员未找到 return errorInfo; } if (this.belongYear == null || this.belongYear.equals("")) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005283,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } Pattern p_belongYear = Pattern.compile("^\\d{4}$"); Matcher m_belongYear = p_belongYear.matcher(this.belongYear); if (!m_belongYear.matches()) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005284,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } if (this.belongMonth == null || this.belongMonth.equals("")) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005285,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } Pattern p_belongMonth = Pattern.compile("^01|02|03|04|05|06|07|08|09|10|11|12$"); Matcher m_belongMonth = p_belongMonth.matcher(this.belongMonth); if (!m_belongMonth.matches()) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005286,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } double _totalAmount = Util.getDoubleValue(this.totalAmount, 0.00); if (_totalAmount < 0) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005287,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } double _usedAmount = Util.getDoubleValue(this.usedAmount, 0.00); if (_usedAmount < 0) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005288,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } // if (_totalAmount < _usedAmount) { // errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(508124,weaver.general.ThreadVarLanguage.getLang())+""; // return errorInfo; // } if (this.leaveRulesId.equals("")) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005289,weaver.general.ThreadVarLanguage.getLang())+"ID"; return errorInfo; } if (this.effectiveDate == null || this.effectiveDate.equals("")) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005290,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } Pattern p = Pattern.compile("^\\d{4}\\-\\d{2}\\-\\d{2}$"); Matcher m = p.matcher(this.effectiveDate); if (!m.matches()) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005291,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } if (this.expirationDate == null || this.effectiveDate.equals("")) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005292,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } m = p.matcher(this.expirationDate); if (!m.matches()) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005293,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } if (this.effectiveDate.compareTo(this.expirationDate) > 0) { errorInfo = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005294,weaver.general.ThreadVarLanguage.getLang())+""; return errorInfo; } return errorInfo; } /** * 判断ID和姓名是否匹配,系统中是否存在此人员 * * @return */ private boolean isExist() { String sql = "select 1 from HrmResource where id=? "; RecordSet recordSet = new RecordSet(); recordSet.executeQuery(sql, resourceId); if (recordSet.next()) { return true; } else { return false; } } /** * 保存数据 * * @return */ public String save() { String resultStr = "false"; try { /*获取当前日期,当前时间*/ 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 currentTime = Util.add0(today.get(Calendar.HOUR_OF_DAY), 2) + ":" + Util.add0(today.get(Calendar.MINUTE), 2) + ":" + Util.add0(today.get(Calendar.SECOND), 2); KQLeaveRulesComInfo rulesComInfo = new KQLeaveRulesComInfo(); String minimumUnit = rulesComInfo.getMinimumUnit(this.leaveRulesId); String sql = "INSERT INTO KQ_BalanceOfLeave(resourceId,leaveRulesId,belongYear,belongMonth,overtimeType,baseAmount,extraAmount,usedAmount,effectiveDate,expirationDate) VALUES(?,?,?,?,?,?,?,?,?,?)"; RecordSet recordSet = new RecordSet(); boolean flag = recordSet.executeUpdate(sql, this.resourceId, this.leaveRulesId, this.belongYear, this.belongMonth, this.overtimeType, 0, this.totalAmount, this.usedAmount, this.effectiveDate, this.expirationDate); resultStr = String.valueOf(flag); if (flag) { BigDecimal _totalAmount = new BigDecimal(this.totalAmount); BigDecimal _usedAmount = new BigDecimal(this.usedAmount); /*员工假期余额变更记录*/ KQUsageHistoryEntity usageHistoryEntity = new KQUsageHistoryEntity(); List usageHistoryEntityList = new ArrayList(); /*员工假期余额变更记录*/ usageHistoryEntity = new KQUsageHistoryEntity(); usageHistoryEntity.setLeaveRulesId(this.leaveRulesId); usageHistoryEntity.setRelatedId(this.resourceId); usageHistoryEntity.setWfRequestId(""); usageHistoryEntity.setOperator(this.operator); usageHistoryEntity.setOperateDate(currentDate); usageHistoryEntity.setOperateTime(currentTime); usageHistoryEntity.setOperateType("7"); usageHistoryEntity.setInsertOrUpdate("INSERT"); usageHistoryEntity.setBelongYear(this.belongYear); usageHistoryEntity.setOldExtraAmount("0"); usageHistoryEntity.setNewExtraAmount(_totalAmount.subtract(_usedAmount).setScale(2, RoundingMode.HALF_UP).toPlainString()); usageHistoryEntity.setOldMinimumUnit(minimumUnit); usageHistoryEntity.setNewMinimumUnit(minimumUnit); usageHistoryEntityList.add(usageHistoryEntity); KQUsageHistoryBiz usageHistoryBiz = new KQUsageHistoryBiz(); flag = usageHistoryBiz.save(usageHistoryEntityList); resultStr = String.valueOf(flag); /*员工假期余额变更记录*/ } } catch (Exception e) { writeLog(e); } return resultStr; } public String getResourceId() { return resourceId; } public void setResourceId(String resourceId) { this.resourceId = resourceId; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getWorkCode() { return workCode; } public void setWorkCode(String workCode) { this.workCode = workCode; } public String getBelongYear() { return belongYear; } public void setBelongYear(String belongYear) { this.belongYear = belongYear; } public String getBelongMonth() { return belongMonth; } public void setBelongMonth(String belongMonth) { this.belongMonth = belongMonth; } public String getLeaveRulesId() { return leaveRulesId; } public void setLeaveRulesId(String leaveRulesId) { this.leaveRulesId = leaveRulesId; } public String getOvertimeType() { return overtimeType; } public void setOvertimeType(String overtimeType) { this.overtimeType = overtimeType; } public String getTotalAmount() { return totalAmount; } public void setTotalAmount(String totalAmount) { BigDecimal _totalAmount = new BigDecimal(Util.getDoubleValue(totalAmount, 0)); this.totalAmount = _totalAmount.setScale(2, RoundingMode.HALF_UP).toPlainString(); } public String getUsedAmount() { return usedAmount; } public void setUsedAmount(String usedAmount) { BigDecimal _usedAmount = new BigDecimal(Util.getDoubleValue(usedAmount, 0)); this.usedAmount = _usedAmount.setScale(2, RoundingMode.HALF_UP).toPlainString(); } public String getEffectiveDate() { return effectiveDate; } public void setEffectiveDate(String effectiveDate) { this.effectiveDate = effectiveDate; } public String getExpirationDate() { return expirationDate; } public void setExpirationDate(String expirationDate) { this.expirationDate = expirationDate; } public int getUserLanguage() { return userLanguage; } public void setUserLanguage(int userLanguage) { this.userLanguage = userLanguage; } public void setUserLanguage(String userLanguage) { this.userLanguage = Util.getIntValue(userLanguage, 7); } public String getKeyField() { return keyField; } public void setKeyField(String keyField) { this.keyField = keyField; } public String getOperator() { return operator; } public void setOperator(String operator) { this.operator = operator; } }