zhubaomin
7 天以前 00d54db361d697cf8fdf2f15940f4650b21b3185
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/util/InitListener.java
@@ -6,16 +6,21 @@
import com.dy.common.util.ConfigXml4Springboot;
import com.dy.common.util.MD5;
import com.dy.pipIrrGlobal.daoBa.*;
import com.dy.pipIrrGlobal.daoOp.OpeTaskTypeMapper;
import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
import com.dy.pipIrrGlobal.daoRm.RmIrrigateProfileMapper;
import com.dy.pipIrrGlobal.daoSe.SePaymentMethodMapper;
import com.dy.pipIrrGlobal.daoSe.SeRechargeProfileMapper;
import com.dy.pipIrrGlobal.daoSe.SeWaterTypeMapper;
import com.dy.pipIrrGlobal.pojoBa.*;
import com.dy.pipIrrGlobal.pojoOp.OpeTaskType;
import com.dy.pipIrrGlobal.pojoPr.PrWaterPrice;
import com.dy.pipIrrGlobal.pojoRm.RmIrrigateProfile;
import com.dy.pipIrrGlobal.pojoSe.SePaymentMethod;
import com.dy.pipIrrGlobal.pojoSe.SeRechargeProfile;
import com.dy.pipIrrGlobal.pojoSe.SeWaterType;
import com.dy.pipIrrGlobal.util.DistrictLevel;
import lombok.extern.slf4j.Slf4j;
import org.jdom2.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
@@ -30,6 +35,7 @@
 * Spring容器并没有创建完,而本类中用了Spring容器中的Bean,即distriDao, userDao。
 * 所以采用了Spring事件监听器来实现
 */
@Slf4j
@Component
public class InitListener implements ApplicationListener<ApplicationReadyEvent> {
@@ -44,6 +50,8 @@
    private PrWaterPriceMapper prWaterPriceDao;
    private BaDictMapper baDictDao;
    private BaDictItemMapper baDictItemDao;
    private SeRechargeProfileMapper seRechargeProfileDao;
    private OpeTaskTypeMapper taskTypeDao;
    @Autowired
    public void setResourceLoader(ResourceLoader resourceLoader){
@@ -95,6 +103,16 @@
        this.baDictItemDao = baDictItemDao;
    }
    @Autowired
    public void setSeRechargeProfileDao(SeRechargeProfileMapper seRechargeProfileDao) {
        this.seRechargeProfileDao = seRechargeProfileDao;
    }
    @Autowired
    public void setOpeTaskTypeDao(OpeTaskTypeMapper taskTypeDao) {
        this.taskTypeDao = taskTypeDao;
    }
    /**
     * SpringBoot容器已经准备好了
     * @param event 事件
@@ -121,17 +139,22 @@
            Document doc = configXml.createDom(this.resourceLoader, "init-config.xml") ;
            this.doInit(configXml, doc);
        } catch (Exception e) {
            System.out.println("系统启动时,初始化配置出错 !");
            System.out.println(e.getMessage());
            log.error("系统启动时,初始化配置出错 !");
            log.error(e.getMessage());
            e.printStackTrace();
        }
    }
    private void doInit(ConfigXml4Springboot configXml, Document doc) throws Exception{
        //Check if configXml and doc are not null
        if(configXml != null && doc != null){
            //Loop through 10000 orgs
            for(int num = 1; num <= 10000; num++){
                //Check if the org exists
                if(configXml.existElement(doc, "config.orgs.org" + num)){
                    //Get the tag and enable value of the org
                    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 the org is enabled
                    if(enable != null && enable.booleanValue()){
                        //设置数据源
                        DataSourceContext.set(orgTag);
@@ -205,6 +228,21 @@
                                }
                            }
                        }
                        if(!this.existRechargeProfile()){
                            if(configXml.existElement(doc, "config.orgs.org" + num + ".rechargeProfile")){
                                for(int i = 1 ; i < 10000; i++){
                                    if(configXml.existElement(doc, "config.orgs.org" + num + ".rechargeProfile.item" + i)){
                                        String rechargeAmount = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".rechargeProfile.item" + i,"rechargeAmount", null, false, null) ;
                                        String sort = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".rechargeProfile.item" + i,"sort", null, false, null) ;
                                        this.saveRechargeProfile(orgTag, rechargeAmount, sort);
                                    }else{
                                        break ;
                                    }
                                }
                            }
                        }
                        if(!this.existWaterTypes()){
                            if(configXml.existElement(doc, "config.orgs.org" + num + ".waterTypes")){
                                for(int i = 1 ; i < 10000; i++){
@@ -245,6 +283,20 @@
                                }
                            }
                        }
                        if(!this.existTaskType()){
                            if(configXml.existElement(doc, "config.orgs.org" + num + ".taskType")){
                                for(int i = 1 ; i < 10000; i++){
                                    if(configXml.existElement(doc, "config.orgs.org" + num + ".taskType.item" + i)){
                                        String taskType = configXml.getSetAttrTxt(doc, "config.orgs.org" + num + ".taskType.item" + i,"typeName", null, false, null) ;
                                        this.saveTaskType(orgTag, taskType);
                                    }else{
                                        break ;
                                    }
                                }
                            }
                        }
                    }
                }else{
                    break ;
@@ -308,6 +360,15 @@
    }
    /**
     * 数据库中是否存在虚拟常用充值金额配置
     * @return
     */
    private boolean existRechargeProfile() {
        Long total = this.seRechargeProfileDao.selectCount(null);
        return (total != null && total > 0);
    }
    /**
     * 数据库中是否存在水价
     * @return
     */
@@ -323,6 +384,15 @@
    private boolean existDict() {
        Long total = this.baDictDao.selectCount(null);
        return (total != null && total > 0) ;
    }
    /**
     * 数据库中是否存在工单任务类型
     * @return
     */
    private boolean existTaskType() {
        Long total = this.taskTypeDao.selectCount(null);
        return (total != null && total > 0);
    }
    /**
@@ -446,6 +516,22 @@
    }
    /**
     * 保存虚拟卡常用充值金额配置
     * @param orgTag
     * @param recharge_amount
     * @param sort
     */
    private void saveRechargeProfile(String orgTag, String recharge_amount, String sort) {
        if((recharge_amount != null && !recharge_amount.trim().equals("")) && (sort != null && !sort.trim().equals(""))) {
            SeRechargeProfile po = new SeRechargeProfile();
            po.setRechargeAmount(Integer.parseInt(recharge_amount));
            po.setSort(Integer.parseInt(sort));
            this.seRechargeProfileDao.insert(po);
        }
    }
    /**
     * 保存水价
     * @param price
     */
@@ -504,9 +590,20 @@
            po.setDeleted(0L);
            this.baDictItemDao.insert(po);
        }
    }
    /**
     * 保存工单任务类型
     * @param orgTag
     * @param task_type
     */
    private void saveTaskType(String orgTag, String task_type) {
        if(task_type != null && !task_type.trim().equals("")) {
            OpeTaskType po = new OpeTaskType();
            po.setTaskType(task_type);
            po.setDeleted(0L);
            this.taskTypeDao.insert(po);
        }
    }
}