Commit a0047cc2676216545c7213494e0d7750324454c6

Authored by 游瑞烽
1 parent fc1d169c

Signed-off-by: yrf123456 <463058651@qq.com>

.gitignore 0 → 100644
  1 +.classpath
  2 +.project
  3 +.springBeans
  4 +.settings/*
  5 +/target/*
  6 +node_modules/
  7 +test_junitReport/
  8 +test_coverage/
  9 +.idea
  10 +.DS_Store
  11 +*.iml
  12 +tmp
  13 +
  14 +# git忽略空文件夹,按照惯例,空文件夹下放置.gitkeep文件避免文件夹被忽略不上传。
  15 +!.gitkeep
  16 +/target/
... ...
calc_mileage.sql 0 → 100644
  1 +/*
  2 +Navicat MySQL Data Transfer
  3 +
  4 +Source Server : bsth
  5 +Source Server Version : 50612
  6 +Source Host : localhost:3306
  7 +Source Database : control
  8 +
  9 +Target Server Type : MYSQL
  10 +Target Server Version : 50612
  11 +File Encoding : 65001
  12 +
  13 +Date: 2017-08-22 10:51:38
  14 +*/
  15 +
  16 +SET FOREIGN_KEY_CHECKS=0;
  17 +
  18 +-- ----------------------------
  19 +-- Table structure for calc_mileage
  20 +-- ----------------------------
  21 +DROP TABLE IF EXISTS `calc_mileage`;
  22 +CREATE TABLE `calc_mileage` (
  23 + `id` bigint(20) NOT NULL AUTO_INCREMENT,
  24 + `company_id` int(11) DEFAULT NULL,
  25 + `sub_company_id` int(11) DEFAULT NULL,
  26 + `company_name` varchar(255) DEFAULT NULL,
  27 + `sub_company_name` varchar(255) DEFAULT NULL,
  28 + `line_code` varchar(255) DEFAULT NULL,
  29 + `line_name` varchar(255) DEFAULT NULL,
  30 + `zyygl` double DEFAULT NULL,
  31 + `sjyygl` double DEFAULT NULL,
  32 + `sjksgl` double DEFAULT NULL,
  33 + `sddfgl` double DEFAULT NULL,
  34 + `zddfgl` double DEFAULT NULL,
  35 + `wqwxhgl` double DEFAULT NULL,
  36 + `bfwxhgl` double DEFAULT NULL,
  37 + `pygl` double DEFAULT NULL,
  38 + `ljgl` double DEFAULT NULL,
  39 + `zrwgl` double DEFAULT NULL,
  40 + `other` varchar(255) DEFAULT NULL,
  41 + `rq` datetime DEFAULT NULL,
  42 + `remarks` varchar(255) DEFAULT NULL,
  43 + `create_date` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  44 + PRIMARY KEY (`id`)
  45 +) ENGINE=InnoDB AUTO_INCREMENT=3232 DEFAULT CHARSET=utf8;
  46 +
  47 +DROP TABLE IF EXISTS `calc_schedule`;
  48 +CREATE TABLE `calc_schedule` (
  49 + `id` bigint(20) NOT NULL AUTO_INCREMENT,
  50 + `company_id` int(11) DEFAULT NULL,
  51 + `sub_company_id` int(11) DEFAULT NULL,
  52 + `company_name` varchar(255) DEFAULT NULL,
  53 + `sub_company_name` varchar(255) DEFAULT NULL,
  54 + `line_code` varchar(255) DEFAULT NULL,
  55 + `line_name` varchar(255) DEFAULT NULL,
  56 + `zyybc` int(255) DEFAULT NULL,
  57 + `sjyybc` int(255) DEFAULT NULL,
  58 + `sjksbc` int(255) DEFAULT NULL,
  59 + `sddfbc` int(255) DEFAULT NULL,
  60 + `zddfbc` int(255) DEFAULT NULL,
  61 + `wqwxhbc` int(255) DEFAULT NULL,
  62 + `bfwxhbc` int(255) DEFAULT NULL,
  63 + `pybc` int(255) DEFAULT NULL,
  64 + `ljbc` int(255) DEFAULT NULL,
  65 + `zrwbc` int(255) DEFAULT NULL,
  66 + `other` varchar(255) DEFAULT NULL,
  67 + `rq` varchar(255) DEFAULT NULL,
  68 + `remarks` varchar(255) DEFAULT NULL,
  69 + `create_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  70 + PRIMARY KEY (`id`)
  71 +) ENGINE=InnoDB AUTO_INCREMENT=3232 DEFAULT CHARSET=utf8;
... ...
pom.xml 0 → 100644
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3 +
  4 + <modelVersion>4.0.0</modelVersion>
  5 + <groupId>com.bsth</groupId>
  6 + <artifactId>report_calculator</artifactId>
  7 + <version>0.0.1-SNAPSHOT</version>
  8 + <packaging>jar</packaging>
  9 +
  10 + <parent>
  11 + <groupId>org.springframework.boot</groupId>
  12 + <artifactId>spring-boot-starter-parent</artifactId>
  13 + <version>1.5.2.RELEASE</version>
  14 + </parent>
  15 +
  16 + <dependencies>
  17 +
  18 + <dependency>
  19 + <groupId>org.springframework.boot</groupId>
  20 + <artifactId>spring-boot-starter-web</artifactId>
  21 + </dependency>
  22 +
  23 + <dependency>
  24 + <groupId>org.springframework.boot</groupId>
  25 + <artifactId>spring-boot-starter-tomcat</artifactId>
  26 + <scope>provided</scope>
  27 + </dependency>
  28 +
  29 + <dependency>
  30 + <groupId>org.springframework.boot</groupId>
  31 + <artifactId>spring-boot-starter-data-jpa</artifactId>
  32 + </dependency>
  33 + <dependency>
  34 + <groupId>org.springframework.boot</groupId>
  35 + <artifactId>spring-boot-starter-aop</artifactId>
  36 + </dependency>
  37 +
  38 + <dependency>
  39 + <groupId>org.springframework.boot</groupId>
  40 + <artifactId>spring-boot-starter-data-redis</artifactId>
  41 + </dependency>
  42 +
  43 + <dependency>
  44 + <groupId>org.springframework</groupId>
  45 + <artifactId>spring-context-support</artifactId>
  46 + </dependency>
  47 + <dependency>
  48 + <groupId>mysql</groupId>
  49 + <artifactId>mysql-connector-java</artifactId>
  50 + </dependency>
  51 +
  52 + <dependency>
  53 + <groupId>joda-time</groupId>
  54 + <artifactId>joda-time</artifactId>
  55 + </dependency>
  56 + <dependency>
  57 + <groupId>com.alibaba</groupId>
  58 + <artifactId>fastjson</artifactId>
  59 + <version>1.2.4</version>
  60 + </dependency>
  61 +
  62 + <dependency>
  63 + <groupId>org.apache.httpcomponents</groupId>
  64 + <artifactId>httpclient</artifactId>
  65 + </dependency>
  66 +
  67 + <dependency>
  68 + <groupId>commons-dbcp</groupId>
  69 + <artifactId>commons-dbcp</artifactId>
  70 + </dependency>
  71 + <dependency>
  72 + <groupId>commons-lang</groupId>
  73 + <artifactId>commons-lang</artifactId>
  74 + <version>2.6</version>
  75 + </dependency>
  76 + <dependency>
  77 + <groupId>org.apache.commons</groupId>
  78 + <artifactId>commons-lang3</artifactId>
  79 + <version>3.4</version>
  80 + </dependency>
  81 + <dependency>
  82 + <groupId>commons-fileupload</groupId>
  83 + <artifactId>commons-fileupload</artifactId>
  84 + <version>1.2.2</version>
  85 + </dependency>
  86 + <dependency>
  87 + <groupId>commons-io</groupId>
  88 + <artifactId>commons-io</artifactId>
  89 + <version>2.4</version>
  90 + </dependency>
  91 + <dependency>
  92 + <groupId>org.codehaus.janino</groupId>
  93 + <artifactId>janino</artifactId>
  94 + </dependency>
  95 +
  96 + <dependency>
  97 + <groupId>org.apache.poi</groupId>
  98 + <artifactId>poi</artifactId>
  99 + <version>3.13</version>
  100 + </dependency>
  101 +
  102 + <dependency>
  103 + <groupId>com.google.guava</groupId>
  104 + <artifactId>guava</artifactId>
  105 + <version>19.0</version>
  106 + </dependency>
  107 +
  108 + <dependency>
  109 + <groupId>c3p0</groupId>
  110 + <artifactId>c3p0</artifactId>
  111 + <version>0.9.1.2</version>
  112 + </dependency>
  113 +
  114 + <dependency>
  115 + <groupId>com.fasterxml.jackson.jaxrs</groupId>
  116 + <artifactId>jackson-jaxrs-json-provider</artifactId>
  117 + <version>2.8.7</version>
  118 + </dependency>
  119 +
  120 + <dependency>
  121 + <groupId>org.eclipse.jetty</groupId>
  122 + <artifactId>jetty-util</artifactId>
  123 + <version>8.1.15.v20140411</version>
  124 + </dependency>
  125 + </dependencies>
  126 +
  127 + <build>
  128 + <plugins>
  129 + <plugin>
  130 + <artifactId>maven-compiler-plugin</artifactId>
  131 + <version>2.3.2</version><!--$NO-MVN-MAN-VER$ -->
  132 + <configuration>
  133 + <source>1.7</source>
  134 + <target>1.7</target>
  135 + </configuration>
  136 + </plugin>
  137 + <plugin>
  138 + <artifactId>maven-war-plugin</artifactId>
  139 + <version>2.2</version><!--$NO-MVN-MAN-VER$ -->
  140 + <configuration>
  141 + <failOnMissingWebXml>false</failOnMissingWebXml>
  142 + </configuration>
  143 + </plugin>
  144 + <plugin>
  145 + <groupId>org.springframework.boot</groupId>
  146 + <artifactId>spring-boot-maven-plugin</artifactId>
  147 + </plugin>
  148 + </plugins>
  149 + <resources>
  150 + <resource>
  151 + <directory>src/main/resources</directory>
  152 + <filtering>false</filtering>
  153 + </resource>
  154 + </resources>
  155 + </build>
  156 + <repositories>
  157 + <repository>
  158 + <id>spring-snapshots</id>
  159 + <url>http://repo.spring.io/snapshot</url>
  160 + <snapshots>
  161 + <enabled>true</enabled>
  162 + </snapshots>
  163 + </repository>
  164 + <repository>
  165 + <id>spring-milestones</id>
  166 + <url>http://repo.spring.io/milestone</url>
  167 + </repository>
  168 + </repositories>
  169 + <pluginRepositories>
  170 + <pluginRepository>
  171 + <id>spring-snapshots</id>
  172 + <url>http://repo.spring.io/snapshot</url>
  173 + </pluginRepository>
  174 + <pluginRepository>
  175 + <id>spring-milestones</id>
  176 + <url>http://repo.spring.io/milestone</url>
  177 + </pluginRepository>
  178 + </pluginRepositories>
  179 +
  180 + <properties>
  181 + <start-class>com.bsth.Application</start-class>
  182 + </properties>
  183 +</project>
... ...
src/main/java/com/bsth/Application.java 0 → 100644
  1 +package com.bsth;
  2 +
  3 +import org.springframework.boot.SpringApplication;
  4 +import org.springframework.boot.autoconfigure.SpringBootApplication;
  5 +import org.springframework.boot.web.support.SpringBootServletInitializer;
  6 +
  7 +@SpringBootApplication
  8 +public class Application extends SpringBootServletInitializer {
  9 +
  10 + public static void main(String[] args) throws Exception {
  11 + SpringApplication.run(Application.class, args);
  12 + }
  13 +
  14 +}
0 15 \ No newline at end of file
... ...
src/main/java/com/bsth/StartCommand.java 0 → 100644
  1 +package com.bsth;
  2 +
  3 +
  4 +import com.bsth.thread.ReportCalculationThrad;
  5 +import com.bsth.util.DateUtils;
  6 +
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.boot.CommandLineRunner;
  9 +import org.springframework.stereotype.Component;
  10 +import org.slf4j.Logger;
  11 +import org.slf4j.LoggerFactory;
  12 +
  13 +import java.util.concurrent.Executors;
  14 +import java.util.concurrent.ScheduledExecutorService;
  15 +import java.util.concurrent.TimeUnit;
  16 +
  17 +
  18 +/**
  19 + * 随应用启动运行
  20 + *
  21 + */
  22 +@Component
  23 +public class StartCommand implements CommandLineRunner{
  24 +
  25 + public static ScheduledExecutorService mainServices = Executors.newScheduledThreadPool(2);
  26 +
  27 + Logger log = LoggerFactory.getLogger(this.getClass());
  28 +
  29 + private static long timeDiff;
  30 +
  31 + @Autowired
  32 + ReportCalculationThrad mileageCalculationThrad;
  33 +
  34 + static {
  35 + // 早上02:30
  36 + timeDiff = (DateUtils.getTimestamp() + 1000 * 60 * 150) - System.currentTimeMillis();
  37 + if (timeDiff < 0)
  38 + timeDiff += (1000 * 60 * 60 * 24);
  39 + }
  40 +
  41 + @Override
  42 + public void run(String... arg0){
  43 +
  44 + try {
  45 + log.info(timeDiff / 1000 / 60 + "分钟后统计修正班次和公里报表");
  46 + mainServices.scheduleAtFixedRate(mileageCalculationThrad, timeDiff / 1000, 60 * 60 * 24, TimeUnit.SECONDS);//timeDiff / 1000
  47 + } catch (Exception e) {
  48 + e.printStackTrace();
  49 + }
  50 + }
  51 +}
... ...
src/main/java/com/bsth/common/ResponseCode.java 0 → 100644
  1 +package com.bsth.common;
  2 +
  3 +/**
  4 + *
  5 + * @ClassName: ResponseCode
  6 + * @Description: TODO(响应状态码)
  7 + * @author PanZhao
  8 + * @date 2016年3月18日 下午11:12:08
  9 + *
  10 + */
  11 +public enum ResponseCode {
  12 +
  13 + SUCCESS("操作成功", 200),
  14 + NO_PERMISSION("无资源访问权限", 403),
  15 + NO_AUTHENTICATION("客户端未授权", 407),
  16 + ERROR("服务器异常", 500);
  17 +
  18 + private String text;
  19 + private int code;
  20 +
  21 + ResponseCode(String text, int code) {
  22 + this.text = text;
  23 + this.code = code;
  24 + }
  25 +
  26 + @Override
  27 + public String toString() {
  28 + return this.code + "";
  29 + }
  30 +
  31 + public String getText() {
  32 + return this.text;
  33 + }
  34 +}
... ...
src/main/java/com/bsth/entity/ChildTaskPlan.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonIgnore;
  4 +
  5 +import javax.persistence.*;
  6 +import java.util.Date;
  7 +
  8 +
  9 +/**
  10 + *
  11 + * @ClassName: ChildTaskPlan
  12 + * @Description: TODO(子任务)
  13 + * @author PanZhao
  14 + * @date 2016年6月20日 上午11:22:22
  15 + *
  16 + */
  17 +@Entity
  18 +@Table(name = "bsth_c_s_child_task")
  19 +@NamedEntityGraphs({
  20 + @NamedEntityGraph(name = "childTaskPlan_schedule", attributeNodes = {
  21 + @NamedAttributeNode("schedule")
  22 + })
  23 +})
  24 +public class ChildTaskPlan {
  25 +
  26 + @Id
  27 + @GeneratedValue
  28 + private Long id;
  29 +
  30 + /**
  31 + * 任务类型1
  32 + * 正常,临加
  33 + */
  34 + private String type1;
  35 +
  36 + /**
  37 + * 任务类型2
  38 + */
  39 + private String type2;
  40 +
  41 + /**
  42 + * 起点
  43 + */
  44 + private String startStation;
  45 +
  46 + /**
  47 + * 起点站名称
  48 + */
  49 + private String startStationName;
  50 +
  51 + /**
  52 + * 终点
  53 + */
  54 + private String endStation;
  55 +
  56 + /**
  57 + * 终点站名称
  58 + */
  59 + private String endStationName;
  60 +
  61 + /**
  62 + * 里程类型
  63 + */
  64 + private String mileageType;
  65 +
  66 + /**
  67 + * 里程
  68 + */
  69 + private Float mileage;
  70 +
  71 + /**
  72 + * 开始时间 HH:mm
  73 + */
  74 + private String startDate;
  75 +
  76 + /**
  77 + * 结束时间 HH:mm
  78 + */
  79 + private String endDate;
  80 +
  81 + /**
  82 + * 是否烂班
  83 + */
  84 + private boolean destroy;
  85 +
  86 + /**
  87 + * 烂班原因 -烂班时,该字段仍有值并 =reason
  88 + */
  89 + private String destroyReason;
  90 +
  91 + /**
  92 + * 包括 烂班原因、进出场原因、换车原因 等
  93 + */
  94 + private String reason;
  95 +
  96 + /**
  97 + * 车辆 如果为空,继承主任务
  98 + */
  99 + private String nbbm;
  100 +
  101 + /**
  102 + * 为true 则无售票员, 否则继承主任务
  103 + */
  104 + private boolean noClerk;
  105 +
  106 + /** 创建日期 */
  107 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  108 + private Date createDate;
  109 +
  110 + /**
  111 + * 主排班计划
  112 + */
  113 + @JsonIgnore
  114 + @ManyToOne(fetch = FetchType.LAZY)
  115 + @JoinColumn(name = "schedule")
  116 + private ScheduleRealInfo schedule;
  117 +
  118 + private String remarks;
  119 +
  120 + public Long getId() {
  121 + return id;
  122 + }
  123 +
  124 + public void setId(Long id) {
  125 + this.id = id;
  126 + }
  127 +
  128 + public String getType1() {
  129 + return type1;
  130 + }
  131 +
  132 + public void setType1(String type1) {
  133 + this.type1 = type1;
  134 + }
  135 +
  136 + public String getType2() {
  137 + return type2;
  138 + }
  139 +
  140 + public void setType2(String type2) {
  141 + this.type2 = type2;
  142 + }
  143 +
  144 + public String getStartStation() {
  145 + return startStation;
  146 + }
  147 +
  148 + public void setStartStation(String startStation) {
  149 + this.startStation = startStation;
  150 + }
  151 +
  152 + public String getEndStation() {
  153 + return endStation;
  154 + }
  155 +
  156 + public void setEndStation(String endStation) {
  157 + this.endStation = endStation;
  158 + }
  159 +
  160 + public String getMileageType() {
  161 + return mileageType;
  162 + }
  163 +
  164 + public void setMileageType(String mileageType) {
  165 + this.mileageType = mileageType;
  166 + }
  167 +
  168 + public Float getMileage() {
  169 + return mileage;
  170 + }
  171 +
  172 + public void setMileage(Float mileage) {
  173 + this.mileage = mileage;
  174 + }
  175 +
  176 + public String getStartDate() {
  177 + return startDate;
  178 + }
  179 +
  180 + public void setStartDate(String startDate) {
  181 + this.startDate = startDate;
  182 + }
  183 +
  184 + public String getEndDate() {
  185 + return endDate;
  186 + }
  187 +
  188 + public void setEndDate(String endDate) {
  189 + this.endDate = endDate;
  190 + }
  191 +
  192 + public boolean isDestroy() {
  193 + return destroy;
  194 + }
  195 +
  196 + public void setDestroy(boolean destroy) {
  197 + this.destroy = destroy;
  198 + }
  199 +
  200 + public String getDestroyReason() {
  201 + return destroyReason;
  202 + }
  203 +
  204 + public void setDestroyReason(String destroyReason) {
  205 + this.destroyReason = destroyReason;
  206 + }
  207 +
  208 + public ScheduleRealInfo getSchedule() {
  209 + return schedule;
  210 + }
  211 +
  212 + public void setSchedule(ScheduleRealInfo schedule) {
  213 + this.schedule = schedule;
  214 + }
  215 +
  216 + public String getRemarks() {
  217 + return remarks;
  218 + }
  219 +
  220 + public void setRemarks(String remarks) {
  221 + this.remarks = remarks;
  222 + }
  223 +
  224 + public String getStartStationName() {
  225 + return startStationName;
  226 + }
  227 +
  228 + public void setStartStationName(String startStationName) {
  229 + this.startStationName = startStationName;
  230 + }
  231 +
  232 + public String getEndStationName() {
  233 + return endStationName;
  234 + }
  235 +
  236 + public void setEndStationName(String endStationName) {
  237 + this.endStationName = endStationName;
  238 + }
  239 +
  240 + @Override
  241 + public int hashCode() {
  242 + return ("cTask" + this.getId() + this.getSchedule().getId()).hashCode();
  243 + }
  244 +
  245 + @Override
  246 + public boolean equals(Object obj) {
  247 + return this.id.equals(((ChildTaskPlan)obj).getId());
  248 + }
  249 +
  250 + public Date getCreateDate() {
  251 + return createDate;
  252 + }
  253 +
  254 + public void setCreateDate(Date createDate) {
  255 + this.createDate = createDate;
  256 + }
  257 +
  258 + public String getReason() {
  259 + return reason;
  260 + }
  261 +
  262 + public void setReason(String reason) {
  263 + this.reason = reason;
  264 + }
  265 +
  266 + public String getNbbm() {
  267 + return nbbm;
  268 + }
  269 +
  270 + public void setNbbm(String nbbm) {
  271 + this.nbbm = nbbm;
  272 + }
  273 +
  274 + public boolean isNoClerk() {
  275 + return noClerk;
  276 + }
  277 +
  278 + public void setNoClerk(boolean noClerk) {
  279 + this.noClerk = noClerk;
  280 + }
  281 +}
... ...
src/main/java/com/bsth/entity/Equipment.java 0 → 100644
  1 +package com.bsth.entity;
  2 +/**
  3 + * @ClassName: Equipment.java
  4 + * @Description: TODO(车辆自编号to设备号)
  5 + * @author: YouRuiFeng
  6 + * @date: 2017-8-30 下午7:36:07
  7 + *
  8 + */
  9 +public class Equipment {
  10 +
  11 + private String inside_code;
  12 +
  13 + private String equipment_code;
  14 +
  15 + public String getInside_code() {
  16 + return inside_code;
  17 + }
  18 +
  19 + public void setInside_code(String inside_code) {
  20 + this.inside_code = inside_code;
  21 + }
  22 +
  23 + public String getEquipment_code() {
  24 + return equipment_code;
  25 + }
  26 +
  27 + public void setEquipment_code(String equipment_code) {
  28 + this.equipment_code = equipment_code;
  29 + }
  30 +
  31 +}
... ...
src/main/java/com/bsth/entity/ScheduleRealInfo.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +import org.apache.commons.lang3.StringUtils;
  4 +import org.joda.time.format.DateTimeFormat;
  5 +import org.joda.time.format.DateTimeFormatter;
  6 +
  7 +import javax.persistence.*;
  8 +import java.io.Serializable;
  9 +import java.util.Date;
  10 +import java.util.HashSet;
  11 +import java.util.Set;
  12 +
  13 +/**
  14 + * 实际排班计划明细。
  15 + */
  16 +@Entity
  17 +@Table(name = "bsth_c_s_sp_info_real")
  18 +@NamedEntityGraphs({
  19 + @NamedEntityGraph(name = "scheduleRealInfo_cTasks", attributeNodes = {
  20 + @NamedAttributeNode("cTasks")
  21 + })
  22 +})
  23 +public class ScheduleRealInfo implements Serializable{
  24 +
  25 +
  26 +
  27 + /** 主键Id */
  28 + @Id
  29 + private Long id;
  30 +
  31 + /** 计划ID */
  32 + private Long spId;
  33 +
  34 + /** 排班计划日期 */
  35 + private Date scheduleDate;
  36 + private String scheduleDateStr;
  37 +
  38 + /** 真实执行时间 yyyy-MM-dd */
  39 + private String realExecDate;
  40 +
  41 + /** 线路名称 */
  42 + private String xlName;
  43 + /** 线路编码 */
  44 + private String xlBm;
  45 +
  46 + /** 路牌名称 */
  47 + private String lpName;
  48 +
  49 + /** 车辆自编号 */
  50 + private String clZbh;
  51 +
  52 + /** 设备终端号*/
  53 + @Transient
  54 + private String equipment_code;
  55 +
  56 + /** 驾驶员工号 */
  57 + private String jGh;
  58 + /** 驾驶员名字 */
  59 + private String jName;
  60 + /** 售票员工号 */
  61 + private String sGh;
  62 + /** 售票员名字 */
  63 + private String sName;
  64 +
  65 + /** 线路方向 */
  66 + private String xlDir;
  67 + /** 起点站code*/
  68 + private String qdzCode;
  69 + /** 起点站名字 */
  70 + private String qdzName;
  71 +
  72 + /** 终点站code*/
  73 + private String zdzCode;
  74 + /** 终点站名字 */
  75 + private String zdzName;
  76 +
  77 + /** 计划发车时间(格式 HH:mm) */
  78 + private String fcsj;
  79 + /** 计划发车时间戳*/
  80 + @Transient
  81 + private Long fcsjT;
  82 +
  83 + /** 计划终点时间(格式 HH:mm) */
  84 + private String zdsj;
  85 + /** 计划终点时间戳*/
  86 + @Transient
  87 + private Long zdsjT;
  88 +
  89 + /** 计划里程 */
  90 + private Double jhlc;
  91 +
  92 + /** 原始计划里程 (原计调的数据) */
  93 + private Double jhlcOrig;
  94 +
  95 + /** 班次历时 */
  96 + private Integer bcsj;
  97 +
  98 + /**
  99 + * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶
  100 + */
  101 + private String bcType;
  102 +
  103 + /** 实际发车时间*/
  104 + private String fcsjActual;
  105 + /** 实际发车时间戳*/
  106 + @Transient
  107 + private Long fcsjActualTime;
  108 + /**实际终点时间 */
  109 + private String zdsjActual;
  110 + /** 实际终点时间戳*/
  111 + @Transient
  112 + private Long zdsjActualTime;
  113 +
  114 + /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
  115 + private int status;
  116 +
  117 + private String adjustExps;
  118 +
  119 + /** 是否是临加班次 */
  120 + private boolean sflj;
  121 +
  122 + /** 备注*/
  123 + private String remarks;
  124 +
  125 + /**待发时间(格式 HH:mm) */
  126 + private String dfsj;
  127 +
  128 + //待发调试(是否自动调整)
  129 + private boolean dfAuto;
  130 +
  131 + /**待发时间戳 */
  132 + @Transient
  133 + private Long dfsjT;
  134 +
  135 + /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */
  136 + private Integer directiveState = -1;
  137 +
  138 + /** 子任务 */
  139 + @OneToMany(fetch = FetchType.LAZY, mappedBy = "schedule")
  140 + private Set<ChildTaskPlan> cTasks = new HashSet<>();
  141 +
  142 + /** 关联的公司名称 */
  143 + private String gsName;
  144 + /** 关联的公司编码 */
  145 + private String gsBm;
  146 + /** 关联的分公司名称 */
  147 + private String fgsName;
  148 + /** 关联的分公司编码 */
  149 + private String fgsBm;
  150 +
  151 + /**
  152 + * 漂移状态
  153 + * 1: 发车漂移
  154 + * 2:到站漂移
  155 + * 3:中途漂移
  156 + */
  157 + private int driftStatus = 0;
  158 +
  159 + public boolean isDfAuto() {
  160 + return dfAuto;
  161 + }
  162 +
  163 + public void setDfAuto(boolean dfAuto) {
  164 + this.dfAuto = dfAuto;
  165 + }
  166 +
  167 + public boolean isDestroy(){
  168 + return this.status == -1;
  169 + }
  170 +
  171 + @Override
  172 + public int hashCode() {
  173 + return (this.id + this.scheduleDateStr + this.xlBm + this.fcsj).hashCode();
  174 + }
  175 +
  176 + @Override
  177 + public boolean equals(Object obj) {
  178 + return this.id.equals(((ScheduleRealInfo)obj).getId());
  179 + }
  180 +
  181 + public Long getId() {
  182 + return id;
  183 + }
  184 +
  185 + public void setId(Long id) {
  186 + this.id = id;
  187 + }
  188 +
  189 + public Long getSpId() {
  190 + return spId;
  191 + }
  192 +
  193 + public void setSpId(Long spId) {
  194 + this.spId = spId;
  195 + }
  196 +
  197 + public Date getScheduleDate() {
  198 + return scheduleDate;
  199 + }
  200 +
  201 + public void setScheduleDate(Date scheduleDate) {
  202 + this.scheduleDate = scheduleDate;
  203 + }
  204 +
  205 + public String getScheduleDateStr() {
  206 + return scheduleDateStr;
  207 + }
  208 +
  209 + public void setScheduleDateStr(String scheduleDateStr) {
  210 + this.scheduleDateStr = scheduleDateStr;
  211 + }
  212 +
  213 + public String getRealExecDate() {
  214 + return realExecDate;
  215 + }
  216 +
  217 + public void setRealExecDate(String realExecDate) {
  218 + this.realExecDate = realExecDate;
  219 + }
  220 +
  221 + public String getXlName() {
  222 + return xlName;
  223 + }
  224 +
  225 + public void setXlName(String xlName) {
  226 + this.xlName = xlName;
  227 + }
  228 +
  229 + public String getXlBm() {
  230 + return xlBm;
  231 + }
  232 +
  233 + public void setXlBm(String xlBm) {
  234 + this.xlBm = xlBm;
  235 + }
  236 +
  237 + public String getLpName() {
  238 + return lpName;
  239 + }
  240 +
  241 + public void setLpName(String lpName) {
  242 + this.lpName = lpName;
  243 + }
  244 +
  245 + public String getClZbh() {
  246 + return clZbh;
  247 + }
  248 +
  249 + public void setClZbh(String clZbh) {
  250 + this.clZbh = clZbh;
  251 + }
  252 +
  253 + public String getEquipment_code() {
  254 + return equipment_code;
  255 + }
  256 +
  257 + public void setEquipment_code(String equipment_code) {
  258 + this.equipment_code = equipment_code;
  259 + }
  260 +
  261 + public String getjGh() {
  262 + return jGh;
  263 + }
  264 +
  265 + public void setjGh(String jGh) {
  266 + this.jGh = jGh;
  267 + }
  268 +
  269 + public String getjName() {
  270 + return jName;
  271 + }
  272 +
  273 + public void setjName(String jName) {
  274 + this.jName = jName;
  275 + }
  276 +
  277 + public String getsGh() {
  278 + return sGh;
  279 + }
  280 +
  281 + public void setsGh(String sGh) {
  282 + this.sGh = sGh;
  283 + }
  284 +
  285 + public String getsName() {
  286 + return sName;
  287 + }
  288 +
  289 + public void setsName(String sName) {
  290 + this.sName = sName;
  291 + }
  292 +
  293 + public String getXlDir() {
  294 + return xlDir;
  295 + }
  296 +
  297 + public void setXlDir(String xlDir) {
  298 + this.xlDir = xlDir;
  299 + }
  300 +
  301 + public String getQdzCode() {
  302 + return qdzCode;
  303 + }
  304 +
  305 + public void setQdzCode(String qdzCode) {
  306 + this.qdzCode = qdzCode;
  307 + }
  308 +
  309 + public String getQdzName() {
  310 + return qdzName;
  311 + }
  312 +
  313 + public void setQdzName(String qdzName) {
  314 + this.qdzName = qdzName;
  315 + }
  316 +
  317 + public String getZdzCode() {
  318 + return zdzCode;
  319 + }
  320 +
  321 + public void setZdzCode(String zdzCode) {
  322 + this.zdzCode = zdzCode;
  323 + }
  324 +
  325 + public String getZdzName() {
  326 + return zdzName;
  327 + }
  328 +
  329 + public void setZdzName(String zdzName) {
  330 + this.zdzName = zdzName;
  331 + }
  332 +
  333 + public String getFcsj() {
  334 + return fcsj;
  335 + }
  336 +
  337 + public void setFcsj(String fcsj) {
  338 + this.fcsj = fcsj;
  339 + }
  340 +
  341 + public Long getFcsjT() {
  342 + return fcsjT;
  343 + }
  344 +
  345 + public void setFcsjT(Long fcsjT) {
  346 + this.fcsjT = fcsjT;
  347 + }
  348 +
  349 + public String getZdsj() {
  350 + return zdsj;
  351 + }
  352 +
  353 + public void setZdsj(String zdsj) {
  354 + this.zdsj = zdsj;
  355 + }
  356 +
  357 + public Long getZdsjT() {
  358 + return zdsjT;
  359 + }
  360 +
  361 + public void setZdsjT(Long zdsjT) {
  362 + this.zdsjT = zdsjT;
  363 + }
  364 +
  365 + public Double getJhlc() {
  366 + return jhlc;
  367 + }
  368 +
  369 + public void setJhlc(Double jhlc) {
  370 + this.jhlc = jhlc;
  371 + }
  372 +
  373 + public Integer getBcsj() {
  374 + return bcsj;
  375 + }
  376 +
  377 + public void setBcsj(Integer bcsj) {
  378 + this.bcsj = bcsj;
  379 + }
  380 +
  381 + public String getBcType() {
  382 + return bcType;
  383 + }
  384 +
  385 + public void setBcType(String bcType) {
  386 + this.bcType = bcType;
  387 + }
  388 +
  389 + public String getFcsjActual() {
  390 + return fcsjActual;
  391 + }
  392 +
  393 + public void setFcsjActual(String fcsjActual) {
  394 + this.fcsjActual = fcsjActual;
  395 + }
  396 +
  397 + public Long getFcsjActualTime() {
  398 + return fcsjActualTime;
  399 + }
  400 +
  401 + public void setFcsjActualTime(Long fcsjActualTime) {
  402 + this.fcsjActualTime = fcsjActualTime;
  403 + }
  404 +
  405 + public String getZdsjActual() {
  406 + return zdsjActual;
  407 + }
  408 +
  409 + public void setZdsjActual(String zdsjActual) {
  410 + this.zdsjActual = zdsjActual;
  411 + }
  412 +
  413 + public Long getZdsjActualTime() {
  414 + return zdsjActualTime;
  415 + }
  416 +
  417 + public void setZdsjActualTime(Long zdsjActualTime) {
  418 + this.zdsjActualTime = zdsjActualTime;
  419 + }
  420 +
  421 + public int getStatus() {
  422 + return status;
  423 + }
  424 +
  425 + public void setStatus(int status) {
  426 + this.status = status;
  427 + }
  428 +
  429 + public String getAdjustExps() {
  430 + return adjustExps;
  431 + }
  432 +
  433 + public void setAdjustExps(String adjustExps) {
  434 + this.adjustExps = adjustExps;
  435 + }
  436 +
  437 + public boolean isSflj() {
  438 + return sflj;
  439 + }
  440 +
  441 + public void setSflj(boolean sflj) {
  442 + this.sflj = sflj;
  443 + }
  444 +
  445 + public String getRemarks() {
  446 + return remarks;
  447 + }
  448 +
  449 + public void setRemarks(String remarks) {
  450 + this.remarks = remarks;
  451 + }
  452 +
  453 + public String getDfsj() {
  454 + return dfsj;
  455 + }
  456 +
  457 + public void setDfsj(String dfsj) {
  458 + this.dfsj = dfsj;
  459 + }
  460 +
  461 + public Long getDfsjT() {
  462 + return dfsjT;
  463 + }
  464 +
  465 + public void setDfsjT(Long dfsjT) {
  466 + this.dfsjT = dfsjT;
  467 + }
  468 +
  469 + public Integer getDirectiveState() {
  470 + return directiveState;
  471 + }
  472 +
  473 + public void setDirectiveState(Integer directiveState) {
  474 + this.directiveState = directiveState;
  475 + }
  476 +
  477 + public Set<ChildTaskPlan> getcTasks() {
  478 + return cTasks;
  479 + }
  480 +
  481 + public void setcTasks(Set<ChildTaskPlan> cTasks) {
  482 + this.cTasks = cTasks;
  483 + }
  484 +
  485 + public String getGsName() {
  486 + return gsName;
  487 + }
  488 +
  489 + public void setGsName(String gsName) {
  490 + this.gsName = gsName;
  491 + }
  492 +
  493 + public String getGsBm() {
  494 + return gsBm;
  495 + }
  496 +
  497 + public void setGsBm(String gsBm) {
  498 + this.gsBm = gsBm;
  499 + }
  500 +
  501 + public String getFgsName() {
  502 + return fgsName;
  503 + }
  504 +
  505 + public void setFgsName(String fgsName) {
  506 + this.fgsName = fgsName;
  507 + }
  508 +
  509 + public String getFgsBm() {
  510 + return fgsBm;
  511 + }
  512 +
  513 + public void setFgsBm(String fgsBm) {
  514 + this.fgsBm = fgsBm;
  515 + }
  516 +
  517 + public Double getJhlcOrig() {
  518 + return jhlcOrig;
  519 + }
  520 +
  521 + public void setJhlcOrig(Double jhlcOrig) {
  522 + this.jhlcOrig = jhlcOrig;
  523 + }
  524 +
  525 + @Transient
  526 + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
  527 + @Transient
  528 + private static DateTimeFormatter fmtyyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm");
  529 +
  530 + /**
  531 + *
  532 + * @Title: setFcsjAll
  533 + * @Description: TODO(设置计划发车时间)
  534 + * @throws
  535 + */
  536 + public void setFcsjAll(Long fcsjT){
  537 + this.fcsjT = fcsjT;
  538 + this.fcsj = fmtHHmm.print(fcsjT);
  539 + }
  540 +
  541 + public void setDfsjAll(Long dfsjT) {
  542 + this.dfsjT = dfsjT;
  543 + this.dfsj = fmtHHmm.print(this.dfsjT);
  544 + }
  545 +
  546 + /**
  547 + *
  548 + * @Title: setFcsjActualAll
  549 + * @Description: TODO(设置实际发车时间 时间戳)
  550 + * @throws
  551 + */
  552 + public void setFcsjActualAll(Long t){
  553 + this.fcsjActualTime = t;
  554 + this.fcsjActual = fmtHHmm.print(t);
  555 + }
  556 +
  557 + /**
  558 + *
  559 + * @Title: setFcsjActualAll
  560 + * @Description: TODO(设置实际终点时间)
  561 + * @throws
  562 + */
  563 + public void setZdsjActualAll(Long t){
  564 + this.zdsjActualTime = t;
  565 + this.zdsjActual = fmtHHmm.print(t);
  566 + }
  567 +
  568 + public void setDfsjAll(String dfsj) {
  569 + this.dfsjT = fmtyyyyMMddHHmm.parseMillis(this.realExecDate + dfsj);
  570 + this.dfsj = dfsj;
  571 + }
  572 +
  573 + /**
  574 + *
  575 + * @Title: setFcsjActualAll
  576 + * @Description: TODO(设置实际发车时间 字符串)
  577 + * @throws
  578 + */
  579 + public void setFcsjActualAll(String fcsjActual){
  580 + this.fcsjActualTime = fmtyyyyMMddHHmm.parseMillis(this.realExecDate + fcsjActual);
  581 + this.fcsjActual = fcsjActual;
  582 + }
  583 +
  584 + /**
  585 + *
  586 + * @Title: setFcsjActualAll
  587 + * @Description: TODO(设置实际终点时间)
  588 + * @throws
  589 + */
  590 + public void setZdsjActualAll(String zdsjActual){
  591 + this.zdsjActualTime = fmtyyyyMMddHHmm.parseMillis(this.realExecDate + zdsjActual);
  592 + this.zdsjActual = zdsjActual;
  593 + }
  594 +
  595 + public int getDriftStatus() {
  596 + return driftStatus;
  597 + }
  598 +
  599 + public void setDriftStatus(int driftStatus) {
  600 + this.driftStatus = driftStatus;
  601 + }
  602 +
  603 +
  604 +}
... ...
src/main/java/com/bsth/entity/result/RevisedReport.java 0 → 100644
  1 +package com.bsth.entity.result;
  2 +
  3 +import java.util.Date;
  4 +
  5 +/**
  6 + * @ClassName: OperatingMileage.java
  7 + * @Description: TODO(营运里程修正报表)
  8 + * @author: YouRuiFeng
  9 + * @date: 2017-8-14 上午11:09:19
  10 + *
  11 + */
  12 +public class RevisedReport {
  13 + /** 公司编码 */
  14 + private String companyId;
  15 +
  16 + /** 分公司编码 */
  17 + private String subCompanyId;
  18 +
  19 + /** 公司名称 */
  20 + private String companyName;
  21 +
  22 + /** 分公司名称 */
  23 + private String subCompanyName;
  24 +
  25 + /** 线路编码 */
  26 + private String lineCode;
  27 +
  28 + /** 线路名称 */
  29 + private String lineName;
  30 +
  31 + /** 总营运公里 */
  32 + private double zgl;
  33 +
  34 + /** 实际运营公里 */
  35 + private double sjyygl;
  36 +
  37 + /** 实际空驶公里 */
  38 + private double sjksgl;
  39 +
  40 + /** 手动待发公里 */
  41 + private double sddfgl;
  42 +
  43 + /** 自动代发公里 */
  44 + private double zddfgl;
  45 +
  46 + /** 完全无Gps信号公里 */
  47 + private double wqwxhgl;
  48 +
  49 + /** 部分无Gps公里 */
  50 + private double bfwxhgl;
  51 +
  52 + /** 漂移公里 */
  53 + private double pygl;
  54 +
  55 + /** 临加公里 */
  56 + private double ljgl;
  57 +
  58 + /** 子任务 */
  59 + private double zrwgl;
  60 +
  61 + /** 总营运班次 */
  62 + private int zbc;
  63 +
  64 + /** 实际运营班次 */
  65 + private int sjyybc;
  66 +
  67 + /** 实际空驶班次 */
  68 + private int sjksbc;
  69 +
  70 + /** 手动待发班次 */
  71 + private int sddfbc;
  72 +
  73 + /** 自动代发班次 */
  74 + private int zddfbc;
  75 +
  76 + /** 完全无Gps信号班次 */
  77 + private int wqwxhbc;
  78 +
  79 + /** 部分无Gps班次 */
  80 + private int bfwxhbc;
  81 +
  82 + /** 漂移班次 */
  83 + private int pybc;
  84 +
  85 + /** 临加班次 */
  86 + private int ljbc;
  87 +
  88 + /** 子任务班次 */
  89 + private int zrwbc;
  90 +
  91 + /** 其他*/
  92 + private String other;
  93 +
  94 + /** 备注 */
  95 + private String remarks;
  96 +
  97 + /** 日期 (班次日期) */
  98 + private String rq;
  99 +
  100 + private Date createDate;
  101 +
  102 + public String getCompanyId() {
  103 + return companyId;
  104 + }
  105 +
  106 + public void setCompanyId(String companyId) {
  107 + this.companyId = companyId;
  108 + }
  109 +
  110 + public String getSubCompanyId() {
  111 + return subCompanyId;
  112 + }
  113 +
  114 + public void setSubCompanyId(String subCompanyId) {
  115 + this.subCompanyId = subCompanyId;
  116 + }
  117 +
  118 + public String getCompanyName() {
  119 + return companyName;
  120 + }
  121 +
  122 + public void setCompanyName(String companyName) {
  123 + this.companyName = companyName;
  124 + }
  125 +
  126 + public String getSubCompanyName() {
  127 + return subCompanyName;
  128 + }
  129 +
  130 + public void setSubCompanyName(String subCompanyName) {
  131 + this.subCompanyName = subCompanyName;
  132 + }
  133 +
  134 + public String getLineCode() {
  135 + return lineCode;
  136 + }
  137 +
  138 + public void setLineCode(String lineCode) {
  139 + this.lineCode = lineCode;
  140 + }
  141 +
  142 + public String getLineName() {
  143 + return lineName;
  144 + }
  145 +
  146 + public void setLineName(String lineName) {
  147 + this.lineName = lineName;
  148 + }
  149 +
  150 + public double getZgl() {
  151 + return zgl;
  152 + }
  153 +
  154 + public void setZgl(double zgl) {
  155 + this.zgl = zgl;
  156 + }
  157 +
  158 + public double getSjyygl() {
  159 + return sjyygl;
  160 + }
  161 +
  162 + public void setSjyygl(double sjyygl) {
  163 + this.sjyygl = sjyygl;
  164 + }
  165 +
  166 + public double getSjksgl() {
  167 + return sjksgl;
  168 + }
  169 +
  170 + public void setSjksgl(double sjksgl) {
  171 + this.sjksgl = sjksgl;
  172 + }
  173 +
  174 + public double getSddfgl() {
  175 + return sddfgl;
  176 + }
  177 +
  178 + public void setSddfgl(double sddfgl) {
  179 + this.sddfgl = sddfgl;
  180 + }
  181 +
  182 + public double getZddfgl() {
  183 + return zddfgl;
  184 + }
  185 +
  186 + public void setZddfgl(double zddfgl) {
  187 + this.zddfgl = zddfgl;
  188 + }
  189 +
  190 + public double getWqwxhgl() {
  191 + return wqwxhgl;
  192 + }
  193 +
  194 + public void setWqwxhgl(double wqwxhgl) {
  195 + this.wqwxhgl = wqwxhgl;
  196 + }
  197 +
  198 + public double getBfwxhgl() {
  199 + return bfwxhgl;
  200 + }
  201 +
  202 + public void setBfwxhgl(double bfwxhgl) {
  203 + this.bfwxhgl = bfwxhgl;
  204 + }
  205 +
  206 + public double getPygl() {
  207 + return pygl;
  208 + }
  209 +
  210 + public void setPygl(double pygl) {
  211 + this.pygl = pygl;
  212 + }
  213 +
  214 + public double getLjgl() {
  215 + return ljgl;
  216 + }
  217 +
  218 + public void setLjgl(double ljgl) {
  219 + this.ljgl = ljgl;
  220 + }
  221 +
  222 + public double getZrwgl() {
  223 + return zrwgl;
  224 + }
  225 +
  226 + public void setZrwgl(double zrwgl) {
  227 + this.zrwgl = zrwgl;
  228 + }
  229 +
  230 + public int getZbc() {
  231 + return zbc;
  232 + }
  233 +
  234 + public void setZbc(int zbc) {
  235 + this.zbc = zbc;
  236 + }
  237 +
  238 + public int getSjyybc() {
  239 + return sjyybc;
  240 + }
  241 +
  242 + public void setSjyybc(int sjyybc) {
  243 + this.sjyybc = sjyybc;
  244 + }
  245 +
  246 + public int getSjksbc() {
  247 + return sjksbc;
  248 + }
  249 +
  250 + public void setSjksbc(int sjksbc) {
  251 + this.sjksbc = sjksbc;
  252 + }
  253 +
  254 + public int getSddfbc() {
  255 + return sddfbc;
  256 + }
  257 +
  258 + public void setSddfbc(int sddfbc) {
  259 + this.sddfbc = sddfbc;
  260 + }
  261 +
  262 + public int getZddfbc() {
  263 + return zddfbc;
  264 + }
  265 +
  266 + public void setZddfbc(int zddfbc) {
  267 + this.zddfbc = zddfbc;
  268 + }
  269 +
  270 + public int getWqwxhbc() {
  271 + return wqwxhbc;
  272 + }
  273 +
  274 + public void setWqwxhbc(int wqwxhbc) {
  275 + this.wqwxhbc = wqwxhbc;
  276 + }
  277 +
  278 + public int getBfwxhbc() {
  279 + return bfwxhbc;
  280 + }
  281 +
  282 + public void setBfwxhbc(int bfwxhbc) {
  283 + this.bfwxhbc = bfwxhbc;
  284 + }
  285 +
  286 + public int getPybc() {
  287 + return pybc;
  288 + }
  289 +
  290 + public void setPybc(int pybc) {
  291 + this.pybc = pybc;
  292 + }
  293 +
  294 + public int getLjbc() {
  295 + return ljbc;
  296 + }
  297 +
  298 + public void setLjbc(int ljbc) {
  299 + this.ljbc = ljbc;
  300 + }
  301 +
  302 + public int getZrwbc() {
  303 + return zrwbc;
  304 + }
  305 +
  306 + public void setZrwbc(int zrwbc) {
  307 + this.zrwbc = zrwbc;
  308 + }
  309 +
  310 + public String getOther() {
  311 + return other;
  312 + }
  313 +
  314 + public void setOther(String other) {
  315 + this.other = other;
  316 + }
  317 +
  318 + public String getRemarks() {
  319 + return remarks;
  320 + }
  321 +
  322 + public void setRemarks(String remarks) {
  323 + this.remarks = remarks;
  324 + }
  325 +
  326 + public String getRq() {
  327 + return rq;
  328 + }
  329 +
  330 + public void setRq(String rq) {
  331 + this.rq = rq;
  332 + }
  333 +
  334 + public Date getCreateDate() {
  335 + return createDate;
  336 + }
  337 +
  338 + public void setCreateDate(Date createDate) {
  339 + this.createDate = createDate;
  340 + }
  341 +
  342 +
  343 +}
... ...
src/main/java/com/bsth/handler/ReportCalculationHandler.java 0 → 100644
  1 +package com.bsth.handler;
  2 +
  3 +import java.sql.PreparedStatement;
  4 +import java.sql.SQLException;
  5 +import java.util.List;
  6 +
  7 +import org.joda.time.DateTime;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  14 +import org.springframework.stereotype.Component;
  15 +import org.springframework.transaction.TransactionDefinition;
  16 +import org.springframework.transaction.TransactionStatus;
  17 +import org.springframework.transaction.support.DefaultTransactionDefinition;
  18 +
  19 +import com.bsth.entity.result.RevisedReport;
  20 +import com.bsth.service.ScheduleRealInfoService;
  21 +
  22 +
  23 +
  24 +/**
  25 + * @ClassName: MileageCalculationHandler.java
  26 + * @Description: TODO(营运公里处理程序)
  27 + * @author: YouRuiFeng
  28 + * @date: 2017-8-14 下午2:06:22
  29 + *
  30 + */
  31 +@Component
  32 +public class ReportCalculationHandler {
  33 +
  34 + @Autowired
  35 + ScheduleRealInfoService scheduleRealInfoService;
  36 +
  37 + @Autowired
  38 + JdbcTemplate jdbcTemplate;
  39 +
  40 + Logger logger = LoggerFactory.getLogger(this.getClass());
  41 +
  42 + public void calc() {
  43 + try {
  44 + DateTime dt = DateTime.now();
  45 + dt = dt.plusDays(-2);//计算两天前的数据
  46 + String rq = dt.toString("yyyy-MM-dd");
  47 +// String rq = "2017-08-29";
  48 + logger.info("开始计算报表: " + rq);
  49 + List<RevisedReport> oMList = scheduleRealInfoService.mileageCorrectionTj(rq);
  50 + logger.info("报表计算完成: " + rq);
  51 + save(oMList);
  52 + } catch (Exception e) {
  53 + logger.error("", e);
  54 + }
  55 + }
  56 +
  57 + private void save(final List<RevisedReport> list) {
  58 + //编程式事务
  59 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
  60 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  61 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  62 + TransactionStatus status = tran.getTransaction(def);
  63 +
  64 + String sqlMileage = "insert into calc_mileage(company_id, sub_company_id, company_name, sub_company_name, line_code, line_name, " +
  65 + "zyygl, sjyygl, sjksgl, sddfgl, zddfgl, wqwxhgl, bfwxhgl, pygl, ljgl, zrwgl, other, rq, remarks, create_date) " +
  66 + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  67 +
  68 + try {
  69 + jdbcTemplate.batchUpdate(sqlMileage, new BatchPreparedStatementSetter() {
  70 + @Override
  71 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  72 + RevisedReport report = list.get(i);
  73 + ps.setString(1, report.getCompanyId());
  74 + ps.setString(2, report.getSubCompanyId());
  75 + ps.setString(3, report.getCompanyName());
  76 + ps.setString(4, report.getSubCompanyName());
  77 + ps.setString(5, report.getLineCode());
  78 + ps.setString(6, report.getLineName());
  79 + ps.setDouble(7, report.getZgl());
  80 + ps.setDouble(8, report.getSjyygl());
  81 + ps.setDouble(9, report.getSjksgl());
  82 + ps.setDouble(10, report.getSddfgl());
  83 + ps.setDouble(11, report.getZddfgl());
  84 + ps.setDouble(12, report.getWqwxhgl());
  85 + ps.setDouble(13, report.getBfwxhgl());
  86 + ps.setDouble(14, report.getPygl());
  87 + ps.setDouble(15, report.getLjgl());
  88 + ps.setDouble(16, report.getZrwgl());
  89 + ps.setString(17, report.getOther());
  90 + ps.setString(18, report.getRq());
  91 + ps.setString(19, report.getRemarks());
  92 + ps.setDate(20, new java.sql.Date(report.getCreateDate().getTime()));
  93 + }
  94 +
  95 + @Override
  96 + public int getBatchSize() {
  97 + return list.size();
  98 + }
  99 + });
  100 +
  101 + String sqlSchedule = "insert into calc_schedule(company_id, sub_company_id, company_name, sub_company_name, line_code, line_name, " +
  102 + "zyybc, sjyybc, sjksbc, sddfbc, zddfbc, wqwxhbc, bfwxhbc, pybc, ljbc, zrwbc, other, rq, remarks, create_date) " +
  103 + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  104 +
  105 + jdbcTemplate.batchUpdate(sqlSchedule, new BatchPreparedStatementSetter() {
  106 + @Override
  107 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  108 + RevisedReport report = list.get(i);
  109 + ps.setString(1, report.getCompanyId());
  110 + ps.setString(2, report.getSubCompanyId());
  111 + ps.setString(3, report.getCompanyName());
  112 + ps.setString(4, report.getSubCompanyName());
  113 + ps.setString(5, report.getLineCode());
  114 + ps.setString(6, report.getLineName());
  115 + ps.setInt(7, report.getZbc());
  116 + ps.setInt(8, report.getSjyybc());
  117 + ps.setInt(9, report.getSjksbc());
  118 + ps.setInt(10, report.getSddfbc());
  119 + ps.setInt(11, report.getZddfbc());
  120 + ps.setInt(12, report.getWqwxhbc());
  121 + ps.setInt(13, report.getBfwxhbc());
  122 + ps.setInt(14, report.getPybc());
  123 + ps.setInt(15, report.getLjbc());
  124 + ps.setInt(16, report.getZrwbc());
  125 + ps.setString(17, report.getOther());
  126 + ps.setString(18, report.getRq());
  127 + ps.setString(19, report.getRemarks());
  128 + ps.setDate(20, new java.sql.Date(report.getCreateDate().getTime()));
  129 + }
  130 +
  131 + @Override
  132 + public int getBatchSize() {
  133 + return list.size();
  134 + }
  135 + });
  136 +
  137 + tran.commit(status);
  138 + } catch (Exception e) {
  139 + tran.rollback(status);
  140 + logger.error("", e);
  141 + }
  142 + }
  143 +}
... ...
src/main/java/com/bsth/repository/ScheduleRealInfoRepository.java 0 → 100644
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.ScheduleRealInfo;
  4 +import org.springframework.data.jpa.repository.EntityGraph;
  5 +import org.springframework.data.jpa.repository.Query;
  6 +import org.springframework.data.repository.PagingAndSortingRepository;
  7 +import org.springframework.stereotype.Repository;
  8 +
  9 +import java.util.List;
  10 +
  11 +@Repository
  12 +public interface ScheduleRealInfoRepository extends PagingAndSortingRepository<ScheduleRealInfo, Long> {
  13 +
  14 + //按照时间段统计
  15 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  16 + @Query("select DISTINCT s from ScheduleRealInfo s where s.scheduleDateStr=?1 order by s.xlBm")
  17 + List<ScheduleRealInfo> scheduleByDateAndLineTj(String scheduleDateStr);
  18 +
  19 +}
... ...
src/main/java/com/bsth/service/CulateService.java 0 → 100644
  1 +package com.bsth.service;
  2 +
  3 +import java.util.List;
  4 +
  5 +import com.bsth.entity.ScheduleRealInfo;
  6 +
  7 +public interface CulateService {
  8 +
  9 + double culateKsgl(List<ScheduleRealInfo> lists);
  10 +
  11 + double culateJccgl(List<ScheduleRealInfo> lists);
  12 +
  13 + double culateSjgl(List<ScheduleRealInfo> lists);
  14 +
  15 + double culateLjgl(List<ScheduleRealInfo> lists);
  16 +
  17 + double culateZrwgl(List<ScheduleRealInfo> lists);//所有子任务统计
  18 +
  19 + double culatesddfgl(List<ScheduleRealInfo> list);//手动待发调整公里
  20 +
  21 + double culatezddfgl(List<ScheduleRealInfo> list);//自动待发调整公里
  22 +
  23 + double culateSjgldf(ScheduleRealInfo list);//计算待发实际运营公里
  24 +
  25 + double culateSjgl(ScheduleRealInfo scheduleRealInfo);//一个班次实际公里
  26 +
  27 + double culateLjgl(ScheduleRealInfo scheduleRealInfo);//一个班次临加公里
  28 +
  29 + int culateLjbc(List<ScheduleRealInfo> lists);
  30 +
  31 + int culateSjbc(List<ScheduleRealInfo> lists);
  32 +
  33 + int culateKsbc(List<ScheduleRealInfo> lists);
  34 +
  35 + int culateJccbc(List<ScheduleRealInfo> lists);
  36 +
  37 + int culatesddfbc(List<ScheduleRealInfo> list);
  38 +
  39 + int culatezddfbc(List<ScheduleRealInfo> list);
  40 +
  41 + int culateZrwbc(List<ScheduleRealInfo> lists);
  42 +
  43 +}
  44 +
... ...
src/main/java/com/bsth/service/ScheduleRealInfoService.java 0 → 100644
  1 +package com.bsth.service;
  2 +
  3 +import com.bsth.entity.result.RevisedReport;
  4 +
  5 +import java.util.List;
  6 +
  7 + /**
  8 + * @ClassName: ScheduleRealInfoService.java
  9 + * @Description: TODO()
  10 + * @author: YouRuiFeng
  11 + * @date: 2017-8-15 下午1:36:58
  12 + *
  13 + */
  14 +public interface ScheduleRealInfoService {
  15 + List<RevisedReport> mileageCorrectionTj(String scheduleDateStr);
  16 +}
... ...
src/main/java/com/bsth/service/impl/CulateServiceImpl.java 0 → 100644
  1 +package com.bsth.service.impl;
  2 +
  3 +import java.util.Iterator;
  4 +import java.util.List;
  5 +import java.util.Set;
  6 +
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.jdbc.core.JdbcTemplate;
  9 +import org.springframework.stereotype.Service;
  10 +
  11 +import com.bsth.entity.ChildTaskPlan;
  12 +import com.bsth.entity.ScheduleRealInfo;
  13 +import com.bsth.service.CulateService;
  14 +import com.bsth.util.Arith;
  15 +
  16 +@Service
  17 +public class CulateServiceImpl implements CulateService{
  18 +
  19 + @Autowired
  20 + JdbcTemplate jdbcTemplate;
  21 +
  22 + @Override
  23 + public double culateKsgl(List<ScheduleRealInfo> lists) {
  24 + // TODO Auto-generated method stub
  25 + double ksgl =0;
  26 + for (int i = 0; i < lists.size(); i++) {
  27 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  28 + if (!(scheduleRealInfo.getBcType().equals("in")
  29 + || scheduleRealInfo.getBcType().equals("out"))) {
  30 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  31 + if(!childTaskPlans.isEmpty()){
  32 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  33 + while (it.hasNext()) {
  34 + ChildTaskPlan childTaskPlan = it.next();
  35 + if(childTaskPlan.getMileageType().equals("empty")){
  36 + if (!childTaskPlan.isDestroy()) {
  37 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  38 + ksgl=Arith.add(ksgl,jhgl);
  39 + }
  40 + }
  41 + }
  42 + }
  43 + }
  44 + }
  45 + return ksgl;
  46 + }
  47 +
  48 + @Override
  49 + public double culateJccgl(List<ScheduleRealInfo> lists) {
  50 + // TODO Auto-generated method stub
  51 + double jcclc =0;
  52 + for (int i = 0; i < lists.size(); i++) {
  53 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  54 + if (scheduleRealInfo.getBcType().equals("in")
  55 + || scheduleRealInfo.getBcType().equals("out")||scheduleRealInfo.getBcType().equals("ldks")) {
  56 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  57 + if(childTaskPlans.isEmpty()){
  58 + if(!scheduleRealInfo.isDestroy())
  59 + jcclc =Arith.add(jcclc, scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
  60 + }else{
  61 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  62 + while (it.hasNext()) {
  63 + ChildTaskPlan childTaskPlan = it.next();
  64 + if(childTaskPlan.getMileageType().equals("empty")){
  65 + if (!childTaskPlan.isDestroy()) {
  66 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  67 + jcclc=Arith.add(jcclc,jhgl);
  68 + }
  69 + }
  70 + }
  71 + }
  72 + }
  73 + }
  74 + return jcclc;
  75 + }
  76 +
  77 + @Override
  78 + public int culateKsbc(List<ScheduleRealInfo> lists) {
  79 + // TODO Auto-generated method stub
  80 + int ksbc =0;
  81 + for (int i = 0; i < lists.size(); i++) {
  82 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  83 + if (!(scheduleRealInfo.getBcType().equals("in")
  84 + || scheduleRealInfo.getBcType().equals("out"))) {
  85 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  86 + if(!childTaskPlans.isEmpty()){
  87 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  88 + while (it.hasNext()) {
  89 + ChildTaskPlan childTaskPlan = it.next();
  90 + if(childTaskPlan.getMileageType().equals("empty")){
  91 + if (!childTaskPlan.isDestroy()) {
  92 + ksbc++;
  93 + }
  94 + }
  95 + }
  96 + }
  97 + }
  98 + }
  99 + return ksbc;
  100 + }
  101 +
  102 + @Override
  103 + public int culateJccbc(List<ScheduleRealInfo> lists) {
  104 + // TODO Auto-generated method stub
  105 + int jccbc =0;
  106 + for (int i = 0; i < lists.size(); i++) {
  107 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  108 + if (scheduleRealInfo.getBcType().equals("in")
  109 + || scheduleRealInfo.getBcType().equals("out")||scheduleRealInfo.getBcType().equals("ldks")) {
  110 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  111 + if(childTaskPlans.isEmpty()){
  112 + if(!scheduleRealInfo.isDestroy())
  113 + jccbc++;
  114 + }else{
  115 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  116 + while (it.hasNext()) {
  117 + ChildTaskPlan childTaskPlan = it.next();
  118 + if(childTaskPlan.getMileageType().equals("empty")){
  119 + if (!childTaskPlan.isDestroy()) {
  120 + jccbc++;
  121 + }
  122 + }
  123 + }
  124 + }
  125 + }
  126 + }
  127 + return jccbc;
  128 + }
  129 +
  130 + @Override
  131 + public double culateSjgl(List<ScheduleRealInfo> lists) {
  132 + // TODO Auto-generated method stub
  133 + double sjgl =0.0;
  134 + for (int i = 0; i < lists.size(); i++) {
  135 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  136 + sjgl =Arith.add(sjgl,culateSjgl(scheduleRealInfo));
  137 + }
  138 + return sjgl;
  139 + }
  140 + @Override
  141 + public double culateSjgl(ScheduleRealInfo scheduleRealInfo) {
  142 + // TODO Auto-generated method stub
  143 + double sjgl =0.0;
  144 + if (!isInOut(scheduleRealInfo)) {
  145 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  146 + if(!scheduleRealInfo.isSflj()){
  147 + if(childTaskPlans.isEmpty()){
  148 + if(!scheduleRealInfo.isDestroy()){
  149 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  150 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  151 + if(jhlc-jhlcOrig>0){
  152 + sjgl=Arith.add(sjgl,jhlcOrig);
  153 + }else{
  154 + sjgl=Arith.add(sjgl,jhlc);
  155 + }
  156 +
  157 + }
  158 + }else{
  159 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  160 + while (it.hasNext()) {
  161 + ChildTaskPlan childTaskPlan = it.next();
  162 + if(childTaskPlan.getMileageType().equals("service")){
  163 + if (!childTaskPlan.isDestroy()) {
  164 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  165 + sjgl=Arith.add(sjgl,jhgl);
  166 + }
  167 + }
  168 + }
  169 + }
  170 + }
  171 + }
  172 + return sjgl;
  173 + }
  174 +
  175 + @Override
  176 + public int culateSjbc(List<ScheduleRealInfo> lists) {
  177 + // TODO Auto-generated method stub
  178 + int sjbc=0;
  179 + for (int i = 0; i < lists.size(); i++) {
  180 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  181 + if (!isInOut(scheduleRealInfo)) {
  182 + if(!scheduleRealInfo.isSflj()){
  183 + sjbc++;
  184 + }
  185 + }
  186 + }
  187 + return sjbc;
  188 + }
  189 +
  190 +
  191 + @Override
  192 + public double culateLjgl(ScheduleRealInfo scheduleRealInfo) {
  193 + // TODO Auto-generated method stub
  194 + double ljgl=0.0;
  195 + if (!isInOut(scheduleRealInfo)) {
  196 + if(!scheduleRealInfo.isDestroy()){
  197 + if(scheduleRealInfo.isSflj()){
  198 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  199 + if(childTaskPlans.isEmpty()){
  200 + ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
  201 + }else{
  202 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  203 + while (it.hasNext()) {
  204 + ChildTaskPlan childTaskPlan = it.next();
  205 + if(childTaskPlan.getMileageType().equals("service")){
  206 + if (!childTaskPlan.isDestroy()) {
  207 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  208 + ljgl=Arith.add(ljgl,jhgl);
  209 + }
  210 + }
  211 + }
  212 + }
  213 + }else{
  214 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  215 + if(childTaskPlans.isEmpty()){
  216 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  217 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  218 + double zjlc=Arith.sub(jhlc, jhlcOrig);
  219 + if(zjlc>0){
  220 + ljgl=Arith.add(zjlc, ljgl);
  221 + }
  222 + }
  223 + }
  224 + }
  225 +
  226 + }
  227 + return ljgl;
  228 + }
  229 +
  230 +
  231 + @Override
  232 + public double culateLjgl(List<ScheduleRealInfo> lists) {
  233 + // TODO Auto-generated method stub
  234 + double ljgl=0;
  235 + for (int i = 0; i < lists.size(); i++) {
  236 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  237 + ljgl = Arith.add(ljgl, culateLjgl(scheduleRealInfo));
  238 + }
  239 + return ljgl;
  240 + }
  241 +
  242 + @Override
  243 + public int culateLjbc(List<ScheduleRealInfo> lists) {
  244 + int ljbc=0;
  245 + for (int i = 0; i < lists.size(); i++) {
  246 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  247 + if (!isInOut(scheduleRealInfo)) {
  248 + if(scheduleRealInfo.isSflj()){
  249 + ljbc++;
  250 + }
  251 + }
  252 + }
  253 + return ljbc;
  254 + }
  255 +
  256 + @Override
  257 + public double culateZrwgl(List<ScheduleRealInfo> lists) {
  258 + // TODO 统计总子任务数
  259 + double zrwgl=0.0;
  260 + for (int i = 0; i < lists.size(); i++) {
  261 + ScheduleRealInfo t=lists.get(i);
  262 + if(!t.isSflj()){
  263 + Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
  264 + if(!childTaskPlans.isEmpty()){
  265 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  266 + while (it.hasNext()) {
  267 + ChildTaskPlan childTaskPlan = it.next();
  268 + zrwgl=Arith.add(zrwgl,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());
  269 + }
  270 + }
  271 + }
  272 + }
  273 + return zrwgl;
  274 + }
  275 +
  276 + @Override
  277 + public int culateZrwbc(List<ScheduleRealInfo> lists) {
  278 + // TODO 统计总子任务数
  279 + int zrwbc=0;
  280 + for (int i = 0; i < lists.size(); i++) {
  281 + ScheduleRealInfo t=lists.get(i);
  282 + if(!t.isSflj()){
  283 + Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
  284 + if(!childTaskPlans.isEmpty()){
  285 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  286 + while (it.hasNext()) {
  287 + ChildTaskPlan childTaskPlan = it.next();
  288 + zrwbc++;
  289 + }
  290 + }
  291 + }
  292 + }
  293 + return zrwbc;
  294 + }
  295 +
  296 + @Override
  297 + public double culatesddfgl(List<ScheduleRealInfo> list) {
  298 + double sddfgl = 0;
  299 + for(ScheduleRealInfo schedule : list){
  300 + if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
  301 + if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
  302 + if(!schedule.isDfAuto())
  303 + sddfgl = Arith.add(sddfgl, culateSjgldf(schedule));
  304 + }
  305 + }
  306 + }
  307 + return sddfgl;
  308 + }
  309 +
  310 + @Override
  311 + public int culatesddfbc(List<ScheduleRealInfo> list) {
  312 + int sddfbc = 0;
  313 + for(ScheduleRealInfo schedule : list){
  314 + if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
  315 + if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
  316 + if(!schedule.isDfAuto())
  317 + sddfbc++;
  318 + }
  319 + }
  320 + }
  321 + return sddfbc;
  322 + }
  323 +
  324 +
  325 + @Override
  326 + public double culatezddfgl(List<ScheduleRealInfo> list) {
  327 + double zddfgl = 0;
  328 + for(ScheduleRealInfo schedule : list){
  329 + if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
  330 + if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
  331 + if(schedule.isDfAuto())
  332 + zddfgl = Arith.add(zddfgl, culateSjgldf(schedule));
  333 + }
  334 + }
  335 + }
  336 + return zddfgl;
  337 + }
  338 +
  339 + @Override
  340 + public int culatezddfbc(List<ScheduleRealInfo> list) {
  341 + int zddfbc = 0;
  342 + for(ScheduleRealInfo schedule : list){
  343 + if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
  344 + if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
  345 + if(schedule.isDfAuto())
  346 + zddfbc++;
  347 + }
  348 + }
  349 + }
  350 + return zddfbc;
  351 + }
  352 +
  353 + @Override
  354 + public double culateSjgldf(ScheduleRealInfo scheduleRealInfo) {
  355 + // TODO Auto-generated method stub
  356 + double sjgl =0;
  357 + if (!isInOut(scheduleRealInfo)) {
  358 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  359 + if(!scheduleRealInfo.isSflj()){
  360 + if(childTaskPlans.isEmpty()){
  361 + if(!scheduleRealInfo.isDestroy()){
  362 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  363 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  364 + if(jhlc-jhlcOrig>0){
  365 + sjgl=Arith.add(sjgl,jhlcOrig);
  366 + }else{
  367 + sjgl=Arith.add(sjgl,jhlc);
  368 + }
  369 + }
  370 + }else{
  371 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  372 + while (it.hasNext()) {
  373 + ChildTaskPlan childTaskPlan = it.next();
  374 + if(childTaskPlan.getMileageType().equals("service")){
  375 + if (!childTaskPlan.isDestroy()) {
  376 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  377 + sjgl=Arith.add(sjgl,jhgl);
  378 + }
  379 + }
  380 + }
  381 + }
  382 + }
  383 + }
  384 + return sjgl;
  385 + }
  386 +
  387 + public static boolean isInOut(ScheduleRealInfo s){
  388 + boolean fage=false;
  389 + if(s.getBcType().equals("in")){
  390 + fage=true;
  391 + }
  392 + if(s.getBcType().equals("out")){
  393 + fage=true;
  394 + }
  395 + if(s.getBcType().equals("ldks")){
  396 + fage=true;
  397 + }
  398 +
  399 + return fage;
  400 + }
  401 +}
... ...
src/main/java/com/bsth/service/impl/ScheduleRealInfoServiceImpl.java 0 → 100644
  1 +package com.bsth.service.impl;
  2 +
  3 +import com.bsth.entity.ChildTaskPlan;
  4 +import com.bsth.entity.Equipment;
  5 +import com.bsth.entity.ScheduleRealInfo;
  6 +import com.bsth.entity.result.RevisedReport;
  7 +import com.bsth.repository.ScheduleRealInfoRepository;
  8 +import com.bsth.service.CulateService;
  9 +import com.bsth.service.ScheduleRealInfoService;
  10 +import com.bsth.util.Arith;
  11 +import com.bsth.util.DBUtils_MS;
  12 +
  13 +import org.slf4j.Logger;
  14 +import org.slf4j.LoggerFactory;
  15 +import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  17 +import org.springframework.jdbc.core.JdbcTemplate;
  18 +import org.springframework.stereotype.Service;
  19 +
  20 +import java.sql.Connection;
  21 +import java.sql.PreparedStatement;
  22 +import java.sql.ResultSet;
  23 +import java.text.ParseException;
  24 +import java.text.SimpleDateFormat;
  25 +import java.util.ArrayList;
  26 +import java.util.Calendar;
  27 +import java.util.Collections;
  28 +import java.util.Date;
  29 +import java.util.List;
  30 +import java.util.Set;
  31 +
  32 +@Service
  33 +public class ScheduleRealInfoServiceImpl implements ScheduleRealInfoService {
  34 +
  35 + @Autowired
  36 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  37 +
  38 + @Autowired
  39 + JdbcTemplate jdbcTemplate;
  40 +
  41 + @Autowired
  42 + CulateService culateService;
  43 +
  44 + Logger logger = LoggerFactory.getLogger(this.getClass());
  45 +
  46 + List<Equipment> equipmentCodeList = new ArrayList<>();
  47 +
  48 + List<Object[]> gpsDateList = new ArrayList<>();
  49 +
  50 + @Override
  51 + public List<RevisedReport> mileageCorrectionTj(String scheduleDateStr) {
  52 + try {
  53 +// logger.info("-----------开始加载设备号!!!!!!!!!");
  54 + initEquipmentCodeList();
  55 +// logger.info("-----------设备号个数:"+equipmentCodeList.size());
  56 + } catch (Exception e) {
  57 + // TODO Auto-generated catch block
  58 + e.printStackTrace();
  59 + }
  60 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();//所有线路
  61 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  62 + List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();//单个线路
  63 + //查询所有线路
  64 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj(scheduleDateStr);
  65 +
  66 + for (int i = 0; i < list.size(); i++) {
  67 + ScheduleRealInfo s=list.get(i);
  68 + Set<ChildTaskPlan> cts = s.getcTasks();
  69 + if(cts != null && cts.size() > 0){
  70 + list_s.add(s);
  71 + }else{
  72 + if(s.getZdsjActual()!=null){
  73 + list_s.add(s);
  74 + }
  75 + }
  76 + }
  77 + List<RevisedReport> omList = new ArrayList<RevisedReport>();
  78 + for (int i = 0; i < list.size(); i++) {
  79 + if(i<list.size()-1){
  80 + if(list.get(i+1).getXlBm().equals(list.get(i).getXlBm())){
  81 + lists.add(list.get(i));
  82 + }else{
  83 + lists.add(list.get(i));
  84 + RevisedReport report=staticTj(lists);
  85 + omList.add(report);
  86 + lists.clear();
  87 + }
  88 + }else{
  89 + if(list.get(i).getXlBm().equals(list.get(i-1).getXlBm())){
  90 + lists.add(list.get(i));
  91 + RevisedReport report=staticTj(lists);
  92 + omList.add(report);
  93 + }else{
  94 + lists.add(list.get(i));
  95 + RevisedReport report=staticTj(lists);
  96 + omList.add(report);
  97 + lists.clear();
  98 + }
  99 + }
  100 + }
  101 + return omList;
  102 + }
  103 +
  104 + public final RevisedReport staticTj(List<ScheduleRealInfo> list){
  105 + List<Long> bcsj = new ArrayList<>();//多有班次的时间
  106 + String realExecDate ="";
  107 + Boolean iskt = false;//班次是否跨天
  108 + String lineId = list.get(0).getXlBm();
  109 + List<ScheduleRealInfo> listSj=new ArrayList<ScheduleRealInfo>();//实际营运的班次
  110 + double wqwxhgl = 0.0;//完全漂移公里
  111 + double bfwxhgl = 0.0;//部分漂移公里
  112 + int wqwxhbc = 0;//完全漂移班次
  113 + int bfwxhbc = 0;//部分漂移班次
  114 + double pygl = 0.0;//子任务公里
  115 + int pybc = 0;//子任务
  116 + for(int i=0;i<list.size();i++){
  117 + ScheduleRealInfo s=list.get(i);
  118 + Set<ChildTaskPlan> cts = s.getcTasks();
  119 + if(cts != null && cts.size() > 0){
  120 + listSj.add(s);
  121 + }else{
  122 + if(s.getZdsjActual()!=null){
  123 + listSj.add(s);
  124 + }
  125 + }
  126 + try {
  127 + if (!realExecDate.equals(s.getRealExecDate())) {
  128 + iskt = true;
  129 + }
  130 + realExecDate = s.getRealExecDate();//实际班次日期
  131 + String fcsj = "";
  132 + if(s.getFcsjActual() == null || s.getFcsjActual().equals("")) {
  133 + fcsj = s.getFcsj();
  134 + } else {
  135 + fcsj = s.getFcsjActual();
  136 + }
  137 + String zdsj = "";
  138 + if(s.getZdsjActual() == null || s.getZdsjActual().equals("")) {
  139 + zdsj = s.getZdsj();
  140 + } else {
  141 + zdsj = s.getZdsjActual();
  142 + }
  143 + Long fcsjStr = Long.valueOf(dateToStamp(realExecDate +" " + fcsj +":00"));
  144 + Long zdsjStr = Long.valueOf(dateToStamp(realExecDate +" " + zdsj +":00"));
  145 + if (zdsjStr < fcsjStr) {//到站时间跨天 则到站时间加一天时间
  146 + zdsjStr = (1000 * 60 * 60 * 24) + zdsjStr;
  147 + }
  148 + bcsj.add(fcsjStr);
  149 + bcsj.add(zdsjStr);
  150 + } catch (NumberFormatException e) {
  151 + // TODO Auto-generated catch block
  152 + e.printStackTrace();
  153 + } catch (ParseException e) {
  154 + // TODO Auto-generated catch block
  155 + e.printStackTrace();
  156 + }
  157 + }
  158 + logger.info("计算线路:"+lineId);
  159 + if (iskt) {
  160 + realExecDate = "('"+ orderDate(realExecDate)+"','"+ (orderDate(realExecDate)+1) +"')";
  161 + initGpsDateList(realExecDate,lineId,Collections.min(bcsj),Collections.max(bcsj));
  162 + } else {
  163 + realExecDate = "('"+ orderDate(realExecDate) +"')";
  164 + initGpsDateList(realExecDate,lineId,Collections.min(bcsj),Collections.max(bcsj));
  165 + }
  166 + for (int i = 0; i < listSj.size(); i++) {
  167 + ScheduleRealInfo sr=listSj.get(i);
  168 + try {
  169 + realExecDate = sr.getRealExecDate();//实际班次日期
  170 + String fcsj = "";
  171 + if(sr.getFcsjActual() == null || sr.getFcsjActual().equals("")) {
  172 + fcsj = sr.getFcsj();
  173 + } else {
  174 + fcsj = sr.getFcsjActual();
  175 + }
  176 + String zdsj = "";
  177 + if(sr.getZdsjActual() == null || sr.getZdsjActual().equals("")) {
  178 + zdsj = sr.getZdsj();
  179 + } else {
  180 + zdsj = sr.getZdsjActual();
  181 + }
  182 + Long fcsjStr = Long.valueOf(dateToStamp(realExecDate +" " + fcsj +":00"));
  183 + Long zdsjStr = Long.valueOf(dateToStamp(realExecDate +" " + zdsj +":00"));
  184 + if (zdsjStr < fcsjStr) {//到站时间跨天 则到站时间加一天时间
  185 + zdsjStr = (1000 * 60 * 60 * 24) + zdsjStr;
  186 + }
  187 +
  188 + double sjgl = culateService.culateSjgl(sr);//一个班次实际公里
  189 + double ljgl = culateService.culateLjgl(sr); //一个班次临加公里
  190 + double zyygl = Arith.add(sjgl,ljgl); //一个班次总运营公里
  191 +
  192 + String equipment_code = getEquipmentCode(sr.getClZbh());
  193 + List<Long> listTime = getGpsDate(realExecDate, equipment_code, fcsjStr, zdsjStr);
  194 + if (listTime.size() > 10) {
  195 + for (int j = 1; j < listTime.size(); j++) {
  196 + if ((listTime.get(j) - listTime.get(j-1))/ (1000 * 60) > 5) {
  197 + bfwxhgl = Arith.add(bfwxhgl,zyygl);
  198 + if (!CulateServiceImpl.isInOut(sr)) {
  199 + bfwxhbc++;
  200 + }
  201 + continue;
  202 + }
  203 + }
  204 + } else {
  205 + wqwxhgl = Arith.add(wqwxhgl,zyygl);
  206 + if (!CulateServiceImpl.isInOut(sr)) {
  207 + wqwxhbc++;
  208 + }
  209 + }
  210 + int type = sr.getDriftStatus();
  211 + if (type == 1 || type ==2) {
  212 + pygl = Arith.add(pygl,zyygl);
  213 + if (!CulateServiceImpl.isInOut(sr)) {
  214 + pybc++;
  215 + }
  216 + }
  217 + } catch (Exception e) {
  218 + // TODO Auto-generated catch block
  219 + e.printStackTrace();
  220 + }
  221 + }
  222 + RevisedReport report = new RevisedReport();
  223 + if(list.size()>0){
  224 + double ljgl = culateService.culateLjgl(listSj); //临加公里
  225 + double sjgl = culateService.culateSjgl(listSj);//实际公里
  226 + double zyygl = Arith.add(sjgl,ljgl); //总运营公里
  227 + int ljbc = culateService.culateLjbc(listSj);
  228 + int sjbc = culateService.culateSjbc(listSj);
  229 + int zyybc = ljbc + sjbc;//总(实际)营运班次
  230 +
  231 + double sjjccgl=culateService.culateJccgl(listSj);
  232 + double sjksgl = culateService.culateKsgl(listSj);
  233 + double zksgl=Arith.add(sjjccgl, sjksgl);//实际空驶公里
  234 + int sjjccbc=culateService.culateJccbc(listSj);
  235 + int sjksbc = culateService.culateKsbc(listSj);
  236 + int zksbc = sjjccbc + sjksbc;//实际空驶班次
  237 +
  238 + double zgl = Arith.add(zyygl, zksgl);//实际总公里
  239 + int zbc = zksbc + zyybc;//实际总
  240 +
  241 + double sddfgl =culateService.culatesddfgl(list);//手动待发调整公里
  242 + double zddfgl = culateService.culatezddfgl(list);//自动待发调整公里
  243 + double zrwgl = culateService.culateZrwgl(list);//子任务公里
  244 + int sddfbc =culateService.culatesddfbc(list);//手动待发调整
  245 + int zddfbc = culateService.culatezddfbc(list);//自动待发调整
  246 + int zrwbc = culateService.culateZrwbc(list);//子任务
  247 + report.setCompanyId(list.get(0).getGsBm());
  248 + report.setSubCompanyId(list.get(0).getFgsBm());
  249 + report.setCompanyName(list.get(0).getGsName());
  250 + report.setSubCompanyName(list.get(0).getFgsName());
  251 + report.setLineCode(list.get(0).getXlBm());
  252 + report.setLineName(list.get(0).getXlName());
  253 + report.setZgl(zgl);
  254 + report.setSjyygl(zyygl);
  255 + report.setSjksgl(zksgl);
  256 + report.setSddfgl(sddfgl);
  257 + report.setZddfgl(zddfgl);
  258 + report.setWqwxhgl(wqwxhgl);
  259 + report.setBfwxhgl(bfwxhgl);
  260 + report.setPygl(pygl);
  261 + report.setLjgl(ljgl);
  262 + report.setZrwgl(zrwgl);
  263 + report.setZbc(zbc);
  264 +
  265 + report.setSjyybc(zyybc);
  266 + report.setSjksbc(zksbc);
  267 + report.setSddfbc(sddfbc);
  268 + report.setZddfbc(zddfbc);
  269 + report.setWqwxhbc(wqwxhbc);
  270 + report.setBfwxhbc(bfwxhbc);
  271 + report.setPybc(pybc);
  272 + report.setLjbc(ljbc);
  273 + report.setZrwbc(zrwbc);
  274 +
  275 + report.setRq(list.get(0).getScheduleDateStr());
  276 + report.setOther(null);
  277 + report.setCreateDate(new Date());
  278 + }
  279 + return report;
  280 + }
  281 +
  282 + public void initGpsDateList(String scheduleDateStr, String lineId, Long startTime, Long endTime) {
  283 +
  284 + gpsDateList.clear();//清空上一条线路的gps信息
  285 + Connection conn = null;
  286 + PreparedStatement ps = null;
  287 + ResultSet rs = null;
  288 +
  289 + Date date=new Date();
  290 + Calendar calendar=Calendar.getInstance();
  291 + calendar.setTime(date);
  292 + String sql = "select device_id as device_id, ts as ts from bsth_c_gps_info where days_year in "+ scheduleDateStr +" and line_id=? and ts>=? and ts<=? ORDER BY device_id , ts";
  293 + try{
  294 + conn = DBUtils_MS.getConnection();
  295 + ps = conn.prepareStatement(sql);
  296 + ps.setString(1, lineId);
  297 + ps.setLong(2, startTime);
  298 + ps.setLong(3, endTime);
  299 + rs = ps.executeQuery();
  300 + while(rs.next()){
  301 + Object obj[] = new Object[2];
  302 + obj[0] = rs.getString("device_id");
  303 + obj[1] = rs.getString("ts");
  304 + gpsDateList.add(obj);
  305 + }
  306 + }catch(Exception e){
  307 + logger.error("", e);
  308 + }finally {
  309 + DBUtils_MS.close(rs, ps, conn);
  310 + }
  311 + }
  312 +
  313 + public void initEquipmentCodeList() throws Exception {
  314 +
  315 + String sql = "select inside_code, equipment_code from bsth_c_cars where 1=1";
  316 + equipmentCodeList = jdbcTemplate.query(sql, new BeanPropertyRowMapper(Equipment.class));
  317 +
  318 + /*Connection conn = null;
  319 + PreparedStatement ps = null;
  320 + ResultSet rs = null;
  321 +
  322 + // 设置连接数据库的配置信息 本地
  323 + String url = "jdbc:mysql://localhost:3306/control_cope?"
  324 + + "user=root&password=root&useUnicode=true&characterEncoding=UTF8";
  325 +
  326 + // 设置连接数据库的配置信息 服务器
  327 + String url = "jdbc:mysql://10.10.150.20:3306/control?useUnicode=true&characterEncoding=UTF8";
  328 +
  329 + try {
  330 + // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
  331 + // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
  332 + Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
  333 +// System.out.println("成功加载MySQL驱动程序");
  334 + // 一个Connection代表一个数据库连接
  335 + conn = DriverManager.getConnection(url);
  336 + // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
  337 + String sql = "select inside_code, equipment_code from bsth_c_cars where 1=1";
  338 + ps = conn.prepareStatement(sql);
  339 + rs = ps.executeQuery();
  340 + while(rs.next()){
  341 + Object obj[] = new Object[2];
  342 + obj[0] = rs.getString("inside_code"); //车辆自编号
  343 + obj[1] = rs.getString("equipment_code").toString(); //终端设备号
  344 + equipmentCodeList.add(obj);
  345 + }
  346 + } catch (SQLException e) {
  347 + System.out.println("MySQL操作错误");
  348 + e.printStackTrace();
  349 + } catch (Exception e) {
  350 + e.printStackTrace();
  351 + } finally {
  352 + rs.close();
  353 + ps.close();
  354 + conn.close();
  355 + } */
  356 + }
  357 +
  358 + /** 获取设备终端号 */
  359 + public String getEquipmentCode(String clZbm) throws Exception {
  360 + String equipment_code = "";
  361 + for (Equipment equipment:equipmentCodeList) {
  362 + if (equipment.getInside_code().equals(clZbm)) {
  363 + equipment_code = equipment.getEquipment_code().toString();
  364 + }
  365 + }
  366 + return equipment_code;
  367 + }
  368 +
  369 + public List<Long> getGpsDate(String daysYear, String equipment_code, Long fcsjStr, Long zdsjStr) throws ParseException {
  370 + List<Long> list = new ArrayList<>();
  371 + for (Object[] obj :gpsDateList ) {
  372 + if (obj[0].equals(equipment_code)) {
  373 + Long ts = Long.valueOf(obj[1].toString());
  374 + if (ts >= fcsjStr && ts <= zdsjStr) {
  375 + list.add(ts);
  376 + }
  377 + }
  378 + }
  379 + return list;
  380 + }
  381 +
  382 + /*
  383 + * 将时间转换为时间戳
  384 + */
  385 + public static String dateToStamp(String s) throws ParseException{
  386 + String res;
  387 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  388 + Date date = simpleDateFormat.parse(s);
  389 + long ts = date.getTime();
  390 + res = String.valueOf(ts);
  391 + return res;
  392 + }
  393 +
  394 + /*
  395 + * 将时间戳转换为时间
  396 + */
  397 + public static String stampToDate(String s){
  398 + String res;
  399 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  400 + long lt = new Long(s);
  401 + Date date = new Date(lt);
  402 + res = simpleDateFormat.format(date);
  403 + return res;
  404 + }
  405 +
  406 + /*
  407 + * 计算今天是今年的第几天
  408 + */
  409 + public int orderDate(String dateStr){
  410 + int dateSum = 0;
  411 + /*SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  412 + String dateStr = format.format(date);*/
  413 + int year = Integer.valueOf(dateStr.substring(0,4));
  414 + int month = Integer.valueOf(dateStr.substring(5,7));
  415 + int day = Integer.valueOf(dateStr.substring(8,10));
  416 + for (int i = 1; i < month; i++){
  417 + switch(i){
  418 + case 1: case 3: case 5: case 7: case 8: case 10: case 12:dateSum += 31; break;
  419 + case 4: case 6: case 9: case 11:dateSum += 30; break;
  420 + case 2:
  421 + if(((year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0))
  422 + dateSum += 29;
  423 + else dateSum += 28;
  424 + }
  425 + }
  426 +
  427 + return dateSum = dateSum + day;
  428 + }
  429 +
  430 +}
... ...
src/main/java/com/bsth/thread/ReportCalculationThrad.java 0 → 100644
  1 +package com.bsth.thread;
  2 +
  3 +import org.slf4j.Logger;
  4 +import org.slf4j.LoggerFactory;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.stereotype.Component;
  7 +
  8 +import com.bsth.handler.ReportCalculationHandler;
  9 +
  10 +/**
  11 + * @ClassName: MileageCalculationThrad.java
  12 + * @Description: TODO(营运公里计算线程)
  13 + * @author: YouRuiFeng
  14 + * @date: 2017-8-14 下午2:04:14
  15 + *
  16 + */
  17 +@Component
  18 +public class ReportCalculationThrad extends Thread {
  19 + @Autowired
  20 + ReportCalculationHandler mileageCalculationHandler;
  21 +
  22 + Logger logger = LoggerFactory.getLogger(this.getClass());
  23 +
  24 + @Override
  25 + public void run() {
  26 + try {
  27 + mileageCalculationHandler.calc();
  28 + } catch (Exception e) {
  29 + logger.error("", e);
  30 + }
  31 + }
  32 +}
... ...
src/main/java/com/bsth/util/Arith.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +/**
  6 + * 进行BigDecimal对象的加减乘除,四舍五入等运算的工具类
  7 + * @author ameyume
  8 + *
  9 + */
  10 +public class Arith {
  11 +
  12 + /**
  13 + * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
  14 + * 确的浮点数运算,包括加减乘除和四舍五入。
  15 + */
  16 + //默认除法运算精度
  17 + private static final int DEF_DIV_SCALE = 10;
  18 +
  19 + //这个类不能实例化
  20 + private Arith(){
  21 + }
  22 +
  23 + /**
  24 + * 提供精确的加法运算。
  25 + * @param v1 被加数
  26 + * @param v2 加数
  27 + * @return 两个参数的和
  28 + */
  29 + public static double add(Object v1,Object v2){
  30 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  31 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  32 + return b1.add(b2).doubleValue();
  33 + }
  34 +
  35 + /**
  36 + * 提供精确的减法运算。
  37 + * @param v1 被减数
  38 + * @param v2 减数
  39 + * @return 两个参数的差
  40 + */
  41 + public static double sub(Object v1,Object v2){
  42 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  43 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  44 + return b1.subtract(b2).doubleValue();
  45 + }
  46 +
  47 + /**
  48 + * 提供精确的乘法运算。
  49 + * @param v1 被乘数
  50 + * @param v2 乘数
  51 + * @return 两个参数的积
  52 + */
  53 + public static double mul(Object v1,Object v2){
  54 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  55 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  56 + return b1.multiply(b2).doubleValue();
  57 + }
  58 +
  59 + /**
  60 + * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
  61 + * 小数点以后10位,以后的数字四舍五入。
  62 + * @param v1 被除数
  63 + * @param v2 除数
  64 + * @return 两个参数的商
  65 + */
  66 + public static double div(Object v1,Object v2){
  67 + return div(v1,v2,DEF_DIV_SCALE);
  68 + }
  69 +
  70 + /**
  71 + * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
  72 + * 定精度,以后的数字四舍五入。
  73 + * @param v1 被除数
  74 + * @param v2 除数
  75 + * @param scale 表示表示需要精确到小数点以后几位。
  76 + * @return 两个参数的商
  77 + */
  78 + public static double div(Object v1,Object v2,int scale){
  79 + if(scale<0){
  80 + throw new IllegalArgumentException(
  81 + "The scale must be a positive integer or zero");
  82 + }
  83 + BigDecimal b1 = new BigDecimal(String.valueOf(v1));
  84 + BigDecimal b2 = new BigDecimal(String.valueOf(v2));
  85 + return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
  86 + }
  87 +
  88 + /**
  89 + * 提供精确的小数位四舍五入处理。
  90 + * @param v 需要四舍五入的数字
  91 + * @param scale 小数点后保留几位
  92 + * @return 四舍五入后的结果
  93 + */
  94 + public static double round(Object v,int scale){
  95 + if(scale<0){
  96 + throw new IllegalArgumentException(
  97 + "The scale must be a positive integer or zero");
  98 + }
  99 + BigDecimal b = new BigDecimal(String.valueOf(v));
  100 + BigDecimal one = new BigDecimal("1");
  101 + return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
  102 + }
  103 +
  104 + /**
  105 + * 提供精确的类型转换(Float)
  106 + * @param v 需要被转换的数字
  107 + * @return 返回转换结果
  108 + */
  109 + public static float convertsToFloat(double v){
  110 + BigDecimal b = new BigDecimal(v);
  111 + return b.floatValue();
  112 + }
  113 +
  114 + /**
  115 + * 提供精确的类型转换(Int)不进行四舍五入
  116 + * @param v 需要被转换的数字
  117 + * @return 返回转换结果
  118 + */
  119 + public static int convertsToInt(double v){
  120 + BigDecimal b = new BigDecimal(v);
  121 + return b.intValue();
  122 + }
  123 +
  124 + /**
  125 + * 提供精确的类型转换(Long)
  126 + * @param v 需要被转换的数字
  127 + * @return 返回转换结果
  128 + */
  129 + public static long convertsToLong(double v){
  130 + BigDecimal b = new BigDecimal(v);
  131 + return b.longValue();
  132 + }
  133 +
  134 + /**
  135 + * 返回两个数中大的一个值
  136 + * @param v1 需要被对比的第一个数
  137 + * @param v2 需要被对比的第二个数
  138 + * @return 返回两个数中大的一个值
  139 + */
  140 + public static double returnMax(double v1,double v2){
  141 + BigDecimal b1 = new BigDecimal(v1);
  142 + BigDecimal b2 = new BigDecimal(v2);
  143 + return b1.max(b2).doubleValue();
  144 + }
  145 +
  146 + /**
  147 + * 返回两个数中小的一个值
  148 + * @param v1 需要被对比的第一个数
  149 + * @param v2 需要被对比的第二个数
  150 + * @return 返回两个数中小的一个值
  151 + */
  152 + public static double returnMin(double v1,double v2){
  153 + BigDecimal b1 = new BigDecimal(v1);
  154 + BigDecimal b2 = new BigDecimal(v2);
  155 + return b1.min(b2).doubleValue();
  156 + }
  157 +
  158 + /**
  159 + * 精确对比两个数字
  160 + * @param v1 需要被对比的第一个数
  161 + * @param v2 需要被对比的第二个数
  162 + * @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1
  163 + */
  164 + public static int compareTo(double v1,double v2){
  165 + BigDecimal b1 = new BigDecimal(v1);
  166 + BigDecimal b2 = new BigDecimal(v2);
  167 + return b1.compareTo(b2);
  168 + }
  169 +
  170 +}
0 171 \ No newline at end of file
... ...
src/main/java/com/bsth/util/ConfigUtil.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +public class ConfigUtil {
  4 +
  5 + static Tools tools;
  6 +
  7 + static{
  8 + tools = new Tools("application.properties");
  9 + String active = tools.getValue("spring.profiles.active");
  10 + tools = new Tools("application-"+active+".properties");
  11 + }
  12 +
  13 + public static String get(String key){
  14 + return tools.getValue(key);
  15 + }
  16 +}
... ...
src/main/java/com/bsth/util/ConvertUtil.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import com.google.common.collect.ArrayListMultimap;
  4 +import org.joda.time.format.DateTimeFormat;
  5 +import org.joda.time.format.DateTimeFormatter;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +
  9 +import java.lang.reflect.Field;
  10 +import java.util.*;
  11 +
  12 +/**
  13 + * 数据转换
  14 + * Created by panzhao on 2017/3/13.
  15 + */
  16 +public class ConvertUtil<T> {
  17 +
  18 + Logger logger = LoggerFactory.getLogger(this.getClass());
  19 + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyyMMdd");
  20 +
  21 + /**
  22 + * 根据指定字段 将 list 分组
  23 + *
  24 + * @param list
  25 + * @param separator 字段使用分隔符连接 组成key
  26 + * @param fields
  27 + * @return
  28 + */
  29 + public ArrayListMultimap<String, T> groupMultiList(List<T> list, String separator, Field... fields) {
  30 + ArrayListMultimap<String, T> multimap = ArrayListMultimap.create();
  31 +
  32 + String key;
  33 + //Object field;
  34 + try {
  35 + for (T t : list) {
  36 +
  37 + key = "";
  38 + for (Field f : fields) {
  39 + f.setAccessible(true);
  40 + //日期类型格式化为 YYYY-MM-DD
  41 + if (f.getType().equals(Date.class))
  42 + key += (separator + fmtyyyyMMdd.print(((Date) f.get(t)).getTime()));
  43 + else
  44 + key += (separator + f.get(t).toString());
  45 + }
  46 + key = key.substring(1);
  47 +
  48 + multimap.put(key, t);
  49 + }
  50 + } catch (Exception e) {
  51 + logger.error("", e);
  52 + }
  53 +
  54 + return multimap;
  55 + }
  56 +
  57 + /**
  58 + * 根据指定字段 将 list 分组
  59 + *
  60 + * @param list
  61 + * @param separator 字段使用分隔符连接 组成key
  62 + * @param fields
  63 + * @return
  64 + */
  65 + public Map<String, T> groupList(List<T> list, String separator, Field... fields) {
  66 + Map<String, T> map = new HashMap<>();
  67 +
  68 + String key;
  69 + //Object field;
  70 + try {
  71 + for (T t : list) {
  72 +
  73 + key = "";
  74 + for (Field f : fields) {
  75 + f.setAccessible(true);
  76 + //日期类型格式化为 YYYY-MM-DD
  77 + if (f.getType().equals(Date.class))
  78 + key += (separator + fmtyyyyMMdd.print(((Date) f.get(t)).getTime()));
  79 + else
  80 + key += (separator + f.get(t).toString());
  81 + }
  82 + key = key.substring(1);
  83 +
  84 + map.put(key, t);
  85 + }
  86 + } catch (Exception e) {
  87 + logger.error("", e);
  88 + }
  89 +
  90 + return map;
  91 + }
  92 +
  93 + /**
  94 + * 计算并集
  95 + *
  96 + * @param all
  97 + * @param sub
  98 + * @return
  99 + */
  100 + public List<String> calcUnion(Collection<String> all, Collection<String> sub) {
  101 + List<String> rs = new ArrayList<>();
  102 +
  103 + for (String str : all) {
  104 + if (sub.contains(str))
  105 + rs.add(str);
  106 + }
  107 + return rs;
  108 + }
  109 +
  110 + /**
  111 + * 计算补集
  112 + *
  113 + * @param all
  114 + * @param sub
  115 + * @return
  116 + */
  117 + public List<String> calcComplement(Collection<String> all, Collection<String> sub) {
  118 + List<String> rs = new ArrayList<>();
  119 +
  120 + for (String str : all) {
  121 + if (!sub.contains(str))
  122 + rs.add(str);
  123 + }
  124 + return rs;
  125 + }
  126 +}
... ...
src/main/java/com/bsth/util/DBUtils_MS.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import com.mchange.v2.c3p0.DataSources;
  4 +import org.apache.log4j.Logger;
  5 +
  6 +import javax.sql.DataSource;
  7 +import java.io.FileNotFoundException;
  8 +import java.io.IOException;
  9 +import java.sql.Connection;
  10 +import java.sql.ResultSet;
  11 +import java.sql.SQLException;
  12 +import java.sql.Statement;
  13 +import java.util.HashMap;
  14 +import java.util.Map;
  15 +import java.util.Properties;
  16 +
  17 +/**
  18 + * 网关ms库连接池
  19 + * @author PanZhao
  20 + *
  21 + */
  22 +//@Component
  23 +public class DBUtils_MS {
  24 +
  25 + private static String url = null;
  26 +
  27 + private static String username = null;
  28 +
  29 + private static String pwd = null;
  30 +
  31 + private static DataSource ds_pooled;
  32 +
  33 + static Logger logger = Logger.getLogger(DBUtils_MS.class);
  34 +
  35 + static {
  36 + Properties env = new Properties();
  37 +
  38 + try {
  39 + env.load(DBUtils_MS.class.getClassLoader().getResourceAsStream("ms-jdbc.properties"));
  40 + // 1. 加载驱动类
  41 + Class.forName(env.getProperty("ms.mysql.driver"));
  42 +
  43 + url = env.getProperty("ms.mysql.url");
  44 + username = env.getProperty("ms.mysql.username");
  45 + pwd = env.getProperty("ms.mysql.password");
  46 +
  47 + // 设置连接数据库的配置信息
  48 + DataSource ds_unpooled = DataSources.unpooledDataSource(url,
  49 + username, pwd);
  50 +
  51 + Map<String, Object> pool_conf = new HashMap<String, Object>();
  52 + // 设置最大连接数
  53 + pool_conf.put("maxPoolSize", 10);
  54 +
  55 + pool_conf.put("testConnectionOnCheckout", false);
  56 + //异步检测连接的有效性
  57 + pool_conf.put("testConnectionOnCheckin", true);
  58 + //30秒检测一次
  59 + pool_conf.put("idleConnectionTestPeriod", 30);
  60 + ds_pooled = DataSources.pooledDataSource(ds_unpooled, pool_conf);
  61 + } catch (FileNotFoundException e) {
  62 + logger.error(e.toString());
  63 + e.printStackTrace();
  64 + } catch (IOException e) {
  65 + logger.error(e.toString());
  66 + e.printStackTrace();
  67 + } catch (ClassNotFoundException e) {
  68 + logger.error(e.toString());
  69 + e.printStackTrace();
  70 + } catch (SQLException e) {
  71 + logger.error(e.toString());
  72 + e.printStackTrace();
  73 + }
  74 + }
  75 +
  76 + /**
  77 + * 获取连接对象
  78 + */
  79 + public static Connection getConnection() throws SQLException {
  80 + return ds_pooled.getConnection();
  81 + }
  82 +
  83 + /**
  84 + * 释放连接池资源
  85 + */
  86 + public static void clearup() {
  87 + if (ds_pooled != null) {
  88 + try {
  89 + DataSources.destroy(ds_pooled);
  90 + } catch (SQLException e) {
  91 + logger.error(e.toString());
  92 + e.printStackTrace();
  93 + }
  94 + }
  95 + }
  96 +
  97 + /**
  98 + * 资源关闭
  99 + *
  100 + * @param rs
  101 + * @param stmt
  102 + * @param conn
  103 + */
  104 + public static void close(ResultSet rs, Statement stmt, Connection conn) {
  105 + if (rs != null) {
  106 + try {
  107 + rs.close();
  108 + } catch (SQLException e) {
  109 + logger.error(e.toString());
  110 + e.printStackTrace();
  111 + }
  112 + }
  113 +
  114 + if (stmt != null) {
  115 + try {
  116 + stmt.close();
  117 + } catch (SQLException e) {
  118 + logger.error(e.toString());
  119 + e.printStackTrace();
  120 + }
  121 + }
  122 +
  123 + if (conn != null) {
  124 + try {
  125 + conn.close();
  126 + } catch (SQLException e) {
  127 + logger.error(e.toString());
  128 + e.printStackTrace();
  129 + }
  130 + }
  131 + }
  132 +
  133 + public static DataSource getDataSource(){
  134 + return ds_pooled;
  135 + }
  136 +}
... ...
src/main/java/com/bsth/util/DateUtils.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import java.text.ParseException;
  4 +import java.text.SimpleDateFormat;
  5 +import java.util.Calendar;
  6 +import java.util.Date;
  7 +
  8 +public class DateUtils {
  9 +
  10 + // 获得当天0点时间
  11 + public static int getTimesmorning() {
  12 + Calendar cal = Calendar.getInstance();
  13 + cal.set(Calendar.HOUR_OF_DAY, 0);
  14 + cal.set(Calendar.SECOND, 0);
  15 + cal.set(Calendar.MINUTE, 0);
  16 + cal.set(Calendar.MILLISECOND, 0);
  17 + return (int) (cal.getTimeInMillis() / 1000);
  18 + }
  19 +
  20 + // 获得当天0点毫秒时间戳
  21 + public static long getTimestamp() {
  22 + Calendar cal = Calendar.getInstance();
  23 + cal.set(Calendar.HOUR_OF_DAY, 0);
  24 + cal.set(Calendar.SECOND, 0);
  25 + cal.set(Calendar.MINUTE, 0);
  26 + cal.set(Calendar.MILLISECOND, 0);
  27 + return cal.getTimeInMillis();
  28 + }
  29 +
  30 + public static Long getTimesmorning(Calendar cal) {
  31 + cal.set(Calendar.HOUR_OF_DAY, 0);
  32 + cal.set(Calendar.SECOND, 0);
  33 + cal.set(Calendar.MINUTE, 0);
  34 + cal.set(Calendar.MILLISECOND, 0);
  35 + return cal.getTimeInMillis() / 1000;
  36 + }
  37 +
  38 + // 获得当天24点时间
  39 + public static int getTimesnight() {
  40 + Calendar cal = Calendar.getInstance();
  41 + cal.set(Calendar.HOUR_OF_DAY, 24);
  42 + cal.set(Calendar.SECOND, 0);
  43 + cal.set(Calendar.MINUTE, 0);
  44 + cal.set(Calendar.MILLISECOND, 0);
  45 + return (int) (cal.getTimeInMillis() / 1000);
  46 + }
  47 +
  48 + // 获得当天24点时间 毫秒
  49 + public static Long getTimesnight2() {
  50 + Calendar cal = Calendar.getInstance();
  51 + cal.set(Calendar.HOUR_OF_DAY, 24);
  52 + cal.set(Calendar.SECOND, 0);
  53 + cal.set(Calendar.MINUTE, 0);
  54 + cal.set(Calendar.MILLISECOND, 0);
  55 + return cal.getTimeInMillis();
  56 + }
  57 +
  58 + public static Long getTimesnight(Calendar cal) {
  59 + cal.set(Calendar.HOUR_OF_DAY, 24);
  60 + cal.set(Calendar.SECOND, 0);
  61 + cal.set(Calendar.MINUTE, 0);
  62 + cal.set(Calendar.MILLISECOND, 0);
  63 + return cal.getTimeInMillis();
  64 + }
  65 +
  66 + // 获得本周一0点时间
  67 + public static int getTimesWeekmorning() {
  68 + Calendar cal = Calendar.getInstance();
  69 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  70 + cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  71 + return (int) (cal.getTimeInMillis() / 1000);
  72 + }
  73 +
  74 + // 获得本周日24点时间
  75 + public static int getTimesWeeknight() {
  76 + Calendar cal = Calendar.getInstance();
  77 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  78 + cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  79 + return (int) ((cal.getTime().getTime() + (7 * 24 * 60 * 60 * 1000)) / 1000);
  80 + }
  81 +
  82 + // 获得本月第一天0点时间
  83 + public static int getTimesMonthmorning() {
  84 + Calendar cal = Calendar.getInstance();
  85 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  86 + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
  87 + return (int) (cal.getTimeInMillis() / 1000);
  88 + }
  89 +
  90 + // 获得本月最后一天24点时间
  91 + public static int getTimesMonthnight() {
  92 + Calendar cal = Calendar.getInstance();
  93 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  94 + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
  95 + cal.set(Calendar.HOUR_OF_DAY, 24);
  96 + return (int) (cal.getTimeInMillis() / 1000);
  97 + }
  98 +
  99 + private static SimpleDateFormat sdfyyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-ddHH:mm")
  100 + ,sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd")
  101 + ,sdfHHmm = new SimpleDateFormat("HH:mm");
  102 + public static long getTimesByHHmm(String str) throws ParseException{
  103 + Date d = sdfyyyyMMddHHmm.parse(sdfyyyyMMdd.format(new Date()) + str);
  104 + return d.getTime();
  105 + }
  106 +
  107 + public static String plusDay(String old, int day){
  108 + Calendar cal = null;
  109 + try {
  110 + Date date = sdfyyyyMMdd.parse(old);
  111 + cal = Calendar.getInstance();
  112 + cal.setTime(date);
  113 + cal.add(Calendar.DATE, day);
  114 + } catch (ParseException e) {
  115 + e.printStackTrace();
  116 + }
  117 + return sdfyyyyMMdd.format(cal.getTime());
  118 + }
  119 +
  120 + public static String subtractDay(String old, int day){
  121 + Calendar cal = null;
  122 + try {
  123 + Date date = sdfyyyyMMdd.parse(old);
  124 + cal = Calendar.getInstance();
  125 + cal.setTime(date);
  126 + cal.set(Calendar.DATE, cal.get(Calendar.DATE) - day);
  127 + } catch (ParseException e) {
  128 + e.printStackTrace();
  129 + }
  130 + return sdfyyyyMMdd.format(cal.getTime());
  131 + }
  132 +
  133 + public static int calcHHmmDiff(String fcsj, String zdsj) throws ParseException {
  134 + return (int) (sdfHHmm.parse(zdsj).getTime() - sdfHHmm.parse(fcsj).getTime());
  135 + }
  136 +}
... ...
src/main/java/com/bsth/util/Tools.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import java.io.IOException;
  4 +import java.util.Properties;
  5 +
  6 +public class Tools {
  7 + private static Properties p = new Properties();
  8 + private static String f;
  9 + public Tools(String file){
  10 + f = file;
  11 + try {
  12 + p.load(Tools.class.getClassLoader().getResourceAsStream(f));
  13 + } catch (IOException e) {
  14 + e.printStackTrace();
  15 + }
  16 + }
  17 +
  18 + /**
  19 + * 根据key得到value的值
  20 + */
  21 + public String getValue(String key)
  22 + {
  23 + return p.getProperty(key);
  24 + }
  25 +}
... ...
src/main/resources/application-dev.properties 0 → 100644
  1 +server.port=9099
  2 +management.port= 9001
  3 +management.address= 127.0.0.1
  4 +
  5 +spring.jpa.hibernate.ddl-auto= none
  6 +spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
  7 +#DATABASE
  8 +spring.jpa.database= MYSQL
  9 +spring.jpa.show-sql= true
  10 +spring.datasource.driver-class-name= com.mysql.jdbc.Driver
  11 +spring.datasource.url= jdbc:mysql://localhost:3306/control_cope?useUnicode=true&characterEncoding=utf-8&useSSL=false
  12 +spring.datasource.username= root
  13 +spring.datasource.password= root
  14 +#DATASOURCE
  15 +spring.datasource.max-active=100
  16 +spring.datasource.max-idle=8
  17 +spring.datasource.min-idle=8
  18 +spring.datasource.initial-size=5
  19 +
  20 +spring.datasource.test-on-borrow=true
  21 +spring.datasource.test-on-connect=true
  22 +spring.datasource.test-on-return=true
  23 +spring.datasource.test-while-idle=true
  24 +spring.datasource.validation-query=select 1
  25 +
  26 +## calculator result database
  27 +#calculator.datasource.driver= com.mysql.jdbc.Driver
  28 +#calculator.datasource.url= jdbc:mysql://127.0.0.1/calculator?useUnicode=true&characterEncoding=utf-8&useSSL=false
  29 +#calculator.datasource.username= root
  30 +#calculator.datasource.password= panzhao
... ...
src/main/resources/application-prod.properties 0 → 100644
  1 +server.port=9088
  2 +management.port= 9001
  3 +management.address= 127.0.0.1
  4 +
  5 +spring.jpa.hibernate.ddl-auto= none
  6 +spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
  7 +#DATABASE
  8 +spring.jpa.database= MYSQL
  9 +spring.jpa.show-sql= true
  10 +spring.datasource.driver-class-name= com.mysql.jdbc.Driver
  11 +spring.datasource.url= jdbc:mysql://10.10.150.20:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false
  12 +spring.datasource.username= root
  13 +spring.datasource.password= root2jsp@JSP
  14 +#DATASOURCE
  15 +spring.datasource.max-active=100
  16 +spring.datasource.max-idle=8
  17 +spring.datasource.min-idle=8
  18 +spring.datasource.initial-size=5
  19 +
  20 +spring.datasource.test-on-borrow=true
  21 +spring.datasource.test-on-connect=true
  22 +spring.datasource.test-on-return=true
  23 +spring.datasource.test-while-idle=true
  24 +spring.datasource.validation-query=select 1
  25 +
  26 +## calculator result database
  27 +#calculator.datasource.driver= com.mysql.jdbc.Driver
  28 +#calculator.datasource.url= jdbc:mysql://127.0.0.1/calculator?useUnicode=true&characterEncoding=utf-8&useSSL=false
  29 +#calculator.datasource.username= root
  30 +#calculator.datasource.password= panzhao
... ...
src/main/resources/application.properties 0 → 100644
  1 +spring.profiles: dev,prod
  2 +spring.profiles.active: dev
  3 +
  4 +spring.view.suffix=.html
  5 +server.session-timeout=-1
  6 +security.basic.enabled=false
  7 +
  8 +# \u4E0A\u4F20\u6587\u4EF6\u5927\u5C0F\u9650\u5236\u914D\u7F6E
  9 +# File size limit
  10 +multipart.maxFileSize = -1
  11 +# Total request size for a multipart/form-data
  12 +multipart.maxRequestSize = -1
  13 +
  14 +server.compression.enabled=true
  15 +server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,text/javascript,text/css,application/javascript
  16 +
  17 +#redis »º´æ¶àÉÙÌìµÄÊý¾Ý
  18 +cache.days=60
... ...
src/main/resources/banner.txt 0 → 100644
  1 + ____ _____ _______ _ _
  2 + | _ \ / ____| |__ __| | | | |
  3 + | |_) | | (___ | | | |__| |
  4 + | _ < \___ \ | | | __ |
  5 + | |_) | ____) | | | | | | |
  6 + |____/ |_____/ |_| |_| |_|
  7 +
  8 +Running Spring Boot ${spring-boot.version}
0 9 \ No newline at end of file
... ...
src/main/resources/logback.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd"> -->
  3 +<configuration>
  4 +
  5 + <!-- <property resource="application.properties" /> -->
  6 + <property name="LOG_BASE" value="E:/calc_log" />
  7 + <!-- 控制台输出 -->
  8 + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  9 +
  10 + <layout class="ch.qos.logback.classic.PatternLayout">
  11 + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  12 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
  13 + </pattern>
  14 + </layout>
  15 + </appender>
  16 +
  17 + <!-- 主日志文件 -->
  18 + <appender name="FILE"
  19 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  20 + <file>${LOG_BASE}/calc_log.log</file>
  21 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  22 + <fileNamePattern>${LOG_BASE}/calc_log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  23 + <timeBasedFileNamingAndTriggeringPolicy
  24 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  25 + <maxFileSize>100MB</maxFileSize>
  26 + </timeBasedFileNamingAndTriggeringPolicy>
  27 + </rollingPolicy>
  28 + <encoder>
  29 + <pattern>%msg%n</pattern>
  30 + </encoder>
  31 +
  32 + <layout class="ch.qos.logback.classic.PatternLayout">
  33 + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  34 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
  35 + </pattern>
  36 + </layout>
  37 + </appender>
  38 +
  39 +
  40 + <!-- 日志输出级别 -->
  41 + <root level="info">
  42 + <appender-ref ref="STDOUT" />
  43 + <appender-ref ref="FILE" />
  44 + </root>
  45 +</configuration>
0 46 \ No newline at end of file
... ...
src/main/resources/ms-jdbc.properties 0 → 100644
  1 +#ms.mysql.driver= com.mysql.jdbc.Driver
  2 +#ms.mysql.url= jdbc:mysql://10.10.150.21:3306/ms?useUnicode=true&characterEncoding=utf-8&useSSL=false
  3 +#ms.mysql.username= root
  4 +#ms.mysql.password= root2jsp@JSP
  5 +
  6 +ms.mysql.driver= com.mysql.jdbc.Driver
  7 +ms.mysql.url= jdbc:mysql://localhost:3306/ms?useUnicode=true&characterEncoding=utf-8
  8 +ms.mysql.username= root
  9 +ms.mysql.password= root
... ...