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);
- }
- }
|