| | |
| | | import com.dy.common.multiDataSource.DataSourceContext; |
| | | import com.dy.common.mybatis.envm.Deleted; |
| | | import com.dy.common.mybatis.envm.Disabled; |
| | | import com.dy.common.util.ConfigXml; |
| | | import com.dy.common.util.ConfigXml4Springboot; |
| | | import com.dy.common.util.MD5; |
| | | import com.dy.common.webListener.ConfigListener; |
| | | import com.dy.pipIrrGlobal.daoBa.BaDistrictMapper; |
| | | import com.dy.pipIrrGlobal.daoBa.BaSettingsMapper; |
| | | import com.dy.pipIrrGlobal.daoBa.BaUserMapper; |
| | | import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmIrrigateProfileMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SePaymentMethodMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeWaterTypeMapper; |
| | | import com.dy.pipIrrGlobal.pojoBa.BaDistrict; |
| | | import com.dy.pipIrrGlobal.pojoBa.BaSettings; |
| | | import com.dy.pipIrrGlobal.pojoBa.BaUser; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrWaterPrice; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmIrrigateProfile; |
| | | import com.dy.pipIrrGlobal.pojoSe.SePaymentMethod; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeWaterType; |
| | | import com.dy.pipIrrGlobal.util.DistrictLevel; |
| | | import org.jdom2.Document; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.context.event.ApplicationReadyEvent; |
| | | import org.springframework.context.ApplicationListener; |
| | | import org.springframework.core.io.ResourceLoader; |
| | | import org.springframework.lang.NonNull; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.net.URL; |
| | | |
| | | /** |
| | | * 监听器,实现功能:在系统启动时初始化,向数据库中插入数据 |
| | |
| | | @Component |
| | | public class InitListener implements ApplicationListener<ApplicationReadyEvent> { |
| | | |
| | | protected ResourceLoader resourceLoader ; |
| | | |
| | | private BaDistrictMapper distriDao ; |
| | | private BaUserMapper userDao ; |
| | | private SePaymentMethodMapper paymentMethodDao ; |
| | | private BaSettingsMapper settingsDao ; |
| | | private SeWaterTypeMapper waterTypeDao ; |
| | | private RmIrrigateProfileMapper rmIrrigateProfileDao; |
| | | private PrWaterPriceMapper prWaterPriceDao; |
| | | |
| | | @Autowired |
| | | public void setResourceLoader(ResourceLoader resourceLoader){ |
| | | this.resourceLoader = resourceLoader ; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setDistriDao(BaDistrictMapper distriDao){ |
| | |
| | | this.paymentMethodDao = paymentMethodDao ; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setSettingsDao(BaSettingsMapper settingsDao){ |
| | | this.settingsDao = settingsDao ; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setWaterTypeDao(SeWaterTypeMapper waterTypeDao){ |
| | | this.waterTypeDao = waterTypeDao ; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setRmIrrigateProfileDao(RmIrrigateProfileMapper rmIrrigateProfileDao) { |
| | | this.rmIrrigateProfileDao = rmIrrigateProfileDao; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setWaterPriceDao(PrWaterPriceMapper prWaterPriceDao) { |
| | | this.prWaterPriceDao = prWaterPriceDao; |
| | | } |
| | | |
| | | /** |
| | | * SpringBoot容器已经准备好了 |
| | |
| | | @SuppressWarnings("unused ") |
| | | private void init(ApplicationReadyEvent event){ |
| | | try { |
| | | URL configFileURL = ConfigListener.class.getResource("/init-config.xml" ); |
| | | ConfigXml configXml = new ConfigXml() ; |
| | | Document doc = configXml.createDom(configFileURL) ; |
| | | ConfigXml4Springboot configXml = new ConfigXml4Springboot() ; |
| | | Document doc = configXml.createDom(this.resourceLoader, "init-config.xml") ; |
| | | this.doInit(configXml, doc); |
| | | } catch (Exception e) { |
| | | System.out.println("系统启动时,初始化配置出错 !"); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | private void doInit(ConfigXml configXml, Document doc) throws Exception{ |
| | | private void doInit(ConfigXml4Springboot configXml, Document doc) throws Exception{ |
| | | if(configXml != null && doc != null){ |
| | | for(int num = 1; num <= 10000; num++){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num)){ |
| | | String orgTag = configXml.getSetAttrTxt(doc, "config.orgs.org" + num,"name", null, false, null) ; |
| | | //设置数据源 |
| | | DataSourceContext.set(orgTag); |
| | | if(!this.existDistricts()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".districts.province")){ |
| | | String distriName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province","name", null, false, null) ; |
| | | String distriNum = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province","num", null, false, null) ; |
| | | Integer distriLevel = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".districts.province","level", null, 1, 99,null) ; |
| | | Long supperId = this.saveDistrict(null, distriName, distriNum, distriLevel); |
| | | if(supperId != null && configXml.existElement(doc, "config.orgs.org" + num + ".districts.province.city")){ |
| | | distriName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city","name", null, false, null) ; |
| | | distriNum = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city","num", null, false, null) ; |
| | | distriLevel = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".districts.province.city","level", null, 1, 99,null) ; |
| | | supperId = this.saveDistrict(supperId, distriName, distriNum, distriLevel); |
| | | if(supperId != null && configXml.existElement(doc, "config.orgs.org" + num + ".districts.province.city.country")) { |
| | | distriName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city.country", "name", null, false, null); |
| | | distriNum = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city.country", "num", null, false, null); |
| | | distriLevel = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".districts.province.city.country", "level", null, 1, 99, null); |
| | | this.saveDistrict(supperId, distriName, distriNum, distriLevel); |
| | | String orgTag = configXml.getSetAttrTxt(doc, "config.orgs.org" + num,"tag", null, false, null) ; |
| | | Boolean enable = configXml.getSetAttrBoolean(doc, "config.orgs.org" + num, "enable", null, null); |
| | | if(enable != null && enable.booleanValue()){ |
| | | //设置数据源 |
| | | DataSourceContext.set(orgTag); |
| | | if(!this.existDistricts()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".districts.province")){ |
| | | String distriName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province","name", null, false, null) ; |
| | | String distriNum = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province","num", null, false, null) ; |
| | | Integer distriLevel = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".districts.province","level", null, 0, 99,null) ; |
| | | Long supperId = this.saveDistrict(null, distriName, distriNum, distriLevel); |
| | | if(supperId != null && configXml.existElement(doc, "config.orgs.org" + num + ".districts.province.city")){ |
| | | distriName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city","name", null, false, null) ; |
| | | distriNum = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city","num", null, false, null) ; |
| | | distriLevel = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".districts.province.city","level", null, 1, 99,null) ; |
| | | supperId = this.saveDistrict(supperId, distriName, distriNum, distriLevel); |
| | | if(supperId != null && configXml.existElement(doc, "config.orgs.org" + num + ".districts.province.city.country")) { |
| | | distriName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city.country", "name", null, false, null); |
| | | distriNum = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".districts.province.city.country", "num", null, false, null); |
| | | distriLevel = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".districts.province.city.country", "level", null, 1, 99, null); |
| | | this.saveDistrict(supperId, distriName, distriNum, distriLevel); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(!this.existUsers()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".user")){ |
| | | String name = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".user","name", null, false, null) ; |
| | | String phone = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".user","phone", null, false, null) ; |
| | | String password = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".user","password", null, false, null) ; |
| | | Integer supperAdmin = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".user","supperAdmin", null, 0, 1,null) ; |
| | | this.saveUser(orgTag, name, phone, password, supperAdmin); |
| | | if(!this.existUsers()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".user")){ |
| | | String name = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".user","name", null, false, null) ; |
| | | String phone = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".user","phone", null, false, null) ; |
| | | String password = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".user","password", null, false, null) ; |
| | | Integer supperAdmin = configXml.getSetAttrPlusInt(doc, "config.orgs.org" + num + ".user","supperAdmin", null, 0, 1,null) ; |
| | | this.saveUser(orgTag, name, phone, password, supperAdmin); |
| | | } |
| | | } |
| | | } |
| | | if(!this.existPayments()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".payments")){ |
| | | for(int i = 1 ; i < 10000; i++){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".payments.item" + i)){ |
| | | String name = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".payments.item" + i,"name", null, false, null) ; |
| | | this.savePayment(orgTag, name); |
| | | }else{ |
| | | break ; |
| | | if(!this.existPayments()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".payments")){ |
| | | for(int i = 1 ; i < 10000; i++){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".payments.item" + i)){ |
| | | String name = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".payments.item" + i,"name", null, false, null) ; |
| | | this.savePayment(orgTag, name); |
| | | }else{ |
| | | break ; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(!this.existSettings()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".settings")){ |
| | | for(int i = 1 ; i < 10000; i++){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".settings.item" + i)){ |
| | | String item_name = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".settings.item" + i,"item_name", null, false, null) ; |
| | | String item_value = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".settings.item" + i,"item_value", null, false, null) ; |
| | | String remarks = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".settings.item" + i,"remarks", null, false, null) ; |
| | | this.saveSettings(orgTag, item_name, item_value, remarks); |
| | | }else{ |
| | | break ; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(!this.existIrrigateProfile()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".irrigateProfile")){ |
| | | for(int i = 1 ; i < 10000; i++){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".irrigateProfile.item" + i)){ |
| | | String default_value = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".irrigateProfile.item" + i,"default_value", null, false, null) ; |
| | | String unit = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".irrigateProfile.item" + i,"unit", null, false, null) ; |
| | | String sort = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".irrigateProfile.item" + i,"sort", null, false, null) ; |
| | | String type = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".irrigateProfile.item" + i,"type", null, false, null) ; |
| | | this.saveIrrigateProfile(orgTag, default_value, unit,sort,type); |
| | | }else{ |
| | | break ; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(!this.existWaterTypes()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".waterTypes")){ |
| | | for(int i = 1 ; i < 10000; i++){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".waterTypes.item" + i)){ |
| | | String typeName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".waterTypes.item" + i,"typeName", null, false, null) ; |
| | | this.saveWaterType(orgTag, typeName); |
| | | }else{ |
| | | break ; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(!this.existWaterPrice()){ |
| | | if(configXml.existElement(doc, "config.orgs.org" + num + ".waterPrice")){ |
| | | String price = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".waterPrice","price", null, false, null) ; |
| | | this.saveWaterPrice(orgTag, price); |
| | | } |
| | | } |
| | | } |
| | |
| | | */ |
| | | private boolean existPayments(){ |
| | | Long total = this.paymentMethodDao.selectCount(null) ; |
| | | return (total != null && total > 0) ; |
| | | } |
| | | |
| | | /** |
| | | * 数据库中是否存在系统配置数据 |
| | | * @return 存在否 |
| | | */ |
| | | private boolean existSettings(){ |
| | | Long total = this.settingsDao.selectCount(null) ; |
| | | return (total != null && total > 0) ; |
| | | } |
| | | |
| | | /** |
| | | * 数据库中是否存在用水类型数据 |
| | | * @return 存在否 |
| | | */ |
| | | private boolean existWaterTypes(){ |
| | | Long total = this.prWaterPriceDao.selectCount(null) ; |
| | | return (total != null && total > 0) ; |
| | | } |
| | | |
| | | /** |
| | | * 数据库中是否存在灌溉配置 |
| | | * @return |
| | | */ |
| | | private boolean existIrrigateProfile(){ |
| | | Long total = this.rmIrrigateProfileDao.selectCount(null) ; |
| | | return (total != null && total > 0) ; |
| | | } |
| | | |
| | | /** |
| | | * 数据库中是否存在水价 |
| | | * @return |
| | | */ |
| | | private boolean existWaterPrice() { |
| | | Long total = this.prWaterPriceDao.selectCount(null); |
| | | return (total != null && total > 0) ; |
| | | } |
| | | |
| | |
| | | SePaymentMethod po = new SePaymentMethod() ; |
| | | po.setName(name); |
| | | po.setDeleted(Deleted.NO.code); |
| | | this.paymentMethodDao.insertSelective(po) ; |
| | | this.paymentMethodDao.insert(po) ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 保存系统配置 |
| | | * @param item_name 配置项 |
| | | * @param item_value 配置项值 |
| | | * @param remarks 备注信息 |
| | | * @throws Exception |
| | | */ |
| | | private void saveSettings(String orgTag,String item_name, String item_value,String remarks) throws Exception{ |
| | | if((item_name != null && !item_name.trim().equals("")) && |
| | | (item_value != null && !item_value.trim().equals("")) && |
| | | (remarks != null && !remarks.trim().equals(""))){ |
| | | BaSettings po = new BaSettings() ; |
| | | po.setItemName(item_name); |
| | | po.setItemValue(item_value); |
| | | po.setRemarks(remarks); |
| | | this.settingsDao.insert(po) ; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 保存用水类型 |
| | | * @param orgTag 机构标签 |
| | | * @param typeName 名称 |
| | | */ |
| | | private void saveWaterType(String orgTag, String typeName) throws Exception{ |
| | | if(typeName != null && !typeName.trim().equals("")){ |
| | | SeWaterType po = new SeWaterType() ; |
| | | po.setTypename(typeName); |
| | | this.waterTypeDao.insert(po) ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 保存灌溉配置 |
| | | * @param orgTag |
| | | * @param default_value |
| | | * @param unit |
| | | * @param sort |
| | | * @param type |
| | | * @throws Exception |
| | | */ |
| | | private void saveIrrigateProfile(String orgTag, String default_value, String unit, String sort, String type) throws Exception{ |
| | | if((default_value != null && !default_value.trim().equals("")) && |
| | | (unit != null && !unit.trim().equals("")) && |
| | | (sort != null && !sort.trim().equals("")) && |
| | | (type != null && !type.trim().equals(""))){ |
| | | RmIrrigateProfile po = new RmIrrigateProfile(); |
| | | po.setDefaultValue(Integer.parseInt(default_value)); |
| | | po.setUnit(Byte.valueOf(unit)); |
| | | po.setSort(Integer.parseInt(sort)); |
| | | po.setType(Byte.valueOf(type)); |
| | | this.rmIrrigateProfileDao.insert(po); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 保存水价 |
| | | * @param price |
| | | */ |
| | | private void saveWaterPrice(String orgTag, String price) { |
| | | if(price != null && !price.trim().equals("")) { |
| | | PrWaterPrice po = new PrWaterPrice(); |
| | | po.setPrice(Double.parseDouble(price)); |
| | | po.setDeleted((byte)0); |
| | | this.prWaterPriceDao.insert(po); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |