作者 朱兆平

init

正在显示 29 个修改的文件 包含 3281 行增加0 行删除
  1 +HELP.md
  2 +target/
  3 +!.mvn/wrapper/maven-wrapper.jar
  4 +!**/src/main/**
  5 +!**/src/test/**
  6 +
  7 +### STS ###
  8 +.apt_generated
  9 +.classpath
  10 +.factorypath
  11 +.project
  12 +.settings
  13 +.springBeans
  14 +.sts4-cache
  15 +
  16 +### IntelliJ IDEA ###
  17 +.idea
  18 +*.iws
  19 +*.iml
  20 +*.ipr
  21 +
  22 +### NetBeans ###
  23 +/nbproject/private/
  24 +/nbbuild/
  25 +/dist/
  26 +/nbdist/
  27 +/.nb-gradle/
  28 +build/
  29 +
  30 +### VS Code ###
  31 +.vscode/
  1 +# 后勤管理平台-客服工单服务
  2 +
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!--参考文档链接:https://blog.csdn.net/qq_34912478/article/details/80877132-->
  3 +<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
  4 +<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
  5 +<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
  6 +<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
  7 +<configuration scan="true" scanPeriod="10 seconds">
  8 +
  9 + <!--<include resource="org/springframework/boot/logging/logback/base.xml" />-->
  10 +
  11 + <contextName>logback</contextName>
  12 + <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
  13 + <property name="log.path" value="./logs" />
  14 +
  15 + <!-- 彩色日志 -->
  16 + <!-- 彩色日志依赖的渲染类 -->
  17 + <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
  18 + <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
  19 + <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
  20 + <!-- 彩色日志格式 -->
  21 + <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  22 +
  23 +
  24 + <!--输出到控制台-->
  25 + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  26 + <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
  27 + <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  28 + <level>trace</level>
  29 + </filter>
  30 + <encoder>
  31 + <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
  32 + <!-- 设置字符集 windows系统这里设置成GBK-->
  33 + <charset>UTF-8</charset>
  34 + </encoder>
  35 + </appender>
  36 +
  37 +
  38 + <!--输出到文件-->
  39 +
  40 + <!-- 时间滚动输出 level为 DEBUG 日志 -->
  41 + <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  42 + <!-- 正在记录的日志文件的路径及文件名 -->
  43 + <file>${log.path}/log_debug.log</file>
  44 + <!--日志文件输出格式-->
  45 + <encoder>
  46 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  47 + <charset>UTF-8</charset> <!-- 设置字符集 -->
  48 + </encoder>
  49 + <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
  50 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  51 + <!-- 日志归档 -->
  52 + <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  53 + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  54 + <maxFileSize>100MB</maxFileSize>
  55 + </timeBasedFileNamingAndTriggeringPolicy>
  56 + <!--日志文件保留天数-->
  57 + <maxHistory>15</maxHistory>
  58 + </rollingPolicy>
  59 + <!-- 此日志文件只记录debug级别的 -->
  60 + <filter class="ch.qos.logback.classic.filter.LevelFilter">
  61 + <level>debug</level>
  62 + <onMatch>ACCEPT</onMatch>
  63 + <onMismatch>DENY</onMismatch>
  64 + </filter>
  65 + </appender>
  66 +
  67 + <!-- 时间滚动输出 level为 INFO 日志 -->
  68 + <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  69 + <!-- 正在记录的日志文件的路径及文件名 -->
  70 + <file>${log.path}/log_info.log</file>
  71 + <!--日志文件输出格式-->
  72 + <encoder>
  73 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  74 + <charset>UTF-8</charset>
  75 + </encoder>
  76 + <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
  77 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  78 + <!-- 每天日志归档路径以及格式 -->
  79 + <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  80 + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  81 + <maxFileSize>100MB</maxFileSize>
  82 + </timeBasedFileNamingAndTriggeringPolicy>
  83 + <!--日志文件保留天数-->
  84 + <maxHistory>15</maxHistory>
  85 + </rollingPolicy>
  86 + <!-- 此日志文件只记录info级别的 -->
  87 + <filter class="ch.qos.logback.classic.filter.LevelFilter">
  88 + <level>info</level>
  89 + <onMatch>ACCEPT</onMatch>
  90 + <onMismatch>DENY</onMismatch>
  91 + </filter>
  92 + </appender>
  93 +
  94 + <!-- 时间滚动输出 level为 WARN 日志 -->
  95 + <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  96 + <!-- 正在记录的日志文件的路径及文件名 -->
  97 + <file>${log.path}/log_warn.log</file>
  98 + <!--日志文件输出格式-->
  99 + <encoder>
  100 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  101 + <charset>UTF-8</charset> <!-- 此处设置字符集 -->
  102 + </encoder>
  103 + <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
  104 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  105 + <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  106 + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  107 + <maxFileSize>100MB</maxFileSize>
  108 + </timeBasedFileNamingAndTriggeringPolicy>
  109 + <!--日志文件保留天数-->
  110 + <maxHistory>15</maxHistory>
  111 + </rollingPolicy>
  112 + <!-- 此日志文件只记录warn级别的 -->
  113 + <filter class="ch.qos.logback.classic.filter.LevelFilter">
  114 + <level>warn</level>
  115 + <onMatch>ACCEPT</onMatch>
  116 + <onMismatch>DENY</onMismatch>
  117 + </filter>
  118 + </appender>
  119 +
  120 +
  121 + <!-- 时间滚动输出 level为 ERROR 日志 -->
  122 + <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  123 + <!-- 正在记录的日志文件的路径及文件名 -->
  124 + <file>${log.path}/log_error.log</file>
  125 + <!--日志文件输出格式-->
  126 + <encoder>
  127 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  128 + <charset>UTF-8</charset> <!-- 此处设置字符集 -->
  129 + </encoder>
  130 + <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
  131 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  132 + <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  133 + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  134 + <maxFileSize>100MB</maxFileSize>
  135 + </timeBasedFileNamingAndTriggeringPolicy>
  136 + <!--日志文件保留天数-->
  137 + <maxHistory>15</maxHistory>
  138 + </rollingPolicy>
  139 + <!-- 此日志文件只记录ERROR级别的 -->
  140 + <filter class="ch.qos.logback.classic.filter.LevelFilter">
  141 + <level>ERROR</level>
  142 + <onMatch>ACCEPT</onMatch>
  143 + <onMismatch>DENY</onMismatch>
  144 + </filter>
  145 + </appender>
  146 +
  147 + <!-- 时间滚动输出 level为 trace 日志 -->
  148 + <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  149 + <!-- 正在记录的日志文件的路径及文件名 -->
  150 + <file>${log.path}/log_trace.log</file>
  151 + <!--日志文件输出格式-->
  152 + <encoder>
  153 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  154 + <charset>UTF-8</charset> <!-- 此处设置字符集 -->
  155 + </encoder>
  156 + <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
  157 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  158 + <fileNamePattern>${log.path}/trace/log-trace-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  159 + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  160 + <maxFileSize>100MB</maxFileSize>
  161 + </timeBasedFileNamingAndTriggeringPolicy>
  162 + <!--日志文件保留天数-->
  163 + <maxHistory>15</maxHistory>
  164 + </rollingPolicy>
  165 + <!-- 此日志文件只记录trace级别的 -->
  166 + <filter class="ch.qos.logback.classic.filter.LevelFilter">
  167 + <level>TRACE</level>
  168 + <onMatch>ACCEPT</onMatch>
  169 + <onMismatch>DENY</onMismatch>
  170 + </filter>
  171 + </appender>
  172 +
  173 +
  174 + <!--
  175 + <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
  176 + 以及指定<appender>。<logger>仅有一个name属性,
  177 + 一个可选的level和一个可选的addtivity属性。
  178 + name:用来指定受此logger约束的某一个包或者具体的某一个类。
  179 + level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
  180 + 还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
  181 + 如果未设置此属性,那么当前logger将会继承上级的级别。
  182 + addtivity:是否向上级logger传递打印信息。默认是true。
  183 + -->
  184 + <!--<logger name="org.springframework.web" level="info"/>-->
  185 + <!--<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>-->
  186 + <!--
  187 + 使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
  188 + 第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
  189 + 第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
  190 + -->
  191 +
  192 +
  193 + <!--
  194 + root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
  195 + level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
  196 + 不能设置为INHERITED或者同义词NULL。默认是DEBUG
  197 + 可以包含零个或多个元素,标识这个appender将会添加到这个logger。
  198 + -->
  199 + <!--<logger name="com.tianbo.analysis" level="trace">-->
  200 + <!--<appender-ref ref="CONSOLE" />-->
  201 + <!--<appender-ref ref="TRACE_FILE" />-->
  202 + <!--<appender-ref ref="DEBUG_FILE" />-->
  203 + <!--<appender-ref ref="INFO_FILE" />-->
  204 + <!--<appender-ref ref="WARN_FILE" />-->
  205 + <!--<appender-ref ref="ERROR_FILE" />-->
  206 + <!--</logger>-->
  207 +
  208 + <!--开发环境:打印控制台-->
  209 + <springProfile name="dev">
  210 + <logger name="org.springframework" level="info"/>
  211 + <logger name="org.apache.tomcat" level="info" />
  212 + <logger name="com.sunyo.customer.order.activity.dao" level="DEBUG" />
  213 + <root level="info">
  214 + <appender-ref ref="CONSOLE" />
  215 + <appender-ref ref="TRACE_FILE" />
  216 + <appender-ref ref="DEBUG_FILE" />
  217 + <appender-ref ref="INFO_FILE" />
  218 + <appender-ref ref="WARN_FILE" />
  219 + <appender-ref ref="ERROR_FILE" />
  220 + </root>
  221 + </springProfile>
  222 +
  223 + <!--生产环境:输出到文件-->
  224 + <springProfile name="pro">
  225 + <logger name="org.springframework.boot" level="INFO"/>
  226 + <logger name="com.sunyo.customer.order.activity.dao" level="DEBUG" />
  227 + <root level="info">
  228 + <appender-ref ref="CONSOLE" />
  229 + <appender-ref ref="DEBUG_FILE" />
  230 + <appender-ref ref="INFO_FILE" />
  231 + <appender-ref ref="ERROR_FILE" />
  232 + <appender-ref ref="WARN_FILE" />
  233 + <appender-ref ref="TRACE_FILE" />
  234 + </root>
  235 + </springProfile>
  236 +
  237 +</configuration>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4 + <modelVersion>4.0.0</modelVersion>
  5 + <parent>
  6 + <groupId>org.springframework.boot</groupId>
  7 + <artifactId>spring-boot-starter-parent</artifactId>
  8 + <version>2.2.0.BUILD-SNAPSHOT</version>
  9 + <relativePath/> <!-- lookup parent from repository -->
  10 + </parent>
  11 + <groupId>com.sunyo.customer</groupId>
  12 + <artifactId>order</artifactId>
  13 + <version>0.0.1-SNAPSHOT</version>
  14 + <name>order</name>
  15 + <description>工单系统</description>
  16 +
  17 + <properties>
  18 + <java.version>1.8</java.version>
  19 + <druid.version>1.1.9</druid.version>
  20 + <spring-cloud.version>Greenwich.BUILD-SNAPSHOT</spring-cloud.version>
  21 + <lombok_sersion>1.18.6</lombok_sersion>
  22 + <fastjson_version>1.2.28</fastjson_version>
  23 + <swagger2_version>2.9.2</swagger2_version>
  24 + </properties>
  25 +
  26 + <dependencies>
  27 + <dependency>
  28 + <groupId>org.springframework.boot</groupId>
  29 + <artifactId>spring-boot-starter-thymeleaf</artifactId>
  30 + </dependency>
  31 + <dependency>
  32 + <groupId>org.springframework.boot</groupId>
  33 + <artifactId>spring-boot-starter-web</artifactId>
  34 + </dependency>
  35 + <dependency>
  36 + <groupId>org.mybatis.spring.boot</groupId>
  37 + <artifactId>mybatis-spring-boot-starter</artifactId>
  38 + <version>2.1.1</version>
  39 + </dependency>
  40 + <!--clound-->
  41 + <dependency>
  42 + <groupId>org.springframework.cloud</groupId>
  43 + <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  44 + </dependency>
  45 + <!--数据库-->
  46 + <dependency>
  47 + <groupId>com.alibaba</groupId>
  48 + <artifactId>druid</artifactId>
  49 + <version>${druid.version}</version>
  50 + </dependency>
  51 + <dependency>
  52 + <groupId>com.alibaba</groupId>
  53 + <artifactId>fastjson</artifactId>
  54 + <version>${fastjson_version}</version>
  55 + </dependency>
  56 + <dependency>
  57 + <groupId>mysql</groupId>
  58 + <artifactId>mysql-connector-java</artifactId>
  59 + <scope>runtime</scope>
  60 + </dependency>
  61 + <dependency>
  62 + <groupId>org.mybatis</groupId>
  63 + <artifactId>mybatis</artifactId>
  64 + <version>3.4.6</version>
  65 + </dependency>
  66 + <!--分页插件-->
  67 + <dependency>
  68 + <groupId>com.github.pagehelper</groupId>
  69 + <artifactId>pagehelper-spring-boot-starter</artifactId>
  70 + <version>1.2.5</version>
  71 + </dependency>
  72 + <dependency>
  73 + <groupId>org.projectlombok</groupId>
  74 + <artifactId>lombok</artifactId>
  75 + <optional>true</optional>
  76 + </dependency>
  77 + <dependency>
  78 + <groupId>org.springframework.boot</groupId>
  79 + <artifactId>spring-boot-starter-test</artifactId>
  80 + <scope>test</scope>
  81 + </dependency>
  82 + <dependency>
  83 + <groupId>com.tianbo</groupId>
  84 + <artifactId>util</artifactId>
  85 + <version>1.0-SNAPSHOT</version>
  86 + </dependency>
  87 + <!--<dependency>-->
  88 + <!--<groupId>com.fasterxml.jackson.core</groupId>-->
  89 + <!--<artifactId>jackson-core</artifactId>-->
  90 + <!--<version>2.9.5</version>-->
  91 + <!--</dependency>-->
  92 + <dependency>
  93 + <groupId>org.activiti</groupId>
  94 + <artifactId>activiti-spring-boot-starter-basic</artifactId>
  95 + <version>6.0.0</version>
  96 + </dependency>
  97 + <!--集成swagger2,下面两个spring的配置解决springboot包 与swagger2的包冲突问题,生产部署的时候记得要去掉此swagger2的配置,开发环境开启-->
  98 + <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
  99 + <dependency>
  100 + <groupId>org.springframework.plugin</groupId>
  101 + <artifactId>spring-plugin-core</artifactId>
  102 + <version>1.2.0.RELEASE</version><!--$NO-MVN-MAN-VER$-->
  103 + </dependency>
  104 + <dependency>
  105 + <groupId>org.springframework.plugin</groupId>
  106 + <artifactId>spring-plugin-metadata</artifactId>
  107 + <version>1.2.0.RELEASE</version><!--$NO-MVN-MAN-VER$-->
  108 + </dependency>
  109 + <dependency>
  110 + <groupId>io.springfox</groupId>
  111 + <artifactId>springfox-swagger-ui</artifactId>
  112 + <version>${swagger2_version}</version>
  113 + <exclusions>
  114 + <exclusion>
  115 + <groupId>org.springframework.plugin</groupId>
  116 + <artifactId>spring-plugin-core</artifactId>
  117 + </exclusion>
  118 + <exclusion>
  119 + <groupId>org.springframework.plugin</groupId>
  120 + <artifactId>spring-plugin-metadata</artifactId>
  121 + </exclusion>
  122 + </exclusions>
  123 + </dependency>
  124 + <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
  125 + <dependency>
  126 + <groupId>io.springfox</groupId>
  127 + <artifactId>springfox-swagger2</artifactId>
  128 + <version>${swagger2_version}</version>
  129 + <!--2.9.2集成的是M1的这两个包,跟现在用的Greenwich.BUILD-SNAPSHOT的版本的SPRING boot2的版本包有冲突。去掉-->
  130 + <exclusions>
  131 + <exclusion>
  132 + <groupId>org.springframework.plugin</groupId>
  133 + <artifactId>spring-plugin-core</artifactId>
  134 + </exclusion>
  135 + <exclusion>
  136 + <groupId>org.springframework.plugin</groupId>
  137 + <artifactId>spring-plugin-metadata</artifactId>
  138 + </exclusion>
  139 + </exclusions>
  140 + </dependency>
  141 + <!--集成swagger2-->
  142 + </dependencies>
  143 + <dependencyManagement>
  144 + <dependencies>
  145 + <dependency>
  146 + <groupId>org.springframework.cloud</groupId>
  147 + <artifactId>spring-cloud-dependencies</artifactId>
  148 + <version>${spring-cloud.version}</version>
  149 + <type>pom</type>
  150 + <scope>import</scope>
  151 + </dependency>
  152 + </dependencies>
  153 + </dependencyManagement>
  154 + <build>
  155 + <plugins>
  156 + <plugin>
  157 + <groupId>org.springframework.boot</groupId>
  158 + <artifactId>spring-boot-maven-plugin</artifactId>
  159 + </plugin>
  160 + <!-- mybatis generator 自动生成代码插件 -->
  161 + <plugin>
  162 + <groupId>org.mybatis.generator</groupId>
  163 + <artifactId>mybatis-generator-maven-plugin</artifactId>
  164 + <version>1.3.2</version>
  165 + <configuration>
  166 + <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
  167 + <overwrite>true</overwrite>
  168 + <verbose>true</verbose>
  169 + </configuration>
  170 + </plugin>
  171 + <!--Generate java code by xsd file-->
  172 + <plugin>
  173 + <groupId>org.jvnet.jaxb2.maven2</groupId>
  174 + <artifactId>maven-jaxb2-plugin</artifactId>
  175 + <version>0.14.0</version>
  176 + <configuration>
  177 + <schemaDirectory>src/main/resources/xsd</schemaDirectory>
  178 + <generateDirectory>src/main/java</generateDirectory>
  179 + <packageLevelAnnotations>false</packageLevelAnnotations>
  180 + <noFileHeader>true</noFileHeader>
  181 + <episode>false</episode>
  182 + <locale>en</locale>
  183 + </configuration>
  184 + <executions>
  185 + <execution>
  186 + <id>xsd1-generate</id>
  187 + <goals>
  188 + <goal>generate</goal>
  189 + </goals>
  190 + <configuration>
  191 + <schemaIncludes>
  192 + <include>DecMessage_ImportSave1.xsd</include>
  193 + </schemaIncludes>
  194 + <generatePackage>com.sunyo.customer.order.xsd1</generatePackage>
  195 + </configuration>
  196 + </execution>
  197 + </executions>
  198 + </plugin>
  199 + </plugins>
  200 + </build>
  201 +
  202 +</project>
  1 +package com.sunyo.customer.order;
  2 +
  3 +import org.activiti.spring.boot.SecurityAutoConfiguration;
  4 +import org.mybatis.spring.annotation.MapperScan;
  5 +import org.springframework.boot.SpringApplication;
  6 +import org.springframework.boot.autoconfigure.SpringBootApplication;
  7 +
  8 +@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
  9 +@MapperScan("com.sunyo.customer.order.activity.dao")
  10 +public class OrderApplication {
  11 +
  12 + public static void main(String[] args) {
  13 + SpringApplication.run(OrderApplication.class, args);
  14 + }
  15 +
  16 +}
  1 +package com.sunyo.customer.order;
  2 +
  3 +import org.springframework.context.annotation.Bean;
  4 +import org.springframework.context.annotation.Configuration;
  5 +import springfox.documentation.builders.ApiInfoBuilder;
  6 +import springfox.documentation.builders.PathSelectors;
  7 +import springfox.documentation.builders.RequestHandlerSelectors;
  8 +import springfox.documentation.service.ApiInfo;
  9 +import springfox.documentation.service.Contact;
  10 +import springfox.documentation.spi.DocumentationType;
  11 +import springfox.documentation.spring.web.plugins.Docket;
  12 +import springfox.documentation.swagger2.annotations.EnableSwagger2;
  13 +
  14 +@Configuration
  15 +@EnableSwagger2
  16 +public class Swagger2 {
  17 + //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
  18 + @Bean
  19 + public Docket createRestApi() {
  20 + return new Docket(DocumentationType.SWAGGER_2)
  21 + .apiInfo(apiInfo())
  22 + .select()
  23 + //为当前包路径
  24 + .apis(RequestHandlerSelectors.basePackage("com.tianbo.warehouse.controller"))
  25 + .paths(PathSelectors.any())
  26 + .build();
  27 + }
  28 + //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
  29 + private ApiInfo apiInfo() {
  30 + return new ApiInfoBuilder()
  31 + //页面标题
  32 + .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
  33 + //创建人
  34 + .contact(new Contact("MarryFeng", "http://www.baidu.com", ""))
  35 + //版本号
  36 + .version("1.0")
  37 + //描述
  38 + .description("API 描述")
  39 + .build();
  40 + }
  41 +
  42 +
  43 +}
  1 +package com.sunyo.customer.order.activity.controller;
  2 +
  3 +
  4 +import org.springframework.web.bind.annotation.RequestMapping;
  5 +import org.springframework.web.bind.annotation.RequestMethod;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +
  8 +@RestController
  9 +@RequestMapping("/activity")
  10 +public interface ActivityConsumerController {
  11 + /**
  12 + * 流程demo
  13 + * @return
  14 + */
  15 + @RequestMapping(value="/startActivityDemo",method= RequestMethod.GET)
  16 + public boolean startActivityDemo();
  17 +
  18 +}
  1 +package com.sunyo.customer.order.activity.controller;
  2 +
  3 +import com.github.pagehelper.Page;
  4 +import com.github.pagehelper.PageHelper;
  5 +import com.github.pagehelper.PageInfo;
  6 +import com.sunyo.customer.order.activity.controller.response.ResultJson;
  7 +import com.sunyo.customer.order.activity.dao.JOBMapper;
  8 +import com.sunyo.customer.order.activity.dao.ProcessFormMapper;
  9 +import com.sunyo.customer.order.activity.model.JOB;
  10 +import com.sunyo.customer.order.activity.model.ProcessForm;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.web.bind.annotation.*;
  13 +
  14 +import java.util.List;
  15 +
  16 +@RestController
  17 +@RequestMapping("/job")
  18 +public class JobController {
  19 +
  20 + @Autowired
  21 + private JOBMapper jobMapper;
  22 + /**
  23 + * 流程demo
  24 + * @return
  25 + */
  26 + @RequestMapping(value="/list",method= RequestMethod.GET)
  27 + public ResultJson<PageInfo> startActivityDemo(@RequestParam(value = "pageNum",required = false,defaultValue = "1")
  28 + int pageNum,
  29 + @RequestParam(value = "pageSize",required = false,defaultValue = "5")
  30 + int pageSize,
  31 + @RequestParam(value = "userid",required = false)
  32 + String userid,
  33 + @RequestParam(value = "processid",required = false)
  34 + String processid){
  35 + Page<JOB> page = PageHelper.startPage(pageNum,pageSize);
  36 + List<JOB> list= jobMapper.selectAllWithUser(userid,processid);
  37 + PageInfo<JOB> result = new PageInfo<JOB>(list);
  38 + return new ResultJson("200","success",result);
  39 + }
  40 +
  41 + @PostMapping(value="/add")
  42 + public ResultJson add(JOB job){
  43 + int i =jobMapper.insertSelective(job);
  44 + return i==1 ? new ResultJson("200","添加工单成功") :new ResultJson("500","insert faild");
  45 +
  46 + }
  47 +
  48 + @PutMapping(value="start")
  49 + public ResultJson start(@RequestBody JOB job){
  50 + job.setComent("由"+job.getUser().getRealname()+"开始任务");
  51 + job.setAuditresuld(new Integer(1).byteValue());
  52 + int i =jobMapper.updateByPrimaryKeySelective(job);
  53 + return i==1 ? new ResultJson("200","添加工单成功") :new ResultJson("500","insert faild");
  54 +
  55 + }
  56 +
  57 +
  58 +}
  1 +package com.sunyo.customer.order.activity.controller;
  2 +
  3 +import com.github.pagehelper.Page;
  4 +import com.github.pagehelper.PageHelper;
  5 +import com.github.pagehelper.PageInfo;
  6 +import com.sunyo.customer.order.activity.controller.response.ResultJson;
  7 +import com.sunyo.customer.order.activity.dao.JOBMapper;
  8 +import com.sunyo.customer.order.activity.dao.ProcessFormMapper;
  9 +import com.sunyo.customer.order.activity.model.JOB;
  10 +import com.sunyo.customer.order.activity.model.ProcessForm;
  11 +import org.activiti.engine.*;
  12 +import org.activiti.engine.repository.DeploymentBuilder;
  13 +import org.activiti.engine.repository.ProcessDefinition;
  14 +import org.activiti.engine.runtime.ProcessInstance;
  15 +import org.activiti.engine.task.Task;
  16 +import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.web.bind.annotation.*;
  18 +
  19 +import java.util.HashMap;
  20 +import java.util.List;
  21 +import java.util.Map;
  22 +import java.util.UUID;
  23 +
  24 +@RestController
  25 +@RequestMapping("/process")
  26 +public class ProcessController {
  27 +
  28 + @Autowired
  29 + private ProcessFormMapper processFormMapper;
  30 +
  31 + @Autowired
  32 + private JOBMapper jobMapper;
  33 +
  34 + @Autowired
  35 + private RuntimeService runtimeService;
  36 +
  37 + @Autowired
  38 + private TaskService taskService;
  39 +
  40 + @Autowired
  41 + private IdentityService identityService;
  42 +
  43 + @Autowired
  44 + private RepositoryService repositoryService;
  45 +
  46 + @Autowired
  47 + private ProcessEngine processEngine;
  48 +
  49 + @Autowired
  50 + private HistoryService historyService;
  51 + /**
  52 + * 流程demo
  53 + * @return
  54 + */
  55 + @RequestMapping(value="/list",method= RequestMethod.GET)
  56 + public ResultJson<PageInfo> startActivityDemo(@RequestParam(value = "pageNum",required = false,defaultValue = "1")
  57 + int pageNum,
  58 + @RequestParam(value = "pageSize",required = false,defaultValue = "5")
  59 + int pageSize){
  60 + Page<ProcessForm> page = PageHelper.startPage(pageNum,pageSize);
  61 + List<ProcessForm> list= processFormMapper.selectAllWithUser();
  62 + PageInfo<ProcessForm> result = new PageInfo<ProcessForm>(list);
  63 + return new ResultJson("200","success",result);
  64 + }
  65 +
  66 + @PostMapping(value="/add")
  67 + public ResultJson add(ProcessForm processForm){
  68 + String uuid = UUID.randomUUID().toString();
  69 + processForm.setFormid(uuid);
  70 + int i =processFormMapper.insertSelective(processForm);
  71 + if (processForm.getJobuserid()!=0){
  72 + JOB job = new JOB();
  73 + job.setAuditid(UUID.randomUUID().toString());
  74 + job.setTaskid(uuid);
  75 + job.setUserid(processForm.getJobuserid());
  76 + job.setAuditresuld(new Byte("0"));
  77 + jobMapper.insertSelective(job);
  78 + }
  79 + return i==1 ? new ResultJson("200","添加工单成功") :new ResultJson("500","insert faild");
  80 +
  81 + }
  82 +
  83 + @GetMapping(value = "activity")
  84 + public void activity(){
  85 + DeploymentBuilder builder = repositoryService.createDeployment();
  86 + builder.addClasspathResource("processes/customProcess.bpmn20.xml").name("customProcess");
  87 + builder.deploy();
  88 + List<ProcessDefinition> p = repositoryService.createProcessDefinitionQuery().list();
  89 +// 启动流程实例,字符串"vacation"是BPMN模型文件里process元素的id
  90 + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("customProcess");
  91 +//流程实例启动后,流程会跳转到请假申请节点
  92 + Task vacationApply = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
  93 +//设置请假申请任务的执行人
  94 + taskService.setAssignee(vacationApply.getId(), "zhangsan");
  95 +
  96 +//设置流程参数:请假天数和表单ID
  97 +//流程引擎会根据请假天数days>3判断流程走向
  98 +//formId是用来将流程数据和表单数据关联起来
  99 + Map<String, Object> args = new HashMap<>();
  100 + args.put("days", "2");
  101 + args.put("formId", "4d8746da-f0c2-418d-86b4-e3646dcef6c9");
  102 +
  103 +//完成请假申请任务
  104 + taskService.complete(vacationApply.getId(), args);
  105 + }
  106 +}
  1 +package com.sunyo.customer.order.activity.controller.response;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import org.springframework.core.MethodParameter;
  5 +import org.springframework.http.MediaType;
  6 +import org.springframework.http.converter.HttpMessageConverter;
  7 +import org.springframework.http.server.ServerHttpRequest;
  8 +import org.springframework.http.server.ServerHttpResponse;
  9 +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
  10 +
  11 +/**
  12 + * 统一拦截response接口返回数据
  13 + */
  14 +//@ControllerAdvice
  15 +public class RestControllerResponseAdvice implements ResponseBodyAdvice<Object> {
  16 +
  17 + /**
  18 + * //判断支持的类型,因为我们定义的BaseResponseVo 里面的data可能是任何类型,这里就不判断统一放过
  19 + * 如果你想对执行的返回体进行操作,可将上方的Object换成你自己的类型
  20 + * @param returnType
  21 + * @param converterType
  22 + * @return
  23 + */
  24 + @Override
  25 + public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType){
  26 + return true;
  27 + }
  28 +
  29 + @Override
  30 + public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response){
  31 + // 对body进行封装处理
  32 + if (body instanceof String) {
  33 + String msg = (String) body;
  34 + ResultJson resultJson = new ResultJson("-1", msg);
  35 + // 因为在controller层中返回的是String类型,这边如果换成ResultJson的话,会导致StringMessageConverter方法类型转换异常,所以这边将对象转成字符串
  36 + return JSON.toJSONString(resultJson);
  37 + } else if (body instanceof Object) {
  38 + Object data = (Object) body;
  39 + ResultJson resultJson = new ResultJson(data);
  40 + return resultJson;
  41 + }
  42 +
  43 + return body;
  44 + }
  45 +}
  1 +package com.sunyo.customer.order.activity.controller.response;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.io.Serializable;
  6 +
  7 +@Data
  8 +public class ResultJson<T> implements Serializable{
  9 + private static final long serialVersionUID = 1L;
  10 +
  11 + // 状态码 正确为200
  12 + private String code = "200";
  13 + // 描述
  14 + private String msg = "";
  15 +
  16 + private String error;
  17 + // 返回对象
  18 + private T data;
  19 + //返回的JWT
  20 + private String jwtToken;
  21 +
  22 + public ResultJson() {
  23 + }
  24 +
  25 + public ResultJson(String code) {
  26 + this.code = code;
  27 + }
  28 +
  29 + public ResultJson(String code, String msg) {
  30 + this.code = code;
  31 + this.msg = msg;
  32 + }
  33 +
  34 + public ResultJson(T data) {
  35 + this.data = data;
  36 + }
  37 +
  38 + public ResultJson(String code, String msg, T data) {
  39 + this.code = code;
  40 + this.msg = msg;
  41 + this.data = data;
  42 + }
  43 +}
  1 +package com.sunyo.customer.order.activity.dao;
  2 +
  3 +import com.sunyo.customer.order.activity.model.JOB;
  4 +import org.apache.ibatis.annotations.Param;
  5 +
  6 +import java.util.List;
  7 +
  8 +public interface JOBMapper {
  9 + int deleteByPrimaryKey(String auditid);
  10 +
  11 + int insert(JOB record);
  12 +
  13 + int insertSelective(JOB record);
  14 +
  15 + JOB selectByPrimaryKey(String auditid);
  16 +
  17 + List<JOB> selectAllWithUser(@Param("userid")String auditid,@Param("processid") String processid);
  18 +
  19 + int updateByPrimaryKeySelective(JOB record);
  20 +
  21 + int updateByPrimaryKey(JOB record);
  22 +
  23 + //开始任务
  24 + int startJob(JOB record);
  25 +
  26 +
  27 +
  28 +}
  1 +package com.sunyo.customer.order.activity.dao;
  2 +
  3 +import com.sunyo.customer.order.activity.model.ProcessForm;
  4 +
  5 +import java.util.List;
  6 +
  7 +
  8 +public interface ProcessFormMapper {
  9 + int deleteByPrimaryKey(ProcessForm key);
  10 +
  11 + int insert(ProcessForm record);
  12 +
  13 + int insertSelective(ProcessForm record);
  14 +
  15 + ProcessForm selectByPrimaryKey(ProcessForm key);
  16 +
  17 + List<ProcessForm> selectAllWithUser();
  18 +
  19 + int updateByPrimaryKeySelective(ProcessForm record);
  20 +
  21 + int updateByPrimaryKey(ProcessForm record);
  22 +}
  1 +package com.sunyo.customer.order.activity.dao;
  2 +
  3 +import com.sunyo.customer.order.activity.model.USER;
  4 +
  5 +public interface USERMapper {
  6 + int deleteByPrimaryKey(Integer userId);
  7 +
  8 + int insert(USER record);
  9 +
  10 + int insertSelective(USER record);
  11 +
  12 + USER selectByPrimaryKey(Integer userId);
  13 +
  14 + int updateByPrimaryKeySelective(USER record);
  15 +
  16 + int updateByPrimaryKey(USER record);
  17 +}
  1 +package com.sunyo.customer.order.activity.model;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import lombok.Data;
  5 +import org.springframework.format.annotation.DateTimeFormat;
  6 +
  7 +import java.util.Date;
  8 +
  9 +@Data
  10 +public class JOB {
  11 + private String auditid;
  12 +
  13 + private String processinstanceid;
  14 +
  15 + private String processid;
  16 +
  17 + private String taskid;
  18 +
  19 + private Integer userid;
  20 +
  21 + private Byte auditresuld;
  22 +
  23 + private String coment;
  24 +
  25 + @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
  26 + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")
  27 + private Date audittime;
  28 +
  29 + private USER user;
  30 +
  31 + private ProcessForm process;
  32 +
  33 + //任务执行者ID
  34 + private Integer joduserd;
  35 +
  36 + public String getAuditid() {
  37 + return auditid;
  38 + }
  39 +
  40 + public void setAuditid(String auditid) {
  41 + this.auditid = auditid == null ? null : auditid.trim();
  42 + }
  43 +
  44 + public String getProcessinstanceid() {
  45 + return processinstanceid;
  46 + }
  47 +
  48 + public void setProcessinstanceid(String processinstanceid) {
  49 + this.processinstanceid = processinstanceid == null ? null : processinstanceid.trim();
  50 + }
  51 +
  52 + public String getTaskid() {
  53 + return taskid;
  54 + }
  55 +
  56 + public void setTaskid(String taskid) {
  57 + this.taskid = taskid == null ? null : taskid.trim();
  58 + }
  59 +
  60 + public Integer getUserid() {
  61 + return userid;
  62 + }
  63 +
  64 + public void setUserid(Integer userid) {
  65 + this.userid = userid;
  66 + }
  67 +
  68 + public Byte getAuditresuld() {
  69 + return auditresuld;
  70 + }
  71 +
  72 + public void setAuditresuld(Byte auditresuld) {
  73 + this.auditresuld = auditresuld;
  74 + }
  75 +
  76 + public String getComent() {
  77 + return coment;
  78 + }
  79 +
  80 + public void setComent(String coment) {
  81 + this.coment = coment == null ? null : coment.trim();
  82 + }
  83 +
  84 + public Date getAudittime() {
  85 + return audittime;
  86 + }
  87 +
  88 + public void setAudittime(Date audittime) {
  89 + this.audittime = audittime;
  90 + }
  91 +}
  1 +package com.sunyo.customer.order.activity.model;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import lombok.Data;
  5 +import org.springframework.format.annotation.DateTimeFormat;
  6 +
  7 +import java.util.Date;
  8 +
  9 +@Data
  10 +public class ProcessForm{
  11 + private Integer userid;
  12 +
  13 + private String processname;
  14 +
  15 + @DateTimeFormat(pattern = "yyyy-MM-dd")
  16 + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
  17 + private Date begindate;
  18 +
  19 + @DateTimeFormat(pattern = "yyyy-MM-dd")
  20 + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
  21 + private Date enddate;
  22 +
  23 + private Byte vacationtype;
  24 +
  25 + private String reason;
  26 +
  27 + private Byte processstatus;
  28 +
  29 + private Date createtime;
  30 +
  31 + private Date updatetime;
  32 +
  33 + private String formid;
  34 +
  35 + private String processinstanceid;
  36 +
  37 + private USER user;
  38 +
  39 + private Integer jobuserid;
  40 +
  41 + public String getFormid() {
  42 + return formid;
  43 + }
  44 +
  45 + public void setFormid(String formid) {
  46 + this.formid = formid == null ? null : formid.trim();
  47 + }
  48 +
  49 + public String getProcessinstanceid() {
  50 + return processinstanceid;
  51 + }
  52 +
  53 + public void setProcessinstanceid(String processinstanceid) {
  54 + this.processinstanceid = processinstanceid == null ? null : processinstanceid.trim();
  55 + }
  56 +
  57 + public Integer getUserid() {
  58 + return userid;
  59 + }
  60 +
  61 + public void setUserid(Integer userid) {
  62 + this.userid = userid;
  63 + }
  64 +
  65 + public String getProcessname() {
  66 + return processname;
  67 + }
  68 +
  69 + public void setProcessname(String processname) {
  70 + this.processname = processname == null ? null : processname.trim();
  71 + }
  72 +
  73 + public Date getBegindate() {
  74 + return begindate;
  75 + }
  76 +
  77 + public void setBegindate(Date begindate) {
  78 + this.begindate = begindate;
  79 + }
  80 +
  81 + public Date getEnddate() {
  82 + return enddate;
  83 + }
  84 +
  85 + public void setEnddate(Date enddate) {
  86 + this.enddate = enddate;
  87 + }
  88 +
  89 + public Byte getVacationtype() {
  90 + return vacationtype;
  91 + }
  92 +
  93 + public void setVacationtype(Byte vacationtype) {
  94 + this.vacationtype = vacationtype;
  95 + }
  96 +
  97 + public String getReason() {
  98 + return reason;
  99 + }
  100 +
  101 + public void setReason(String reason) {
  102 + this.reason = reason == null ? null : reason.trim();
  103 + }
  104 +
  105 + public Byte getProcessstatus() {
  106 + return processstatus;
  107 + }
  108 +
  109 + public void setProcessstatus(Byte processstatus) {
  110 + this.processstatus = processstatus;
  111 + }
  112 +
  113 + public Date getCreatetime() {
  114 + return createtime;
  115 + }
  116 +
  117 + public void setCreatetime(Date createtime) {
  118 + this.createtime = createtime;
  119 + }
  120 +
  121 + public Date getUpdatetime() {
  122 + return updatetime;
  123 + }
  124 +
  125 + public void setUpdatetime(Date updatetime) {
  126 + this.updatetime = updatetime;
  127 + }
  128 +}
  1 +package com.sunyo.customer.order.activity.model;
  2 +
  3 +import java.util.Date;
  4 +
  5 +public class USER {
  6 + private Integer userId;
  7 +
  8 + private String username;
  9 +
  10 + private String password;
  11 +
  12 + private Date birthday;
  13 +
  14 + private String sex;
  15 +
  16 + private String address;
  17 +
  18 + private Boolean state;
  19 +
  20 + private String mobilephone;
  21 +
  22 + private Date creattime;
  23 +
  24 + private Date updatetime;
  25 +
  26 + private String userface;
  27 +
  28 + private String realname;
  29 +
  30 + private String email;
  31 +
  32 + private Integer age;
  33 +
  34 + public Integer getUserId() {
  35 + return userId;
  36 + }
  37 +
  38 + public void setUserId(Integer userId) {
  39 + this.userId = userId;
  40 + }
  41 +
  42 + public String getUsername() {
  43 + return username;
  44 + }
  45 +
  46 + public void setUsername(String username) {
  47 + this.username = username == null ? null : username.trim();
  48 + }
  49 +
  50 + public String getPassword() {
  51 + return password;
  52 + }
  53 +
  54 + public void setPassword(String password) {
  55 + this.password = password == null ? null : password.trim();
  56 + }
  57 +
  58 + public Date getBirthday() {
  59 + return birthday;
  60 + }
  61 +
  62 + public void setBirthday(Date birthday) {
  63 + this.birthday = birthday;
  64 + }
  65 +
  66 + public String getSex() {
  67 + return sex;
  68 + }
  69 +
  70 + public void setSex(String sex) {
  71 + this.sex = sex == null ? null : sex.trim();
  72 + }
  73 +
  74 + public String getAddress() {
  75 + return address;
  76 + }
  77 +
  78 + public void setAddress(String address) {
  79 + this.address = address == null ? null : address.trim();
  80 + }
  81 +
  82 + public Boolean getState() {
  83 + return state;
  84 + }
  85 +
  86 + public void setState(Boolean state) {
  87 + this.state = state;
  88 + }
  89 +
  90 + public String getMobilephone() {
  91 + return mobilephone;
  92 + }
  93 +
  94 + public void setMobilephone(String mobilephone) {
  95 + this.mobilephone = mobilephone == null ? null : mobilephone.trim();
  96 + }
  97 +
  98 + public Date getCreattime() {
  99 + return creattime;
  100 + }
  101 +
  102 + public void setCreattime(Date creattime) {
  103 + this.creattime = creattime;
  104 + }
  105 +
  106 + public Date getUpdatetime() {
  107 + return updatetime;
  108 + }
  109 +
  110 + public void setUpdatetime(Date updatetime) {
  111 + this.updatetime = updatetime;
  112 + }
  113 +
  114 + public String getUserface() {
  115 + return userface;
  116 + }
  117 +
  118 + public void setUserface(String userface) {
  119 + this.userface = userface == null ? null : userface.trim();
  120 + }
  121 +
  122 + public String getRealname() {
  123 + return realname;
  124 + }
  125 +
  126 + public void setRealname(String realname) {
  127 + this.realname = realname == null ? null : realname.trim();
  128 + }
  129 +
  130 + public String getEmail() {
  131 + return email;
  132 + }
  133 +
  134 + public void setEmail(String email) {
  135 + this.email = email == null ? null : email.trim();
  136 + }
  137 +
  138 + public Integer getAge() {
  139 + return age;
  140 + }
  141 +
  142 + public void setAge(Integer age) {
  143 + this.age = age;
  144 + }
  145 +}
  1 +package com.sunyo.customer.order.activity.service;
  2 +
  3 +import com.sunyo.customer.order.activity.controller.ActivityConsumerController;
  4 +import com.sunyo.customer.order.activity.util.ActivitiUtil;
  5 +import lombok.extern.slf4j.Slf4j;
  6 +import org.activiti.bpmn.model.BpmnModel;
  7 +import org.activiti.engine.RuntimeService;
  8 +import org.activiti.engine.TaskService;
  9 +import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
  10 +import org.activiti.engine.impl.persistence.entity.TaskEntity;
  11 +import org.activiti.engine.runtime.ProcessInstance;
  12 +import org.activiti.engine.task.Task;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.stereotype.Service;
  15 +
  16 +import java.util.HashMap;
  17 +import java.util.List;
  18 +import java.util.Map;
  19 +
  20 +@Slf4j
  21 +@Service("activityService")
  22 +public class ActivityConsumerService implements ActivityConsumerController {
  23 +
  24 + @Autowired
  25 + private RuntimeService runtimeService;
  26 +
  27 + @Autowired
  28 + private TaskService taskService;
  29 +
  30 + @Override
  31 + public boolean startActivityDemo(){
  32 + log.info("任务启动");
  33 + Map<String,Object> map = new HashMap<>();
  34 + map.put("buildJob","zhangsan");
  35 + map.put("excuteJob","lisi");
  36 + map.put("assignJob","wangwu");
  37 + ExecutionEntity pi1 = (ExecutionEntity)runtimeService.startProcessInstanceByKey("customProcess",map);
  38 + String processId = pi1.getId();
  39 + List<TaskEntity> taskEntityList = pi1.getTasks();
  40 + String taskId = taskService.createTaskQuery().processInstanceId("guestService").singleResult().getId();
  41 + taskService.complete(taskId,map);
  42 +
  43 + Task task = taskService.createTaskQuery().processInstanceId(processId).singleResult();
  44 + String taskId2 = taskId;
  45 + map.put("pass",false);
  46 + taskService.complete(taskId2,map);
  47 + log.info("任务结束");
  48 +
  49 + return false;
  50 + }
  51 +
  52 +}
  1 +package com.sunyo.customer.order.activity.util;
  2 +
  3 +import org.activiti.bpmn.model.*;
  4 +import org.activiti.bpmn.model.Process;
  5 +import org.activiti.engine.*;
  6 +import org.activiti.engine.history.HistoricProcessInstance;
  7 +import org.activiti.engine.history.HistoricTaskInstance;
  8 +import org.activiti.engine.repository.Deployment;
  9 +import org.activiti.engine.repository.ProcessDefinition;
  10 +import org.activiti.engine.runtime.Execution;
  11 +import org.activiti.engine.runtime.ProcessInstance;
  12 +import org.activiti.engine.task.Task;
  13 +
  14 +import java.util.ArrayList;
  15 +import java.util.Date;
  16 +import java.util.List;
  17 +
  18 +/**
  19 + * Activiti工具类
  20 + */
  21 +public class ActivitiUtil {
  22 + private static ProcessEngine getProcessEngine() {
  23 + return ProcessEngines.getDefaultProcessEngine();
  24 + }
  25 +
  26 + private static RepositoryService getRepositoryService() {
  27 + return getProcessEngine().getRepositoryService();
  28 + }
  29 +
  30 + private static TaskService getTaskService() {
  31 + return getProcessEngine().getTaskService();
  32 + }
  33 +
  34 + private static RuntimeService getRuntimeService() {
  35 + return getProcessEngine().getRuntimeService();
  36 + }
  37 +
  38 + private static HistoryService getHistoryService() {
  39 + return getProcessEngine().getHistoryService();
  40 + }
  41 +
  42 + private static IdentityService getIdentityService() {
  43 + return getProcessEngine().getIdentityService();
  44 + }
  45 +
  46 + /**
  47 + * 创建任务节点
  48 + * 多人审批
  49 + */
  50 + public static UserTask createUsersTask(String id, String name, List<String> assignee){
  51 + UserTask userTask = new UserTask();
  52 + userTask.setName(name);
  53 + userTask.setId(id);
  54 + userTask.setCandidateUsers(assignee);
  55 + return userTask;
  56 + }
  57 +
  58 + /**
  59 + * 创建任务节点
  60 + * 单人审批
  61 + */
  62 + public static UserTask createUserTask(String id, String name, String assignee) {
  63 + UserTask userTask = new UserTask();
  64 + userTask.setName(name);
  65 + userTask.setId(id);
  66 + userTask.setAssignee(assignee);
  67 + return userTask;
  68 + }
  69 +
  70 +
  71 + /**
  72 + * 连线
  73 + * @param from
  74 + * @param to
  75 + * @return
  76 + */
  77 + public static SequenceFlow createSequenceFlow(String from, String to) {
  78 + SequenceFlow flow = new SequenceFlow();
  79 + flow.setSourceRef(from);
  80 + flow.setTargetRef(to);
  81 + return flow;
  82 + }
  83 +
  84 + /**
  85 + * 开始节点
  86 + * @return
  87 + */
  88 + public static StartEvent createStartEvent() {
  89 + StartEvent startEvent = new StartEvent();
  90 + startEvent.setId("startEvent");
  91 + startEvent.setName("start");
  92 + return startEvent;
  93 + }
  94 +
  95 + /**
  96 + * 结束节点
  97 + * @return
  98 + */
  99 + public static EndEvent createEndEvent() {
  100 + EndEvent endEvent = new EndEvent();
  101 + endEvent.setId("endEvent");
  102 + endEvent.setName("end");
  103 + return endEvent;
  104 + }
  105 +
  106 +
  107 +
  108 + /**
  109 + * 申请人已申请任务(完成状态)[学习使用]
  110 + * @return
  111 + */
  112 + public Object queryApply(String user){
  113 + String processDefinitionKey= "guestService";
  114 + List<HistoricProcessInstance> hisProInstance = getHistoryService().createHistoricProcessInstanceQuery()
  115 + .processDefinitionKey(processDefinitionKey).startedBy(user).finished()
  116 + .orderByProcessInstanceEndTime().desc().list();
  117 + for (HistoricProcessInstance hisInstance : hisProInstance) {
  118 + System.out.println("发起人 :"+hisInstance.getStartUserId());
  119 + System.out.println("发起时间 :"+hisInstance.getStartTime());
  120 + }
  121 + return "已申请任务";
  122 + }
  123 +
  124 +
  125 +
  126 + /**
  127 + * 审批人已办理任务(完成状态)[学习使用]
  128 + * @return
  129 + */
  130 + public Object queryFinished(String user){
  131 + String processDefinitionKey= "guestService";
  132 + List<HistoricProcessInstance> hisProInstance = getHistoryService().createHistoricProcessInstanceQuery()
  133 + .processDefinitionKey(processDefinitionKey).involvedUser(user).finished()
  134 + .orderByProcessInstanceEndTime().desc().list();
  135 + for (HistoricProcessInstance hisInstance : hisProInstance) {
  136 + List<HistoricTaskInstance> hisTaskInstanceList = getHistoryService().createHistoricTaskInstanceQuery()
  137 + .processInstanceId(hisInstance.getId()).processFinished()
  138 + .taskAssignee(user)
  139 + .orderByHistoricTaskInstanceEndTime().desc().list();
  140 + boolean isMyAudit = false;
  141 + for (HistoricTaskInstance taskInstance : hisTaskInstanceList) {
  142 + if (taskInstance.getAssignee().equals(user)) {
  143 + isMyAudit = true;
  144 + }
  145 + }
  146 + if (!isMyAudit) {
  147 + continue;
  148 + }
  149 + System.out.println("申请人 :"+hisInstance.getStartUserId());
  150 + System.out.println("开始时间 :"+hisInstance.getStartTime());
  151 + System.out.println("结束时间 :"+hisInstance.getEndTime());
  152 + }
  153 + return "已办理任务";
  154 + }
  155 +
  156 +
  157 +
  158 + /**
  159 + * 发起人查询执行中的任务[学习使用]
  160 + * @return
  161 + */
  162 + public static Object queryNow(String user) {
  163 + List<ProcessInstance> instanceList = getRuntimeService().createProcessInstanceQuery().startedBy(user).list();
  164 + for (ProcessInstance instance : instanceList) {
  165 + System.out.println("申请人 :" + instance.getStartUserId());
  166 + System.out.println("开始时间 :" + instance.getStartTime());
  167 + }
  168 + return "查询执行中的任务";
  169 + }
  170 +
  171 +
  172 +
  173 + /**
  174 + * 根据人员查询待审批任务[学习使用]
  175 + * @return
  176 + */
  177 + public static Object findUnApprove(String assignee) {
  178 + List<Task> list = getTaskService().createTaskQuery().taskCandidateOrAssigned(assignee).list();
  179 + if (list != null || list.size() > 0) {
  180 + for (Task task : list) {
  181 + HistoricProcessInstance historicProcessInstance =
  182 + getHistoryService().createHistoricProcessInstanceQuery()
  183 + .processInstanceId(task.getProcessInstanceId())
  184 + .singleResult();
  185 + String user = historicProcessInstance.getStartUserId();
  186 + Date date = (Date) getTaskService().getVariable(task.getId(), "请假日期");
  187 + Integer day = (Integer) getTaskService().getVariable(task.getId(), "请假天数");
  188 + String ms = (String) getTaskService().getVariable(task.getId(), "请假原因");
  189 + System.out.println("申请人" + user + "请假日期" + date + "/" + "请假天数 :" + day + "/" + "请假原因 :" + ms);
  190 + System.out.println("任务名称 :" + task.getName());
  191 + System.out.println("任务创建时间 :" + task.getCreateTime());
  192 + }
  193 + }
  194 + return "待审批";
  195 + }
  196 +
  197 +
  198 + /**
  199 + * 添加任务
  200 + * @param processFlow
  201 + * @return
  202 + */
  203 +// public Integer addActiviti(ProcessFlow processFlow) {
  204 +// try {
  205 +// BpmnModel model = new BpmnModel();
  206 +// Process process = new Process();
  207 +// model.addProcess(process);
  208 +//
  209 +// /**
  210 +// *process的id不能以数字开头
  211 +// */
  212 +// process.setId('A' + processFlow.getId());
  213 +// List<String> users = null;
  214 +//
  215 +// /**
  216 +// *获取流程的节点数量
  217 +// */
  218 +// int size = processFlow.getProcessNodes().size();
  219 +// process.addFlowElement(ActivitiUtil.createStartEvent());
  220 +//
  221 +// /**
  222 +// *生成流程
  223 +// */
  224 +// for (int i = 0, j = size; i < j; i++) {
  225 +// users = new ArrayList<>();
  226 +// for (AuditProcessNodeApprover approver : processFlow.getProcessNodes().get(i).getApprovers()) {
  227 +// users.add(approver.getApproved());
  228 +// }
  229 +// process.addFlowElement(ActivitiUtil.createUsersTask(ProcessIDPrefix + processFlow.getProcessNodes().get(i).getId(), processFlow.getProcessNodes().get(i).getName(), users));
  230 +// if (i == 0)
  231 +// process.addFlowElement(ActivitiUtil.createSequenceFlow("startEvent", ProcessIDPrefix + processFlow.getProcessNodes().get(i).getId()));
  232 +// else {
  233 +// process.addFlowElement(ActivitiUtil.createSequenceFlow(ProcessIDPrefix + processFlow.getProcessNodes().get(i - 1).getId(), ProcessIDPrefix + processFlow.getProcessNodes().get(i).getId()));
  234 +// }
  235 +// if (i == size - 1)
  236 +// process.addFlowElement(ActivitiUtil.createSequenceFlow(ProcessIDPrefix + processFlow.getProcessNodes().get(i).getId(), "endEvent"));
  237 +// }
  238 +// process.addFlowElement(ActivitiUtil.createEndEvent());
  239 +//
  240 +//
  241 +// /**
  242 +// * 生成图形信息
  243 +// */
  244 +// new BpmnAutoLayout(model).execute();
  245 +//
  246 +// //将流程部署到引擎
  247 +// Deployment deployment = getRepositoryService().createDeployment()
  248 +// .addBpmnModel("ABC" + process.getId() + ".bpmn", model).name(processFlow.getName())
  249 +// .deploy();
  250 +//
  251 +// } catch (Exception e) {
  252 +// throw new CustomException(e.getLocalizedMessage());
  253 +// }
  254 +// return 1;
  255 +// }
  256 +//
  257 +//
  258 +// /**
  259 +// * 开始流程
  260 +// * @param creater
  261 +// * @param processId
  262 +// * @return
  263 +// */
  264 +// public Object beginActiviti(String creater, String processId) {
  265 +//
  266 +// /**
  267 +// *设置发起人
  268 +// */
  269 +// getIdentityService().setAuthenticatedUserId(creater);
  270 +// //启动流程实例
  271 +// ProcessInstance processInstance = getRuntimeService().startProcessInstanceByKey('A' + processId);
  272 +//
  273 +// Task task = getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
  274 +// if (task == null) throw new RuntimeException("发起审批失败");
  275 +// ProcessFlow flow = flowRepository.getOne(processId);
  276 +// if (flow == null) throw new RuntimeException("对应审批流程为空");
  277 +// List<ProcessNodeApprover> processNodeApprovers= processNodeApproverRepository.findByFlowid(flow.getId());
  278 +// if (processNodeApprovers==null||processNodeApprovers.size()<1){
  279 +// throw new RuntimeException("对应审批人为空");
  280 +// }
  281 +// return task;
  282 +// }
  283 +//
  284 +//
  285 +// /**
  286 +// * 进行审批
  287 +// *
  288 +// * @param assignee 审批人
  289 +// * @param msg 审批意见
  290 +// * @param isAgree 是否同意 1 同意 0 拒绝
  291 +// * @param taskId 任务id
  292 +// * @param processId 流程id
  293 +// * @return
  294 +// */
  295 +// public Object approve(String assignee, String msg, Integer isAgree, String taskId, String processId) {
  296 +// Task task = getTaskService().createTaskQuery().taskId(taskId).singleResult();
  297 +// Employee assigneeEmployee = employeeRepository.getOne(assignee);
  298 +// if (assigneeEmployee == null)
  299 +// throw new RuntimeException("审批人对应得职员信息不存在!");
  300 +//
  301 +// //拒绝,结束流程
  302 +// if (isAgree == 0) {
  303 +// BpmnModel bpmnModel = getRepositoryService().getBpmnModel(task.getProcessDefinitionId());
  304 +// Execution execution = getRuntimeService().createExecutionQuery().executionId(task.getExecutionId()).singleResult();
  305 +// String activitId = execution.getActivityId();
  306 +// FlowNode flowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(activitId);
  307 +// //清理流程未执行节点
  308 +// flowNode.getOutgoingFlows().clear();
  309 +// //建立新方向
  310 +// List<SequenceFlow> newSequenceFlowList = new ArrayList<>();
  311 +// SequenceFlow newSequenceFlow = new SequenceFlow();
  312 +// newSequenceFlow.setId(CommonUtil.getUUID());
  313 +// newSequenceFlow.setSourceFlowElement(flowNode);
  314 +// newSequenceFlow.setTargetFlowElement(ActivitiUtil.createEndEvent());
  315 +// newSequenceFlowList.add(newSequenceFlow);
  316 +// flowNode.setOutgoingFlows(newSequenceFlowList);
  317 +//
  318 +// }
  319 +//
  320 +// //同意,继续下一节点
  321 +// else if (isAgree == 1) {
  322 +// getTaskService().addComment(task.getId(), task.getProcessInstanceId(), msg);
  323 +// getTaskService().complete(task.getId());
  324 +// }
  325 +//
  326 +// return ResultUtil.success();
  327 +// }
  328 +
  329 + /**
  330 + * 删除流程
  331 + * @param deploymentId
  332 + * @return
  333 + */
  334 + public void deleteActivity(String deploymentId){
  335 + getRepositoryService().deleteDeployment(deploymentId, true);
  336 + //true 级联删除
  337 + }
  338 +
  339 + /**
  340 + * 根据启动key获取最新流程
  341 + * @param processId
  342 + * @return
  343 + */
  344 + public List<ProcessDefinition> getNewActivity(String processId){
  345 + List<ProcessDefinition> list = getRepositoryService()
  346 + .createProcessDefinitionQuery().processDefinitionKey(processId)
  347 + .orderByProcessDefinitionVersion().desc()//使用流程定义的版本降序排列
  348 + .list();
  349 + return list;
  350 + }
  351 +
  352 +}
  1 +#上传文件的路径,要带斜杠
  2 +web:
  3 + upload-path: upload/
  4 +server:
  5 + port: 10002
  6 + servlet:
  7 + context-path: ${SERVER_CONTEXTPATH:}
  8 +spring:
  9 + profiles:
  10 + active: dev
  11 + mvc:
  12 + #静态资源,设置上传文件的访问,
  13 + static-path-pattern: /**
  14 +# view:
  15 +# suffix: .html
  16 +## prefix: /templates/
  17 + thymeleaf:
  18 + cache: false
  19 + mode: LEGACYHTML5
  20 +
  21 + activiti:
  22 +# 检查bpmn文件
  23 + check-process-definitions: false
  24 + #创建任务流表,创建完成后关闭,每次应用启动不检查Activiti数据表是否存在及版本号是否匹配,提升应用启动速度
  25 + database-schema-update: true
  26 + #保存历史数据级别设置为full最高级别,便于历史数据的追溯
  27 + history-level: full
  28 + process-definition-location-prefix:
  29 +
  30 + jpa:
  31 + hibernate:
  32 + ddl-auto: update
  33 + show-sql: true
  34 + resources:
  35 + static-locations: classpath:/META-INF/resources/,classpath:/static,classpath:/resources/,classpath:/public/,file:${web.upload-path}
  36 +
  37 + application:
  38 + name: HQPT-PROCESS
  39 +
  40 + jackson:
  41 + serialization:
  42 + FAIL_ON_EMPTY_BEANS: false
  43 + #springboot2.0之后会把Date类型字段自动给转成UTC字符串 如:1990-11-26T16:00:00.000+0000,如果想转成时间戳在application.properties配置文件增加以下配置
  44 + date-format: yyyy-MM-dd HH:mm:ss
  45 + #时区必须要设置
  46 + time-zone: GMT+8
  47 + #ALWAYS的意思是即时属性为null,仍然也会输出这个key
  48 + default-property-inclusion: always
  49 +
  50 + cloud:
  51 + #eureka主机名,会在控制页面中显示
  52 + #DEV环境关闭注册。
  53 + features:
  54 + enabled: true
  55 + discovery:
  56 + enabled: true
  57 + service-registry:
  58 + auto-registration:
  59 + enabled: true
  60 +
  61 + datasource:
  62 + type: com.alibaba.druid.pool.DruidDataSource
  63 + #oracle
  64 +# driver-class-name: oracle.jdbc.OracleDriver
  65 +# url: jdbc:oracle:thin:@192.168.1.253:1522:ORCLL
  66 +# username: CGONMS
  67 +# password: vmvnv1v2
  68 + #spring datasource mysql,注意编码配置,缺少数据库编码配置容易引起中文入库乱码
  69 + #url: jdbc:mysql://127.0.0.1:3307/statistics?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true
  70 + url: jdbc:mysql://118.31.66.166:3306/HQPT_USER?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true
  71 + username: 110
  72 + password: QAHqCJf2kFYCLirM
  73 + driver-class-name: com.mysql.cj.jdbc.Driver
  74 + max-idle: 20
  75 + max-wait: 10000
  76 + min-idle: 5
  77 + initial-size: 5
  78 + #配置初始化大小/最小/最大
  79 + druid:
  80 + initial-size: 1
  81 + min-idle: 1
  82 + #最大并发连接数
  83 + max-active: 40
  84 + #获取连接等待超时时间
  85 + max-wait: 60000
  86 + #一个连接在池中最小生存的时间
  87 + min-evictable-idle-time-millis: 300000
  88 + #间隔多久进行一次检测,检测需要关闭的空闲连接
  89 + time-between-eviction-runs-millis: 60000
  90 + #mysql
  91 + validation-query: SELECT 1 FROM DUAL
  92 + #oracle
  93 +# validation-query: SELECT 'x' FROM DUAL
  94 + test-while-idle: true
  95 + test-on-borrow: false
  96 + test-on-return: false
  97 + default-auto-commit: true
  98 +
  99 +eureka:
  100 + instance:
  101 + #eureka服务器页面中status的请求路径
  102 + status-page-url: http://${eureka.instance.hostname}:${server.port}/
  103 + prefer-ip-address: true
  104 + instance-id: ${spring.cloud.client.ip-address}:${server.port}
  105 + hostname: ${spring.cloud.client.ip-address}
  106 + client:
  107 + #eureka注册中心服务器地址
  108 + service-url:
  109 +# defaultZone: http://127.0.0.1:12345/eureka/
  110 + defaultZone: http://192.168.1.53:12345/eureka/
  111 + registry-fetch-interval-seconds: 30
  112 + lease-renewal-interval-in-seconds: 15
  113 + lease-expiration-duration-in-seconds: 45
  114 +
  115 +
  116 +
  117 +mybatis:
  118 + mapper-locations: classpath:mapping/*.xml
  119 + type-aliases-package: com.sunyo.customer.order.activity.model
  120 +pagehelper:
  121 + #auto-dialect: true
  122 + #auto-runtime-dialect: true
  123 + helper-dialect: mysql
  124 + reasonable: true
  125 + support-methods-arguments: true
  126 + params: count=countSql
  127 +
  128 +#debug配置,debug或者为true的时候,logback才会记录和写入日志文件
  129 +trace: false
  130 +debug: false
  131 +
  132 +logging:
  133 + file:
  134 + path: ./logs/
  135 + name: system.log
  136 + config: config/logback-dev.xml
  137 + #转移到logback配置文件中
  138 + #level:
  139 + #org.apache.tomcat: info
  140 + #com.tianbo.warehouse.dao: DEBUG
  141 + #org.springframework.security: trace
  142 + #日志配置,输出到文本,
  143 +#Java Web Token 时效时间,单位秒
  144 +jwt:
  145 + max-alive: 300
  146 +
  147 +#自定义配置
  148 +custom:
  149 + #进港放行回执读取目录
  150 + receptDirectory: /Users/mrz/Downloads/rdp_temp/logs/回执报文样例/20191104
  151 + #回执解析成功后的备份目录
  152 + receptBakDir: /Users/mrz/Downloads/rdp_temp/logs/success
  153 + #解析错误报文的备份目录
  154 + errBakDir: /Users/mrz/Downloads/rdp_temp/logs/error
  155 + #回执转发目录
  156 + transmitDir: /Users/mrz/Downloads/rdp_temp/logs/transmit
  157 + #匹配技术回执正则
  158 + delTechnologyReceptMatch: CN_MT(.*)_1P0_460470678920X_(.*).xml
  159 +devops:
  160 + dir:
  161 + singlewindow-tcs-recept: D:\TCSSingleWindow\recive
  162 + tianbo-tcs-recept: D:\Data\Receive
  163 + cfps-subscribe-dir: D:\系统部署\imf_Warehouse_reader\xmlFromImf
  164 +#10079
  1 +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2 +<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
  3 + xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
  4 + xmlns:activiti="http://activiti.org/bpmn"
  5 + xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
  6 + xmlns:tns="http://www.activiti.org/test"
  7 + xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  8 + xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
  9 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  10 + expressionLanguage="http://www.w3.org/1999/XPath"
  11 + id="m1575793054911"
  12 + name=""
  13 + targetNamespace="http://www.activiti.org/test"
  14 + typeLanguage="http://www.w3.org/2001/XMLSchema">
  15 + <process xmlns="" id="customProcess" isClosed="false" isExecutable="true" name="工单流程"
  16 + processType="Public">
  17 + <startEvent id="_2" name="StartEvent"/>
  18 + <endEvent id="_3" name="EndEvent"/>
  19 + <userTask activiti:exclusive="true" id="processForm" name="客服工单"/>
  20 + <userTask activiti:exclusive="true" id="job" name="分配任务"/>
  21 + <sequenceFlow id="_6" sourceRef="_2" targetRef="processForm"/>
  22 + <sequenceFlow id="_7" sourceRef="processForm" targetRef="job"/>
  23 + <sequenceFlow id="_8" sourceRef="job" targetRef="_3"/>
  24 + </process>
  25 + <bpmndi:BPMNDiagram xmlns=""
  26 + documentation="background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"
  27 + id="Diagram-_1"
  28 + name="New Diagram">
  29 + <bpmndi:BPMNPlane bpmnElement="customProcess">
  30 + <bpmndi:BPMNShape bpmnElement="_2" id="Shape-_2">
  31 + <omgdc:Bounds height="32.0" width="32.0" x="115.0" y="65.0"/>
  32 + <bpmndi:BPMNLabel>
  33 + <omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
  34 + </bpmndi:BPMNLabel>
  35 + </bpmndi:BPMNShape>
  36 + <bpmndi:BPMNShape bpmnElement="_3" id="Shape-_3">
  37 + <omgdc:Bounds height="32.0" width="32.0" x="285.0" y="295.0"/>
  38 + <bpmndi:BPMNLabel>
  39 + <omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
  40 + </bpmndi:BPMNLabel>
  41 + </bpmndi:BPMNShape>
  42 + <bpmndi:BPMNShape bpmnElement="processForm" id="Shape-processForm">
  43 + <omgdc:Bounds height="55.0" width="85.0" x="260.0" y="65.0"/>
  44 + <bpmndi:BPMNLabel>
  45 + <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
  46 + </bpmndi:BPMNLabel>
  47 + </bpmndi:BPMNShape>
  48 + <bpmndi:BPMNShape bpmnElement="job" id="Shape-job">
  49 + <omgdc:Bounds height="55.0" width="85.0" x="270.0" y="165.0"/>
  50 + <bpmndi:BPMNLabel>
  51 + <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
  52 + </bpmndi:BPMNLabel>
  53 + </bpmndi:BPMNShape>
  54 + <bpmndi:BPMNEdge bpmnElement="_6" id="BPMNEdge__6" sourceElement="_2"
  55 + targetElement="processForm">
  56 + <omgdi:waypoint x="147.0" y="81.0"/>
  57 + <omgdi:waypoint x="260.0" y="92.5"/>
  58 + <bpmndi:BPMNLabel>
  59 + <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
  60 + </bpmndi:BPMNLabel>
  61 + </bpmndi:BPMNEdge>
  62 + <bpmndi:BPMNEdge bpmnElement="_7" id="BPMNEdge__7" sourceElement="processForm"
  63 + targetElement="job">
  64 + <omgdi:waypoint x="307.5" y="120.0"/>
  65 + <omgdi:waypoint x="307.5" y="165.0"/>
  66 + <bpmndi:BPMNLabel>
  67 + <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
  68 + </bpmndi:BPMNLabel>
  69 + </bpmndi:BPMNEdge>
  70 + <bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="job" targetElement="_3">
  71 + <omgdi:waypoint x="301.0" y="220.0"/>
  72 + <omgdi:waypoint x="301.0" y="295.0"/>
  73 + <bpmndi:BPMNLabel>
  74 + <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
  75 + </bpmndi:BPMNLabel>
  76 + </bpmndi:BPMNEdge>
  77 + </bpmndi:BPMNPlane>
  78 + </bpmndi:BPMNDiagram>
  79 +</definitions>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE generatorConfiguration
  3 + PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4 + "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5 +<generatorConfiguration>
  6 + <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
  7 + <classPathEntry location="/Users/mrz/Downloads/mybatis-generator-core-1.3.2/lib/mysql-connector-java-5.1.25-bin.jar"/>
  8 + <!--<classPathEntry location="/Users/mrz/Documents/maven/ojdbc6.jar"/>-->
  9 + <context id="DB2Tables" targetRuntime="MyBatis3">
  10 + <commentGenerator>
  11 + <property name="suppressDate" value="true"/>
  12 + <!-- 是否去除自动生成的注释 true:是 : false:否 -->
  13 + <property name="suppressAllComments" value="true"/>
  14 + </commentGenerator>
  15 + <!--数据库链接URL,用户名、密码 -->
  16 + <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  17 + connectionURL="jdbc:mysql://118.31.66.166:3306/HQPT_USER"
  18 + userId="110"
  19 + password="QAHqCJf2kFYCLirM">
  20 + </jdbcConnection>
  21 + <!--<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"-->
  22 + <!--connectionURL="jdbc:oracle:thin:@192.168.1.253:1522:ORCLL"-->
  23 + <!--userId="CGOASM"-->
  24 + <!--password="vmvnv1v2">-->
  25 + <!--</jdbcConnection>-->
  26 + <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
  27 + NUMERIC 类型解析为java.math.BigDecimal -->
  28 + <!--<javaTypeResolver>-->
  29 + <!--<property name="forceBigDecimals" value="true" />-->
  30 + <!--</javaTypeResolver>-->
  31 + <javaTypeResolver>
  32 + <property name="forceBigDecimals" value="false"/>
  33 + </javaTypeResolver>
  34 + <!-- 生成模型的包名和位置-->
  35 + <javaModelGenerator targetPackage="com.sunyo.customer.order.activity.model" targetProject="src/main/java">
  36 + <property name="enableSubPackages" value="true"/>
  37 + <property name="trimStrings" value="true"/>
  38 + </javaModelGenerator>
  39 + <!-- 生成映射文件的包名和位置-->
  40 + <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
  41 + <property name="enableSubPackages" value="true"/>
  42 + </sqlMapGenerator>
  43 + <!-- 生成DAO的包名和位置-->
  44 + <javaClientGenerator type="XMLMAPPER" targetPackage="com.sunyo.customer.order.activity.dao" targetProject="src/main/java">
  45 + <property name="enableSubPackages" value="true"/>
  46 + </javaClientGenerator>
  47 + <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
  48 + <table tableName="job" domainObjectName="JOB" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
  49 + </context>
  50 +</generatorConfiguration>
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3 +<mapper namespace="com.sunyo.customer.order.activity.dao.JOBMapper" >
  4 + <resultMap id="BaseResultMap" type="com.sunyo.customer.order.activity.model.JOB" >
  5 + <id column="auditId" property="auditid" jdbcType="VARCHAR" />
  6 + <result column="processInstanceId" property="processinstanceid" jdbcType="VARCHAR" />
  7 + <result column="processId" property="processid" jdbcType="VARCHAR" />
  8 + <result column="taskId" property="taskid" jdbcType="VARCHAR" />
  9 + <result column="userId" property="userid" jdbcType="INTEGER" />
  10 + <result column="auditResuld" property="auditresuld" jdbcType="TINYINT" />
  11 + <result column="coment" property="coment" jdbcType="VARCHAR" />
  12 + <result column="auditTime" property="audittime" jdbcType="TIMESTAMP" />
  13 + <association property="user" javaType="com.sunyo.customer.order.activity.model.USER" >
  14 + <id column="user_id" property="userId"/>
  15 + <result column="realName" property="realname"/>
  16 + </association>
  17 + <association property="process" javaType="com.sunyo.customer.order.activity.model.ProcessForm" >
  18 + <id column="formId" property="formid"/>
  19 + <result column="processName" property="processname"/>
  20 + </association>
  21 + </resultMap>
  22 + <sql id="Base_Column_List" >
  23 + auditId, processInstanceId, taskId, userId, auditResuld, coment, auditTime, processId
  24 + </sql>
  25 + <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
  26 + select
  27 + <include refid="Base_Column_List" />
  28 + from job
  29 + where auditId = #{auditid,jdbcType=VARCHAR}
  30 + </select>
  31 + <select id="selectAllWithUser" resultMap="BaseResultMap" >
  32 + SELECT job.*,process.formId,process.processName,u.realName from job job
  33 + LEFT JOIN processForm process
  34 + on
  35 + job.taskId = process.formId
  36 + LEFT JOIN users u
  37 + on job.userId = u.user_id
  38 + where 1=1
  39 + <if test="userid != null">
  40 + AND job.userId = #{userid,jdbcType=VARCHAR}
  41 + </if>
  42 + <if test="processid != null">
  43 + AND job.processId = #{processid,jdbcType=VARCHAR}
  44 + </if>
  45 + </select>
  46 + <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
  47 + delete from job
  48 + where auditId = #{auditid,jdbcType=VARCHAR}
  49 + </delete>
  50 + <insert id="insert" parameterType="com.sunyo.customer.order.activity.model.JOB" >
  51 + insert into job (auditId, processInstanceId, taskId,
  52 + userId, auditResuld, coment,
  53 + auditTime)
  54 + values (#{auditid,jdbcType=VARCHAR}, #{processinstanceid,jdbcType=VARCHAR}, #{taskid,jdbcType=VARCHAR},
  55 + #{userid,jdbcType=INTEGER}, #{auditresuld,jdbcType=TINYINT}, #{coment,jdbcType=VARCHAR},
  56 + #{audittime,jdbcType=TIMESTAMP})
  57 + </insert>
  58 + <insert id="insertSelective" parameterType="com.sunyo.customer.order.activity.model.JOB" >
  59 + insert into job
  60 + <trim prefix="(" suffix=")" suffixOverrides="," >
  61 + <if test="auditid != null" >
  62 + auditId,
  63 + </if>
  64 + <if test="processinstanceid != null" >
  65 + processInstanceId,
  66 + </if>
  67 + <if test="processid != null" >
  68 + processId,
  69 + </if>
  70 + <if test="taskid != null" >
  71 + taskId,
  72 + </if>
  73 + <if test="userid != null" >
  74 + userId,
  75 + </if>
  76 + <if test="auditresuld != null" >
  77 + auditResuld,
  78 + </if>
  79 + <if test="coment != null" >
  80 + coment,
  81 + </if>
  82 + <if test="audittime != null" >
  83 + auditTime,
  84 + </if>
  85 + </trim>
  86 + <trim prefix="values (" suffix=")" suffixOverrides="," >
  87 + <if test="auditid != null" >
  88 + #{auditid,jdbcType=VARCHAR},
  89 + </if>
  90 + <if test="processinstanceid != null" >
  91 + #{processinstanceid,jdbcType=VARCHAR},
  92 + </if>
  93 + <if test="processid != null" >
  94 + #{processid,jdbcType=VARCHAR},
  95 + </if>
  96 + <if test="taskid != null" >
  97 + #{taskid,jdbcType=VARCHAR},
  98 + </if>
  99 + <if test="userid != null" >
  100 + #{userid,jdbcType=INTEGER},
  101 + </if>
  102 + <if test="auditresuld != null" >
  103 + #{auditresuld,jdbcType=TINYINT},
  104 + </if>
  105 + <if test="coment != null" >
  106 + #{coment,jdbcType=VARCHAR},
  107 + </if>
  108 + <if test="audittime != null" >
  109 + #{audittime,jdbcType=TIMESTAMP},
  110 + </if>
  111 + </trim>
  112 + </insert>
  113 + <update id="updateByPrimaryKeySelective" parameterType="com.sunyo.customer.order.activity.model.JOB" >
  114 + update job
  115 + <set >
  116 + <if test="processinstanceid != null" >
  117 + processInstanceId = #{processinstanceid,jdbcType=VARCHAR},
  118 + </if>
  119 + <if test="processid != null" >
  120 + processId = #{processinstanceid,jdbcType=VARCHAR},
  121 + </if>
  122 + <if test="taskid != null" >
  123 + taskId = #{taskid,jdbcType=VARCHAR},
  124 + </if>
  125 + <if test="userid != null" >
  126 + userId = #{userid,jdbcType=INTEGER},
  127 + </if>
  128 + <if test="auditresuld != null" >
  129 + auditResuld = #{auditresuld,jdbcType=TINYINT},
  130 + </if>
  131 + <if test="coment != null" >
  132 + coment = #{coment,jdbcType=VARCHAR},
  133 + </if>
  134 + <if test="audittime != null" >
  135 + auditTime = #{audittime,jdbcType=TIMESTAMP},
  136 + </if>
  137 + </set>
  138 + where auditId = #{auditid,jdbcType=VARCHAR}
  139 + </update>
  140 + <update id="updateByPrimaryKey" parameterType="com.sunyo.customer.order.activity.model.JOB" >
  141 + update job
  142 + set processInstanceId = #{processinstanceid,jdbcType=VARCHAR},
  143 + taskId = #{taskid,jdbcType=VARCHAR},
  144 + userId = #{userid,jdbcType=INTEGER},
  145 + auditResuld = #{auditresuld,jdbcType=TINYINT},
  146 + coment = #{coment,jdbcType=VARCHAR},
  147 + auditTime = #{audittime,jdbcType=TIMESTAMP}
  148 + where auditId = #{auditid,jdbcType=VARCHAR}
  149 + </update>
  150 +
  151 + <update id="startJob" parameterType="com.sunyo.customer.order.activity.model.JOB" >
  152 + update job
  153 + set
  154 + userId = #{userid,jdbcType=INTEGER},
  155 + auditResuld = #{auditresuld,jdbcType=TINYINT},
  156 + coment = #{coment,jdbcType=VARCHAR}
  157 + where auditId = #{auditid,jdbcType=VARCHAR}
  158 + </update>
  159 +</mapper>
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3 +<mapper namespace="com.sunyo.customer.order.activity.dao.ProcessFormMapper" >
  4 + <resultMap id="BaseResultMap" type="com.sunyo.customer.order.activity.model.ProcessForm" >
  5 + <id column="formId" property="formid" jdbcType="VARCHAR" />
  6 + <id column="processInstanceId" property="processinstanceid" jdbcType="VARCHAR" />
  7 + <result column="userId" property="userid" jdbcType="INTEGER" />
  8 + <result column="processName" property="processname" jdbcType="VARCHAR" />
  9 + <result column="beginDate" property="begindate" jdbcType="TIMESTAMP" />
  10 + <result column="endDate" property="enddate" jdbcType="TIMESTAMP" />
  11 + <result column="vacationType" property="vacationtype" jdbcType="TINYINT" />
  12 + <result column="reason" property="reason" jdbcType="VARCHAR" />
  13 + <result column="processStatus" property="processstatus" jdbcType="TINYINT" />
  14 + <result column="createTime" property="createtime" jdbcType="TIMESTAMP" />
  15 + <result column="updateTime" property="updatetime" jdbcType="TIMESTAMP" />
  16 + <association property="user" javaType="com.sunyo.customer.order.activity.model.USER" >
  17 + <id column="user_id" property="userId"/>
  18 + <result column="realName" property="realname"/>
  19 + </association>
  20 + </resultMap>
  21 + <sql id="Base_Column_List" >
  22 + formId, processInstanceId, userId, processName, beginDate, endDate, vacationType,
  23 + reason, processStatus, createTime, updateTime
  24 + </sql>
  25 + <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="com.sunyo.customer.order.activity.model.ProcessForm" >
  26 + select
  27 + <include refid="Base_Column_List" />
  28 + from processForm
  29 + where formId = #{formid,jdbcType=VARCHAR}
  30 + and processInstanceId = #{processinstanceid,jdbcType=VARCHAR}
  31 + </select>
  32 + <select id="selectAllWithUser" resultMap="BaseResultMap" >
  33 + select
  34 + p.*,
  35 + u.realName
  36 + from processForm p
  37 + LEFT JOIN users u
  38 + ON p.userId = u.user_id
  39 + </select>
  40 + <delete id="deleteByPrimaryKey" parameterType="com.sunyo.customer.order.activity.model.ProcessForm" >
  41 + delete from processForm
  42 + where formId = #{formid,jdbcType=VARCHAR}
  43 + and processInstanceId = #{processinstanceid,jdbcType=VARCHAR}
  44 + </delete>
  45 + <insert id="insert" parameterType="com.sunyo.customer.order.activity.model.ProcessForm" >
  46 + insert into processForm (formId, processInstanceId, userId,
  47 + processName, beginDate, endDate,
  48 + vacationType, reason, processStatus,
  49 + createTime, updateTime)
  50 + values (#{formid,jdbcType=VARCHAR}, #{processinstanceid,jdbcType=VARCHAR}, #{userid,jdbcType=INTEGER},
  51 + #{processname,jdbcType=VARCHAR}, #{begindate,jdbcType=TIMESTAMP}, #{enddate,jdbcType=TIMESTAMP},
  52 + #{vacationtype,jdbcType=TINYINT}, #{reason,jdbcType=VARCHAR}, #{processstatus,jdbcType=TINYINT},
  53 + #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP})
  54 + </insert>
  55 + <insert id="insertSelective" parameterType="com.sunyo.customer.order.activity.model.ProcessForm" >
  56 + insert into processForm
  57 + <trim prefix="(" suffix=")" suffixOverrides="," >
  58 + <if test="formid != null" >
  59 + formId,
  60 + </if>
  61 + <if test="processinstanceid != null" >
  62 + processInstanceId,
  63 + </if>
  64 + <if test="userid != null" >
  65 + userId,
  66 + </if>
  67 + <if test="processname != null" >
  68 + processName,
  69 + </if>
  70 + <if test="begindate != null" >
  71 + beginDate,
  72 + </if>
  73 + <if test="enddate != null" >
  74 + endDate,
  75 + </if>
  76 + <if test="vacationtype != null" >
  77 + vacationType,
  78 + </if>
  79 + <if test="reason != null" >
  80 + reason,
  81 + </if>
  82 + <if test="processstatus != null" >
  83 + processStatus,
  84 + </if>
  85 + <if test="createtime != null" >
  86 + createTime,
  87 + </if>
  88 + <if test="updatetime != null" >
  89 + updateTime,
  90 + </if>
  91 + </trim>
  92 + <trim prefix="values (" suffix=")" suffixOverrides="," >
  93 + <if test="formid != null" >
  94 + #{formid,jdbcType=VARCHAR},
  95 + </if>
  96 + <if test="processinstanceid != null" >
  97 + #{processinstanceid,jdbcType=VARCHAR},
  98 + </if>
  99 + <if test="userid != null" >
  100 + #{userid,jdbcType=INTEGER},
  101 + </if>
  102 + <if test="processname != null" >
  103 + #{processname,jdbcType=VARCHAR},
  104 + </if>
  105 + <if test="begindate != null" >
  106 + #{begindate,jdbcType=TIMESTAMP},
  107 + </if>
  108 + <if test="enddate != null" >
  109 + #{enddate,jdbcType=TIMESTAMP},
  110 + </if>
  111 + <if test="vacationtype != null" >
  112 + #{vacationtype,jdbcType=TINYINT},
  113 + </if>
  114 + <if test="reason != null" >
  115 + #{reason,jdbcType=VARCHAR},
  116 + </if>
  117 + <if test="processstatus != null" >
  118 + #{processstatus,jdbcType=TINYINT},
  119 + </if>
  120 + <if test="createtime != null" >
  121 + #{createtime,jdbcType=TIMESTAMP},
  122 + </if>
  123 + <if test="updatetime != null" >
  124 + #{updatetime,jdbcType=TIMESTAMP},
  125 + </if>
  126 + </trim>
  127 + </insert>
  128 + <update id="updateByPrimaryKeySelective" parameterType="com.sunyo.customer.order.activity.model.ProcessForm" >
  129 + update processForm
  130 + <set >
  131 + <if test="userid != null" >
  132 + userId = #{userid,jdbcType=INTEGER},
  133 + </if>
  134 + <if test="processname != null" >
  135 + processName = #{processname,jdbcType=VARCHAR},
  136 + </if>
  137 + <if test="begindate != null" >
  138 + beginDate = #{begindate,jdbcType=TIMESTAMP},
  139 + </if>
  140 + <if test="enddate != null" >
  141 + endDate = #{enddate,jdbcType=TIMESTAMP},
  142 + </if>
  143 + <if test="vacationtype != null" >
  144 + vacationType = #{vacationtype,jdbcType=TINYINT},
  145 + </if>
  146 + <if test="reason != null" >
  147 + reason = #{reason,jdbcType=VARCHAR},
  148 + </if>
  149 + <if test="processstatus != null" >
  150 + processStatus = #{processstatus,jdbcType=TINYINT},
  151 + </if>
  152 + <if test="createtime != null" >
  153 + createTime = #{createtime,jdbcType=TIMESTAMP},
  154 + </if>
  155 + <if test="updatetime != null" >
  156 + updateTime = #{updatetime,jdbcType=TIMESTAMP},
  157 + </if>
  158 + </set>
  159 + where formId = #{formid,jdbcType=VARCHAR}
  160 + and processInstanceId = #{processinstanceid,jdbcType=VARCHAR}
  161 + </update>
  162 + <update id="updateByPrimaryKey" parameterType="com.sunyo.customer.order.activity.model.ProcessForm" >
  163 + update processForm
  164 + set userId = #{userid,jdbcType=INTEGER},
  165 + processName = #{processname,jdbcType=VARCHAR},
  166 + beginDate = #{begindate,jdbcType=TIMESTAMP},
  167 + endDate = #{enddate,jdbcType=TIMESTAMP},
  168 + vacationType = #{vacationtype,jdbcType=TINYINT},
  169 + reason = #{reason,jdbcType=VARCHAR},
  170 + processStatus = #{processstatus,jdbcType=TINYINT},
  171 + createTime = #{createtime,jdbcType=TIMESTAMP},
  172 + updateTime = #{updatetime,jdbcType=TIMESTAMP}
  173 + where formId = #{formid,jdbcType=VARCHAR}
  174 + and processInstanceId = #{processinstanceid,jdbcType=VARCHAR}
  175 + </update>
  176 +</mapper>
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3 +<mapper namespace="com.sunyo.customer.order.activity.dao.USERMapper" >
  4 + <resultMap id="BaseResultMap" type="com.sunyo.customer.order.activity.model.USER" >
  5 + <id column="user_id" property="userId" jdbcType="INTEGER" />
  6 + <result column="username" property="username" jdbcType="VARCHAR" />
  7 + <result column="password" property="password" jdbcType="VARCHAR" />
  8 + <result column="birthday" property="birthday" jdbcType="TIMESTAMP" />
  9 + <result column="sex" property="sex" jdbcType="CHAR" />
  10 + <result column="address" property="address" jdbcType="VARCHAR" />
  11 + <result column="state" property="state" jdbcType="BIT" />
  12 + <result column="mobilePhone" property="mobilephone" jdbcType="VARCHAR" />
  13 + <result column="creatTime" property="creattime" jdbcType="TIMESTAMP" />
  14 + <result column="updateTime" property="updatetime" jdbcType="TIMESTAMP" />
  15 + <result column="userFace" property="userface" jdbcType="VARCHAR" />
  16 + <result column="realName" property="realname" jdbcType="VARCHAR" />
  17 + <result column="email" property="email" jdbcType="VARCHAR" />
  18 + <result column="age" property="age" jdbcType="INTEGER" />
  19 + </resultMap>
  20 + <sql id="Base_Column_List" >
  21 + user_id, username, password, birthday, sex, address, state, mobilePhone, creatTime,
  22 + updateTime, userFace, realName, email, age
  23 + </sql>
  24 + <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
  25 + select
  26 + <include refid="Base_Column_List" />
  27 + from users
  28 + where user_id = #{userId,jdbcType=INTEGER}
  29 + </select>
  30 + <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
  31 + delete from users
  32 + where user_id = #{userId,jdbcType=INTEGER}
  33 + </delete>
  34 + <insert id="insert" parameterType="com.sunyo.customer.order.activity.model.USER" >
  35 + insert into users (user_id, username, password,
  36 + birthday, sex, address,
  37 + state, mobilePhone, creatTime,
  38 + updateTime, userFace, realName,
  39 + email, age)
  40 + values (#{userId,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
  41 + #{birthday,jdbcType=TIMESTAMP}, #{sex,jdbcType=CHAR}, #{address,jdbcType=VARCHAR},
  42 + #{state,jdbcType=BIT}, #{mobilephone,jdbcType=VARCHAR}, #{creattime,jdbcType=TIMESTAMP},
  43 + #{updatetime,jdbcType=TIMESTAMP}, #{userface,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR},
  44 + #{email,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})
  45 + </insert>
  46 + <insert id="insertSelective" parameterType="com.sunyo.customer.order.activity.model.USER" >
  47 + insert into users
  48 + <trim prefix="(" suffix=")" suffixOverrides="," >
  49 + <if test="userId != null" >
  50 + user_id,
  51 + </if>
  52 + <if test="username != null" >
  53 + username,
  54 + </if>
  55 + <if test="password != null" >
  56 + password,
  57 + </if>
  58 + <if test="birthday != null" >
  59 + birthday,
  60 + </if>
  61 + <if test="sex != null" >
  62 + sex,
  63 + </if>
  64 + <if test="address != null" >
  65 + address,
  66 + </if>
  67 + <if test="state != null" >
  68 + state,
  69 + </if>
  70 + <if test="mobilephone != null" >
  71 + mobilePhone,
  72 + </if>
  73 + <if test="creattime != null" >
  74 + creatTime,
  75 + </if>
  76 + <if test="updatetime != null" >
  77 + updateTime,
  78 + </if>
  79 + <if test="userface != null" >
  80 + userFace,
  81 + </if>
  82 + <if test="realname != null" >
  83 + realName,
  84 + </if>
  85 + <if test="email != null" >
  86 + email,
  87 + </if>
  88 + <if test="age != null" >
  89 + age,
  90 + </if>
  91 + </trim>
  92 + <trim prefix="values (" suffix=")" suffixOverrides="," >
  93 + <if test="userId != null" >
  94 + #{userId,jdbcType=INTEGER},
  95 + </if>
  96 + <if test="username != null" >
  97 + #{username,jdbcType=VARCHAR},
  98 + </if>
  99 + <if test="password != null" >
  100 + #{password,jdbcType=VARCHAR},
  101 + </if>
  102 + <if test="birthday != null" >
  103 + #{birthday,jdbcType=TIMESTAMP},
  104 + </if>
  105 + <if test="sex != null" >
  106 + #{sex,jdbcType=CHAR},
  107 + </if>
  108 + <if test="address != null" >
  109 + #{address,jdbcType=VARCHAR},
  110 + </if>
  111 + <if test="state != null" >
  112 + #{state,jdbcType=BIT},
  113 + </if>
  114 + <if test="mobilephone != null" >
  115 + #{mobilephone,jdbcType=VARCHAR},
  116 + </if>
  117 + <if test="creattime != null" >
  118 + #{creattime,jdbcType=TIMESTAMP},
  119 + </if>
  120 + <if test="updatetime != null" >
  121 + #{updatetime,jdbcType=TIMESTAMP},
  122 + </if>
  123 + <if test="userface != null" >
  124 + #{userface,jdbcType=VARCHAR},
  125 + </if>
  126 + <if test="realname != null" >
  127 + #{realname,jdbcType=VARCHAR},
  128 + </if>
  129 + <if test="email != null" >
  130 + #{email,jdbcType=VARCHAR},
  131 + </if>
  132 + <if test="age != null" >
  133 + #{age,jdbcType=INTEGER},
  134 + </if>
  135 + </trim>
  136 + </insert>
  137 + <update id="updateByPrimaryKeySelective" parameterType="com.sunyo.customer.order.activity.model.USER" >
  138 + update users
  139 + <set >
  140 + <if test="username != null" >
  141 + username = #{username,jdbcType=VARCHAR},
  142 + </if>
  143 + <if test="password != null" >
  144 + password = #{password,jdbcType=VARCHAR},
  145 + </if>
  146 + <if test="birthday != null" >
  147 + birthday = #{birthday,jdbcType=TIMESTAMP},
  148 + </if>
  149 + <if test="sex != null" >
  150 + sex = #{sex,jdbcType=CHAR},
  151 + </if>
  152 + <if test="address != null" >
  153 + address = #{address,jdbcType=VARCHAR},
  154 + </if>
  155 + <if test="state != null" >
  156 + state = #{state,jdbcType=BIT},
  157 + </if>
  158 + <if test="mobilephone != null" >
  159 + mobilePhone = #{mobilephone,jdbcType=VARCHAR},
  160 + </if>
  161 + <if test="creattime != null" >
  162 + creatTime = #{creattime,jdbcType=TIMESTAMP},
  163 + </if>
  164 + <if test="updatetime != null" >
  165 + updateTime = #{updatetime,jdbcType=TIMESTAMP},
  166 + </if>
  167 + <if test="userface != null" >
  168 + userFace = #{userface,jdbcType=VARCHAR},
  169 + </if>
  170 + <if test="realname != null" >
  171 + realName = #{realname,jdbcType=VARCHAR},
  172 + </if>
  173 + <if test="email != null" >
  174 + email = #{email,jdbcType=VARCHAR},
  175 + </if>
  176 + <if test="age != null" >
  177 + age = #{age,jdbcType=INTEGER},
  178 + </if>
  179 + </set>
  180 + where user_id = #{userId,jdbcType=INTEGER}
  181 + </update>
  182 + <update id="updateByPrimaryKey" parameterType="com.sunyo.customer.order.activity.model.USER" >
  183 + update users
  184 + set username = #{username,jdbcType=VARCHAR},
  185 + password = #{password,jdbcType=VARCHAR},
  186 + birthday = #{birthday,jdbcType=TIMESTAMP},
  187 + sex = #{sex,jdbcType=CHAR},
  188 + address = #{address,jdbcType=VARCHAR},
  189 + state = #{state,jdbcType=BIT},
  190 + mobilePhone = #{mobilephone,jdbcType=VARCHAR},
  191 + creatTime = #{creattime,jdbcType=TIMESTAMP},
  192 + updateTime = #{updatetime,jdbcType=TIMESTAMP},
  193 + userFace = #{userface,jdbcType=VARCHAR},
  194 + realName = #{realname,jdbcType=VARCHAR},
  195 + email = #{email,jdbcType=VARCHAR},
  196 + age = #{age,jdbcType=INTEGER}
  197 + where user_id = #{userId,jdbcType=INTEGER}
  198 + </update>
  199 +</mapper>
  1 +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2 +<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
  3 + xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
  4 + xmlns:activiti="http://activiti.org/bpmn"
  5 + xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
  6 + xmlns:tns="http://www.activiti.org/test"
  7 + xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  8 + xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
  9 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  10 + expressionLanguage="http://www.w3.org/1999/XPath"
  11 + id="m1575793054911"
  12 + name=""
  13 + targetNamespace="http://www.activiti.org/test"
  14 + typeLanguage="http://www.w3.org/2001/XMLSchema">
  15 + <process id="customProcess" isClosed="false" isExecutable="true" name="工单流程"
  16 + processType="Public">
  17 + <startEvent id="_2" name="StartEvent"/>
  18 + <endEvent id="_3" name="EndEvent"/>
  19 + <userTask activiti:exclusive="true" id="processForm" name="客服工单"/>
  20 + <userTask activiti:exclusive="true" id="job" name="分配任务"/>
  21 + <sequenceFlow id="_6" sourceRef="_2" targetRef="processForm"/>
  22 + <sequenceFlow id="_7" sourceRef="processForm" targetRef="job"/>
  23 + <sequenceFlow id="_8" sourceRef="job" targetRef="_3"/>
  24 + </process>
  25 + <bpmndi:BPMNDiagram xmlns=""
  26 + documentation="background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"
  27 + id="Diagram-_1"
  28 + name="New Diagram">
  29 + <bpmndi:BPMNPlane bpmnElement="customProcess">
  30 + <bpmndi:BPMNShape bpmnElement="_2" id="Shape-_2">
  31 + <omgdc:Bounds height="32.0" width="32.0" x="115.0" y="65.0"/>
  32 + <bpmndi:BPMNLabel>
  33 + <omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
  34 + </bpmndi:BPMNLabel>
  35 + </bpmndi:BPMNShape>
  36 + <bpmndi:BPMNShape bpmnElement="_3" id="Shape-_3">
  37 + <omgdc:Bounds height="32.0" width="32.0" x="285.0" y="295.0"/>
  38 + <bpmndi:BPMNLabel>
  39 + <omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
  40 + </bpmndi:BPMNLabel>
  41 + </bpmndi:BPMNShape>
  42 + <bpmndi:BPMNShape bpmnElement="processForm" id="Shape-processForm">
  43 + <omgdc:Bounds height="55.0" width="85.0" x="260.0" y="65.0"/>
  44 + <bpmndi:BPMNLabel>
  45 + <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
  46 + </bpmndi:BPMNLabel>
  47 + </bpmndi:BPMNShape>
  48 + <bpmndi:BPMNShape bpmnElement="job" id="Shape-job">
  49 + <omgdc:Bounds height="55.0" width="85.0" x="270.0" y="165.0"/>
  50 + <bpmndi:BPMNLabel>
  51 + <omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
  52 + </bpmndi:BPMNLabel>
  53 + </bpmndi:BPMNShape>
  54 + <bpmndi:BPMNEdge bpmnElement="_6" id="BPMNEdge__6" sourceElement="_2"
  55 + targetElement="processForm">
  56 + <omgdi:waypoint x="147.0" y="81.0"/>
  57 + <omgdi:waypoint x="260.0" y="92.5"/>
  58 + <bpmndi:BPMNLabel>
  59 + <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
  60 + </bpmndi:BPMNLabel>
  61 + </bpmndi:BPMNEdge>
  62 + <bpmndi:BPMNEdge bpmnElement="_7" id="BPMNEdge__7" sourceElement="processForm"
  63 + targetElement="job">
  64 + <omgdi:waypoint x="307.5" y="120.0"/>
  65 + <omgdi:waypoint x="307.5" y="165.0"/>
  66 + <bpmndi:BPMNLabel>
  67 + <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
  68 + </bpmndi:BPMNLabel>
  69 + </bpmndi:BPMNEdge>
  70 + <bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="job" targetElement="_3">
  71 + <omgdi:waypoint x="301.0" y="220.0"/>
  72 + <omgdi:waypoint x="301.0" y="295.0"/>
  73 + <bpmndi:BPMNLabel>
  74 + <omgdc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
  75 + </bpmndi:BPMNLabel>
  76 + </bpmndi:BPMNEdge>
  77 + </bpmndi:BPMNPlane>
  78 + </bpmndi:BPMNDiagram>
  79 +</definitions>
  1 +<dec:DecMessage Version="3.1" xmlns:dec="http://www.chinaport.gov.cn/dec">
  2 + <dec:DecHead>
  3 + <!--Optional:-->
  4 + <dec:SeqNo>stringstringstring</dec:SeqNo>
  5 + <dec:IEFlag>string</dec:IEFlag>
  6 + <!--Optional:-->
  7 + <dec:Type>st</dec:Type>
  8 + <dec:AgentCode>string</dec:AgentCode>
  9 + <dec:AgentName>string</dec:AgentName>
  10 + <!--Optional:-->
  11 + <dec:ApprNo>string</dec:ApprNo>
  12 + <!--Optional:-->
  13 + <dec:BillNo>string</dec:BillNo>
  14 + <!--Optional:-->
  15 + <dec:ContrNo>string</dec:ContrNo>
  16 + <dec:CustomMaster>stri</dec:CustomMaster>
  17 + <!--Optional:-->
  18 + <dec:CutMode>str</dec:CutMode>
  19 + <dec:DistinatePort>stri</dec:DistinatePort>
  20 + <!--Optional:-->
  21 + <dec:FeeCurr>str</dec:FeeCurr>
  22 + <!--Optional:-->
  23 + <dec:FeeMark>s</dec:FeeMark>
  24 + <!--Optional:-->
  25 + <dec:FeeRate>string</dec:FeeRate>
  26 + <dec:GrossWet>string</dec:GrossWet>
  27 + <!--Optional:-->
  28 + <dec:IEDate>stringst</dec:IEDate>
  29 + <!--Optional:-->
  30 + <dec:IEPort>stri</dec:IEPort>
  31 + <!--Optional:-->
  32 + <dec:InsurCurr>str</dec:InsurCurr>
  33 + <!--Optional:-->
  34 + <dec:InsurMark>s</dec:InsurMark>
  35 + <!--Optional:-->
  36 + <dec:InsurRate>string</dec:InsurRate>
  37 + <!--Optional:-->
  38 + <dec:LicenseNo>string</dec:LicenseNo>
  39 + <!--Optional:-->
  40 + <dec:ManualNo>string</dec:ManualNo>
  41 + <dec:NetWt>string</dec:NetWt>
  42 + <!--Optional:-->
  43 + <dec:NoteS>string</dec:NoteS>
  44 + <!--Optional:-->
  45 + <dec:OtherCurr>str</dec:OtherCurr>
  46 + <!--Optional:-->
  47 + <dec:OtherMark>s</dec:OtherMark>
  48 + <!--Optional:-->
  49 + <dec:OtherRate>string</dec:OtherRate>
  50 + <!--Optional:-->
  51 + <dec:OwnerCode>string</dec:OwnerCode>
  52 + <dec:OwnerName>string</dec:OwnerName>
  53 + <dec:PackNo>string</dec:PackNo>
  54 + <dec:TradeCode>string</dec:TradeCode>
  55 + <dec:TradeCountry>str</dec:TradeCountry>
  56 + <dec:TradeMode>stri</dec:TradeMode>
  57 + <dec:TradeName>string</dec:TradeName>
  58 + <dec:TrafMode>s</dec:TrafMode>
  59 + <!--Optional:-->
  60 + <dec:TrafName>string</dec:TrafName>
  61 + <!--Optional:-->
  62 + <dec:TransMode>s</dec:TransMode>
  63 + <dec:WrapType>s</dec:WrapType>
  64 + <!--Optional:-->
  65 + <dec:EntryId>stringstringstring</dec:EntryId>
  66 + <!--Optional:-->
  67 + <dec:PreEntryId>stringstr</dec:PreEntryId>
  68 + <dec:EdiId>s</dec:EdiId>
  69 + <!--Optional:-->
  70 + <dec:Risk>string</dec:Risk>
  71 + <dec:CopName>string</dec:CopName>
  72 + <!--Optional:-->
  73 + <dec:CopCode>stringstr</dec:CopCode>
  74 + <dec:EntryType>s</dec:EntryType>
  75 + <!--Optional:-->
  76 + <dec:PDate>string</dec:PDate>
  77 + <!--Optional:-->
  78 + <dec:TypistNo>string</dec:TypistNo>
  79 + <!--Optional:-->
  80 + <dec:InputerName>string</dec:InputerName>
  81 + <!--Optional:-->
  82 + <dec:PartenerID>string</dec:PartenerID>
  83 + <!--Optional:-->
  84 + <dec:TgdNo>stringstringstring</dec:TgdNo>
  85 + <!--Optional:-->
  86 + <dec:DataSource>strin</dec:DataSource>
  87 + <dec:DeclTrnRel>s</dec:DeclTrnRel>
  88 + <!--Optional:-->
  89 + <dec:ChkSurety>s</dec:ChkSurety>
  90 + <!--Optional:-->
  91 + <dec:BillType>s</dec:BillType>
  92 + <!--Optional:-->
  93 + <dec:CopCodeScc>stringstringstring</dec:CopCodeScc>
  94 + <!--Optional:-->
  95 + <dec:OwnerCodeScc>string</dec:OwnerCodeScc>
  96 + <!--Optional:-->
  97 + <dec:AgentCodeScc>string</dec:AgentCodeScc>
  98 + <!--Optional:-->
  99 + <dec:TradeCoScc>string</dec:TradeCoScc>
  100 + <dec:PromiseItmes>string</dec:PromiseItmes>
  101 + <dec:TradeAreaCode>str</dec:TradeAreaCode>
  102 + <!--Optional:-->
  103 + <dec:CheckFlow>s</dec:CheckFlow>
  104 + <!--Optional:-->
  105 + <dec:TaxAaminMark>s</dec:TaxAaminMark>
  106 + <!--Optional:-->
  107 + <dec:MarkNo>string</dec:MarkNo>
  108 + <dec:DespPortCode>string</dec:DespPortCode>
  109 + <dec:EntyPortCode>string</dec:EntyPortCode>
  110 + <dec:GoodsPlace>string</dec:GoodsPlace>
  111 + <!--Optional:-->
  112 + <dec:BLNo>string</dec:BLNo>
  113 + <!--Optional:-->
  114 + <dec:InspOrgCode>string</dec:InspOrgCode>
  115 + <!--Optional:-->
  116 + <dec:SpecDeclFlag>string</dec:SpecDeclFlag>
  117 + <!--Optional:-->
  118 + <dec:PurpOrgCode>string</dec:PurpOrgCode>
  119 + <!--Optional:-->
  120 + <dec:DespDate>string</dec:DespDate>
  121 + <!--Optional:-->
  122 + <dec:CmplDschrgDt>string</dec:CmplDschrgDt>
  123 + <!--Optional:-->
  124 + <dec:CorrelationReasonFlag>st</dec:CorrelationReasonFlag>
  125 + <!--Optional:-->
  126 + <dec:VsaOrgCode>string</dec:VsaOrgCode>
  127 + <!--Optional:-->
  128 + <dec:OrigBoxFlag>s</dec:OrigBoxFlag>
  129 + <dec:DeclareName>string</dec:DeclareName>
  130 + <dec:NoOtherPack>s</dec:NoOtherPack>
  131 + <!--Optional:-->
  132 + <dec:OrgCode>string</dec:OrgCode>
  133 + <!--Optional:-->
  134 + <dec:OverseasConsignorCode>string</dec:OverseasConsignorCode>
  135 + <!--Optional:-->
  136 + <dec:OverseasConsignorCname>string</dec:OverseasConsignorCname>
  137 + <!--Optional:-->
  138 + <dec:OverseasConsignorEname>string</dec:OverseasConsignorEname>
  139 + <!--Optional:-->
  140 + <dec:OverseasConsignorAddr>string</dec:OverseasConsignorAddr>
  141 + <!--Optional:-->
  142 + <dec:OverseasConsigneeCode>string</dec:OverseasConsigneeCode>
  143 + <!--Optional:-->
  144 + <dec:OverseasConsigneeEname>string</dec:OverseasConsigneeEname>
  145 + <!--Optional:-->
  146 + <dec:DomesticConsigneeEname>string</dec:DomesticConsigneeEname>
  147 + <!--Optional:-->
  148 + <dec:CorrelationNo>string</dec:CorrelationNo>
  149 + <!--Optional:-->
  150 + <dec:EdiRemark2>string</dec:EdiRemark2>
  151 + <!--Optional:-->
  152 + <dec:EdiRemark>string</dec:EdiRemark>
  153 + </dec:DecHead>
  154 + <dec:DecLists>
  155 + <!--0 to 50 repetitions:-->
  156 + <dec:DecList>
  157 + <!--Optional:-->
  158 + <dec:ClassMark>s</dec:ClassMark>
  159 + <dec:CodeTS>stringstri</dec:CodeTS>
  160 + <!--Optional:-->
  161 + <dec:ContrItem>string</dec:ContrItem>
  162 + <dec:DeclPrice>string</dec:DeclPrice>
  163 + <!--Optional:-->
  164 + <dec:DutyMode>string</dec:DutyMode>
  165 + <!--Optional:-->
  166 + <dec:Factor>string</dec:Factor>
  167 + <!--Optional:-->
  168 + <dec:GModel>string</dec:GModel>
  169 + <dec:GName>string</dec:GName>
  170 + <dec:GNo>string</dec:GNo>
  171 + <dec:OriginCountry>str</dec:OriginCountry>
  172 + <!--Optional:-->
  173 + <dec:TradeCurr>string</dec:TradeCurr>
  174 + <dec:DeclTotal>string</dec:DeclTotal>
  175 + <dec:GQty>string</dec:GQty>
  176 + <!--Optional:-->
  177 + <dec:FirstQty>string</dec:FirstQty>
  178 + <!--Optional:-->
  179 + <dec:SecondQty>string</dec:SecondQty>
  180 + <!--Optional:-->
  181 + <dec:GUnit>str</dec:GUnit>
  182 + <!--Optional:-->
  183 + <dec:FirstUnit>str</dec:FirstUnit>
  184 + <!--Optional:-->
  185 + <dec:SecondUnit>str</dec:SecondUnit>
  186 + <!--Optional:-->
  187 + <dec:UseTo>st</dec:UseTo>
  188 + <!--Optional:-->
  189 + <dec:WorkUsd>string</dec:WorkUsd>
  190 + <!--Optional:-->
  191 + <dec:ExgNo>string</dec:ExgNo>
  192 + <!--Optional:-->
  193 + <dec:ExgVersion>string</dec:ExgVersion>
  194 + <dec:DestinationCountry>str</dec:DestinationCountry>
  195 + <dec:CiqCode>string</dec:CiqCode>
  196 + <!--Optional:-->
  197 + <dec:DeclGoodsEname>string</dec:DeclGoodsEname>
  198 + <!--Optional:-->
  199 + <dec:OrigPlaceCode>string</dec:OrigPlaceCode>
  200 + <!--Optional:-->
  201 + <dec:Purpose>stri</dec:Purpose>
  202 + <!--Optional:-->
  203 + <dec:ProdValidDt>string</dec:ProdValidDt>
  204 + <!--Optional:-->
  205 + <dec:ProdQgp>string</dec:ProdQgp>
  206 + <!--Optional:-->
  207 + <dec:GoodsAttr>string</dec:GoodsAttr>
  208 + <!--Optional:-->
  209 + <dec:Stuff>string</dec:Stuff>
  210 + <!--Optional:-->
  211 + <dec:Uncode>string</dec:Uncode>
  212 + <!--Optional:-->
  213 + <dec:DangName>string</dec:DangName>
  214 + <!--Optional:-->
  215 + <dec:DangPackType>stri</dec:DangPackType>
  216 + <!--Optional:-->
  217 + <dec:DangPackSpec>string</dec:DangPackSpec>
  218 + <!--Optional:-->
  219 + <dec:EngManEntCnm>string</dec:EngManEntCnm>
  220 + <!--Optional:-->
  221 + <dec:NoDangFlag>s</dec:NoDangFlag>
  222 + <!--Optional:-->
  223 + <dec:DestCode>string</dec:DestCode>
  224 + <!--Optional:-->
  225 + <dec:GoodsSpec>string</dec:GoodsSpec>
  226 + <!--Optional:-->
  227 + <dec:GoodsModel>string</dec:GoodsModel>
  228 + <!--Optional:-->
  229 + <dec:GoodsBrand>string</dec:GoodsBrand>
  230 + <!--Optional:-->
  231 + <dec:ProduceDate>string</dec:ProduceDate>
  232 + <!--Optional:-->
  233 + <dec:ProdBatchNo>string</dec:ProdBatchNo>
  234 + <!--Optional:-->
  235 + <dec:DistrictCode>string</dec:DistrictCode>
  236 + <!--Optional:-->
  237 + <dec:CiqName>string</dec:CiqName>
  238 + <!--Optional:-->
  239 + <dec:DecGoodsLimits>
  240 + <!--Zero or more repetitions:-->
  241 + <dec:DecGoodsLimit>
  242 + <dec:GoodsNo>string</dec:GoodsNo>
  243 + <dec:LicTypeCode>strin</dec:LicTypeCode>
  244 + <!--Optional:-->
  245 + <dec:LicenceNo>string</dec:LicenceNo>
  246 + <!--Optional:-->
  247 + <dec:LicWrtofDetailNo>st</dec:LicWrtofDetailNo>
  248 + <!--Optional:-->
  249 + <dec:LicWrtofQty>string</dec:LicWrtofQty>
  250 + <!--Zero or more repetitions:-->
  251 + <dec:DecGoodsLimitVin>
  252 + <dec:LicenceNo>string</dec:LicenceNo>
  253 + <dec:LicTypeCode>strin</dec:LicTypeCode>
  254 + <dec:VinNo>strin</dec:VinNo>
  255 + <!--Optional:-->
  256 + <dec:BillLadDate>string</dec:BillLadDate>
  257 + <!--Optional:-->
  258 + <dec:QualityQgp>string</dec:QualityQgp>
  259 + <!--Optional:-->
  260 + <dec:MotorNo>string</dec:MotorNo>
  261 + <!--Optional:-->
  262 + <dec:VinCode>string</dec:VinCode>
  263 + <!--Optional:-->
  264 + <dec:ChassisNo>string</dec:ChassisNo>
  265 + <!--Optional:-->
  266 + <dec:InvoiceNum>string</dec:InvoiceNum>
  267 + <!--Optional:-->
  268 + <dec:ProdCnnm>string</dec:ProdCnnm>
  269 + <!--Optional:-->
  270 + <dec:ProdEnnm>string</dec:ProdEnnm>
  271 + <!--Optional:-->
  272 + <dec:ModelEn>string</dec:ModelEn>
  273 + <!--Optional:-->
  274 + <dec:PricePerUnit>string</dec:PricePerUnit>
  275 + </dec:DecGoodsLimitVin>
  276 + </dec:DecGoodsLimit>
  277 + </dec:DecGoodsLimits>
  278 + <!--Optional:-->
  279 + <dec:MnufctrRegNo>string</dec:MnufctrRegNo>
  280 + <!--Optional:-->
  281 + <dec:MnufctrRegName>string</dec:MnufctrRegName>
  282 + </dec:DecList>
  283 + </dec:DecLists>
  284 + <dec:DecContainers>
  285 + <!--0 to 500 repetitions:-->
  286 + <dec:Container>
  287 + <dec:ContainerId>string</dec:ContainerId>
  288 + <dec:ContainerMd>str</dec:ContainerMd>
  289 + <!--Optional:-->
  290 + <dec:GoodsNo>string</dec:GoodsNo>
  291 + <!--Optional:-->
  292 + <dec:LclFlag>s</dec:LclFlag>
  293 + <!--Optional:-->
  294 + <dec:GoodsContaWt>string</dec:GoodsContaWt>
  295 + </dec:Container>
  296 + </dec:DecContainers>
  297 + <dec:DecLicenseDocus>
  298 + <!--0 to 7 repetitions:-->
  299 + <dec:LicenseDocu>
  300 + <dec:DocuCode>s</dec:DocuCode>
  301 + <dec:CertCode>string</dec:CertCode>
  302 + </dec:LicenseDocu>
  303 + </dec:DecLicenseDocus>
  304 + <!--Optional:-->
  305 + <dec:DecRequestCerts>
  306 + <!--Zero or more repetitions:-->
  307 + <dec:DecRequestCert>
  308 + <dec:AppCertCode>string</dec:AppCertCode>
  309 + <dec:ApplOri>string</dec:ApplOri>
  310 + <dec:ApplCopyQuan>string</dec:ApplCopyQuan>
  311 + </dec:DecRequestCert>
  312 + </dec:DecRequestCerts>
  313 + <!--Optional:-->
  314 + <dec:DecOtherPacks>
  315 + <!--Zero or more repetitions:-->
  316 + <dec:DecOtherPack>
  317 + <dec:PackQty>string</dec:PackQty>
  318 + <dec:PackType>string</dec:PackType>
  319 + </dec:DecOtherPack>
  320 + </dec:DecOtherPacks>
  321 + <!--Optional:-->
  322 + <dec:DecCopLimits>
  323 + <!--Zero or more repetitions:-->
  324 + <dec:DecCopLimit>
  325 + <!--Optional:-->
  326 + <dec:EntQualifNo>string</dec:EntQualifNo>
  327 + <dec:EntQualifTypeCode>strin</dec:EntQualifTypeCode>
  328 + </dec:DecCopLimit>
  329 + </dec:DecCopLimits>
  330 + <!--Optional:-->
  331 + <dec:DecUsers>
  332 + <!--Zero or more repetitions:-->
  333 + <dec:DecUser>
  334 + <!--Optional:-->
  335 + <dec:UseOrgPersonCode>string</dec:UseOrgPersonCode>
  336 + <!--Optional:-->
  337 + <dec:UseOrgPersonTel>strin</dec:UseOrgPersonTel>
  338 + </dec:DecUser>
  339 + </dec:DecUsers>
  340 + <!--Optional:-->
  341 + <dec:DecMarkLobs>
  342 + <!--Zero or more repetitions:-->
  343 + <dec:DecMarkLob>
  344 + <dec:AttachName>string</dec:AttachName>
  345 + <!--Optional:-->
  346 + <dec:AttachType>st</dec:AttachType>
  347 + <dec:Attachment>65</dec:Attachment>
  348 + </dec:DecMarkLob>
  349 + </dec:DecMarkLobs>
  350 + <dec:DecFreeTxt>
  351 + <!--Optional:-->
  352 + <dec:RelId>string</dec:RelId>
  353 + <!--Optional:-->
  354 + <dec:RelManNo>stringstring</dec:RelManNo>
  355 + <!--Optional:-->
  356 + <dec:BonNo>string</dec:BonNo>
  357 + <!--Optional:-->
  358 + <dec:VoyNo>string</dec:VoyNo>
  359 + <!--Optional:-->
  360 + <dec:DecBpNo>string</dec:DecBpNo>
  361 + <!--Optional:-->
  362 + <dec:CusFie>string</dec:CusFie>
  363 + <!--Optional:-->
  364 + <dec:DecNo>string</dec:DecNo>
  365 + </dec:DecFreeTxt>
  366 + <dec:DecSign>
  367 + <dec:OperType>s</dec:OperType>
  368 + <!--Optional:-->
  369 + <dec:ICCode>stringstrings</dec:ICCode>
  370 + <!--Optional:-->
  371 + <dec:CopCode>stringstr</dec:CopCode>
  372 + <!--Optional:-->
  373 + <dec:OperName>string</dec:OperName>
  374 + <dec:ClientSeqNo>string</dec:ClientSeqNo>
  375 + <dec:Sign>string</dec:Sign>
  376 + <dec:SignDate>stringstringstri</dec:SignDate>
  377 + <!--Optional:-->
  378 + <dec:Certificate>string</dec:Certificate>
  379 + <dec:HostId>string</dec:HostId>
  380 + <!--Optional:-->
  381 + <dec:BillSeqNo>string</dec:BillSeqNo>
  382 + <!--Optional:-->
  383 + <dec:DomainId>s</dec:DomainId>
  384 + <!--Optional:-->
  385 + <dec:Note>string</dec:Note>
  386 + </dec:DecSign>
  387 + <!--Optional:-->
  388 + <dec:TrnHead>
  389 + <!--Optional:-->
  390 + <dec:TrnPreId>stringstringstring</dec:TrnPreId>
  391 + <!--Optional:-->
  392 + <dec:TransNo>stringstringstri</dec:TransNo>
  393 + <!--Optional:-->
  394 + <dec:TurnNo>stringstringstri</dec:TurnNo>
  395 + <!--Optional:-->
  396 + <dec:NativeTrafMode>s</dec:NativeTrafMode>
  397 + <!--Optional:-->
  398 + <dec:TrafCustomsNo>stringstrings</dec:TrafCustomsNo>
  399 + <!--Optional:-->
  400 + <dec:NativeShipName>string</dec:NativeShipName>
  401 + <!--Optional:-->
  402 + <dec:NativeVoyageNo>stringstringstringstringstringst</dec:NativeVoyageNo>
  403 + <!--Optional:-->
  404 + <dec:ContractorName>string</dec:ContractorName>
  405 + <!--Optional:-->
  406 + <dec:ContractorCode>stringstri</dec:ContractorCode>
  407 + <!--Optional:-->
  408 + <dec:TransFlag>st</dec:TransFlag>
  409 + <!--Optional:-->
  410 + <dec:ValidTime>stringst</dec:ValidTime>
  411 + <!--Optional:-->
  412 + <dec:ESealFlag>s</dec:ESealFlag>
  413 + <!--Optional:-->
  414 + <dec:Notes>string</dec:Notes>
  415 + <!--Optional:-->
  416 + <dec:TrnType>s</dec:TrnType>
  417 + <!--Optional:-->
  418 + <dec:ApplCodeScc>stringstringstring</dec:ApplCodeScc>
  419 + </dec:TrnHead>
  420 + <!--Optional:-->
  421 + <dec:TrnList>
  422 + <!--Optional:-->
  423 + <dec:TrafMode>s</dec:TrafMode>
  424 + <!--Optional:-->
  425 + <dec:ShipId>string</dec:ShipId>
  426 + <!--Optional:-->
  427 + <dec:ShipNameEn>string</dec:ShipNameEn>
  428 + <!--Optional:-->
  429 + <dec:VoyageNo>string</dec:VoyageNo>
  430 + <!--Optional:-->
  431 + <dec:BillNo>string</dec:BillNo>
  432 + <!--Optional:-->
  433 + <dec:IEDate>stringst</dec:IEDate>
  434 + </dec:TrnList>
  435 + <!--Optional:-->
  436 + <dec:TrnContainers>
  437 + <!--0 to 500 repetitions:-->
  438 + <dec:TrnContainer>
  439 + <dec:ContaNo>string</dec:ContaNo>
  440 + <!--Optional:-->
  441 + <dec:ContaSn>string</dec:ContaSn>
  442 + <!--Optional:-->
  443 + <dec:ContaModel>stri</dec:ContaModel>
  444 + <!--Optional:-->
  445 + <dec:SealNo>string</dec:SealNo>
  446 + <!--Optional:-->
  447 + <dec:TransName>string</dec:TransName>
  448 + <!--Optional:-->
  449 + <dec:TransWeight>string</dec:TransWeight>
  450 + </dec:TrnContainer>
  451 + </dec:TrnContainers>
  452 + <!--Optional:-->
  453 + <dec:TrnContaGoodsList>
  454 + <!--Zero or more repetitions:-->
  455 + <dec:TrnContaGoods>
  456 + <dec:ContaNo>string</dec:ContaNo>
  457 + <dec:GNo>string</dec:GNo>
  458 + <dec:ContaGoodsCount>string</dec:ContaGoodsCount>
  459 + <dec:ContaGoodsWeight>string</dec:ContaGoodsWeight>
  460 + </dec:TrnContaGoods>
  461 + </dec:TrnContaGoodsList>
  462 + <!--Optional:-->
  463 + <dec:DecSupplementLists>
  464 + <!--0 to 60 repetitions:-->
  465 + <dec:DecSupplementList>
  466 + <dec:GNo>st</dec:GNo>
  467 + <dec:SupType>s</dec:SupType>
  468 + <dec:BrandCN>string</dec:BrandCN>
  469 + <dec:BrandEN>string</dec:BrandEN>
  470 + <dec:Buyer>string</dec:Buyer>
  471 + <dec:BuyerContact>string</dec:BuyerContact>
  472 + <dec:BuyerAddr>string</dec:BuyerAddr>
  473 + <dec:BuyerTel>string</dec:BuyerTel>
  474 + <dec:Seller>string</dec:Seller>
  475 + <dec:SellerContact>string</dec:SellerContact>
  476 + <dec:SellerAddr>string</dec:SellerAddr>
  477 + <dec:SellerTel>string</dec:SellerTel>
  478 + <dec:Factory>string</dec:Factory>
  479 + <dec:FactoryContact>string</dec:FactoryContact>
  480 + <dec:FactoryAddr>string</dec:FactoryAddr>
  481 + <dec:FactoryTel>string</dec:FactoryTel>
  482 + <dec:ContrNo>string</dec:ContrNo>
  483 + <dec:ContrDate>string</dec:ContrDate>
  484 + <dec:InvoiceNo>string</dec:InvoiceNo>
  485 + <dec:InvoiceDate>string</dec:InvoiceDate>
  486 + <dec:I_BabRel>string</dec:I_BabRel>
  487 + <dec:I_PriceEffect>s</dec:I_PriceEffect>
  488 + <dec:I_PriceClose>string</dec:I_PriceClose>
  489 + <dec:I_OtherLimited>s</dec:I_OtherLimited>
  490 + <dec:I_OtherEffect>s</dec:I_OtherEffect>
  491 + <dec:I_Note1>string</dec:I_Note1>
  492 + <dec:I_IsUsefee>s</dec:I_IsUsefee>
  493 + <dec:I_IsProfit>s</dec:I_IsProfit>
  494 + <dec:I_Note2>string</dec:I_Note2>
  495 + <dec:Curr>str</dec:Curr>
  496 + <dec:InvoicePrice>string</dec:InvoicePrice>
  497 + <dec:InvoiceAmount>string</dec:InvoiceAmount>
  498 + <dec:InvoiceNote>string</dec:InvoiceNote>
  499 + <dec:GoodsPrice>string</dec:GoodsPrice>
  500 + <dec:GoodsAmount>string</dec:GoodsAmount>
  501 + <dec:GoodsNote>string</dec:GoodsNote>
  502 + <dec:I_CommissionPrice>string</dec:I_CommissionPrice>
  503 + <dec:I_CommissionAmount>string</dec:I_CommissionAmount>
  504 + <dec:I_CommissionNote>string</dec:I_CommissionNote>
  505 + <dec:I_ContainerPrice>string</dec:I_ContainerPrice>
  506 + <dec:I_ContainerAmount>string</dec:I_ContainerAmount>
  507 + <dec:I_ContainerNote>string</dec:I_ContainerNote>
  508 + <dec:I_PackPrice>string</dec:I_PackPrice>
  509 + <dec:I_PackAmount>string</dec:I_PackAmount>
  510 + <dec:I_PackNote>string</dec:I_PackNote>
  511 + <dec:I_PartPrice>string</dec:I_PartPrice>
  512 + <dec:I_PartAmount>string</dec:I_PartAmount>
  513 + <dec:I_PartNote>string</dec:I_PartNote>
  514 + <dec:I_ToolPrice>string</dec:I_ToolPrice>
  515 + <dec:I_ToolAmount>string</dec:I_ToolAmount>
  516 + <dec:I_ToolNote>string</dec:I_ToolNote>
  517 + <dec:I_LossPrice>string</dec:I_LossPrice>
  518 + <dec:I_LossAmount>string</dec:I_LossAmount>
  519 + <dec:I_LossNote>string</dec:I_LossNote>
  520 + <dec:I_DesignPrice>string</dec:I_DesignPrice>
  521 + <dec:I_DesignAmount>string</dec:I_DesignAmount>
  522 + <dec:I_DesignNote>string</dec:I_DesignNote>
  523 + <dec:I_UsefeePrice>string</dec:I_UsefeePrice>
  524 + <dec:I_UsefeeAmount>string</dec:I_UsefeeAmount>
  525 + <dec:I_UsefeeNote>string</dec:I_UsefeeNote>
  526 + <dec:I_ProfitPrice>string</dec:I_ProfitPrice>
  527 + <dec:I_ProfitAmount>string</dec:I_ProfitAmount>
  528 + <dec:I_ProfitNote>string</dec:I_ProfitNote>
  529 + <dec:I_FeePrice>string</dec:I_FeePrice>
  530 + <dec:I_FeeAmount>string</dec:I_FeeAmount>
  531 + <dec:I_FeeNote>string</dec:I_FeeNote>
  532 + <dec:I_OtherPrice>string</dec:I_OtherPrice>
  533 + <dec:I_OtherAmount>string</dec:I_OtherAmount>
  534 + <dec:I_OtherNote>string</dec:I_OtherNote>
  535 + <dec:I_InsurPrice>string</dec:I_InsurPrice>
  536 + <dec:I_InsurAmount>string</dec:I_InsurAmount>
  537 + <dec:I_InsurNote>string</dec:I_InsurNote>
  538 + <dec:E_IsDutyDel>s</dec:E_IsDutyDel>
  539 + <dec:GNameOther>string</dec:GNameOther>
  540 + <dec:CodeTsOther>stringstri</dec:CodeTsOther>
  541 + <dec:IsClassDecision>s</dec:IsClassDecision>
  542 + <dec:DecisionNO>string</dec:DecisionNO>
  543 + <dec:CodeTsDecision>stringstri</dec:CodeTsDecision>
  544 + <dec:DecisionCus>stri</dec:DecisionCus>
  545 + <dec:IsSampleTest>s</dec:IsSampleTest>
  546 + <dec:GOptions>string</dec:GOptions>
  547 + <dec:TrafMode>s</dec:TrafMode>
  548 + <dec:IsDirectTraf>s</dec:IsDirectTraf>
  549 + <dec:TransitCountry>string</dec:TransitCountry>
  550 + <dec:DestPort>stri</dec:DestPort>
  551 + <dec:DeclPort>stri</dec:DeclPort>
  552 + <dec:BillNo>string</dec:BillNo>
  553 + <dec:OriginCountry>str</dec:OriginCountry>
  554 + <dec:OriginMark>strin</dec:OriginMark>
  555 + <dec:CertCountry>string</dec:CertCountry>
  556 + <dec:CertNO>string</dec:CertNO>
  557 + <dec:CertStandard>s</dec:CertStandard>
  558 + <dec:OtherNote>string</dec:OtherNote>
  559 + <dec:IsSecret>s</dec:IsSecret>
  560 + <dec:AgentType>s</dec:AgentType>
  561 + <dec:DeclAddr>string</dec:DeclAddr>
  562 + <dec:DeclPost>string</dec:DeclPost>
  563 + <dec:DeclTel>string</dec:DeclTel>
  564 + </dec:DecSupplementList>
  565 + </dec:DecSupplementLists>
  566 + <!--1 to 10 repetitions:-->
  567 + <dec:EdocRealation>
  568 + <dec:EdocID>string</dec:EdocID>
  569 + <dec:EdocCode>stringst</dec:EdocCode>
  570 + <dec:EdocFomatType>st</dec:EdocFomatType>
  571 + <dec:OpNote>string</dec:OpNote>
  572 + <dec:EdocCopId>string</dec:EdocCopId>
  573 + <dec:EdocOwnerCode>stringstri</dec:EdocOwnerCode>
  574 + <dec:SignUnit>string</dec:SignUnit>
  575 + <dec:SignTime>stringstringst</dec:SignTime>
  576 + <!--Optional:-->
  577 + <dec:EdocOwnerName>string</dec:EdocOwnerName>
  578 + <!--Optional:-->
  579 + <dec:EdocSize>string</dec:EdocSize>
  580 + </dec:EdocRealation>
  581 + <!--0 to 20 repetitions:-->
  582 + <dec:EcoRelation>
  583 + <dec:CertType>str</dec:CertType>
  584 + <dec:EcoCertNo>stringstringstringstringstringstringstringstringstringstringstri</dec:EcoCertNo>
  585 + <dec:DecGNo>string</dec:DecGNo>
  586 + <dec:EcoGNo>string</dec:EcoGNo>
  587 + <!--Optional:-->
  588 + <dec:ExtendFiled>string</dec:ExtendFiled>
  589 + </dec:EcoRelation>
  590 + <!--Optional:-->
  591 + <dec:SddTax>
  592 + <dec:SddTaxHead>
  593 + <!--Optional:-->
  594 + <dec:FileName>string</dec:FileName>
  595 + <!--Optional:-->
  596 + <dec:SeqNo>string</dec:SeqNo>
  597 + <!--Optional:-->
  598 + <dec:SddNo>string</dec:SddNo>
  599 + <!--Optional:-->
  600 + <dec:IEFlag>s</dec:IEFlag>
  601 + <!--Optional:-->
  602 + <dec:DeclPort>stri</dec:DeclPort>
  603 + <!--Optional:-->
  604 + <dec:DDate>string</dec:DDate>
  605 + <!--Optional:-->
  606 + <dec:TradeCo>stringstri</dec:TradeCo>
  607 + <!--Optional:-->
  608 + <dec:TradeName>string</dec:TradeName>
  609 + <!--Optional:-->
  610 + <dec:InRatio>string</dec:InRatio>
  611 + <!--Optional:-->
  612 + <dec:TradeMode>stri</dec:TradeMode>
  613 + <!--Optional:-->
  614 + <dec:CutMode>str</dec:CutMode>
  615 + <!--Optional:-->
  616 + <dec:TransMode>s</dec:TransMode>
  617 + <!--Optional:-->
  618 + <dec:FeeMark>s</dec:FeeMark>
  619 + <!--Optional:-->
  620 + <dec:FeeCurr>str</dec:FeeCurr>
  621 + <!--Optional:-->
  622 + <dec:FeeRate>string</dec:FeeRate>
  623 + <!--Optional:-->
  624 + <dec:InsurMark>s</dec:InsurMark>
  625 + <!--Optional:-->
  626 + <dec:InsurCurr>str</dec:InsurCurr>
  627 + <!--Optional:-->
  628 + <dec:InsurRate>string</dec:InsurRate>
  629 + <!--Optional:-->
  630 + <dec:OtherMark>s</dec:OtherMark>
  631 + <!--Optional:-->
  632 + <dec:OtherCurr>str</dec:OtherCurr>
  633 + <!--Optional:-->
  634 + <dec:OtherRate>string</dec:OtherRate>
  635 + <!--Optional:-->
  636 + <dec:ManualNo>string</dec:ManualNo>
  637 + <!--Optional:-->
  638 + <dec:TradeCoScc>stringstringstring</dec:TradeCoScc>
  639 + <!--Optional:-->
  640 + <dec:GrossWt>string</dec:GrossWt>
  641 + <!--Optional:-->
  642 + <dec:NoteS>string</dec:NoteS>
  643 + <dec:LegalLiability>string</dec:LegalLiability>
  644 + <dec:Sign>string</dec:Sign>
  645 + <!--Optional:-->
  646 + <dec:MessId>string</dec:MessId>
  647 + <!--Optional:-->
  648 + <dec:CertSeqNo>string</dec:CertSeqNo>
  649 + <!--Optional:-->
  650 + <dec:Status>string</dec:Status>
  651 + <!--Optional:-->
  652 + <dec:F_DATE>string</dec:F_DATE>
  653 + <dec:TAX_NO>string</dec:TAX_NO>
  654 + </dec:SddTaxHead>
  655 + <dec:SddTaxLists>
  656 + <!--1 to 50 repetitions:-->
  657 + <dec:SddTaxList>
  658 + <dec:GNo>string</dec:GNo>
  659 + <!--Optional:-->
  660 + <dec:CodeTs>string</dec:CodeTs>
  661 + <!--Optional:-->
  662 + <dec:GName>string</dec:GName>
  663 + <!--Optional:-->
  664 + <dec:OriginCountry>str</dec:OriginCountry>
  665 + <!--Optional:-->
  666 + <dec:AgreementId>str</dec:AgreementId>
  667 + <!--Optional:-->
  668 + <dec:Qty1>string</dec:Qty1>
  669 + <!--Optional:-->
  670 + <dec:Unit1>str</dec:Unit1>
  671 + <!--Optional:-->
  672 + <dec:Qty2>string</dec:Qty2>
  673 + <!--Optional:-->
  674 + <dec:Unit2>str</dec:Unit2>
  675 + <!--Optional:-->
  676 + <dec:TradeCurr>str</dec:TradeCurr>
  677 + <!--Optional:-->
  678 + <dec:DeclPrice>string</dec:DeclPrice>
  679 + <!--Optional:-->
  680 + <dec:DeclTotal>string</dec:DeclTotal>
  681 + <!--Optional:-->
  682 + <dec:DutyMode>s</dec:DutyMode>
  683 + <!--Optional:-->
  684 + <dec:Antidumping>s</dec:Antidumping>
  685 + <!--Optional:-->
  686 + <dec:Antisubsidy>s</dec:Antisubsidy>
  687 + <!--Optional:-->
  688 + <dec:DutyValue>string</dec:DutyValue>
  689 + <!--Optional:-->
  690 + <dec:DutyRate>string</dec:DutyRate>
  691 + <!--Optional:-->
  692 + <dec:QtyDutyRate>string</dec:QtyDutyRate>
  693 + <!--Optional:-->
  694 + <dec:RegRate>string</dec:RegRate>
  695 + <!--Optional:-->
  696 + <dec:QtyRegRate>string</dec:QtyRegRate>
  697 + <!--Optional:-->
  698 + <dec:TaxRate>string</dec:TaxRate>
  699 + <!--Optional:-->
  700 + <dec:AntidumpingRate>string</dec:AntidumpingRate>
  701 + <!--Optional:-->
  702 + <dec:AntisubsidyRate>string</dec:AntisubsidyRate>
  703 + <!--Optional:-->
  704 + <dec:TrashfundRate>string</dec:TrashfundRate>
  705 + </dec:SddTaxList>
  706 + </dec:SddTaxLists>
  707 + <dec:SddTaxDetails>
  708 + <!--1 to 500 repetitions:-->
  709 + <dec:SddTaxDetail>
  710 + <dec:GNo>string</dec:GNo>
  711 + <dec:TaxType>s</dec:TaxType>
  712 + <dec:RealTax>string</dec:RealTax>
  713 + </dec:SddTaxDetail>
  714 + </dec:SddTaxDetails>
  715 + </dec:SddTax>
  716 + <!--Optional:-->
  717 + <dec:DecRisk>
  718 + <dec:Risk>string</dec:Risk>
  719 + <dec:Sign>string</dec:Sign>
  720 + <dec:SignDate>string</dec:SignDate>
  721 + <dec:Note>string</dec:Note>
  722 + </dec:DecRisk>
  723 +</dec:DecMessage>
  1 +package com.sunyo.customer.order;
  2 +
  3 +import org.junit.Test;
  4 +import org.junit.runner.RunWith;
  5 +import org.springframework.boot.test.context.SpringBootTest;
  6 +import org.springframework.test.context.junit4.SpringRunner;
  7 +
  8 +@RunWith(SpringRunner.class)
  9 +@SpringBootTest
  10 +public class OrderApplicationTests {
  11 +
  12 + @Test
  13 + public void contextLoads() {
  14 + }
  15 +
  16 +}