@Repository("boJobDao")
public class BoJobDaoImpl extends BaseDaoImpl<BoJob,String> {
public Object getJobNoCount(String jobNoHead) {
String sql = "SELECT MAX(JobNoCount) maxJobNoCount FROM `bo_job` ";
List<Object> params = new ArrayList<>();
if (Optional.ofNullable(jobNoHead).isPresent()) {
sql += " WHERE JobNoHead = ?";
params.add(jobNoHead);
}
SQLQuery sqlQuery = getCurSession().createSQLQuery(sql);
for (int i = 0; i < params.size(); i++) {
sqlQuery.setParameter(i, params.get(i));
}
return sqlQuery.uniqueResult();
}
}
public interface BoJobService extends BaseService<BoJob,String> {
public String getNewJobNo(String JobNoCode);
}
@Service("boJobService")
public class BoJobServiceImpl extends BaseServiceImpl<BoJobDaoImpl,BoJob,String> implements BoJobService {
@Autowired
private BoJobDaoImpl boJobDao;
@Override
public String getNewJobNo(String JobNoCode) {
if (!Optional.ofNullable(JobNoCode).isPresent()) {
return null;
}
Date date = new Date();
String year = new SimpleDateFormat("yy", Locale.CHINESE).format(date);
String month = new SimpleDateFormat("MM", Locale.CHINESE).format(date);
String jobNoHead = JobNoCode + year + month;
Object jobNoCountObject = boJobDao.getJobNoCount(jobNoHead);
int jobNoCount = jobNoCountObject != null ? (Integer) jobNoCountObject : 0;
int newJobNoCount = jobNoCount + 1;
String newJobNoCountStr = String.valueOf(newJobNoCount);
StringBuilder jobNoCountBuilder = new StringBuilder(newJobNoCountStr);
for (int i = newJobNoCountStr.length(); i < 4; i++) {
jobNoCountBuilder.insert(0, "0");
}
String jobNo = jobNoHead + jobNoCountBuilder.toString();
return jobNo;
}
}
@Transactional
@Rollback(false)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring/applicationContext.xml","classpath:spring/spring-business.xml","classpath:spring/spring-redis.xml","classpath:spring/springmvc-servlet.xml"})
public class BoJobServiceImplTest {
@Autowired
BoJobServiceImpl boJobService;
@Test
public void getNewJobNo() {
String sh = boJobService.getNewJobNo("BJ");
System.out.println(sh);
}
}