ソースを参照

提交ETL相关代码

huZhiHao 5 年 前
コミット
907e9eb0a9

+ 18 - 0
pom.xml

@@ -364,6 +364,24 @@
             <artifactId>easyexcel</artifactId>
             <version>2.1.6</version>
         </dependency>
+
+        <!-- ETL -->
+        <dependency>
+            <groupId>com.javaforge.scriptella</groupId>
+            <artifactId>scriptella-core</artifactId>
+            <version>1.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.javaforge.scriptella</groupId>
+            <artifactId>scriptella-drivers</artifactId>
+            <version>1.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.javaforge.scriptella</groupId>
+            <artifactId>scriptella-tools</artifactId>
+            <version>1.1</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 11 - 0
src/main/java/platform/modules/government/dao/PolicyDao.java

@@ -0,0 +1,11 @@
+package platform.modules.government.dao;
+
+import org.springframework.stereotype.Repository;
+import platform.common.base.mapper.BaseMapper;
+import platform.modules.government.entity.Policy;
+
+@Repository
+public interface PolicyDao extends BaseMapper<Policy> {
+
+
+}

+ 30 - 0
src/main/java/platform/modules/government/dto/PolicyDetailDto.java

@@ -0,0 +1,30 @@
+package platform.modules.government.dto;
+
+import lombok.Data;
+
+/**
+ * @Author :huZhiHao
+ * @Date :Created in 2020/8/13 12:06
+ * @Description: TODO
+ * @Modified By:
+ * @Version: v0.0.1
+ */
+@Data
+public class PolicyDetailDto {
+
+    private String message;
+
+    private String lx;
+
+    private String title;
+
+    private String wxson;
+
+    private String date;
+
+    private String bno;
+
+    private String[] attach;
+
+    private String[] lkey;
+}

+ 32 - 0
src/main/java/platform/modules/government/dto/PolicyDto.java

@@ -0,0 +1,32 @@
+package platform.modules.government.dto;
+
+import lombok.Data;
+import platform.common.base.model.BaseEntity;
+
+import javax.persistence.Table;
+
+/**
+ * @Author :huZhiHao
+ * @Date :Created in 2020/8/13 12:06
+ * @Description: TODO
+ * @Modified By:
+ * @Version: v0.0.1
+ */
+@Data
+public class PolicyDto {
+
+    private String type;
+
+    private String lx;
+
+    private String title;
+
+    private String bz;
+
+    private String date;
+
+    private String bno;
+
+    private String message;
+
+}

+ 36 - 0
src/main/java/platform/modules/government/entity/Policy.java

@@ -0,0 +1,36 @@
+package platform.modules.government.entity;
+
+import lombok.Data;
+import platform.common.base.model.BaseEntity;
+import platform.modules.build.entity.BuildInfo;
+
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.util.List;
+
+/**
+ * @Author :huZhiHao
+ * @Date :Created in 2020/8/13 12:06
+ * @Description: TODO
+ * @Modified By:
+ * @Version: v0.0.1
+ */
+@Data
+@Table(name="z_policy")
+public class Policy extends BaseEntity {
+
+	private String type;
+
+	private String lx;
+
+	private String title;
+
+	private String bz;
+
+	private String date;
+
+	private String bno;
+
+	private String message;
+
+}

+ 13 - 0
src/main/java/platform/modules/government/service/PolicyService.java

@@ -0,0 +1,13 @@
+package platform.modules.government.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import platform.common.base.service.BaseService;
+import platform.modules.government.entity.Policy;
+
+@Service
+@Transactional
+public class PolicyService extends BaseService<Policy> {
+
+
+}

+ 97 - 3
src/main/java/platform/modules/sys/task/Task.java

@@ -1,5 +1,13 @@
 package platform.modules.sys.task;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.google.gson.GsonBuilder;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Configurable;
 import org.springframework.core.env.Environment;
@@ -8,16 +16,32 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import platform.common.Constant;
 import platform.common.util.DateUtil;
+import platform.common.util.HttpClientUtil;
 import platform.modules.area.MapAreaService;
 import platform.modules.build.entity.BuildingInfo;
 import platform.modules.build.entity.Company;
 import platform.modules.build.service.*;
+import platform.modules.government.dao.PolicyDao;
+import platform.modules.government.dto.PolicyDetailDto;
+import platform.modules.government.dto.PolicyDto;
 import platform.modules.government.entity.CompanyReport;
+import platform.modules.government.entity.Policy;
 import platform.modules.government.service.CompanyReportService;
+import platform.modules.government.service.PolicyService;
 import platform.modules.sys.entity.SysConfig;
 import platform.modules.sys.service.SysConfigService;
+import scriptella.execution.EtlExecutor;
+import scriptella.execution.EtlExecutorException;
 
+import javax.annotation.Resource;
+import java.io.File;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.Statement;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.*;
 
@@ -64,6 +88,7 @@ public class Task {
             mapAreaService.addIndustryPointByAttr(floorContractRelateService.findBuildLivesNotGenerateMap());
         }
     }
+
     @Scheduled(cron = "0 0/1 * * * ?") // 每分钟执行一次
     public void deleteMap() throws Exception {
         //内网
@@ -85,8 +110,8 @@ public class Task {
 
     @Scheduled(cron = "0 0/1 * * * ?") // 每分钟执行一次
     public void updateBuild() throws Exception {
-    	//外网
-        if (environment.getProperty("spring.profiles").equals(Constant.Environment.PROD_OUT)||environment.getProperty("spring.profiles").equals(Constant.Environment.TEST)) {
+        //外网
+        if (environment.getProperty("spring.profiles").equals(Constant.Environment.PROD_OUT) || environment.getProperty("spring.profiles").equals(Constant.Environment.TEST)) {
             List<BuildingInfo> buildingInfoList = buildingInfoService.findListByIsUse();
             for (BuildingInfo buildingInfo : buildingInfoList) {
                 if (floorService.sumIsUse(buildingInfo.getId()) == 0) {
@@ -141,7 +166,7 @@ public class Task {
                 companyReport.setCompany_name(company.getCompany_name());
                 companyReport.setBuild_id(company.getBuild_id());
 
-                threadPool.execute(()-> companyReportService.generateInsertReport(companyReport));
+                threadPool.execute(() -> companyReportService.generateInsertReport(companyReport));
 
             }
 
@@ -159,4 +184,73 @@ public class Task {
         String year = DateUtil.getCurrentDateString("yyyy");
         sysConfigService.addYearWorkDay(year);
     }
+
+    @Autowired
+    public HttpClientUtil httpClientUtil;
+
+    @Resource
+    private PolicyService policyService;
+
+    @Scheduled(cron = "0 0 22 * * ?")
+    public void SyncPolicyTask() throws Exception {
+
+        //内网
+        if (environment.getProperty("spring.profiles").equals(Constant.Environment.PROD_IN)) {
+            String url1 = "http://snd.ideatob.com/mp/api/?apikey=snd_apis&at=2&page=1&pagesize=99999&lb=";
+            String url2 = "http://snd.ideatob.com/mp/api/?apikey=snd_apis&at=6&bno=";
+            String[] typeArr = {"1", "2", "3", "4"};
+
+            policyService.deleteByWhere(null);
+            List<Policy> list1 = new ArrayList<>();
+            for (String type : typeArr) {
+
+                String result = httpClientUtil.sendHttpGet(url1 + type);
+                JSONObject obj = JSONObject.parseObject(result);
+                String j = obj.getString("list");
+                List<PolicyDto> list = JSONArray.parseArray(j, PolicyDto.class);
+                for (PolicyDto policyDto : list) {
+                    if ("1".equals(type)) {
+                        policyDto.setType("country");
+                    }
+                    if ("2".equals(type)) {
+                        policyDto.setType("province");
+                    }
+                    if ("3".equals(type)) {
+                        policyDto.setType("city");
+                    }
+                    if ("4".equals(type)) {
+                        policyDto.setType("district");
+                    }
+                    String results = httpClientUtil.sendHttpGet(url2 + policyDto.getBno());
+                    JSONObject objs = JSONObject.parseObject(results);
+                    String rs = objs.getString("list");
+                    PolicyDetailDto policyDetailDto = JSONObject.parseObject(rs, PolicyDetailDto.class);
+
+                    policyDto.setMessage(policyDetailDto.getMessage());
+                    Policy policy = new Policy();
+                    BeanUtils.copyProperties(policyDto, policy);
+                    list1.add(policy);
+                }
+            }
+            policyService.saveList(list1);
+        }
+
+    }
+
+    @Scheduled(cron = "0 0 23 * * ?") // 每分钟执行一次
+    public void EtlTask() throws Exception {
+
+        //内网
+        if (environment.getProperty("spring.profiles").equals(Constant.Environment.PROD_IN)) {
+            System.out.println("执行Quartz定时器任务ETL:" + new Date());
+            String classesPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
+            String templateUrl = classesPath + "etl.xml";
+            try {
+                EtlExecutor.newExecutor(new File(templateUrl)).execute();
+            } catch (EtlExecutorException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } //Execute etl.xml file
+        }
+    }
 }

+ 505 - 0
src/main/resources/etl.xml

@@ -0,0 +1,505 @@
+<?xml version="1.0" encoding="UTF-8"?> <!-- 指定编码,防止系统弄错字符集 -->
+<!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd">
+<etl>
+    <connection id="db1"
+                url="jdbc:mysql://47.105.241.108:33060/service_platform?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+    <connection id="db2"
+                url="jdbc:mysql://47.105.241.108:33060/service_platform_backup?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+
+    <connection id="platform"
+                url="jdbc:mysql://10.44.104.42:3306/service_platform?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="fgjdb-1234"
+                driver="mysql"/>
+    <connection id="league"
+                url="jdbc:mysql://10.44.104.42:3306/snd-escloud-serviceleague?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="fgjdb-1234"
+                driver="mysql"/>
+    <connection id="gyzt"
+                url="jdbc:mysql://3.20.113.11:5518/gyzt?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="jfw_qyts" password="Jfw_qyts@123"
+                driver="mysql"/>
+    <connection id="qyts"
+                url="jdbc:mysql://3.20.113.11:5518/qyts?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="jfw_qyts" password="Jfw_qyts@123"
+                driver="mysql"/>
+
+
+    <!--    <script connection-id="db2">-->
+    <!--        DELETE FROM s_street;-->
+    <!--    </script>-->
+
+    <!--    &lt;!&ndash; 测试 貌似是单个查询单个新增 &ndash;&gt;-->
+    <!--    <query connection-id="db1">-->
+    <!--        &lt;!&ndash; Select product from software category in db1&ndash;&gt;-->
+    <!--        SELECT * FROM s_street;-->
+    <!--        &lt;!&ndash; for each row execute a script &ndash;&gt;-->
+    <!--        <script connection-id="db2">-->
+    <!--            &lt;!&ndash; Insert all selected products to db2-->
+    <!--                 use ? to reference properties, columns or ?{expressions}&ndash;&gt;-->
+    <!--            INSERT INTO s_street(id, name) values (?id, ?{name});-->
+    <!--        </script>-->
+    <!--    </query>-->
+
+
+    <!-- ======================================== 工业载体部分开始 ======================================== -->
+
+    <script connection-id="gyzt">
+        DELETE FROM park_info;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        name,
+        location,
+        area,
+        rest_area,
+        type,
+        overview,
+        build_num,
+        ground_bearing,
+        load_weight,
+        is_con,
+        kva_compensate,
+        transformer,
+        transformer_capacity,
+        special_service,
+        investment_offer,
+        is_property,
+        property_fee,
+        is_security,
+        is_greening,
+        power_manage,
+        is_gc,
+        is_pm,
+        is_onestop_service,
+        service_content,
+        is_free_rent,
+        is_preferential_policy,
+        precondition,
+        manager_offer,
+        industry_direction,
+        industry_planning,
+        planning_company,
+        over_hundred_million_company,
+        listed_company
+        FROM ic_park WHERE del_flag = 0;
+        <script connection-id="gyzt">
+            INSERT INTO park_info
+            (name, location, area, rest_area, type, overview, build_num, ground_bearing,
+            load_weight, is_con, kva_compensate, transformer, transformer_capacity, special_service,
+            investment_offer, is_property, property_fee, is_security, is_greening, power_manage, is_gc,
+            is_pm, is_onestop_service, service_content, is_free_rent, is_preferential_policy, precondition,
+            manager_offer, industry_direction, industry_planning, planning_company,
+            over_hundred_million_company, listed_company)
+            values
+            (?{name}, ?location, ?area, ?rest_area, ?type, ?overview, ?build_num,
+            ?ground_bearing, ?load_weight, ?is_con, ?kva_compensate, ?transformer,
+            ?transformer_capacity, ?special_service, ?investment_offer, ?is_property, ?property_fee,
+            ?is_security, ?is_greening, ?power_manage, ?is_gc, ?is_pm, ?is_onestop_service,
+            ?service_content, ?is_free_rent, ?is_preferential_policy, ?precondition, ?manager_offer,
+            ?industry_direction, ?industry_planning, ?planning_company, ?over_hundred_million_company,
+            ?listed_company);
+        </script>
+    </query>
+
+    <script connection-id="gyzt">
+        DELETE FROM building_info;
+    </script>
+    <query connection-id="platform">
+        SELECT * FROM ic_park WHERE del_flag = 0;
+        <script connection-id="gyzt">
+            INSERT INTO building_info
+            (name, build_area, rest_rent_area, cell_location, renting_category, no_renting_categpry, is_busstop,
+            busstop_distance, is_tram_station, tram_station_distance, is_bicycle_point, bicycle_point_distance, is_cp,
+            cp_content, is_logistics_center, is_hospital, is_start, is_power, is_water, is_drain, is_load,
+            is_newsletter, is_gas, is_heat, is_cable_television, tid, sid)
+            values
+            (?name, ?build_area, ?rest_rent_area, ?cell_location, ?renting_category, ?no_renting_categpry, ?is_busstop,
+            busstop_distance, ?is_tram_station, ?tram_station_distance, ?is_bicycle_point, ?bicycle_point_distance,
+            ?is_cp,
+            cp_content, ?is_logistics_center, ?is_hospital, ?is_start, ?is_power, ?is_water, ?is_drain, ?is_load,
+            is_newsletter, ?is_gas, ?is_heat, ?is_cable_television, ?tid, ?sid);
+        </script>
+    </query>
+
+    <script connection-id="gyzt">
+        DELETE FROM investment_info;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        *
+        FROM
+        ic_investment_info info
+        LEFT JOIN ic_investment_floor floor ON info.id = floor.investment_id
+        AND floor.del_flag = 0
+        LEFT JOIN ic_investment_intention intention ON info.id = intention.investment_id
+        AND intention.del_flag = 0
+        WHERE
+        info.del_flag = 0
+        <script connection-id="gyzt">
+            INSERT INTO investment_info
+            (contact_name, contact_phone, description, floor_id, floor_height, area, capacity, building_id, location,
+            build_name, publish_time)
+            values
+            (?contact_name, ?contact_phone, ?description, ?floor_id, ?floor_height, ?area, ?capacity, ?building_id,
+            ?location, ?build_name, ?publish_time);
+        </script>
+    </query>
+
+    <script connection-id="gyzt">
+        DELETE FROM project_info;
+    </script>
+    <query connection-id="platform">
+        SELECT *,street.name streetName FROM ic_rental_project project
+        left join ic_rental_project_company company on project.id = company.rental_id
+        left join s_street street on project.intention_street = street.id
+        where
+        project.del_flag = 0
+        and company.del_flag = 0
+        ;
+        <script connection-id="gyzt">
+            INSERT INTO project_info
+            (project_name, demand_area, demand_area_min, demand_area_max, contact, phone, project_desc,
+            intention_street, name, tid,
+            construction_content_output, company_name, legal_representative, legal_representative_concat, rental_id)
+            values
+            (?project_name, ?demand_area, ?demand_area_min, ?demand_area_max, ?contact, ?phone, ?project_desc,
+            ?streetName, ?name, ?tid,
+            ?construction_content_output, ?company_name, ?legal_representative, ?legal_representative_concat,
+            ?rental_id);
+        </script>
+    </query>
+
+    <!-- ======================================== 工业载体部分结束 ======================================== -->
+
+
+    <!-- ======================================== 企业提升部分开始 ======================================== -->
+
+    <script connection-id="qyts">
+        DELETE FROM service_league_company;
+    </script>
+    <query connection-id="league">
+        SELECT *
+        FROM serviceleague_organ
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO service_league_company
+            (address, name, main_business, telephone, description, policy_type)
+            values
+            (?address, ?name, ?main_business, ?telephone, ?description, ?policy_type)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM service_league_service;
+    </script>
+    <query connection-id="league">
+        SELECT *
+        FROM serviceleague_serve
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO service_league_service
+            (no, name, content, service_type)
+            values
+            (?id, ?name, ?content, ?service_type)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM activity_detail;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM ac_activity_detail
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_detail
+            (activity_type, activity_title, activity_starttime, activity_endtime, content, publisher)
+            values
+            (?activity_type, ?activity_title, ?activity_starttime, ?activity_endtime, ?content, ?create_name)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM activity_registration;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM ac_activity_registration
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_registration
+            ( name, phone, sign_time, company_name, no)
+            values
+            ( ?name, ?phone, ?sign_time, ?company_name, ?activity_id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM activity_analysis;
+    </script>
+    <query connection-id="platform">
+        SELECT *,
+        (
+        SELECT
+        count(id)
+        FROM
+        ac_activity_registration
+        WHERE
+        activity_id = detail.id
+        ) reg_num,
+        (
+        SELECT
+        count(id)
+        FROM
+        ac_activity_registration
+        WHERE
+        activity_id = detail.id
+        AND sign_state = 0
+        AND review_state != 3
+        ) sign_num
+        FROM ac_activity_detail detail
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_analysis
+            (activity_state, reading_number, activity_type, activity_title, sign_num, reg_num, no)
+            values
+            (?activity_state, ?reading_number, ?activity_type, ?activity_title, ?sign_num, ?reg_num, ?id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM activity_questionnaire;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM q_questionnaire qn
+        left join q_question qq on qn.id = qq.questionnaire_id
+        where
+        qn.del_flag = 0
+        and qq.del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_questionnaire
+            (start_time, title, no, question, required, type)
+            values
+            (?start_time, ?title, ?no, ?question, ?required, ?type)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM activity_comment;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM ac_activity_feedback
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_comment
+            (content, feedback_time, score, name, no)
+            values
+            (?content, ?feedback_time, ?score, ?name, ?activity_id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM project_questionnaire;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM project_declaration
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO project_questionnaire
+            (project_name, customize_name, project_super_type, project_content, create_time, no)
+            values
+            (?project_name, ?customize_name, ?project_super_type, ?project_content, ?create_time, ?id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM project_application_company;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        *,
+        c.company_name name,
+        cc.contact,
+        cc.phone
+        FROM project_application d
+        left join y_company c on d.company_id = c.id and c.del_flag = 0
+        left join y_company_contact cc on cc.company_id = c.id and cc.del_flag = 0
+        where
+        d.del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO project_application_company
+            (no, name, contact, phone)
+            values
+            (?declaration_id, ?name, ?contact, ?phone)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM carrier_info;
+    </script>
+    <query connection-id="platform">
+        SELECT DISTINCT
+        building.NO,
+        street.NAME street_name,
+        park.NAME park_name,
+        building.area,
+        building.rent_area,
+        building.remain_area,
+        IF
+        ( LENGTH( trim( floor.contract_start ) ) <![CDATA[<=]]> 0, NULL, floor.contract_start ) contract_start,
+        IF
+        ( LENGTH( trim( floor.contract_end ) ) <![CDATA[<=]]> 0, NULL, floor.contract_end ) contract_end,
+        park.build_area park_area,
+        ( park.build_area - park.rest_rent_area ) park_rent_area,
+        park.rest_rent_area park_remain_area
+        FROM
+        ic_building building
+        LEFT JOIN ic_park park ON park.id = building.park_id
+        AND park.del_flag = 0
+        LEFT JOIN s_street street ON street.id = park.street_id
+        AND street.del_flag = 0
+        LEFT JOIN ic_contract_floor floor ON floor.building_id = building.id
+        AND floor.del_flag = 0
+        WHERE
+        building.del_flag = 0
+        ORDER BY
+        building.NO
+        <script connection-id="qyts">
+            INSERT INTO carrier_info
+            (no, street_name, park_name, area, rent_area, remain_area, contract_start, contract_end, park_area,
+            park_rent_area, park_remain_area)
+            values
+            (?no, ?street_name, ?park_name, ?area, ?rent_area, ?remain_area, ?contract_start, ?contract_end, ?park_area,
+            ?park_rent_area, ?park_remain_area)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM country_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "country"
+        <script connection-id="qyts">
+            INSERT INTO country_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM province_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "province"
+        <script connection-id="qyts">
+            INSERT INTO province_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM city_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "city"
+        <script connection-id="qyts">
+            INSERT INTO city_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM district_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "district"
+        <script connection-id="qyts">
+            INSERT INTO district_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM project_analysis;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        *,
+        FLOOR( 1 + RAND( ) * 100 ) trend
+        FROM
+        (
+        SELECT DISTINCT
+        project.id NO,
+        project.project_name project_type,
+        project_year time,
+        (
+        SELECT
+        count( company.id )
+        FROM
+        y_company company
+        JOIN project_application pa ON pa.company_id = company.id
+        WHERE
+        pa.project_id = project.id
+        AND pa.street_id = s.id
+        ) company,
+        s.NAME street
+        FROM
+        project project
+        LEFT JOIN project_application pa ON pa.project_id = project.id
+        AND pa.del_flag = 0
+        JOIN s_street s ON s.id = pa.street_id
+        AND s.del_flag = 0
+        WHERE
+        project.del_flag = 0
+        ) t
+        <script connection-id="qyts">
+            INSERT INTO project_analysis
+            (project_type, no, company, street, trend, time)
+            values
+            (?project_type, ?no, ?company, ?street, ?trend, ?time)
+        </script>
+    </query>
+
+
+    <!-- ======================================== 企业提升部分结束 ======================================== -->
+
+</etl>

+ 490 - 0
src/main/resources/etl.xml.bak

@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="UTF-8"?> <!-- 指定编码,防止系统弄错字符集 -->
+<!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd">
+<etl>
+    <connection id="db1"
+                url="jdbc:mysql://47.105.241.108:33060/service_platform?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+    <connection id="db2"
+                url="jdbc:mysql://47.105.241.108:33060/service_platform_backup?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+
+    <connection id="platform"
+                url="jdbc:mysql://47.105.241.108:33060/service_platform?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+    <connection id="league"
+                url="jdbc:mysql://47.105.241.108:33060/snd-escloud-serviceleague?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+    <connection id="gyzt"
+                url="jdbc:mysql://47.105.241.108:33060/gyzt?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+    <connection id="qyts"
+                url="jdbc:mysql://47.105.241.108:33060/qyts?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;"
+                user="root" password="123456"
+                driver="mysql"/>
+
+
+    <!--    <script connection-id="db2">-->
+    <!--        DELETE FROM s_street;-->
+    <!--    </script>-->
+
+    <!--    &lt;!&ndash; 测试 貌似是单个查询单个新增 &ndash;&gt;-->
+    <!--    <query connection-id="db1">-->
+    <!--        &lt;!&ndash; Select product from software category in db1&ndash;&gt;-->
+    <!--        SELECT * FROM s_street;-->
+    <!--        &lt;!&ndash; for each row execute a script &ndash;&gt;-->
+    <!--        <script connection-id="db2">-->
+    <!--            &lt;!&ndash; Insert all selected products to db2-->
+    <!--                 use ? to reference properties, columns or ?{expressions}&ndash;&gt;-->
+    <!--            INSERT INTO s_street(id, name) values (?id, ?{name});-->
+    <!--        </script>-->
+    <!--    </query>-->
+
+
+    <!-- ======================================== 工业载体部分开始 ======================================== -->
+
+    <script connection-id="gyzt">
+        DELETE FROM park_info;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        name,
+        location,
+        area,
+        rest_area,
+        type,
+        overview,
+        build_num,
+        ground_bearing,
+        load_weight,
+        if(is_con <![CDATA[<=>]]>"1","是","否") is_con,
+        kva_compensate,
+        transformer,
+        transformer_capacity,
+        special_service,
+        investment_offer,
+        if(is_property<![CDATA[<=>]]>"1","是","否") is_property,
+        property_fee,
+        if(is_security<![CDATA[<=>]]>"1","是","否") is_security,
+        if(is_greening<![CDATA[<=>]]>"1","是","否") is_greening,
+        power_manage,
+        if(is_gc<![CDATA[<=>]]>"1","是","否") is_gc ,
+        if(is_pm<![CDATA[<=>]]>"1","是","否") is_pm ,
+        if(is_onestop_service<![CDATA[<=>]]>"1","是","否") is_onestop_service ,
+        service_content,
+        if(is_free_rent<![CDATA[<=>]]>"1","是","否") is_free_rent ,
+        if(is_preferential_policy<![CDATA[<=>]]>"1","是","否") is_preferential_policy ,
+        precondition,
+        manager_offer,
+        industry_direction,
+        industry_planning,
+        planning_company,
+        over_hundred_million_company,
+        listed_company
+        FROM ic_park WHERE del_flag = 0;
+        <script connection-id="gyzt">
+            INSERT INTO park_info
+            (name, location, area, rest_area, type, overview, build_num, ground_bearing,
+            load_weight, is_con, kva_compensate, transformer, transformer_capacity, special_service,
+            investment_offer, is_property, property_fee, is_security, is_greening, power_manage, is_gc,
+            is_pm, is_onestop_service, service_content, is_free_rent, is_preferential_policy, precondition,
+            manager_offer, industry_direction, industry_planning, planning_company,
+            over_hundred_million_company, listed_company)
+            values
+            (?{name}, ?location, ?area, ?rest_area, ?type, ?overview, ?build_num,
+            ?ground_bearing, ?load_weight, ?is_con, ?kva_compensate, ?transformer,
+            ?transformer_capacity, ?special_service, ?investment_offer, ?is_property, ?property_fee,
+            ?is_security, ?is_greening, ?power_manage, ?is_gc, ?is_pm, ?is_onestop_service,
+            ?service_content, ?is_free_rent, ?is_preferential_policy, ?precondition, ?manager_offer,
+            ?industry_direction, ?industry_planning, ?planning_company, ?over_hundred_million_company,
+            ?listed_company);
+        </script>
+    </query>
+
+    <script connection-id="gyzt">
+        DELETE FROM building_info;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        name,
+        build_area,
+        rest_rent_area,
+        cell_location,
+        renting_category,
+        no_renting_categpry,
+        if(is_busstop<![CDATA[<=>]]>"1","是","否") is_busstop,
+        busstop_distance,
+        if(is_tram_station<![CDATA[<=>]]>"1","是","否") is_tram_station,
+        tram_station_distance,
+        if(is_bicycle_point<![CDATA[<=>]]>"1","是","否") is_bicycle_point ,
+        bicycle_point_distance,
+        if(is_cp<![CDATA[<=>]]>"1","是","否") is_cp,
+        cp_content,
+        if(is_logistics_center<![CDATA[<=>]]>"1","是","否")  is_logistics_center,
+        if(is_hospital<![CDATA[<=>]]>"1","是","否")  is_hospital,
+        if(is_start<![CDATA[<=>]]>"1","是","否")  is_start,
+        if(is_power<![CDATA[<=>]]>"1","是","否") is_power,
+        if(is_water<![CDATA[<=>]]>"1","是","否") is_water,
+        if(is_drain<![CDATA[<=>]]>"1","是","否") is_drain,
+        if(is_load<![CDATA[<=>]]>"1","是","否") is_load,
+        if(is_newsletter<![CDATA[<=>]]>"1","是","否") is_newsletter,
+        if(is_gas<![CDATA[<=>]]>"1","是","否") is_gas,
+        if(is_heat<![CDATA[<=>]]>"1","是","否") is_heat,
+        if(is_cable_television<![CDATA[<=>]]>"1","是","否") is_cable_television,
+        tid,
+        sid
+        FROM ic_park WHERE del_flag = 0;
+        <script connection-id="gyzt">
+            INSERT INTO building_info
+            (name, build_area, rest_rent_area, cell_location, renting_category, no_renting_categpry, is_busstop,
+            busstop_distance, is_tram_station, tram_station_distance, is_bicycle_point, bicycle_point_distance, is_cp,
+            cp_content, is_logistics_center, is_hospital, is_start, is_power, is_water, is_drain, is_load,
+            is_newsletter, is_gas, is_heat, is_cable_television, tid, sid)
+            values
+            (?name, ?build_area, ?rest_rent_area, ?cell_location, ?renting_category, ?no_renting_categpry, ?is_busstop,
+            busstop_distance, ?is_tram_station, ?tram_station_distance, ?is_bicycle_point, ?bicycle_point_distance,
+            ?is_cp,
+            cp_content, ?is_logistics_center, ?is_hospital, ?is_start, ?is_power, ?is_water, ?is_drain, ?is_load,
+            is_newsletter, ?is_gas, ?is_heat, ?is_cable_television, ?tid, ?sid);
+        </script>
+    </query>
+
+    <script connection-id="gyzt">
+        DELETE FROM investment_info;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        *
+        FROM
+        ic_investment_info info
+        LEFT JOIN ic_investment_floor floor ON info.id = floor.investment_id
+        AND floor.del_flag = 0
+        LEFT JOIN ic_investment_intention intention ON info.id = intention.investment_id
+        AND intention.del_flag = 0
+        WHERE
+        info.del_flag = 0
+        <script connection-id="gyzt">
+            INSERT INTO investment_info
+            (contact_name, contact_phone, description, floor_id, floor_height, area, capacity, building_id, location,
+            build_name, publish_time)
+            values
+            (?contact_name, ?contact_phone, ?description, ?floor_id, ?floor_height, ?area, ?capacity, ?building_id,
+            ?location, ?build_name, ?publish_time);
+        </script>
+    </query>
+
+    <script connection-id="gyzt">
+        DELETE FROM project_info;
+    </script>
+    <query connection-id="platform">
+        SELECT *,street.name streetName FROM ic_rental_project project
+        left join ic_rental_project_company company on project.id = company.rental_id
+        left join s_street street on project.intention_street = street.id
+        where
+        project.del_flag = 0
+        and company.del_flag = 0
+        ;
+        <script connection-id="gyzt">
+            INSERT INTO project_info
+            (project_name, demand_area, demand_area_min, demand_area_max, contact, phone, project_desc,
+            intention_street, name, tid,
+            construction_content_output, company_name, legal_representative, legal_representative_concat, rental_id)
+            values
+            (?project_name, ?demand_area, ?demand_area_min, ?demand_area_max, ?contact, ?phone, ?project_desc,
+            ?streetName, ?name, ?tid,
+            ?construction_content_output, ?company_name, ?legal_representative, ?legal_representative_concat,
+            ?rental_id);
+        </script>
+    </query>
+
+    <!-- ======================================== 工业载体部分结束 ======================================== -->
+
+
+    <!-- ======================================== 企业提升部分开始 ======================================== -->
+
+    <script connection-id="qyts">
+        DELETE FROM service_league_company;
+    </script>
+    <query connection-id="league">
+        SELECT *
+        FROM serviceleague_organ
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO service_league_company
+            (address, name, main_business, telephone, description, policy_type)
+            values
+            (?address, ?name, ?main_business, ?telephone, ?description, ?policy_type)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM service_league_service;
+    </script>
+    <query connection-id="league">
+        SELECT *
+        FROM serviceleague_serve
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO service_league_service
+            (no, name, content, service_type)
+            values
+            (?id, ?name, ?content, ?service_type)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM activity_detail;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM ac_activity_detail
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_detail
+            (activity_type, activity_title, activity_starttime, activity_endtime, content, publisher)
+            values
+            (?activity_type, ?activity_title, ?activity_starttime, ?activity_endtime, ?content, ?create_name)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM activity_registration;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM ac_activity_registration
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_registration
+            ( name, phone, sign_time, company_name, no)
+            values
+            ( ?name, ?phone, ?sign_time, ?company_name, ?activity_id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM activity_analysis;
+    </script>
+    <query connection-id="platform">
+        SELECT *,
+        (
+        SELECT
+        count(id)
+        FROM
+        ac_activity_registration
+        WHERE
+        activity_id = detail.id
+        ) reg_num,
+        (
+        SELECT
+        count(id)
+        FROM
+        ac_activity_registration
+        WHERE
+        activity_id = detail.id
+        AND sign_state = 0
+        AND review_state != 3
+        ) sign_num
+        FROM ac_activity_detail detail
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_analysis
+            (activity_state, reading_number, activity_type, activity_title, sign_num, reg_num, no)
+            values
+            (?activity_state, ?reading_number, ?activity_type, ?activity_title, ?sign_num, ?reg_num, ?id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM activity_questionnaire;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM q_questionnaire qn
+        left join q_question qq on qn.id = qq.questionnaire_id
+        where
+        qn.del_flag = 0
+        and qq.del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_questionnaire
+            (start_time, title, no, question, required, type)
+            values
+            (?start_time, ?title, ?no, ?question, ?required, ?type)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM activity_comment;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM ac_activity_feedback
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO activity_comment
+            (content, feedback_time, score, name, no)
+            values
+            (?content, ?feedback_time, ?score, ?name, ?activity_id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM project_questionnaire;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM project_declaration
+        where
+        del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO project_questionnaire
+            (project_name, customize_name, project_super_type, project_content, create_time, no)
+            values
+            (?project_name, ?customize_name, ?project_super_type, ?project_content, ?create_time, ?id)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM project_application_company;
+    </script>
+    <query connection-id="platform">
+        SELECT
+        *,
+        c.company_name name,
+        cc.contact,
+        cc.phone
+        FROM project_application d
+        left join y_company c on d.company_id = c.id and c.del_flag = 0
+        left join y_company_contact cc on cc.company_id = c.id and cc.del_flag = 0
+        where
+        d.del_flag = 0
+        <script connection-id="qyts">
+            INSERT INTO project_application_company
+            (no, name, contact, phone)
+            values
+            (?declaration_id, ?name, ?contact, ?phone)
+        </script>
+    </query>
+
+
+    <script connection-id="qyts">
+        DELETE FROM carrier_info;
+    </script>
+    <query connection-id="platform">
+        SELECT DISTINCT
+        building.NO,
+        street.NAME street_name,
+        park.NAME park_name,
+        building.area,
+        building.rent_area,
+        building.remain_area,
+        IF
+        ( LENGTH( trim( floor.contract_start ) ) <![CDATA[<=]]> 0, NULL, floor.contract_start ) contract_start,
+        IF
+        ( LENGTH( trim( floor.contract_end ) ) <![CDATA[<=]]> 0, NULL, floor.contract_end ) contract_end,
+        park.build_area park_area,
+        ( park.build_area - park.rest_rent_area ) park_rent_area,
+        park.rest_rent_area park_remain_area
+        FROM
+        ic_building building
+        LEFT JOIN ic_park park ON park.id = building.park_id
+        AND park.del_flag = 0
+        LEFT JOIN s_street street ON street.id = park.street_id
+        AND street.del_flag = 0
+        LEFT JOIN ic_contract_floor floor ON floor.building_id = building.id
+        AND floor.del_flag = 0
+        WHERE
+        building.del_flag = 0
+        ORDER BY
+        building.NO
+        <script connection-id="qyts">
+            INSERT INTO carrier_info
+            (no, street_name, park_name, area, rent_area, remain_area, contract_start, contract_end, park_area,
+            park_rent_area, park_remain_area)
+            values
+            (?no, ?street_name, ?park_name, ?area, ?rent_area, ?remain_area, ?contract_start, ?contract_end, ?park_area,
+            ?park_rent_area, ?park_remain_area)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM country_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "country"
+        <script connection-id="qyts">
+            INSERT INTO country_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM province_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "province"
+        <script connection-id="qyts">
+            INSERT INTO province_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM city_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "city"
+        <script connection-id="qyts">
+            INSERT INTO city_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+    <script connection-id="qyts">
+        DELETE FROM district_policy;
+    </script>
+    <query connection-id="platform">
+        SELECT *
+        FROM
+        z_policy
+        where type = "district"
+        <script connection-id="qyts">
+            INSERT INTO district_policy
+            (lx, title, department, date, message)
+            values
+            (?lx, ?title, ?department, ?date, ?message)
+        </script>
+    </query>
+
+    <!-- ======================================== 企业提升部分结束 ======================================== -->
+
+</etl>

+ 5 - 0
src/main/resources/mapper/government/Policy.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="platform.modules.government.dao.PolicyDao">
+
+</mapper>