| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 | package com.jtgh.yjpt.service;import java.io.Serializable;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Locale;import java.util.ResourceBundle;import org.apache.commons.lang.math.NumberUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.domain.Sort;import org.springframework.data.jpa.domain.Specification;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.support.rowset.SqlRowSet;import org.springframework.util.StringUtils;import com.jtgh.yjpt.common.Utils;import com.jtgh.yjpt.dao.common.MyRepository;import com.jtgh.yjpt.entity.BaseEntity;/** * Service层基类 *  * @author 袁晓冬 *  * @param <T> *            Entity * @param <ID> *            主键 */public abstract class BaseService<T extends BaseEntity<ID>, ID extends Serializable>		implements MyRepository<T, ID> {	/**	 * 获取service执行Dao	 * 	 * @return	 */	protected abstract MyRepository<T, ID> getDao();	/**	 * 资源文件	 */	public ResourceBundle resource = ResourceBundle.getBundle(Locale			.getDefault().toString() + "/select", Locale.getDefault(), this			.getClass().getClassLoader());	@Autowired	private JdbcTemplate jdbcTemplate;	/**	 * 根据编号规则生成编号XX-yyMMdd-001	 * 	 * @param noRuleType	 * @return	 */	public String generateNoByNoRule(String noRuleType) {		String sql1 = "SELECT PERFIX perfix,SUFFIX suffix,SEPARATOR separator,DIGIT digit FROM T_YJPT_NORULE WHERE NO_RULE_TYPE=?";		String sql2 = "SELECT CURRENT_NO currentNo FROM T_YJPT_CURRENTNO WHERE PATTERN=?";		String sql3 = "UPDATE T_YJPT_CURRENTNO SET CURRENT_NO=? WHERE PATTERN=?";		String sql4 = "INSERT INTO T_YJPT_CURRENTNO(PATTERN,CURRENT_NO) VALUES(?,?)";		StringBuffer no = new StringBuffer();		String perfix = "";		String suffix = "";		String separator = "-";		String pattern = "";		String currentNo = "0";		int digit = 0;		try {			SqlRowSet rs = jdbcTemplate.queryForRowSet(sql1, noRuleType);			if (rs.next()) {				perfix = rs.getString("perfix");				suffix = rs.getString("suffix");				separator = rs.getString("separator") == null ? "" : rs						.getString("separator");				digit = rs.getInt("digit");				SimpleDateFormat df = new SimpleDateFormat(suffix);				no.append(perfix);				no.append(separator);				no.append(df.format(new Date()));				pattern = no.toString();				rs = jdbcTemplate.queryForRowSet(sql2, pattern);				if (rs.next()) {					currentNo = rs.getString("currentNo");					currentNo = plusOne(currentNo, digit);					jdbcTemplate.update(sql3, currentNo, pattern);				} else {					currentNo = plusOne(currentNo, digit);					jdbcTemplate.update(sql4, pattern, currentNo);				}				no.append(separator);				no.append(currentNo);			}		} catch (Exception e) {			e.printStackTrace();		}		return no.toString();	}	/**	 * 生成唯一编号,供权力阳光使用	 * 	 * 部门编码(10位)+0000000001(流水号10位)	 * 	 * @param seqName	 * @return	 */	public String generateQlygNo(Long entityId) {		StringBuffer no = new StringBuffer();		// if (null != seqName) {		no.append(Utils.getCurrentUser().getSzd().getByzd4() + "JT");		// String sql = "SELECT " + seqName + ".nextval FROM dual";		// try {		// SqlRowSet rs = jdbcTemplate.queryForRowSet(sql);		// if (rs.next()) {		String seq = entityId.toString();		if (null != seq && seq.length() > 0) {			if (seq.length() < 10) {				for (int i = seq.length(); i < 10; i++) {					no.append("0");				}				no.append(seq);			} else {				no.append(seq.substring(seq.length() - 10, seq.length()));			}		}		// }		// } catch (Exception e) {		// e.printStackTrace();		// }		// }		return no.toString();	}	public Long generateEntityId(String seqName) {		if (seqName != null) {			String sql = "SELECT " + seqName + ".nextval FROM dual";			try {				SqlRowSet rs = jdbcTemplate.queryForRowSet(sql);				if (rs.next()) {					String seq = rs.getString(1);					if (null != seq && seq.length() > 0) {						return Long.parseLong(seq);					}				}			} catch (Exception e) {				e.printStackTrace();			}		}		return 0l;	}	/**	 * 编号加一	 * <p>	 * 例如,no:003,digit:3,返回004;no:05,digit:4,返回0006	 * 	 * @param no	 * @param digit	 * @return	 */	private String plusOne(String no, int digit) {		if (!StringUtils.hasLength(no))			return "001";		String str = no;		if (no.length() < digit) {			for (int i = no.length(); i < digit; i++) {				str = "0" + str;			}		} else {			str = no.substring(0, digit);		}		int n = NumberUtils.toInt("1" + str);		n++;		return String.valueOf(n).substring(1);	}	@Override	public T findOne(Specification<T> spec) {		return getDao().findOne(spec);	}	@Override	public List<T> findAll(Specification<T> spec) {		return getDao().findAll(spec);	}	@Override	public Page<T> findAll(Specification<T> spec, Pageable pageable) {		return getDao().findAll(spec, pageable);	}	@Override	public List<T> findAll(Specification<T> spec, Sort sort) {		return getDao().findAll(spec, sort);	}	@Override	public long count(Specification<T> spec) {		return getDao().count(spec);	}	@Override	public Page<T> findAll(Pageable pageable) {		return getDao().findAll(pageable);	}	@Override	public long count() {		return getDao().count();	}	@Override	public void delete(ID id) {		getDao().delete(id);	}	@Override	public void delete(T entity) {		getDao().delete(entity);	}	@Override	public void delete(Iterable<? extends T> entities) {		getDao().delete(entities);	}	@Override	public void deleteAll() {		getDao().deleteAll();	}	@Override	public boolean exists(ID id) {		return getDao().exists(id);	}	@Override	public T findOne(ID id) {		return getDao().findOne(id);	}	@Override	public <S extends T> S save(S entity) {		entity.setUpdateDate(new Date());		entity.setUpdateUser(Utils.getCurrentUser());		return getDao().save(entity);	}	@Override	public List<T> findAll() {		return getDao().findAll();	}	@Override	public List<T> findAll(Sort sort) {		return getDao().findAll(sort);	}	@Override	public List<T> findAll(Iterable<ID> ids) {		return getDao().findAll(ids);	}	@Override	public <S extends T> List<S> save(Iterable<S> entities) {		for (S entity : entities) {			entity.setUpdateDate(new Date());			entity.setUpdateUser(Utils.getCurrentUser());		}		return getDao().save(entities);	}	@Override	public void flush() {		getDao().flush();	}	@Override	public T saveAndFlush(T entity) {		entity.setUpdateDate(new Date());		entity.setUpdateUser(Utils.getCurrentUser());		return getDao().saveAndFlush(entity);	}	@Override	public void deleteInBatch(Iterable<T> entities) {		getDao().deleteInBatch(entities);	}	@Override	public void deleteAllInBatch() {		getDao().deleteAllInBatch();	}	@Override	public void logicDelete(ID id) {		getDao().logicDelete(id);	}	@Override	public void logicDelete(T entity) {		getDao().logicDelete(entity);	}	@Override	public void logicDelete(Iterable<T> entities) {		getDao().logicDelete(entities);	}}
 |