package cn.ksource.web.service.cmdb.impl; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.beans.CMDB_CI_CATEGORY; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.util.ConvertUtil; import cn.ksource.web.service.cmdb.CICategory; import cn.ksource.web.service.cmdb.CIPropertityService; import cn.ksource.web.service.cmdb.DSLCategory; import cn.ksource.web.service.cmdb.SequenceService; @Service public class SequenceServiceImpl implements SequenceService { @Autowired private BaseDao baseDao; @Autowired private CIPropertityService ciPropertityService; @Override public String getDslCategorySequence(String categoryid) { DSLCategory propertity = ciPropertityService.getDSLCategory(categoryid); Map category = propertity.getCategory(); String prefix = propertity.getFirstCategory().get("CATE_CODE")+"-"+propertity.getSecondCategory().get("CATE_CODE"); if (propertity.getLevel() == 3) { prefix+= "-"+propertity.getThirdCategory().get("CATE_CODE"); } //表序号,预留字段,以后分表时使用 String tableIndex = "01"; int sequenceLong = 10; String strSequence = ""; Integer serial_number = baseDao.queryForInteger("select SERIAL_NUMBER from CMDB_CI_SEQUENCE where CATEGORY_ID=:CATEGORY_ID", new SqlParameter("CATEGORY_ID",categoryid)); if (serial_number == null) { baseDao.execute("insert into CMDB_CI_SEQUENCE(CATEGORY_ID,SERIAL_NUMBER) VALUES(:CATEGORY_ID,:SERIAL_NUMBER)", new SqlParameter("CATEGORY_ID",categoryid).addValue("SERIAL_NUMBER", 1)); serial_number = 1; } int length = sequenceLong - String.valueOf(serial_number).length(); for (int i = 0; i < length; i++) { strSequence += "0"; } return prefix.toUpperCase()+"-"+tableIndex+strSequence+String.valueOf(serial_number); } @Override public String getCICategorySequence(String categoryid) { CICategory propertity = ciPropertityService.getCICategory(categoryid); Map category = propertity.getCategory(); String prefix = propertity.getFirstCategory().get("CODE")+"-"+propertity.getSecondCategory().get("CODE"); if (propertity.getLevel() == 3) { prefix+= "-"+propertity.getThirdCategory().get("CODE"); } //表序号,预留字段,以后分表时使用 String tableIndex = "01"; int sequenceLong = 10; String strSequence = ""; Integer serial_number = baseDao.queryForInteger("select SERIAL_NUMBER from CMDB_CI_SEQUENCE where CATEGORY_ID=:CATEGORY_ID", new SqlParameter("CATEGORY_ID",categoryid)); if (serial_number == null) { baseDao.execute("insert into CMDB_CI_SEQUENCE(CATEGORY_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:CATEGORY_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", new SqlParameter("CATEGORY_ID",categoryid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1)); serial_number = 1; } int length = sequenceLong - String.valueOf(serial_number).length(); for (int i = 0; i < length; i++) { strSequence += "0"; } return prefix.toUpperCase()+"-"+tableIndex+strSequence+String.valueOf(serial_number); } @Override public int getMemberSequence(String memberid) { Integer serial_number = baseDao.queryForInteger("select SERIAL_NUMBER from CMDB_CI_USER_SEQUENCE where MEMBER_ID=:MEMBER_ID", new SqlParameter("MEMBER_ID",memberid)); if (serial_number == null) { baseDao.execute("insert into CMDB_CI_USER_SEQUENCE(MEMBER_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:MEMBER_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", new SqlParameter("MEMBER_ID",memberid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1)); serial_number = 1; } return serial_number; } @Override public void nextCICategorySequence(String categoryid) { baseDao.execute("update CMDB_CI_SEQUENCE set SERIAL_NUMBER=SERIAL_NUMBER+1 where CATEGORY_ID=:CATEGORY_ID", new SqlParameter("CATEGORY_ID",categoryid)); } @Override public void nextMemberSequence(String memberid) { baseDao.execute("update CMDB_CI_USER_SEQUENCE set SERIAL_NUMBER=SERIAL_NUMBER+1 where MEMBER_ID=:MEMBER_ID", new SqlParameter("MEMBER_ID",memberid)); } @Override public String getSUBCICategorySequence(String categoryid) { CMDB_CI_CATEGORY category = new CMDB_CI_CATEGORY(categoryid).getInstanceById(); //表序号,预留字段,以后分表时使用 String tableIndex = "01"; int sequenceLong = 10; String strSequence = ""; Integer serial_number = 1; Map serial_numberMap = baseDao.queryForMap("select * from CMDB_CI_SEQUENCE where CATEGORY_ID=:CATEGORY_ID", new SqlParameter("CATEGORY_ID",categoryid)); if (serial_numberMap == null || serial_numberMap.size() == 0) { baseDao.execute("insert into CMDB_CI_SEQUENCE(CATEGORY_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:CATEGORY_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", new SqlParameter("CATEGORY_ID",categoryid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1)); } else { serial_number = ConvertUtil.obj2Integer(serial_numberMap.get("SUB_CI_SERIAL_NUMBER")); } if (serial_number == null) { baseDao.execute("update CMDB_CI_SEQUENCE set SUB_CI_SERIAL_NUMBER=1 where CATEGORY_ID=:CATEGORY_ID", new SqlParameter("CATEGORY_ID",categoryid)); serial_number = 1; } int length = sequenceLong - String.valueOf(serial_number).length(); for (int i = 0; i < length; i++) { strSequence += "0"; } return category.getCode().toUpperCase()+"-"+tableIndex+strSequence+String.valueOf(serial_number); } @Override public int getSUBMemberSequence(String memberid) { Map serial_numberMap = baseDao.queryForMap("select * from CMDB_CI_USER_SEQUENCE where MEMBER_ID=:MEMBER_ID", new SqlParameter("MEMBER_ID",memberid)); Integer serial_number = 1; if (serial_numberMap == null || serial_numberMap.size() == 0) { baseDao.execute("insert into CMDB_CI_USER_SEQUENCE(MEMBER_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:MEMBER_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", new SqlParameter("MEMBER_ID",memberid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1)); } else { serial_number = ConvertUtil.obj2Integer(serial_numberMap.get("SUB_CI_SERIAL_NUMBER")); } if (serial_number == null) { baseDao.execute("update CMDB_CI_USER_SEQUENCE set SUB_CI_SERIAL_NUMBER=1 where MEMBER_ID=:MEMBER_ID", new SqlParameter("MEMBER_ID",memberid)); serial_number = 1; } return serial_number; } @Override public void nextSUBCICategorySequence(String categoryid) { baseDao.execute("update CMDB_CI_SEQUENCE set SUB_CI_SERIAL_NUMBER=SUB_CI_SERIAL_NUMBER+1 where CATEGORY_ID=:CATEGORY_ID", new SqlParameter("CATEGORY_ID",categoryid)); } @Override public void nextSUBMemberSequence(String memberid) { baseDao.execute("update CMDB_CI_USER_SEQUENCE set SUB_CI_SERIAL_NUMBER=SUB_CI_SERIAL_NUMBER+1 where MEMBER_ID=:MEMBER_ID", new SqlParameter("MEMBER_ID",memberid)); } }