⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grantdaoimple.java

📁 企业人力资源管理
💻 JAVA
字号:
package com.y2.hr.salary.grant.dao.impl;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.classic.Session;

import com.y2.hr.base.dao.impl.BaseDaoImpl;
import com.y2.hr.salary.grant.bean.SalaryGrant;
import com.y2.hr.salary.grant.bean.SalaryGrantDetails;
import com.y2.hr.salary.grant.dao.GrantDao;

public class GrantDaoImple extends BaseDaoImpl implements GrantDao {

	/**
	 * 查询只一条记录 *
	 * 
	 * @param hql
	 * @return Object
	 */
	public Object getUniqueResult(String hql) {
		Session se = this.sessionFactory.openSession();
		Query query = se.createQuery(hql);
		Object o = query.uniqueResult();
		se.close();
		return o;
	}

	/**
	 * 分页查询
	 * 
	 * @param hql
	 * @param page
	 *            页数
	 * @return
	 */
	public List<?> getGrantByPage(String hql, int page, int pageSize) {
		Session se = this.sessionFactory.openSession();
		Query query = se.createQuery(hql);
		query.setFirstResult((page - 1) * pageSize);
		query.setMaxResults(pageSize);
		List<?> list = query.list();
		se.close();
		return list;
	}

	/**
	 * 获得最后一次薪酬发放的编号
	 * 
	 * @param hql
	 * @return String
	 */
	@SuppressWarnings("unchecked")
	public String getLastGrantId() {
		String hql = "select max(sg.salaryGrantId) from SalaryGrant as sg";
		Object o = this.getUniqueResult(hql);
		return o == null ? null : (String.valueOf(o));
	}

	/**
	 * 获取 最后一次的薪酬发放的信息
	 * 
	 * @param hql
	 * @return String
	 */
	public List<?> getLastGrant() {
		String hql = "select sg.sgrId,sg.checkTime from SalaryGrant as sg where sg.checkStatus = 1 order by sg.checkTime desc limit 0,1 ";
		List o = this.get(hql);
		return o.size() == 0 ? null : o;
	}

	/**
	 * 保存薪酬发放信息和对应的详细信息
	 * 
	 * @param sagrant
	 * @param grantDateList
	 * @return boolean
	 */
	public boolean savaGrantAndDate(SalaryGrant sagrant,
			List<SalaryGrantDetails> grantDateList) {
		try {
			@SuppressWarnings("unused")
			String salaryGrantId = createSalaryGrantId();
			sagrant.setSalaryGrantId(salaryGrantId);
			boolean b = this.add(sagrant);
			Iterator<SalaryGrantDetails> it = grantDateList.iterator();
			while (it.hasNext()) {
				SalaryGrantDetails s = it.next();
				s.setSalaryGrantId(salaryGrantId);
				this.add(s);
			}
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

	/**
	 * 获取薪酬发放的总数
	 * 
	 * @param sagrant
	 * @param grantDateList
	 * @return
	 */
	public int getReRows() {
		String hql = "select max(sg.salaryGrantId) from SalaryGrant as sg "
				+ " where sg.checkStatus = 0 order by sg.registTime";
		Object o = this.getUniqueResult(hql);
		return o == null ? null : ((Integer) o);
	}

	/**
	 * 获取需要审核的薪酬发放集合
	 * 
	 * @return List<Object>
	 */
	@SuppressWarnings("unchecked")
	public List<?> getCkGrantList() {
		String hql = "select sg.salaryGrantId,sg.firstKindName,sg.secondKindName,"
				+ "sg.humanAmount,sg.registTime from SalaryGrant as sg "
				+ "where sg.checkStatus = 0 order by sg.registTime";
		return this.get(hql);
	}

	/**
	 * 获取薪酬发放的信息
	 * 
	 * @param sagrant
	 * @param grantDateList
	 * @return List<Object>
	 */
	@SuppressWarnings("unchecked")
	public List<?> getCkGrantInfo() {
		String hql = "";
		return this.get(hql);
	}

	public SalaryGrant getGrantById(String salaryGrantId) {
		String hql = "from SalaryGrant as s where s.salaryGrantId = '"
				+ salaryGrantId + "'" + " and checkStatus = 0";
		Object o = this.getUniqueResult(hql);
		return o == null ? null : (SalaryGrant) o;
	}

	public List<?> getGrantDetaById(String salaryGrantId) {
		String hql = "from SalaryGrantDetails as sd where sd.salaryGrantId='"
				+ salaryGrantId + "'";
		return this.get(hql);
	}

	public boolean updateGrantAndDate(SalaryGrant sagrant, List<?> grantDateList) {
		boolean boo = true;
		try {
			this.mod(sagrant);
			Iterator<?> it = grantDateList.iterator();
			while (it.hasNext()) {
				this.mod(it.next());
			}
		} catch (Exception e) {
			boo = false;
		}
		return boo;
	}

	// 统计 最后一次的薪酬发放的次数
	public int getLastGrantCount() {
		String hql = "select count(sg.sgrId) from SalaryGrant as sg";
		Object obj = this.getUniqueResult(hql);
		return obj == null ? 0 : Integer.parseInt(obj.toString());
	}

	// 获取最后一次薪酬发放时间
	public Date getLastGrantLastTime() {
		String hql = "select sg.checkTime from SalaryGrant as sg where sg.checkStatus = 1 order by sg.checkTime desc";
		Session se = this.sessionFactory.openSession();
		Query query = se.createQuery(hql);
		query.setFirstResult(0);
		query.setMaxResults(1);
		Object obj = query.uniqueResult();
		se.close();
		return obj == null ? null : (Date) obj;
	}

	private static int index = 1;
	private static Date dateTime = null; // 映射数据库中的最大日期
	private static SimpleDateFormat fmtDate = new SimpleDateFormat("yyyyMMdd");

	public synchronized String[] getSalaryGrantIdInfo() {
		
		String[] strIdInfo = null;
		String hql = "select max(salaryGrantId) from SalaryGrant";
		Object obj = getUniqueResult(hql);
		String result = obj == null ? null : String.valueOf(obj);
		if (result != null) {
			strIdInfo = new String[2];
			strIdInfo[0] = result.substring(3, 11);
			strIdInfo[1] = result.substring(11, 14);
		}
		return strIdInfo;
	}

	public synchronized String createSalaryGrantId() {
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (dateTime == null) { // time==null 即是第一次访问
			dateTime = new Date();
			Date now = new Date();
			// 比较 映射数据库中的最大日期 与当前系统的日期
			if (!fmtDate.format(dateTime).equals(fmtDate.format(now))) {
				dateTime = now; // 不相等则 映射数据库中 换成 当前系统的日期
			}
			String[] strIdInfo = getSalaryGrantIdInfo();
			if (strIdInfo != null) {
				if (fmtDate.format(dateTime).equals(strIdInfo[0])) {
					index = Integer.parseInt(strIdInfo[1]) + 1;
				}
			} else {
				index = 1;
			}
		}
		String fmtIndex = "";
		if (index < 10) {
			fmtIndex = "00" + index++;
		} else if (index >= 10 && index < 100) {
			fmtIndex = "0" + index++;
		} else if (index >= 100 && index < 999) {
			fmtIndex = String.valueOf(index++);
		} else {
			index = 1;
			fmtIndex = "00" + String.valueOf(index++);
		}

		// 编号的格式 XX日期INDEX
		return "HGS" + fmtDate.format(new Date()) + fmtIndex;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -