lilt085163@126.com преди 3 години
ревизия
2f8b031b9c
променени са 32 файла, в които са добавени 4443 реда и са изтрити 0 реда
  1. 42 0
      .gitignore
  2. 4 0
      README.md
  3. 254 0
      pom.xml
  4. 28 0
      src/main/java/com/care/CareSpringStart.java
  5. 63 0
      src/main/java/com/care/common/exception/BDException.java
  6. 27 0
      src/main/java/com/care/common/vo/PageReqVO.java
  7. 63 0
      src/main/java/com/care/common/vo/PageResVO.java
  8. 30 0
      src/main/java/com/care/config/CorsConfig.java
  9. 51 0
      src/main/java/com/care/config/DataSourceConfig.java
  10. 34 0
      src/main/java/com/care/config/MyBatisPlusConfig.java
  11. 78 0
      src/main/java/com/care/config/SpringApplicationUtils.java
  12. 88 0
      src/main/java/com/care/config/SwaggerConfig.java
  13. 19 0
      src/main/java/com/care/dic/constant/RimsDictionariesConstant.java
  14. 240 0
      src/main/java/com/care/dic/controller/SystemDictionariesController.java
  15. 80 0
      src/main/java/com/care/dic/entity/RimsDictionaries.java
  16. 46 0
      src/main/java/com/care/dic/mapper/RimsDictionariesMapper.java
  17. 100 0
      src/main/java/com/care/dic/service/SystemDictionariesService.java
  18. 253 0
      src/main/java/com/care/dic/service/impl/SystemDictionariesServiceImpl.java
  19. 22 0
      src/main/java/com/care/dic/vo/RimsNetworkAreaSelectResVO.java
  20. 122 0
      src/main/java/com/care/util/DateUtils.java
  21. 34 0
      src/main/java/com/care/util/LogUtil.java
  22. 62 0
      src/main/java/com/care/util/PageResult.java
  23. 125 0
      src/main/java/com/care/util/PageUtil.java
  24. 77 0
      src/main/java/com/care/util/Result.java
  25. 37 0
      src/main/java/com/care/util/ResultCode.java
  26. 19 0
      src/main/resources/application-dev.properties
  27. 55 0
      src/main/resources/application.properties
  28. 44 0
      src/main/resources/mybatis/RimsDictionariesMapper.xml
  29. 1177 0
      src/main/resources/template/template-order-chinamobile.html
  30. 529 0
      src/main/resources/template/template-order-chinatelecom.html
  31. 343 0
      src/main/resources/template/template-order-chinaunicom-mstp.html
  32. 297 0
      src/main/resources/template/template-order-chinaunicom-sdh.html

+ 42 - 0
.gitignore

@@ -0,0 +1,42 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.ipr
+*.iml
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+###常用###
+**/target/
+**/classes/
+.idea/
+.gitconfig
+.mymetadata
+Thumbs.db
+logs

+ 4 - 0
README.md

@@ -0,0 +1,4 @@
+## 频安守护
+
+##### 频安服务(bms)、频安宝(client)、频安管家(chamberlain)、大屏(bigscreen)共用一套后台程序
+

+ 254 - 0
pom.xml

@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.pinan</groupId>
+    <artifactId>pinan-service</artifactId>
+
+    <version>1.0-RELEASE</version>
+    <name>care</name>
+
+
+    <!--父项目依赖-->
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.2.2.RELEASE</version>
+        <relativePath/>
+    </parent>
+
+    <!--定义版本常量-->
+    <properties>
+        <!-- 打包跳过单元测试 -->
+        <skipTest>true</skipTest>
+        <!--各依赖版本设置-->
+        <java.version>1.8</java.version>
+        <spring-web.version>2.2.10.RELEASE</spring-web.version>
+        <mybatis-plus.version>3.4.1</mybatis-plus.version>
+        <HikariCP.version>3.4.5</HikariCP.version>
+        <jasypt.version>3.0.3</jasypt.version>
+        <admin.version>2.2.2</admin.version>
+        <io.springfox.version>2.5.0</io.springfox.version>
+        <easyexcel.version>2.2.8</easyexcel.version>
+    </properties>
+
+    <!--环境依赖-->
+    <dependencies>
+
+        <!--应用健康监控后台管理依赖-->
+        <dependency>
+            <groupId>de.codecentric</groupId>
+            <artifactId>spring-boot-admin-starter-client</artifactId>
+            <version>${admin.version}</version>
+        </dependency>
+        <!--springBoot Web 模块-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>${spring-web.version}</version>
+        </dependency>
+        <!--junit5 单元测试-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!--MySQL数据库驱动-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.21</version>
+        </dependency>
+        <!--HikariCP 数据库连接池-->
+        <dependency>
+            <groupId>com.zaxxer</groupId>
+            <artifactId>HikariCP</artifactId>
+            <version>${HikariCP.version}</version>
+        </dependency>
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.12</version>
+            <scope>compile</scope>
+        </dependency>
+        <!--mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>${mybatis-plus.version}</version>
+        </dependency>
+
+        <!--springfox -->
+        <!-- Swagger -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>org.mapstruct</artifactId>
+                    <groupId>mapstruct</groupId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.swagger</groupId>
+                    <artifactId>swagger-annotations</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.swagger</groupId>
+                    <artifactId>swagger-models</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.21</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-models</artifactId>
+            <version>1.5.21</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.5.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-scratchpad</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>${easyexcel.version}</version>
+        </dependency>
+
+        <!-- 引入easypoi -->
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-spring-boot-starter</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+
+        <!-- poi-tl jar -->
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.8.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itextpdf</artifactId>
+            <version>5.5.13.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf.tool</groupId>
+            <artifactId>xmlworker</artifactId>
+            <version>5.5.13.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        
+        <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
+		<dependency>
+		    <groupId>com.itextpdf</groupId>
+		    <artifactId>itext-asian</artifactId>
+		    <version>5.2.0</version>
+		</dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+        </dependency>
+        <!-- 引入redis及相关组件 -->
+        <!--<dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.lettuce</groupId>
+                    <artifactId>lettuce-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>3.3.0</version>
+        </dependency>-->
+         <!-- 引入redis及相关组件 结束 -->
+    </dependencies>
+
+    <build>
+        <!--静态资源过滤-->
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>false</filtering>
+                <includes>
+                    <include>**/*.*</include>
+                </includes>
+<!--                <excludes>
+                    <exclude>**/*.properties</exclude>
+                </excludes>-->
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <delimiters>
+                        <delimiter>@</delimiter>
+                    </delimiters>
+                    <useDefaultDelimiters>false</useDefaultDelimiters>
+                </configuration>
+            </plugin>
+        </plugins>
+
+    </build>
+
+
+</project>

+ 28 - 0
src/main/java/com/care/CareSpringStart.java

@@ -0,0 +1,28 @@
+package com.care;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.client.RestTemplate;
+
+
+/**
+ * @author little
+ */
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+@EnableScheduling
+@MapperScan("com.care.**.mapper")
+public class CareSpringStart {
+
+    public static void main(String[] args) {
+        SpringApplication.run(CareSpringStart.class, args);
+    }
+    @Bean
+    RestTemplate createTemplate(){
+        return new RestTemplate();
+    }
+}
+

+ 63 - 0
src/main/java/com/care/common/exception/BDException.java

@@ -0,0 +1,63 @@
+package com.care.common.exception;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author little
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class BDException extends RuntimeException {
+
+
+    private static final long serialVersionUID = 1L;
+
+    private String msg;
+    private int code = 500;
+
+    public BDException(String msg) {
+        super(msg);
+        this.msg = msg;
+    }
+    public BDException(int code, String msg) {
+        super(msg);
+        this.msg = msg;
+        this.code = code;
+    }
+
+    public BDException(String msg, Throwable e) {
+        super(msg, e);
+        this.msg = msg;
+    }
+
+    public BDException(String msg, int code) {
+        super(msg);
+        this.msg = msg;
+        this.code = code;
+    }
+
+    public BDException(String msg, int code, Throwable e) {
+        super(msg, e);
+        this.msg = msg;
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+
+}

+ 27 - 0
src/main/java/com/care/common/vo/PageReqVO.java

@@ -0,0 +1,27 @@
+package com.care.common.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author nhc
+ * @version 1.0
+ * @description 分页查询入参Vo
+ * @date 2021/1/2 20:41
+ */
+@Data
+@ApiModel(value = "分页查询入参Vo")
+public class PageReqVO {
+
+    @ApiModelProperty(value = "页码")
+    private Integer current ;
+
+    @ApiModelProperty(value = "数量")
+    private Integer pageSize;
+
+    public PageReqVO(){
+        this.current = 1;
+        this.pageSize = 10;
+    }
+}

+ 63 - 0
src/main/java/com/care/common/vo/PageResVO.java

@@ -0,0 +1,63 @@
+package com.care.common.vo;
+
+/**
+ * 与页面交互的分页数据类
+ * @author little
+ * @since 2021-01-02
+ */
+public class PageResVO {
+    /**
+     * 当前页
+     */
+    private Long current;
+    /**
+     * 每页记录数
+     */
+    private Long pageSize;
+    /**
+     * 记录总数
+     */
+    private Long total;
+
+    public PageResVO() {
+    }
+
+    public PageResVO(long current, long pageSize, long total) {
+        this.current = current;
+        this.pageSize = pageSize;
+        this.total = total;
+    }
+
+    public long getCurrent() {
+        return current;
+    }
+
+    public void setCurrent(long current) {
+        this.current = current;
+    }
+
+    public long getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(long pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public long getTotal() {
+        return total;
+    }
+
+    public void setTotal(long total) {
+        this.total = total;
+    }
+
+    @Override
+    public String toString() {
+        return "Page{" +
+                "current=" + current +
+                ", pageSize=" + pageSize +
+                ", total=" + total +
+                '}';
+    }
+}

+ 30 - 0
src/main/java/com/care/config/CorsConfig.java

@@ -0,0 +1,30 @@
+package com.care.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+
+/**
+ * @author javadoc
+ * @version 1.0
+ * @description  跨域配置类
+ * @date 2021/1/2 20:41
+ */
+@Configuration
+public class CorsConfig {
+    @Bean
+    public WebMvcConfigurer corsConfigurer() {
+        return new WebMvcConfigurer() {
+            @Override
+            public void addCorsMappings(CorsRegistry registry) {
+                registry.addMapping("/**")
+                        .allowedOrigins("*")
+                        .allowCredentials(true)
+                        .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
+                        .maxAge(3600);
+            }
+        };
+    }
+}

+ 51 - 0
src/main/java/com/care/config/DataSourceConfig.java

@@ -0,0 +1,51 @@
+package com.care.config;
+
+import com.zaxxer.hikari.HikariDataSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+
+/**
+ * @author javadoc
+ * @version 1.0
+ * @description 数据库DataSource配置 废弃springboot自动装配,采用自定义配置,旨在为了去掉配置文件中password关键字
+ * @date 2021/02/08/19:41
+ */
+@Configuration
+public class DataSourceConfig {
+    @Value("${spring.datasource.url}")
+    private String url;
+    @Value("${spring.datasource.auth}")
+    private String auth;
+    /**
+     *以下是hikari的配置 如果项目组有额外的其他配置请一并增加进来并在下面进行设置 否则不起作用
+     */
+    @Value("${spring.datasource.hikari.maximum-pool-size}")
+    private int maximumPoolSize;
+    @Value("${spring.datasource.hikari.minimum-idle}")
+    private int minimumIdle;
+    @Value("${spring.datasource.hikari.connection-timeout}")
+    private long connectionTimeout;
+    @Value("${spring.datasource.hikari.connection-test-query}")
+    private String testQuery;
+
+    @Bean
+    @ConfigurationProperties("spring.datasource")
+    public DataSource getDataSource() {
+        HikariDataSource dataSource =
+                DataSourceBuilder.create().type(HikariDataSource.class).build();
+        dataSource.setJdbcUrl(url);
+        dataSource.setPassword(auth);
+        dataSource.setPoolName("HikariDataSourcePool");
+        dataSource.setMaximumPoolSize(maximumPoolSize);
+        dataSource.setMinimumIdle(minimumIdle);
+        dataSource.setConnectionTimeout(connectionTimeout);
+        dataSource.setConnectionTestQuery(testQuery);
+        return dataSource;
+    }
+}

+ 34 - 0
src/main/java/com/care/config/MyBatisPlusConfig.java

@@ -0,0 +1,34 @@
+package com.care.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+
+/**
+ * @author nhc
+ * @version 1.0
+ * @description MyBatisPlus 配置类
+ * @date 2021/1/2 20:41
+ */
+@EnableTransactionManagement
+@MapperScan("com.ccb.inm.rims.**.mapper")
+@Configuration
+public class MyBatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        //注册分页插件(DbType.MYSQL 单一数据库可以指定数据库类型,提高效率)
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        //注册乐观锁插件(new OptimisticLockerInnerInterceptor())
+        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+        return interceptor;
+    }
+
+}

+ 78 - 0
src/main/java/com/care/config/SpringApplicationUtils.java

@@ -0,0 +1,78 @@
+package com.care.config;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+/**
+ * @author javadoc
+ * @version 1.0
+ * @description  应用程序服务工具类
+ * @date 2021/1/10 14:20
+ */
+@Component
+public class SpringApplicationUtils  implements ApplicationContextAware {
+    private static ApplicationContext applicationContext = null;
+
+    /**
+     * 获取applicationContext
+     *
+     * @return
+     */
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext)  {
+        if (SpringApplicationUtils.applicationContext == null) {
+            setContext(applicationContext);
+        }
+    }
+
+    public static synchronized void setContext(ApplicationContext applicationContext) {
+        SpringApplicationUtils.applicationContext = applicationContext;
+    }
+
+        /**
+         * 通过name获取 Bean.
+         */
+    public static Object getBean(String name) {
+        return getApplicationContext().getBean(name);
+    }
+
+    /**
+     * 通过class获取Bean.
+     *
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> T getBean(Class<T> clazz) {
+        return getApplicationContext().getBean(clazz);
+    }
+
+    /**
+     * 通过name,以及Clazz返回指定的Bean
+     *
+     * @param name
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> T getBean(String name, Class<T> clazz) {
+        return getApplicationContext().getBean(name, clazz);
+    }
+
+    /**
+     * 获取指定类型的所有bean实例
+     *
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> Map<String, T> getBeansOfType(Class<T> clazz) {
+        return  getApplicationContext().getBeansOfType(clazz);
+    }
+}

+ 88 - 0
src/main/java/com/care/config/SwaggerConfig.java

@@ -0,0 +1,88 @@
+package com.care.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.core.env.Profiles;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.ArrayList;
+
+
+/**
+ * @author javadoc
+ * @version 1.0
+ * @description  开启 Swagger2 注解,启动项目后在页面输入 IP:端口号/swagger-ui.html 即可进入接口文档页面
+ * @date 2021/1/10 14:20
+ */
+@EnableSwagger2
+@Configuration
+@Slf4j
+public class SwaggerConfig {
+
+    /**
+     * 其中一个模块接口分组配置,如果需要配置多个则多创建几个@Bean即可;
+     * environment 参数用来判定当前环境,若为生产环境不启动 Swagger
+     * @return
+     */
+    @Bean
+    public Docket docketA(Environment environment){
+        //获取项目的环境:
+        //首先Docket 类添加 Environment 类型参数,属于 springframework 包中的类
+        //设置要显示的 Swagger 环境(dev 模拟生产环境, test 是为了整明参数可以多个)
+        Profiles profiles = Profiles.of("dev", "devtest");
+        //通过 environment.acceptsProfiles 判定是否处于在自己设定的环境当中
+        //如果当前的生产环境属于 profiles 参数中的任意一个返回 true
+        boolean flag = environment.acceptsProfiles(profiles);
+        if(flag){
+            log.info("环境判断结果为非生产环境");
+        }
+        //返回 Swagger 配置
+        return new Docket(DocumentationType.SWAGGER_2)
+                //设置分组名
+                .groupName("接口文档A")
+                //是否开启Swagger,将生产环境判定结果传到 enable() 方法,作用:生产环境不启动Swagger
+                .enable(flag)
+                //Swagger API文档标题
+                //Swagger API文档描述
+                //版本信息
+                //服务组 Url
+                //作者信息
+                //开源版本号
+                //开源版本 Url
+                .apiInfo(new ApiInfo(
+                        "Swagger API文档标题",
+                        "Swagger API文档描述",
+                        "V1.0",
+                        "106",
+                        new Contact("作者名", "作者博客Url", "作者邮箱Email"),
+                        "Apache 2.0",
+                        "http://www.apache.org/licenses/LICENSE-2.0",
+                        new ArrayList<>()
+                ))
+                //配置 Swagger 信息
+                .select()
+                //basePackage("相对包路径"):指定要扫描的包(常用)
+                .apis(RequestHandlerSelectors.basePackage("com.care"))
+                .build();
+    }
+
+
+    /**
+     * 如果需要其他组可以编辑下面这个方法
+     * @return
+     */
+    @Bean
+    public Docket docketB(){
+        return new Docket(DocumentationType.SWAGGER_2)
+                //设置分组名
+                .groupName("线路模块接口文档B");
+    }
+
+}

+ 19 - 0
src/main/java/com/care/dic/constant/RimsDictionariesConstant.java

@@ -0,0 +1,19 @@
+package com.care.dic.constant;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @Description 字典常量
+ * @Author Flag
+ * @Date: 2021/4/13 19:37
+ * @Version: 1.0
+ **/
+@ApiModel("字典常量")
+@Data
+public class RimsDictionariesConstant {
+
+    private RimsDictionariesConstant(){
+
+    }
+}

+ 240 - 0
src/main/java/com/care/dic/controller/SystemDictionariesController.java

@@ -0,0 +1,240 @@
+package com.care.dic.controller;
+
+import cn.hutool.json.JSONUtil;
+import com.care.common.vo.PageResVO;
+import com.care.dic.entity.RimsDictionaries;
+import com.care.dic.service.SystemDictionariesService;
+import com.care.util.PageResult;
+import com.care.util.PageUtil;
+import com.care.util.Result;
+import com.care.util.ResultCode;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+/**
+ * @author javadoc
+ * @version 1.0
+ * @description 系统设置-字典管理模块-前端控制器
+ * @date
+ */
+@Slf4j
+@RestController
+@RequestMapping("/bms/system/dictionaries")
+public class SystemDictionariesController {
+
+    @Autowired
+    SystemDictionariesService systemDictionariesService;
+
+
+    /**
+     * 字典:分页查询
+     * 作用:从前端获取查询条件(可无条件)和分页数据,请求数据库获取数据
+     *
+     * @param rimsDictionaries 收集到的多条件字典查询对象
+     * @param page             分页对象(收集分页参数)
+     * @return 无搜索条件时返回的是有父子级结构的字典数据,有搜索条件时返回的时无父子结构的字典数据
+     */
+    @GetMapping("/getDictionariesByPage")
+    public PageResult<List<RimsDictionaries>> getDictionariesByPage(RimsDictionaries rimsDictionaries, PageResVO page) {
+        try {
+            //声明字典多条件查询分页对象集合(数据包含在分页工具类中)
+            PageUtil<RimsDictionaries> dictionariesByPage;
+            //若字典名称搜索条件为空则为无条件分页查询(返回数据包含父子级结构)
+            if(StringUtils.isBlank(rimsDictionaries.getDictionariesName())){
+                dictionariesByPage =
+                        systemDictionariesService.getDictionaries(page);
+            } else {
+                //获取字典多条件查询分页对象集合(数据包含在分页工具类中)
+                dictionariesByPage =
+                        systemDictionariesService.getDictionariesByPage(rimsDictionaries, page);
+            }
+            if (dictionariesByPage == null) {
+                return PageResult.error( "数据错误,获取字典数据失败");
+            } else {
+
+                return  PageResult.success(
+                        "查询成功",dictionariesByPage.getListT(),
+                        dictionariesByPage.getCurrent(),
+                        dictionariesByPage.getPageSize(),
+                        dictionariesByPage.getTotal());
+            }
+        } catch (Exception e) {
+           log.error("字典:分页查询出现异常",e);
+            return PageResult.error("系统错误,获取字典数据失败");
+        }
+    }
+
+
+    /**
+     * 字典:字段查重(字典选项代码)
+     * 作用:添加或修改时对必须唯一的字段进行查重
+     *
+     * @param rimsDictionaries 收集需要查重的字段参数
+     * @return 返回0表示字段没有重复,非零表示有重复
+     */
+    @GetMapping("/getDictionaRepetitionCount")
+    public Result<Object> getDictionaRepetitionCount(RimsDictionaries rimsDictionaries) {
+        try {
+            Integer repetitionCount =
+                    systemDictionariesService.getDictionaRepetitionCount(rimsDictionaries);
+            if (repetitionCount == 0) {
+                return Result.success(
+                        "字段查重通过");
+            }else{
+                return new Result<>(ResultCode.ERROR,
+                        "字段查重不通过");
+            }
+        } catch (Exception e) {
+           log.error("字典:字典查重出现异常",e);
+            return Result.error("系统错误,查询失败");
+        }
+    }
+
+
+    /**
+     * 字典:添加记录
+     * 作用:添加字典数据
+     *
+     * @param data 收集参数的json对象
+     * @return 添加成功返回 "00000"
+     */
+    @PostMapping(value = "/addDictionaries",produces = "application/json; charset=utf-8")
+    public Result<Object> addDictionaries(@RequestBody String data) {
+        try {
+            RimsDictionaries rimsDictionaries = JSONUtil.parse(data).toBean(RimsDictionaries.class);
+            //参数校验
+            Result<Object> result = checkDictionariesParameter(rimsDictionaries);
+            if (result != null) {
+                return result;
+            }
+            Integer indexFlag = systemDictionariesService.addDictionaries(rimsDictionaries);
+            return indexFlag == 1 ?
+                    Result.success("添加成功") :
+                    new Result<>(ResultCode.ERROR,"数据错误,添加失败") ;
+        } catch (Exception e) {
+           log.error("字典:添加出现异常",e);
+            return Result.error("系统错误,添加失败");
+        }
+    }
+
+
+    /**
+     * 字典:修改记录
+     * 作用:修改字典数据
+     *
+     * @param data 收集参数的json对象
+     * @return 添加成功返回 "00000"
+     */
+    @PutMapping(value = "/updateDictionaries",produces = "application/json; charset=utf-8")
+        public Result<Object> updateDictionaries(@RequestBody String data) {
+        try {
+            RimsDictionaries rimsDictionaries = JSONUtil.parse(data).toBean(RimsDictionaries.class);
+            //参数校验字典ID是否为空
+            if(rimsDictionaries.getId() == null){
+                return new Result<>(ResultCode.ERROR,"必要参数ID不能为空");
+            }
+            //参数校验
+            Result<Object> result = checkDictionariesParameter(rimsDictionaries);
+            if (result != null) {
+                return result;
+            }
+            Integer indexFlag = systemDictionariesService.updateDictionaries(rimsDictionaries);
+            return indexFlag == 1 ?
+                    Result.success("修改成功") :
+                    new Result<>(ResultCode.ERROR,"数据错误,修改失败") ;
+        } catch (Exception e) {
+           log.error("字典:修改出现异常",e);
+            return Result.error("系统错误,修改字典失败");
+        }
+    }
+
+
+    /**
+     * 字典:删除记录
+     * 作用:删除字典数据
+     *
+     * @param id 要删除字典的id
+     * @return 删除成功返回 "00000"
+     */
+    @DeleteMapping(value = "/deleteDictionariesById/{id}",produces = "application/json; charset=utf-8")
+    public Result<Object> deleteDictionariesById(@PathVariable Long id){
+        try{
+            Integer flag = systemDictionariesService.deleteDictionariesById(id);
+            if (flag == 0){
+                return Result.error("删除失败");
+            }else{
+                return Result.success( "删除成功") ;
+            }
+        }catch (Exception e){
+           log.error("字典:删除出现异常",e);
+            return Result.error("系统错误,删除失败");
+        }
+    }
+
+
+    /**
+     * 字典:启用/停用状态修改
+     * 作用:启用或停用某个字典记录数据
+     *
+     * @param data 收集参数的json对象(里面包含,id,pid,enable 三个参数)
+     * @return 删除成功返回 "00000"
+     */
+    @PutMapping(value = "/updateDictionariesEnableById",produces = "application/json; charset=utf-8")
+    public Result<Object> updateDictionariesEnableById(@RequestBody String data){
+        try{
+            //接收到参数转化成字典对象
+            RimsDictionaries rimsDictionaries = JSONUtil.parse(data).toBean(RimsDictionaries.class);
+            //参数校验
+            if(rimsDictionaries.getId() == null){
+                return new Result<>(ResultCode.ERROR,"缺少必要参数ID");
+            }
+            if(rimsDictionaries.getPid() == null){
+                return new Result<>(ResultCode.ERROR,"缺少必要参数PID");
+            }
+            if(rimsDictionaries.getEnable() == null){
+                return new Result<>(ResultCode.ERROR,"必要参数更新状态不能为null");
+            }
+            Integer flag = systemDictionariesService.updateDictionariesEnableById(rimsDictionaries);
+            if (flag == 0){
+                return Result.error("修改失败");
+            }else{
+                return Result.success( "修改成功") ;
+            }
+        }catch (Exception e){
+           log.error("字典:状态更新出现异常",e);
+            return Result.error("系统错误,状态更新失败");
+        }
+    }
+
+
+
+
+    /**
+     * 字典:校验必传参数
+     * 作用:添加和修改时确保关键字段非空,以及选项代码不为空时查重
+     *
+     * @param rimsDictionaries 要验证的参数对象
+     * @return 返回校验结果
+     */
+    private Result<Object> checkDictionariesParameter(RimsDictionaries rimsDictionaries) {
+        log.info("字典参数校验传参为 = " + rimsDictionaries);
+        if (rimsDictionaries.getPid() == null) {
+            return Result.error("参数PID不能为空");
+        }
+        if (StringUtils.isBlank(rimsDictionaries.getDictionariesName())) {
+            return Result.error("字典名称不能为空");
+        }
+        if(StringUtils.isNotBlank(rimsDictionaries.getDicCode())
+                && systemDictionariesService.getDictionaRepetitionCount(rimsDictionaries) != 0){
+            return Result.error("选项代码重复");
+        }
+        return null;
+    }
+
+
+}

+ 80 - 0
src/main/java/com/care/dic/entity/RimsDictionaries.java

@@ -0,0 +1,80 @@
+package com.care.dic.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 字典表实体类
+ *
+ * @author little
+ * @since 2021-01-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("RIMS_DICTIONARIES")
+@ApiModel(value = "RimsDictionaries对象")
+public class RimsDictionaries implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "父级ID")
+    @TableField("PID")
+    private Long pid;
+
+    @ApiModelProperty(value = "字典名称")
+    @TableField("DICTIONARIES_NAME")
+    private String dictionariesName;
+
+    @ApiModelProperty(value = "选项名称")
+    @TableField("DIC_NAME")
+    private String dicName;
+
+    @ApiModelProperty(value = "选项代码")
+    @TableField("DIC_CODE")
+    private String dicCode;
+
+    @ApiModelProperty(value = "排序字段")
+    @TableField("DIC_SORT")
+    private Integer dicSort;
+
+    @ApiModelProperty(value = "说明")
+    @TableField("DIC_DESCRIBE")
+    private String dicDescribe;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField("CREATE_TIME")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField("MODIFY_TIME")
+    private LocalDateTime modifyTime;
+
+    /**
+     * @TableLogic 逻辑删除注解
+     */
+    @TableLogic
+    @ApiModelProperty(value = "是否删除 0否 1是")
+    @TableField("DELETED")
+    private int deleted;
+
+    @ApiModelProperty(value = "启用/停用 0 启用 1停用")
+    @TableField("ENABLE")
+    private Integer enable;
+
+    @ApiModelProperty(value = "字典对象子级集合")
+    @TableField(exist = false)
+    private List<RimsDictionaries> rimsDictionariesList;
+}

+ 46 - 0
src/main/java/com/care/dic/mapper/RimsDictionariesMapper.java

@@ -0,0 +1,46 @@
+package com.care.dic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.care.dic.entity.RimsDictionaries;
+import com.care.util.PageUtil;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * @author nhc
+ * @version 1.0
+ * @description 字典表DAO层接口
+ * @date 2021/02/08/19:41
+ */
+public interface RimsDictionariesMapper extends BaseMapper<RimsDictionaries> {
+
+
+    /**
+     * 多条件分页查询
+     * @param dictionaries 字典对象用来承载搜索条件
+     * @param pageUtil 分页工具对象
+     * @return 符合搜索条件的字典集合
+     */
+    List<RimsDictionaries> selectDictionariesByPage(
+            @Param("dictionaries") RimsDictionaries dictionaries,
+            @Param("pageUtil") PageUtil<RimsDictionaries> pageUtil);
+
+
+    /**
+     * 多条件查询总记录数
+     * @param dictionaries 字典对象用来承载搜索条件
+     * @return 返回多条件查询总记录数
+     */
+    Integer selectDictionariesByCount(RimsDictionaries dictionaries);
+
+
+    /**
+     * 根据传入的条件查询 数据总数
+     * @param dictionaries 字典对象用来承载搜索条件
+     * @return 返回查重数量不重复返回0
+     */
+    Integer selectDictionaRepetitionCount(RimsDictionaries dictionaries);
+
+}

+ 100 - 0
src/main/java/com/care/dic/service/SystemDictionariesService.java

@@ -0,0 +1,100 @@
+package com.care.dic.service;
+
+import com.care.dic.entity.RimsDictionaries;
+import com.care.common.vo.PageResVO;
+import com.care.util.PageUtil;
+
+import java.util.List;
+import java.util.Map;
+
+
+
+/**
+ * @author nhc
+ * @version 1.0
+ * @description 系统设置-字典管理模块-业务逻辑层接口
+ * @date 2021/02/08/19:41
+ */
+public interface SystemDictionariesService {
+
+
+    /**
+     * 无条件分页查询
+     * @param page 分页对象
+     * @return 父子级分页字典集合
+     */
+    PageUtil<RimsDictionaries> getDictionaries(PageResVO page);
+
+
+    /**
+     * 多条件分页查询
+     * @param rimsDictionaries 字典对象用来承载搜索条件
+     * @param page 分页对象
+     * @return 符合搜索条件的字典集合
+     */
+    PageUtil<RimsDictionaries> getDictionariesByPage(RimsDictionaries rimsDictionaries, PageResVO page);
+
+
+    /**
+     * 字段查重
+     * @param rimsDictionaries 收集需要查重的字段参数
+     * @return 返回0表示字段没有重复,非零表示有重复
+     */
+    Integer getDictionaRepetitionCount(RimsDictionaries rimsDictionaries);
+
+
+    /**
+     * 添加记录
+     * @param rimsDictionaries 收集需要添加的字段参数
+     * @return 添加成功返回 1
+     */
+     Integer addDictionaries(RimsDictionaries rimsDictionaries);
+
+
+    /**
+     * 修改记录
+     * @param rimsDictionaries 收集需要添加的字段参数
+     * @return 修改成功返回 1
+     */
+    Integer updateDictionaries(RimsDictionaries rimsDictionaries);
+
+
+    /**
+     * 删除记录
+     * @param id 删除记录的id(有可能是父级id)
+     * @return 删除成功返回 1
+     */
+    Integer deleteDictionariesById(Long id);
+
+
+    /**
+     * 启用停用记录
+     * @param rimsDictionaries 字典对象里面包含要修改数据的id和启停值
+     * @return 修改成功返回 1
+     */
+    Integer updateDictionariesEnableById(RimsDictionaries rimsDictionaries);
+    /**
+     * 根据编码表dicCode,查询子节点列表
+     *
+     * @param dicCode
+     * @return
+     */
+    public List<RimsDictionaries> listDictionariesByDicCode(String dicCode);
+    /**
+     * 根据编码表父节点dicCode,节点dicCode查询节点名称
+     * @param pDicCode
+     * @param dicCode
+     * @return
+     */
+    public String getDictionariesNameByDicCode(String pDicCode,String dicCode);
+
+
+    /**
+     * 以名称为key ,code 为值返回map
+     * @param pDicCode
+     * @return
+     */
+    public Map<String,String> getReverseDicMapByDicCode(String pDicCode);
+
+
+}

+ 253 - 0
src/main/java/com/care/dic/service/impl/SystemDictionariesServiceImpl.java

@@ -0,0 +1,253 @@
+package com.care.dic.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.care.common.exception.BDException;
+import com.care.common.vo.PageResVO;
+import com.care.dic.entity.RimsDictionaries;
+import com.care.dic.mapper.RimsDictionariesMapper;
+import com.care.dic.service.SystemDictionariesService;
+import com.care.util.PageUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+
+/**
+ * @author nhc
+ * @version 1.0
+ * @description 系统设置-字典管理模块-业务逻辑层接口实现类
+ * @date 2021/02/08/19:41
+ */
+@Service
+public class SystemDictionariesServiceImpl implements SystemDictionariesService {
+
+    @Resource
+    private RimsDictionariesMapper rimsDictionariesMapper;
+
+
+    /**
+     * 无条件分页查询
+     * 业务逻辑:
+     * 1、先通过传递过来的页面大小与查询到的总记录数算出总页数;
+     * 2、根据总页数限制当前页的范围不会越界
+     * 3、先查询一级字典集合,通过遍历id映射二级字典PID查询出的集合填充进对象
+     * 4、将补全完整的Page工具类携带所有搜索数据返回
+     * @param page 分页参数对象
+     * @return 返回携带数据的分页工具对象z
+     */
+    @Override
+    public PageUtil<RimsDictionaries> getDictionaries(PageResVO page) {
+        //1、创建一个分页工具对象(然后对分页数据进行整理)
+        PageUtil<RimsDictionaries> pageUtil = new PageUtil<>();
+        //2、更新当前页面大小
+        pageUtil.setPageSize(page.getPageSize());
+        //3、获取无条件查询总记录数
+        //因为只对一级记录进行分页,所以要查询的是所有一级记录的总记录数
+        QueryWrapper<RimsDictionaries> wrapper = new QueryWrapper<>();
+        //查询条件为 PID = 0 为一级目录
+        wrapper.lambda()
+                .eq(RimsDictionaries::getPid, 0);
+        pageUtil.setTotal(rimsDictionariesMapper.selectCount(wrapper));
+        //4、更新当前页码(此时页码将不会再发生越界问题)
+        pageUtil.setCurrent(page.getCurrent());
+        //一级字典分页集合
+        List<RimsDictionaries> dictionariesList1 = new ArrayList<>();
+        //添加查询条件查询 所有未被删除的字典数据
+        QueryWrapper<RimsDictionaries> dictionariesQueryWrapper = new QueryWrapper<>();
+        dictionariesQueryWrapper.lambda()
+                .eq(RimsDictionaries::getPid, 0)
+                .orderByAsc(RimsDictionaries::getEnable);
+        Page<RimsDictionaries> dictionariesPage = rimsDictionariesMapper.selectPage(
+                new Page<>(
+                        pageUtil.getCurrent(), pageUtil.getPageSize()),
+                dictionariesQueryWrapper);
+        List<RimsDictionaries> records = dictionariesPage.getRecords();
+        for (RimsDictionaries rimsDictionaries : records) {
+            //根据一级字典id获取所有二级字典对象集合
+            QueryWrapper<RimsDictionaries> wrapper2 = new QueryWrapper<>();
+            wrapper2.lambda()
+                    .eq(RimsDictionaries::getPid, rimsDictionaries.getId())
+                    .orderByAsc(RimsDictionaries::getEnable);
+            List<RimsDictionaries> rimsDictionariesList2 =
+                    rimsDictionariesMapper.selectList(wrapper2);
+            //将二级字典对象set进属性
+            rimsDictionaries.setRimsDictionariesList(rimsDictionariesList2);
+            //将一级分页对象set进一级字典分页对象集合
+            dictionariesList1.add(rimsDictionaries);
+        }
+        pageUtil.setListT(dictionariesList1);
+        return pageUtil;
+    }
+
+    /**
+     * 多条件分页查询
+     * @param rimsDictionaries 字典对象用来承载搜索条件
+     * @param page 分页对象
+     * @return 符合搜索条件的字典集合
+     */
+    @Override
+    public PageUtil<RimsDictionaries> getDictionariesByPage(RimsDictionaries rimsDictionaries, PageResVO page) {
+        //1、创建一个分页工具对象(然后对分页数据进行整理)
+        PageUtil<RimsDictionaries> pageUtil = new PageUtil<>();
+        //2、更新当前页面大小
+        pageUtil.setPageSize(page.getPageSize());
+        //3、获取多条件查询总记录数
+        pageUtil.setTotal(rimsDictionariesMapper.selectDictionariesByCount(rimsDictionaries));
+        //4、更新当前页码(此时页码将不会再发生越界问题)
+        pageUtil.setCurrent(page.getCurrent());
+        List<RimsDictionaries> dictionariesList = rimsDictionariesMapper.selectDictionariesByPage(rimsDictionaries, pageUtil);
+        pageUtil.setListT(dictionariesList);
+        return pageUtil;
+    }
+
+    /**
+     * 字段查重
+     * @param rimsDictionaries 收集需要查重的字段参数
+     * @return 返回0表示字段没有重复,非零表示有重复
+     */
+    @Override
+    public Integer getDictionaRepetitionCount(RimsDictionaries rimsDictionaries) {
+        return rimsDictionariesMapper.selectDictionaRepetitionCount(rimsDictionaries);
+    }
+
+    /**
+     * 添加记录
+     * @param rimsDictionaries 收集需要添加的字段参数
+     * @return 添加成功返回 1
+     */
+    @Override
+    public Integer addDictionaries(RimsDictionaries rimsDictionaries) {
+        return rimsDictionariesMapper.insert(rimsDictionaries);
+    }
+
+    /**
+     * 修改记录
+     * @param rimsDictionaries 收集需要添加的字段参数
+     * @return 修改成功返回 1
+     */
+    @Override
+    public Integer updateDictionaries(RimsDictionaries rimsDictionaries) {
+        return rimsDictionariesMapper.updateById(rimsDictionaries);
+    }
+
+    /**
+     * 删除记录
+     * @param id 删除记录的id(有可能是父级id)
+     * @return 删除成功返回 1
+     */
+    @Override
+    public Integer deleteDictionariesById(Long id) {
+        //先判定是否为父级id
+        RimsDictionaries rimsDictionaries = rimsDictionariesMapper.selectById(id);
+        if(rimsDictionaries == null){
+            return 0;
+        }
+        //若为父节点,则先删除所有子节点
+        if(0 == rimsDictionaries.getPid()){
+            QueryWrapper<RimsDictionaries> wrapper = new QueryWrapper<>();
+            wrapper.lambda().eq(RimsDictionaries::getPid,id);
+            rimsDictionariesMapper.delete(wrapper);
+        }
+        //最后删除当前节点
+        return rimsDictionariesMapper.deleteById(id);
+    }
+
+    /**
+     * 启用停用记录
+     * @param rimsDictionaries 字典对象里面包含要修改数据的id和启停值
+     * @return 修改成功返回 1
+     */
+    @Override
+    public Integer updateDictionariesEnableById(RimsDictionaries rimsDictionaries) {
+        //变更参数承载对象
+        RimsDictionaries rd = new RimsDictionaries();
+        //根据传入的启用停用值取反
+        rd.setEnable(rimsDictionaries.getEnable() == 0 ? 1 : 0);
+        //若修改的记录为一级目录,则先修改全部的子目录
+        if(rimsDictionaries.getPid() == 0){
+            //构建修改条件
+            UpdateWrapper<RimsDictionaries> wrapper = new UpdateWrapper<>();
+            wrapper.lambda().eq(RimsDictionaries::getPid,rimsDictionaries.getId());
+            rimsDictionariesMapper.update(rd, wrapper);
+        }
+        //最后修改当前节点
+        rd.setId(rimsDictionaries.getId());
+        return rimsDictionariesMapper.updateById(rd);
+    }
+    /**
+     * 根据编码表dicCode,查询子节点列表
+     *
+     * @param dicCode
+     * @return
+     */
+    @Override
+    public List<RimsDictionaries> listDictionariesByDicCode(String dicCode) {
+        if (StringUtils.isEmpty(dicCode)) {
+            throw new BDException("请指定要查询的父节点编码");
+        }
+        QueryWrapper<RimsDictionaries> queryWrapper = new QueryWrapper<>();
+        //查询未删除、启用的字典
+        queryWrapper.lambda().eq(RimsDictionaries::getDicCode, dicCode);
+        RimsDictionaries rimsDictionaries = rimsDictionariesMapper.selectOne(queryWrapper);
+        List<RimsDictionaries> rimsDictionariesList =null;
+        if(rimsDictionaries!=null){
+            QueryWrapper<RimsDictionaries> wrapper = new QueryWrapper<>();
+            wrapper.lambda().eq(RimsDictionaries::getPid, rimsDictionaries.getId())
+                    .eq(RimsDictionaries::getDeleted,0)
+                    .eq(RimsDictionaries::getEnable,0)
+                    .orderByAsc(RimsDictionaries::getDicSort);
+            rimsDictionariesList = rimsDictionariesMapper.selectList(wrapper);
+        }
+        return rimsDictionariesList;
+    }
+    /**
+     * 根据编码表父节点dicCode,节点dicCode查询节点名称
+     * @param pDicCode
+     * @param dicCode
+     * @return
+     */
+    @Override
+    public String getDictionariesNameByDicCode(String pDicCode,String dicCode) {
+        if (StringUtils.isEmpty(pDicCode)&&StringUtils.isEmpty(dicCode)) {
+            throw new BDException("请指定要查询的节点编码");
+        }
+        QueryWrapper<RimsDictionaries> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(RimsDictionaries::getDicCode, pDicCode);
+        RimsDictionaries pRimsDictionaries = rimsDictionariesMapper.selectOne(queryWrapper);
+        String dictionariesName = "";
+        if(pRimsDictionaries!=null){
+            QueryWrapper<RimsDictionaries> wrapper = new QueryWrapper<>();
+            wrapper.lambda().eq(RimsDictionaries::getPid, pRimsDictionaries.getId());
+            wrapper.lambda().eq(RimsDictionaries::getDicCode, dicCode);
+            RimsDictionaries rimsDictionaries = rimsDictionariesMapper.selectOne(wrapper);
+            if(rimsDictionaries!=null){
+                dictionariesName = rimsDictionaries.getDictionariesName();
+            }
+        }
+        return dictionariesName;
+    }
+
+    /**
+     * 以名称为key ,code 为值返回map
+     * @param pDicCode
+     * @return
+     */
+    @Override
+    public Map<String, String> getReverseDicMapByDicCode(String pDicCode) {
+        if(StringUtils.isBlank(pDicCode)){
+            return Collections.emptyMap();
+        }
+        List<RimsDictionaries> dics = listDictionariesByDicCode(pDicCode);
+        if(CollUtil.isEmpty(dics)){
+            return Collections.emptyMap();
+        }
+        Map<String,String> resultMap = new HashMap<>(16);
+        dics.forEach(dic ->resultMap.put(dic.getDictionariesName(),dic.getDicCode()));
+        return resultMap;
+    }
+}

+ 22 - 0
src/main/java/com/care/dic/vo/RimsNetworkAreaSelectResVO.java

@@ -0,0 +1,22 @@
+package com.care.dic.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/1/7
+ * @Desc:
+ */
+@ApiModel(value = "网络区域下拉列表响应类", description = "网络区域下拉列表响应类")
+@Data
+public class RimsNetworkAreaSelectResVO {
+    @ApiModelProperty("唯一标识")
+    private Long id;
+    @ApiModelProperty("网络区域名称")
+    private String dicName;
+    @ApiModelProperty("网络区域编码")
+    private String dicCode;
+
+}

+ 122 - 0
src/main/java/com/care/util/DateUtils.java

@@ -0,0 +1,122 @@
+package com.care.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ *  @description 时间控件
+ * @author make Java
+ */
+public class DateUtils {
+    /**
+     * 一天毫秒数
+     */
+    private static final long ONE_DAY = 1000 *60* 60 * 24L;
+
+    private DateUtils(){}
+    /**
+     * 俩个时间间隔天数
+     * @param beginDate
+     * @param endDate
+     * @return
+     */
+    public static int getDaysGap(Date beginDate, Date endDate) {
+        long beginTimeMillis = beginDate.getTime();
+        long endTimeMills = endDate.getTime();
+        long time = endTimeMills - beginTimeMillis;
+        double day = (time *1.0D / ONE_DAY);
+        return  (int)Math.floor(day);
+    }
+
+    /**
+     * date日期过num天的日期
+     * @param date
+     * @param num
+     * @return
+     */
+    public static Date dateGapDays(Date date, int num) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.add(5, num);
+        return cal.getTime();
+    }
+    /**
+     * 字符串格式日期转日期格式日期
+     * @param date
+     * @param pattern
+     * @return
+     */
+    public static Date strToDate(String date,String pattern){
+        if(isEmpty(date) || isEmpty(pattern)){
+            return null ;
+        }
+        SimpleDateFormat format = new SimpleDateFormat(pattern);
+        try {
+            return format.parse(date) ;
+        } catch (ParseException e) {
+            e.printStackTrace();
+            return null ;
+        }
+    }
+    /**
+     * 日期转日期格式日期
+     * @param date
+     * @param pattern
+     * @return
+     */
+    public static String formatToDateStr(Date date,String pattern) {
+        if(date==null || isEmpty(pattern)){
+            return null ;
+        }else{
+            SimpleDateFormat sd = new SimpleDateFormat(pattern);
+            return sd.format(date);
+        }
+    }
+    /**
+     * 检查字符串
+     * @param str
+     * @return
+     */
+    private static boolean isEmpty(String str) {
+        return null == str ? true : "".equals(str.replaceAll(" +", ""));
+    }
+    /**
+     * 日期的间隔分钟
+     *
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    public static Long betweenDate(Date startDate, Date endDate) {
+        return betweenDateSSS(startDate, endDate) / 1000/60;
+    }
+    /**
+     * 日期的间隔毫秒数
+     *
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    public static long betweenDateSSS(Date startDate, Date endDate) {
+        return null == startDate || null == endDate ? 0 : endDate.getTime() - startDate.getTime();
+    }
+    /**
+     * 判断一个字符串是不是一个合法的日期格式
+     *
+     * @param str
+     * @param pattern
+     * @return
+     */
+    public static boolean isValidDate(String str,String pattern) throws ParseException{
+        SimpleDateFormat format = new SimpleDateFormat(pattern);
+        try {
+            format.setLenient(false);
+            format.parse(str);
+        } catch (ParseException e) {
+            throw new java.text.ParseException("不是一个合法的日期格式",0);
+        }
+        return true;
+    }
+}

+ 34 - 0
src/main/java/com/care/util/LogUtil.java

@@ -0,0 +1,34 @@
+package com.care.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * @author nhc
+ * @version 1.0
+ * @description 日志工具演示
+ * @date 2021/1/2 20:41
+ */
+@RequestMapping
+@RestController
+@Slf4j
+public class LogUtil {
+
+    @GetMapping("/log")
+    public String logTest1() {
+        //日志级别:由低到高 trace < debug < info < warn < error
+        //trace 跟踪轨迹
+        //debug 调试信息
+        //info 自定义信息 代替原 System.out.println()
+        //warn 警告信息
+        //error 异常信息
+        log.trace("这是 trace 日志...");
+        log.debug("这是 debug 日志...");
+        log.info("这是 info 日志...");
+        log.warn("这是 warn 日志...");
+        log.error("这是 error 日志...");
+        return "调取日志成功";
+    }
+
+}

+ 62 - 0
src/main/java/com/care/util/PageResult.java

@@ -0,0 +1,62 @@
+package com.care.util;
+
+import com.care.common.vo.PageResVO;
+import org.apache.commons.lang3.StringUtils;
+
+
+/**
+ * @author nhc
+ * @version 1.0
+ * @description 带有分页的结果类
+ * @date 2021/1/2 20:41
+ */
+public class PageResult<T> extends Result<T> {
+
+    private PageResVO page;
+
+    public PageResult(ResultCode resultCode){
+        super(resultCode,null);
+    }
+    public PageResult(ResultCode resultCode, T data) {
+        super(resultCode,data);
+    }
+    public PageResult(ResultCode resultCode,String message, T data) {
+        super(resultCode,message,data);
+    }
+    public PageResult(ResultCode resultCode, String message, T data, PageResVO page) {
+        super(resultCode,message,data);
+        this.page = page;
+    }
+    public static<T> PageResult<T> success(String message,T data,long current, long pageSize, long total){
+        PageResVO pageVo = new PageResVO(current,pageSize,total);
+        PageResult<T> pageResult = new PageResult<>(ResultCode.SUCCESS);
+        pageResult.setMessage(message);
+        pageResult.setData(data);
+        pageResult.setPage(pageVo);
+        return pageResult;
+    }
+
+    public static<T> PageResult<T> success(T data,long current, long pageSize, long total){
+        return success(ResultCode.SUCCESS.getMessage(),data,current,pageSize,total);
+    }
+
+    public static<T> PageResult<T> error(){
+        return  error(ResultCode.ERROR.getMessage());
+    }
+
+    public static<T> PageResult<T> error(String message){
+        PageResult<T> result  = new PageResult<>(ResultCode.ERROR);
+        if(StringUtils.isNotEmpty(message)){
+            result.setMessage(message);
+        }
+        return result;
+    }
+
+    public PageResVO getPage() {
+        return page;
+    }
+
+    public void setPage(PageResVO page) {
+        this.page = page;
+    }
+}

+ 125 - 0
src/main/java/com/care/util/PageUtil.java

@@ -0,0 +1,125 @@
+package com.care.util;
+
+
+import java.util.List;
+
+/**
+ * 分页工具类
+ * @author javadoc
+ */
+public class PageUtil<T> {
+    /**
+     * 当前页码
+     */
+    private long current;
+    /**
+     * 页码大小(默认为10)
+     */
+    private long pageSize = 10;
+    /**
+     * 记录总数
+     */
+    private long total;
+    /**
+     * 总页数
+     */
+    private long pageCount;
+    /**
+     * 开始查询项
+     */
+    private long start;
+    /**
+     * 分页条目集合数据
+     */
+    private List<T> listT;
+    /**
+     * 分页条目单个数据
+     */
+    private T t;
+
+
+    public long getCurrent() {
+        return current;
+    }
+
+    /**
+     * set 进当前页码时对越界进行修正,修正后计算出开始查询项
+     * 注:每次在set进当前页前,一定要先更新总记录数,然后会顺便更新总页数,这样当前页的set才有效;
+     * @param current 返回规范当前页
+     */
+    public void setCurrent(long current) {
+        if(current < 1){
+            current = 1;
+        }
+        if(pageCount != 0 && current > pageCount){
+            current = pageCount;
+        }
+        this.current = current;
+        this.start = (current - 1) * pageSize;
+    }
+
+    public long getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(long pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public long getTotal() {
+        return total;
+    }
+
+    /**
+     * set记录总数时自动计算总页数(大于取整+1)
+     */
+    public void setTotal(long total) {
+        this.total = total;
+        this.pageCount = (this.total % this.pageSize == 0) ? (this.total / this.pageSize) : (this.total / this.pageSize + 1);
+    }
+
+    public long getPageCount() {
+        return pageCount;
+    }
+
+    public void setPageCount(long pageCount) {
+        this.pageCount = pageCount;
+    }
+
+    public long getStart() {
+        return start;
+    }
+
+    public void setStart(long start) {
+        this.start = start;
+    }
+
+    public List<T> getListT() {
+        return listT;
+    }
+
+    public void setListT(List<T> listT) {
+        this.listT = listT;
+    }
+
+    public T getT() {
+        return t;
+    }
+
+    public void setT(T t) {
+        this.t = t;
+    }
+
+    @Override
+    public String toString() {
+        return "PageUtil{" +
+                "current=" + current +
+                ", pageSize=" + pageSize +
+                ", total=" + total +
+                ", pageCount=" + pageCount +
+                ", start=" + start +
+                ", listT=" + listT +
+                ", t=" + t +
+                '}';
+    }
+}

+ 77 - 0
src/main/java/com/care/util/Result.java

@@ -0,0 +1,77 @@
+package com.care.util;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * @author little
+ */
+@ApiModel(description = "请求返回实体类", value = "返回值")
+@Setter
+@Getter
+public class Result<T> {
+	@ApiModelProperty(dataType = "String", name = "code", value = "请求返回状态码")
+	private String status;
+	@ApiModelProperty(dataType = "String", name = "message", value = "请求返回描述信息")
+	private String message;
+	@ApiModelProperty(dataType = "T", name = "data", value = "返回数据")
+
+	T data;
+
+	public Result() {
+		super();
+	}
+	public Result(ResultCode resultCode){
+		this(resultCode,null);
+	}
+	public Result(ResultCode resultCode, T data) {
+		this.status = resultCode.getStatus();
+		this.message = resultCode.getMessage();
+		this.data = data;
+	}
+	public Result(ResultCode resultCode,String message, T data) {
+		this.status = resultCode.getStatus();
+		this.message = message;
+		this.data = data;
+	}
+
+
+	public static<T> Result<T> success(){
+		return  success(ResultCode.SUCCESS.getMessage());
+	}
+	public static<T> Result<T> success(String message){
+		return success(message,null);
+	}
+	public static<T> Result<T> success(T data){
+		return success(ResultCode.SUCCESS.getMessage(),data);
+	}
+	public static<T> Result<T>success(String message,T data){
+		Result<T> result  = new Result<>(ResultCode.SUCCESS);
+		if(StringUtils.isNotEmpty(message)){
+			result.setMessage(message);
+		}
+		if(data!=null){
+			result.setData(data);
+		}
+		return result;
+	}
+
+	public static<T> Result<T> error(){
+		return  error(ResultCode.ERROR.getMessage());
+	}
+
+	public static<T> Result<T> error(String message){
+		Result<T> result  = new Result<>(ResultCode.ERROR);
+		if(StringUtils.isNotEmpty(message)){
+			result.setMessage(message);
+		}
+		return result;
+	}
+
+	public T getData() {
+		return data;
+	}
+}

+ 37 - 0
src/main/java/com/care/util/ResultCode.java

@@ -0,0 +1,37 @@
+package com.care.util;
+
+/**
+ * 返回值响应编码
+ * @author little
+ */
+public enum ResultCode {
+    /**
+     * 成功响应
+     */
+    SUCCESS("00000","操作成功"),
+    /**
+     * 网络异常响应
+     */
+    WARN("00002","网络异常,请稍后重试"),
+    /**
+     * 异常响应
+     */
+    ERROR("00001","操作失败");
+
+    ResultCode(String status, String message) {
+        this.status = status;
+        this.message = message;
+    }
+
+    private String status;
+
+    private String message;
+
+    public String getStatus() {
+        return status;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+}

+ 19 - 0
src/main/resources/application-dev.properties

@@ -0,0 +1,19 @@
+### 开发环境配置文件 2021-01-11
+
+## 数据源 配置
+# 数据库连接URL
+spring.datasource.url=jdbc:mysql://124.70.58.209:1122/pinan?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
+# 数据库登录名
+spring.datasource.username=admin
+# 数据库登录密码
+spring.datasource.auth=admin$@123
+
+## mybatis-plus 配置
+# 将 SQL 语句输出到控制台(生产环境关闭)
+mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+
+## logging 日志配置
+# 设置日志输出级别
+logging.level.root=info
+
+

+ 55 - 0
src/main/resources/application.properties

@@ -0,0 +1,55 @@
+#### 父级通用配置文件 2021-01-11
+
+# 激活指定环境配置文件
+spring.profiles.active=dev
+
+# 配置服务端口号
+server.port=8089
+
+### spring配置
+# 配置服务名称
+spring.application.name=care-service
+
+## 数据源配置
+# 数据源类型
+spring.datasource.type=com.zaxxer.hikari.HikariDataSource
+# 数据源驱动 - Mysql
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+# 连接池配置 # 连接池最大连接数
+spring.datasource.hikari.maximum-pool-size=8
+# 连接池配置 # 最小空闲连接数
+spring.datasource.hikari.minimum-idle=4
+# 连接池配置 # 连接超时时间:毫秒 10 秒
+spring.datasource.hikari.connection-timeout=10000
+# 连接池配置 # 连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟
+# 设置应该比mysql 超时字段 wait_timeout 的值小,不然会报 HikariPool-1 - * 错误
+spring.datasource.hikari.max-lifetime=28000
+# 连接池配置 # 测试连接可用语句
+spring.datasource.hikari.connection-test-query=SELECT 1
+
+
+## mybatis-plus 配置
+# 指定 mapper 映射文件位置
+mybatis-plus.mapper-locations=classpath:mybatis/*.xml
+# 映射实体类的路径
+mybatis-plus.type-aliases-package=com.ccb.inm.rims.entity
+# 逻辑删除配置 # 逻辑已删除值(默认为 1)
+mybatis-plus.global-config.db-config.logic-delete-value=1
+# 逻辑删除配置 # 逻辑未删除值(默认为 0)
+mybatis-plus.global-config.db-config.logic-not-delete-value=0
+
+## logging 日志配置
+# 设置日志输出路径与文件名(name会覆盖path)
+logging.file.name=logs/${spring.application.name}.log
+# 最大日志文件大小(默认10MB)
+logging.file.max-size=10MB
+# 最大日志保存时间(默认7天)
+logging.file.max-history=30
+
+#最大文件上传大小配置
+spring.servlet.multipart.maxFileSize=10MB
+spring.servlet.multipart.maxRequestSize=20MB
+#模板文件路径
+spring.freemarker.template-loader-path=classpath:/template,classpath:/font
+#spring.freemarker.check-template-location=false
+

+ 44 - 0
src/main/resources/mybatis/RimsDictionariesMapper.xml

@@ -0,0 +1,44 @@
+<?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="com.care.dic.mapper.RimsDictionariesMapper">
+
+    <!--多条件分页查询-->
+    <select id="selectDictionariesByPage" resultType="com.care.dic.entity.RimsDictionaries">
+        SELECT * FROM RIMS_DICTIONARIES
+        <where>
+            <!--逻辑删除过滤-->
+            DELETED = 0
+            <!--字典名称模糊搜索-->
+            <if test="dictionaries.dictionariesName != null">
+                and DICTIONARIES_NAME like concat('%', #{dictionaries.dictionariesName}, '%')
+            </if>
+        </where>
+        ORDER BY ENABLE, MODIFY_TIME desc
+        LIMIT #{pageUtil.start}, #{pageUtil.pageSize}
+    </select>
+
+    <!--多条件查询总记录数-->
+    <select id="selectDictionariesByCount" resultType="int" >
+        SELECT count(1) FROM RIMS_DICTIONARIES
+        <where>
+            <!--逻辑删除过滤-->
+            DELETED = 0
+            <!--字典名称模糊搜索-->
+            <if test="dictionariesName != null">
+                and DICTIONARIES_NAME like concat('%', #{dictionariesName}, '%')
+            </if>
+        </where>
+    </select>
+
+    <!--字段查重-->
+    <select id="selectDictionaRepetitionCount" parameterType="com.care.dic.entity.RimsDictionaries"
+            resultType="java.lang.Integer">
+        SELECT COUNT(1) FROM RIMS_DICTIONARIES
+        where DELETED = 0 and DIC_CODE = #{dicCode}
+        <!--如果 id 不为空则代表是修改操作的查重-->
+        <if test="id != null">
+            and ID != #{id}
+        </if>
+    </select>
+
+</mapper>

Файловите разлики са ограничени, защото са твърде много
+ 1177 - 0
src/main/resources/template/template-order-chinamobile.html


Файловите разлики са ограничени, защото са твърде много
+ 529 - 0
src/main/resources/template/template-order-chinatelecom.html


+ 343 - 0
src/main/resources/template/template-order-chinaunicom-mstp.html

@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="Content-Style-Type" content="text/css"/>
+    <meta name="generator" content="Aspose.Words for .NET 15.1.0.0"/>
+    <title>专线租用定单(SDH以太网)</title>
+</head>
+<body>
+<div>
+    <div style="text-align:center">
+        <table  style="border-collapse:collapse; margin:0 auto; width:100%">
+            <tbody>
+            <tr style="height:20.75pt">
+                <td colspan="22" style="padding-left:5.4pt; padding-right:5.4pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:16pt; font-weight:bold">专线租用定单(</span><span
+                            style="font-family:宋体; font-size:16pt; font-weight:bold">SDH</span><span
+                            style="font-family:宋体; font-size:16pt; font-weight:bold">以太网</span><span
+                            style="font-family:宋体; font-size:16pt; font-weight:bold">)</span></p></td>
+            </tr>
+            <tr style="height:9.25pt">
+                <td colspan="22"
+                    style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; padding-left:5.4pt; padding-right:5.4pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">&nbsp;</span></p></td>
+            </tr>
+            <tr style="height:20.05pt">
+                <td colspan="22"
+                    style="background-color:#99ccff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold">客户信息</span><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold"> </span></p></td>
+            </tr>
+            <tr style="height:26.9pt">
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:47.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">单位名称</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:105.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localUserName)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:45.35pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">单位地址</span></p></td>
+                <td colspan="8"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:162.05pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localUserAddress)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:48.85pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">邮政编码</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:75.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localPostcode)!}</span></p></td>
+            </tr>
+            <tr style="height:19.2pt">
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:47.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系人</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:67.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localBusinesessContact)!}</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:27.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系电话</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:72.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:25.9pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">移动电话</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:97.75pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localBusinesessContactMobilePhone)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:48.85pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">传真电话</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:75.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+            </tr>
+            <tr style="height:20.05pt">
+                <td colspan="22"
+                    style="background-color:#99ccff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold">业务信息</span></p></td>
+            </tr>
+
+            <tr style="height:15.35pt">
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.3pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">序号</span></p></td>
+                <td colspan="5"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:109.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">本端信息</span></p></td>
+                <td colspan="6"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:122.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">对端信息</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:31.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">速率</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">是否划分</span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">VLAN ID</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">是否双路由保护</span></p></td>
+                <td colspan="2" style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">备注</span></p></td>
+            </tr>
+            <#list lineList as item>
+            <tr style="height:62.4pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.3pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">${item_index?if_exists+1}</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:109.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">客户名称:${(data.localUserName)!}</span></p></td>
+                <td colspan="6"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:122.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">客户名称:${(item.peerCompany)}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:31.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(item.bandWidth)!}${(item.bandWidthUnit)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; widows:0"></p>
+                    <p style="margin:0pt; orphans:0; widows:0"></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2" style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+            </tr>
+            <tr style="height:62.4pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.3pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:109.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">装机地址:${(item.localAddress)!}</span></p></td>
+
+                <td colspan="6"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:122.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">装机地址:${(item.peerAddress)!}</span></p></td>
+
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:31.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2" style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+            </tr>
+            <tr style="height:62.4pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.3pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:109.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系人:${(data.localBusinesessContact)!}</span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold"> </span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系电话:</span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localBusinesessContactMobilePhone)!}</span></p></td>
+
+                <td colspan="6"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:122.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系人:${(item.peerContacts)!}</span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系电话:${(item.peerPhone)!}</span></p>
+                </td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:31.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:55.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2" style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;${(item.remarks)!}</span></p></td>
+            </tr>
+            </#list>
+            <tr style="height:31.55pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.3pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold"> </span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">备注</span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold"> </span></p></td>
+                <td colspan="20"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:497.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.remarks)!}</span></p></td>
+            </tr>
+            <tr style="height:22.3pt">
+                <td colspan="22"
+                    style="background-color:#99ccff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold">付费信息</span><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold"> </span></p></td>
+            </tr>
+            <tr style="height:15.35pt">
+                <td rowspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:16.9pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">月租费</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:59pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">现金支付</span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">/</span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">转帐支票</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:37.8pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">财务联系人</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:70.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:24.1pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">电话</span></p></td>
+                <td colspan="2"
+                    style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:44.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt">&nbsp;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:22.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">邮政编码</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.05pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:42.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">帐户地址</span></p></td>
+                <td colspan="2" style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+            </tr>
+            <tr style="height:15.35pt">
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:59pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">银行托收</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:37.8pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">开户名</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:70.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:24.1pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">帐号</span></p></td>
+                <td colspan="2"
+                    style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:44.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt">&nbsp;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:22.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">银行编号</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.05pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:42.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">开户银行</span></p></td>
+                <td colspan="2" style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+            </tr>
+            <tr style="height:15.35pt">
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:59pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">长途电路付费方式</span></p></td>
+                <td colspan="19"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:441.1pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+            </tr>
+            </tbody>
+        </table>
+    </div>
+</div>
+</body>
+</html>

+ 297 - 0
src/main/resources/template/template-order-chinaunicom-sdh.html

@@ -0,0 +1,297 @@
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta http-equiv="Content-Style-Type" content="text/css"/>
+    <meta name="generator" content="Aspose.Words for .NET 15.1.0.0"/>
+    <title>专线租用定单(SDH)</title></head>
+<body>
+<div>
+    <div style="text-align:center">
+        <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin:0 auto; width:100%">
+            <tr style="height:20.75pt">
+                <td colspan="19" style="padding-left:5.4pt; padding-right:5.4pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:16pt; font-weight:bold">专线租用定单(SDH)</span></p></td>
+            </tr>
+            <tr style="height:9.25pt">
+                <td colspan="19"
+                    style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; padding-left:5.4pt; padding-right:5.4pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">&#xa0;</span></p></td>
+            </tr>
+            <tr style="height:20.05pt">
+                <td colspan="19"
+                    style="background-color:#99ccff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold">客户信息 </span></p></td>
+            </tr>
+            <tr style="height:26.9pt">
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:47.35pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">单位名称</span></p></td>
+                <td colspan="4"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:128.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localUserName)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:45.9pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">单位地址</span></p></td>
+                <td colspan="6"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:145.1pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localUserAddress)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:45.9pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">邮政编码</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:71.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localPostcode)!}</span></p></td>
+            </tr>
+            <tr style="height:19.2pt">
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:47.35pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系人</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:67.25pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localBusinesessContact)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:50.35pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系电话</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:50.1pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&nbsp;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:70.05pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">移动电话</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:60.05pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.localBusinesessContactMobilePhone)!}</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:45.9pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">传真电话</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:71.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+            </tr>
+            <tr style="height:20.05pt">
+                <td colspan="19"
+                    style="background-color:#99ccff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold">业务信息</span></p></td>
+            </tr>
+            <tr style="height:15.35pt">
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.2pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">序号</span></p></td>
+                <td colspan="5"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:145.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">本端信息</span></p></td>
+                <td colspan="6"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:130.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">对端信息</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">速率</span></p></td>
+                <td colspan="3" style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">备注</span></p></td>
+            </tr>
+            <#list lineList as item>
+            <tr style="height:62.4pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.2pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">${item_index?if_exists+1}</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:145.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">客户名称:${(data.localUserName)!}</span></p></td>
+                <td colspan="6"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:130.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">客户名称:${(item.peerCompany)}</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(item.bandWidth)!}${(item.bandWidthUnit)!}</span></p>
+                    <p style="margin:0pt; orphans:0; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="3" style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+            </tr>
+            <tr style="height:62.4pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.2pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:145.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">装机地址:${(item.localAddress)!}</span>
+                    </p>
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="6"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:130.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">装机地址:${(item.peerAddress)!}</span>
+                    </p>
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="3" style="background-color:#ffffff; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+            </tr>
+            <tr style="height:62.4pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.2pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="5"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:145.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系人:${(data.localBusinesessContact)!}  联系电话:${(data.localBusinesessContactMobilePhone)!}</span>
+                    </p></td>
+                <td colspan="6"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:130.95pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系人:${(item.peerContacts)!} </span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold"> </span><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">联系电话:${(item.peerPhone)!}</span></p></td>
+                <td colspan="3"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="3" style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:right; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;${(item.remarks)!}</span></p></td>
+            </tr>
+            </#list>
+            <tr style="height:31.55pt">
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:30.2pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold"> 备注 </span></p></td>
+                <td colspan="17"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:497.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">${(data.remarks)!}</span></p></td>
+            </tr>
+            <tr style="height:22.3pt">
+                <td colspan="19"
+                    style="background-color:#99ccff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:538.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:14pt; font-weight:bold">付费信息 </span></p></td>
+            </tr>
+            <tr style="height:15.35pt">
+                <td rowspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:16.6pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">月租费</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:59pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">现金支付/转帐支票</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:37.8pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">财务联系人</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:70.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:24.1pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">电话</span></p></td>
+                <td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:44.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt">&#xa0;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:22.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">邮政编码</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:43.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">帐户地址</span></p></td>
+                <td style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+            </tr>
+            <tr style="height:15.35pt">
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:59pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">银行托收</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:37.8pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">开户名</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:70.55pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:24.1pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">帐号</span></p></td>
+                <td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:44.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:12pt">&#xa0;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:22.5pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">银行编号</span></p></td>
+                <td colspan="2"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+                <td colspan="2"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:43.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">开户银行</span></p></td>
+                <td style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:69.15pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+            </tr>
+            <tr style="height:15.35pt">
+                <td colspan="3"
+                    style="background-color:#c0c0c0; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:59pt">
+                    <p style="margin:0pt; orphans:0; text-align:justify; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">长途电路付费方式</span></p></td>
+                <td colspan="15"
+                    style="background-color:#ffffff; border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:441.4pt">
+                    <p style="margin:0pt; orphans:0; text-align:center; widows:0"><span
+                            style="font-family:宋体; font-size:10.5pt; font-weight:bold">&#xa0;</span></p></td>
+            </tr>
+        </table>
+    </div>
+</div>
+</body>
+</html>