Commit f025a8105d2e53aca1541f3ea6e4ea41988b4fc9
0 parents
初始化
Showing
30 changed files
with
3539 additions
and
0 deletions
.gitignore
0 → 100644
README.md
0 → 100644
pom.xml
0 → 100644
| 1 | +++ a/pom.xml | |
| 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>revised_report</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> | ... | ... |
revised_report.sql
0 → 100644
| 1 | +++ a/revised_report.sql | |
| 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; | ... | ... |
src/main/java/com/bsth/Application.java
0 → 100644
| 1 | +++ a/src/main/java/com/bsth/Application.java | |
| 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 | +++ a/src/main/java/com/bsth/StartCommand.java | |
| 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.schedule(mileageCalculationThrad, 1, TimeUnit.SECONDS);//timeDiff / 1000 | |
| 47 | + mainServices.scheduleAtFixedRate(mileageCalculationThrad, timeDiff / 1000, 60 * 60 * 24, TimeUnit.SECONDS);//timeDiff / 1000 | |
| 48 | + } catch (Exception e) { | |
| 49 | + e.printStackTrace(); | |
| 50 | + } | |
| 51 | + } | |
| 52 | +} | ... | ... |
src/main/java/com/bsth/common/ResponseCode.java
0 → 100644
| 1 | +++ a/src/main/java/com/bsth/common/ResponseCode.java | |
| 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 | +++ a/src/main/java/com/bsth/entity/ChildTaskPlan.java | |
| 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 | +++ a/src/main/java/com/bsth/entity/Equipment.java | |
| 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 | +++ a/src/main/java/com/bsth/entity/ScheduleRealInfo.java | |
| 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 | +++ a/src/main/java/com/bsth/entity/result/RevisedReport.java | |
| 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 | +++ a/src/main/java/com/bsth/handler/ReportCalculationHandler.java | |
| 1 | +package com.bsth.handler; | |
| 2 | + | |
| 3 | +import java.sql.PreparedStatement; | |
| 4 | +import java.sql.SQLException; | |
| 5 | +import java.util.ArrayList; | |
| 6 | +import java.util.Date; | |
| 7 | +import java.util.List; | |
| 8 | + | |
| 9 | +import org.joda.time.DateTime; | |
| 10 | +import org.slf4j.Logger; | |
| 11 | +import org.slf4j.LoggerFactory; | |
| 12 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 13 | +import org.springframework.jdbc.core.BatchPreparedStatementSetter; | |
| 14 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 15 | +import org.springframework.jdbc.datasource.DataSourceTransactionManager; | |
| 16 | +import org.springframework.stereotype.Component; | |
| 17 | +import org.springframework.transaction.TransactionDefinition; | |
| 18 | +import org.springframework.transaction.TransactionStatus; | |
| 19 | +import org.springframework.transaction.support.DefaultTransactionDefinition; | |
| 20 | + | |
| 21 | +import com.bsth.entity.result.RevisedReport; | |
| 22 | +import com.bsth.service.ScheduleRealInfoService; | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | +/** | |
| 27 | + * @ClassName: MileageCalculationHandler.java | |
| 28 | + * @Description: TODO(营运公里处理程序) | |
| 29 | + * @author: YouRuiFeng | |
| 30 | + * @date: 2017-8-14 下午2:06:22 | |
| 31 | + * | |
| 32 | + */ | |
| 33 | +@Component | |
| 34 | +public class ReportCalculationHandler { | |
| 35 | + | |
| 36 | + @Autowired | |
| 37 | + ScheduleRealInfoService scheduleRealInfoService; | |
| 38 | + | |
| 39 | + @Autowired | |
| 40 | + JdbcTemplate jdbcTemplate; | |
| 41 | + | |
| 42 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | |
| 43 | + | |
| 44 | + public void calc() { | |
| 45 | + try { | |
| 46 | + DateTime dt = DateTime.now(); | |
| 47 | + dt = dt.plusDays(-2);//计算两天前的数据 | |
| 48 | + String rq = dt.toString("yyyy-MM-dd"); | |
| 49 | + logger.info("开始计算报表: " + rq); | |
| 50 | + List<RevisedReport> oMList = scheduleRealInfoService.mileageCorrectionTj(rq); | |
| 51 | + logger.info("报表计算完成: " + rq); | |
| 52 | + save(oMList); | |
| 53 | + | |
| 54 | + /*List<String> list = new ArrayList<>(); | |
| 55 | + list.add("2019-10-31"); | |
| 56 | + list.add("2019-11-30"); | |
| 57 | + list.add("2019-12-29"); | |
| 58 | + list.add("2019-12-30"); | |
| 59 | + list.add("2019-12-31"); | |
| 60 | + | |
| 61 | + for (String rq:list) { | |
| 62 | + logger.info("开始计算报表: " + rq); | |
| 63 | + List<RevisedReport> oMList = scheduleRealInfoService.mileageCorrectionTj(rq); | |
| 64 | + logger.info("报表计算完成: " + rq); | |
| 65 | + save(oMList); | |
| 66 | + }*/ | |
| 67 | + | |
| 68 | + /*for(int i = 11; i<13; i++){ | |
| 69 | + int dateSum = 0; | |
| 70 | + switch(i){ | |
| 71 | + case 12:dateSum = 22; break; | |
| 72 | + case 4: case 6: case 9: case 11:dateSum = 30; break; | |
| 73 | + case 2: dateSum = 28;*//* | |
| 74 | + case 1: case 3: case 5: case 7: case 8: case 10: case 12:dateSum = 31; break; | |
| 75 | + case 4: case 6: case 9: case 11:dateSum = 30; break; | |
| 76 | + case 2: dateSum = 28;*//* | |
| 77 | + } | |
| 78 | + | |
| 79 | + String yy = i<10 ? "0"+i : i+""; | |
| 80 | + for(int j = 1; j<=dateSum; j++){ | |
| 81 | + String dd = j<10 ? "0"+j : j+""; | |
| 82 | + String rq = "2020-"+yy+"-"+dd; | |
| 83 | + Date date1 = new Date(); | |
| 84 | + Date date2 = new Date(120,Integer.parseInt(yy)-1,Integer.parseInt("14")); | |
| 85 | + | |
| 86 | + if((date1.getTime() - 2*24*3600*1000) >= date2.getTime()){ | |
| 87 | + | |
| 88 | + logger.info("开始计算报表: " + rq); | |
| 89 | + List<RevisedReport> oMList = scheduleRealInfoService.mileageCorrectionTj(rq); | |
| 90 | + logger.info("报表计算完成: " + rq); | |
| 91 | + save(oMList); | |
| 92 | + } | |
| 93 | + } | |
| 94 | + }*/ | |
| 95 | + } catch (Exception e) { | |
| 96 | + logger.error("", e); | |
| 97 | + } | |
| 98 | + } | |
| 99 | + | |
| 100 | + private void save(final List<RevisedReport> list) { | |
| 101 | + //编程式事务 | |
| 102 | + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource()); | |
| 103 | + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); | |
| 104 | + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); | |
| 105 | + TransactionStatus status = tran.getTransaction(def); | |
| 106 | + | |
| 107 | + String sqlMileage = "insert into calc_mileage(company_id, sub_company_id, company_name, sub_company_name, line_code, line_name, " + | |
| 108 | + "zyygl, sjyygl, sjksgl, sddfgl, zddfgl, wqwxhgl, bfwxhgl, pygl, ljgl, zrwgl, other, rq, remarks, create_date) " + | |
| 109 | + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; | |
| 110 | + | |
| 111 | + try { | |
| 112 | + jdbcTemplate.batchUpdate(sqlMileage, new BatchPreparedStatementSetter() { | |
| 113 | + @Override | |
| 114 | + public void setValues(PreparedStatement ps, int i) throws SQLException { | |
| 115 | + RevisedReport report = list.get(i); | |
| 116 | + ps.setString(1, report.getCompanyId()); | |
| 117 | + ps.setString(2, report.getSubCompanyId()); | |
| 118 | + ps.setString(3, report.getCompanyName()); | |
| 119 | + ps.setString(4, report.getSubCompanyName()); | |
| 120 | + ps.setString(5, report.getLineCode()); | |
| 121 | + ps.setString(6, report.getLineName()); | |
| 122 | + ps.setDouble(7, report.getZgl()); | |
| 123 | + ps.setDouble(8, report.getSjyygl()); | |
| 124 | + ps.setDouble(9, report.getSjksgl()); | |
| 125 | + ps.setDouble(10, report.getSddfgl()); | |
| 126 | + ps.setDouble(11, report.getZddfgl()); | |
| 127 | + ps.setDouble(12, report.getWqwxhgl()); | |
| 128 | + ps.setDouble(13, report.getBfwxhgl()); | |
| 129 | + ps.setDouble(14, report.getPygl()); | |
| 130 | + ps.setDouble(15, report.getLjgl()); | |
| 131 | + ps.setDouble(16, report.getZrwgl()); | |
| 132 | + ps.setString(17, report.getOther()); | |
| 133 | + ps.setString(18, report.getRq()); | |
| 134 | + ps.setString(19, report.getRemarks()); | |
| 135 | + ps.setDate(20, new java.sql.Date(report.getCreateDate().getTime())); | |
| 136 | + } | |
| 137 | + | |
| 138 | + @Override | |
| 139 | + public int getBatchSize() { | |
| 140 | + return list.size(); | |
| 141 | + } | |
| 142 | + }); | |
| 143 | + | |
| 144 | + String sqlSchedule = "insert into calc_schedule(company_id, sub_company_id, company_name, sub_company_name, line_code, line_name, " + | |
| 145 | + "zyybc, sjyybc, sjksbc, sddfbc, zddfbc, wqwxhbc, bfwxhbc, pybc, ljbc, zrwbc, other, rq, remarks, create_date) " + | |
| 146 | + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; | |
| 147 | + | |
| 148 | + jdbcTemplate.batchUpdate(sqlSchedule, new BatchPreparedStatementSetter() { | |
| 149 | + @Override | |
| 150 | + public void setValues(PreparedStatement ps, int i) throws SQLException { | |
| 151 | + RevisedReport report = list.get(i); | |
| 152 | + ps.setString(1, report.getCompanyId()); | |
| 153 | + ps.setString(2, report.getSubCompanyId()); | |
| 154 | + ps.setString(3, report.getCompanyName()); | |
| 155 | + ps.setString(4, report.getSubCompanyName()); | |
| 156 | + ps.setString(5, report.getLineCode()); | |
| 157 | + ps.setString(6, report.getLineName()); | |
| 158 | + ps.setInt(7, report.getZbc()); | |
| 159 | + ps.setInt(8, report.getSjyybc()); | |
| 160 | + ps.setInt(9, report.getSjksbc()); | |
| 161 | + ps.setInt(10, report.getSddfbc()); | |
| 162 | + ps.setInt(11, report.getZddfbc()); | |
| 163 | + ps.setInt(12, report.getWqwxhbc()); | |
| 164 | + ps.setInt(13, report.getBfwxhbc()); | |
| 165 | + ps.setInt(14, report.getPybc()); | |
| 166 | + ps.setInt(15, report.getLjbc()); | |
| 167 | + ps.setInt(16, report.getZrwbc()); | |
| 168 | + ps.setString(17, report.getOther()); | |
| 169 | + ps.setString(18, report.getRq()); | |
| 170 | + ps.setString(19, report.getRemarks()); | |
| 171 | + ps.setDate(20, new java.sql.Date(report.getCreateDate().getTime())); | |
| 172 | + } | |
| 173 | + | |
| 174 | + @Override | |
| 175 | + public int getBatchSize() { | |
| 176 | + return list.size(); | |
| 177 | + } | |
| 178 | + }); | |
| 179 | + | |
| 180 | + tran.commit(status); | |
| 181 | + } catch (Exception e) { | |
| 182 | + tran.rollback(status); | |
| 183 | + logger.error("", e); | |
| 184 | + } | |
| 185 | + } | |
| 186 | +} | ... | ... |
src/main/java/com/bsth/repository/ScheduleRealInfoRepository.java
0 → 100644
| 1 | +++ a/src/main/java/com/bsth/repository/ScheduleRealInfoRepository.java | |
| 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 | +++ a/src/main/java/com/bsth/service/CulateService.java | |
| 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 | +++ a/src/main/java/com/bsth/service/ScheduleRealInfoService.java | |
| 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 | +++ a/src/main/java/com/bsth/service/impl/CulateServiceImpl.java | |
| 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 | +++ a/src/main/java/com/bsth/service/impl/ScheduleRealInfoServiceImpl.java | |
| 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 | + String year = realExecDate.split("-")[0]; | |
| 159 | + logger.info("计算线路:"+lineId); | |
| 160 | + if (iskt) { | |
| 161 | + realExecDate = "('"+ orderDate(realExecDate)+"','"+ (orderDate(realExecDate)+1) +"')"; | |
| 162 | + initGpsDateList(realExecDate,lineId,Collections.min(bcsj),Collections.max(bcsj),year); | |
| 163 | + } else { | |
| 164 | + realExecDate = "('"+ orderDate(realExecDate) +"')"; | |
| 165 | + initGpsDateList(realExecDate,lineId,Collections.min(bcsj),Collections.max(bcsj),year); | |
| 166 | + } | |
| 167 | + for (int i = 0; i < listSj.size(); i++) { | |
| 168 | + ScheduleRealInfo sr=listSj.get(i); | |
| 169 | + try { | |
| 170 | + realExecDate = sr.getRealExecDate();//实际班次日期 | |
| 171 | + String fcsj = ""; | |
| 172 | + if(sr.getFcsjActual() == null || sr.getFcsjActual().equals("")) { | |
| 173 | + fcsj = sr.getFcsj(); | |
| 174 | + } else { | |
| 175 | + fcsj = sr.getFcsjActual(); | |
| 176 | + } | |
| 177 | + String zdsj = ""; | |
| 178 | + if(sr.getZdsjActual() == null || sr.getZdsjActual().equals("")) { | |
| 179 | + zdsj = sr.getZdsj(); | |
| 180 | + } else { | |
| 181 | + zdsj = sr.getZdsjActual(); | |
| 182 | + } | |
| 183 | + Long fcsjStr = Long.valueOf(dateToStamp(realExecDate +" " + fcsj +":00")); | |
| 184 | + Long zdsjStr = Long.valueOf(dateToStamp(realExecDate +" " + zdsj +":00")); | |
| 185 | + if (zdsjStr < fcsjStr) {//到站时间跨天 则到站时间加一天时间 | |
| 186 | + zdsjStr = (1000 * 60 * 60 * 24) + zdsjStr; | |
| 187 | + } | |
| 188 | + | |
| 189 | + double sjgl = culateService.culateSjgl(sr);//一个班次实际公里 | |
| 190 | + double ljgl = culateService.culateLjgl(sr); //一个班次临加公里 | |
| 191 | + double zyygl = Arith.add(sjgl,ljgl); //一个班次总运营公里 | |
| 192 | + | |
| 193 | + String equipment_code = getEquipmentCode(sr.getClZbh()); | |
| 194 | + List<Long> listTime = getGpsDate(realExecDate, equipment_code, fcsjStr, zdsjStr); | |
| 195 | + if (listTime.size() > 10) { | |
| 196 | + for (int j = 1; j < listTime.size(); j++) { | |
| 197 | + if ((listTime.get(j) - listTime.get(j-1))/ (1000 * 60) > 5) { | |
| 198 | + bfwxhgl = Arith.add(bfwxhgl,zyygl); | |
| 199 | + if (!CulateServiceImpl.isInOut(sr)) { | |
| 200 | + bfwxhbc++; | |
| 201 | + } | |
| 202 | + continue; | |
| 203 | + } | |
| 204 | + } | |
| 205 | + } else { | |
| 206 | + wqwxhgl = Arith.add(wqwxhgl,zyygl); | |
| 207 | + if (!CulateServiceImpl.isInOut(sr)) { | |
| 208 | + wqwxhbc++; | |
| 209 | + } | |
| 210 | + } | |
| 211 | + int type = sr.getDriftStatus(); | |
| 212 | + if (type == 1 || type ==2) { | |
| 213 | + pygl = Arith.add(pygl,zyygl); | |
| 214 | + if (!CulateServiceImpl.isInOut(sr)) { | |
| 215 | + pybc++; | |
| 216 | + } | |
| 217 | + } | |
| 218 | + } catch (Exception e) { | |
| 219 | + // TODO Auto-generated catch block | |
| 220 | + e.printStackTrace(); | |
| 221 | + } | |
| 222 | + } | |
| 223 | + RevisedReport report = new RevisedReport(); | |
| 224 | + if(list.size()>0){ | |
| 225 | + double ljgl = culateService.culateLjgl(listSj); //临加公里 | |
| 226 | + double sjgl = culateService.culateSjgl(listSj);//实际公里 | |
| 227 | + double zyygl = Arith.add(sjgl,ljgl); //总运营公里 | |
| 228 | + int ljbc = culateService.culateLjbc(listSj); | |
| 229 | + int sjbc = culateService.culateSjbc(listSj); | |
| 230 | + int zyybc = ljbc + sjbc;//总(实际)营运班次 | |
| 231 | + | |
| 232 | + double sjjccgl=culateService.culateJccgl(listSj); | |
| 233 | + double sjksgl = culateService.culateKsgl(listSj); | |
| 234 | + double zksgl=Arith.add(sjjccgl, sjksgl);//实际空驶公里 | |
| 235 | + int sjjccbc=culateService.culateJccbc(listSj); | |
| 236 | + int sjksbc = culateService.culateKsbc(listSj); | |
| 237 | + int zksbc = sjjccbc + sjksbc;//实际空驶班次 | |
| 238 | + | |
| 239 | + double zgl = Arith.add(zyygl, zksgl);//实际总公里 | |
| 240 | + int zbc = zksbc + zyybc;//实际总 | |
| 241 | + | |
| 242 | + double sddfgl =culateService.culatesddfgl(list);//手动待发调整公里 | |
| 243 | + double zddfgl = culateService.culatezddfgl(list);//自动待发调整公里 | |
| 244 | + double zrwgl = culateService.culateZrwgl(list);//子任务公里 | |
| 245 | + int sddfbc =culateService.culatesddfbc(list);//手动待发调整 | |
| 246 | + int zddfbc = culateService.culatezddfbc(list);//自动待发调整 | |
| 247 | + int zrwbc = culateService.culateZrwbc(list);//子任务 | |
| 248 | + report.setCompanyId(list.get(0).getGsBm()); | |
| 249 | + report.setSubCompanyId(list.get(0).getFgsBm()); | |
| 250 | + report.setCompanyName(list.get(0).getGsName()); | |
| 251 | + report.setSubCompanyName(list.get(0).getFgsName()); | |
| 252 | + report.setLineCode(list.get(0).getXlBm()); | |
| 253 | + report.setLineName(list.get(0).getXlName()); | |
| 254 | + report.setZgl(zgl); | |
| 255 | + report.setSjyygl(zyygl); | |
| 256 | + report.setSjksgl(zksgl); | |
| 257 | + report.setSddfgl(sddfgl); | |
| 258 | + report.setZddfgl(zddfgl); | |
| 259 | + report.setWqwxhgl(wqwxhgl); | |
| 260 | + report.setBfwxhgl(bfwxhgl); | |
| 261 | + report.setPygl(pygl); | |
| 262 | + report.setLjgl(ljgl); | |
| 263 | + report.setZrwgl(zrwgl); | |
| 264 | + report.setZbc(zbc); | |
| 265 | + | |
| 266 | + report.setSjyybc(zyybc); | |
| 267 | + report.setSjksbc(zksbc); | |
| 268 | + report.setSddfbc(sddfbc); | |
| 269 | + report.setZddfbc(zddfbc); | |
| 270 | + report.setWqwxhbc(wqwxhbc); | |
| 271 | + report.setBfwxhbc(bfwxhbc); | |
| 272 | + report.setPybc(pybc); | |
| 273 | + report.setLjbc(ljbc); | |
| 274 | + report.setZrwbc(zrwbc); | |
| 275 | + | |
| 276 | + report.setRq(list.get(0).getScheduleDateStr()); | |
| 277 | + report.setOther(null); | |
| 278 | + report.setCreateDate(new Date()); | |
| 279 | + } | |
| 280 | + return report; | |
| 281 | + } | |
| 282 | + | |
| 283 | + public void initGpsDateList(String scheduleDateStr, String lineId, Long startTime, Long endTime, String year) { | |
| 284 | + | |
| 285 | + gpsDateList.clear();//清空上一条线路的gps信息 | |
| 286 | + Connection conn = null; | |
| 287 | + PreparedStatement ps = null; | |
| 288 | + ResultSet rs = null; | |
| 289 | + | |
| 290 | + Date date=new Date(); | |
| 291 | + Calendar calendar=Calendar.getInstance(); | |
| 292 | + calendar.setTime(date); | |
| 293 | + String sql = "select device_id as device_id, ts as ts from bsth_c_gps_info_"+ year +" where days_year in "+ scheduleDateStr +" and line_id=? and ts>=? and ts<=? ORDER BY device_id , ts"; | |
| 294 | + try{ | |
| 295 | + conn = DBUtils_MS.getConnection(); | |
| 296 | + ps = conn.prepareStatement(sql); | |
| 297 | + ps.setString(1, lineId); | |
| 298 | + ps.setLong(2, startTime); | |
| 299 | + ps.setLong(3, endTime); | |
| 300 | + rs = ps.executeQuery(); | |
| 301 | + while(rs.next()){ | |
| 302 | + Object obj[] = new Object[2]; | |
| 303 | + obj[0] = rs.getString("device_id"); | |
| 304 | + obj[1] = rs.getString("ts"); | |
| 305 | + gpsDateList.add(obj); | |
| 306 | + } | |
| 307 | + }catch(Exception e){ | |
| 308 | + logger.error("", e); | |
| 309 | + }finally { | |
| 310 | + DBUtils_MS.close(rs, ps, conn); | |
| 311 | + } | |
| 312 | + } | |
| 313 | + | |
| 314 | + public void initEquipmentCodeList() throws Exception { | |
| 315 | + | |
| 316 | + String sql = "select inside_code, equipment_code from bsth_c_cars where 1=1"; | |
| 317 | + equipmentCodeList = jdbcTemplate.query(sql, new BeanPropertyRowMapper(Equipment.class)); | |
| 318 | + | |
| 319 | + /*Connection conn = null; | |
| 320 | + PreparedStatement ps = null; | |
| 321 | + ResultSet rs = null; | |
| 322 | + | |
| 323 | + // 设置连接数据库的配置信息 本地 | |
| 324 | + String url = "jdbc:mysql://localhost:3306/control_cope?" | |
| 325 | + + "user=root&password=root&useUnicode=true&characterEncoding=UTF8"; | |
| 326 | + | |
| 327 | + // 设置连接数据库的配置信息 服务器 | |
| 328 | + String url = "jdbc:mysql://10.10.150.20:3306/control?useUnicode=true&characterEncoding=UTF8"; | |
| 329 | + | |
| 330 | + try { | |
| 331 | + // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来, | |
| 332 | + // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以 | |
| 333 | + Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动 | |
| 334 | +// System.out.println("成功加载MySQL驱动程序"); | |
| 335 | + // 一个Connection代表一个数据库连接 | |
| 336 | + conn = DriverManager.getConnection(url); | |
| 337 | + // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等 | |
| 338 | + String sql = "select inside_code, equipment_code from bsth_c_cars where 1=1"; | |
| 339 | + ps = conn.prepareStatement(sql); | |
| 340 | + rs = ps.executeQuery(); | |
| 341 | + while(rs.next()){ | |
| 342 | + Object obj[] = new Object[2]; | |
| 343 | + obj[0] = rs.getString("inside_code"); //车辆自编号 | |
| 344 | + obj[1] = rs.getString("equipment_code").toString(); //终端设备号 | |
| 345 | + equipmentCodeList.add(obj); | |
| 346 | + } | |
| 347 | + } catch (SQLException e) { | |
| 348 | + System.out.println("MySQL操作错误"); | |
| 349 | + e.printStackTrace(); | |
| 350 | + } catch (Exception e) { | |
| 351 | + e.printStackTrace(); | |
| 352 | + } finally { | |
| 353 | + rs.close(); | |
| 354 | + ps.close(); | |
| 355 | + conn.close(); | |
| 356 | + } */ | |
| 357 | + } | |
| 358 | + | |
| 359 | + /** 获取设备终端号 */ | |
| 360 | + public String getEquipmentCode(String clZbm) throws Exception { | |
| 361 | + String equipment_code = ""; | |
| 362 | + for (Equipment equipment:equipmentCodeList) { | |
| 363 | + if (equipment.getInside_code().equals(clZbm)) { | |
| 364 | + equipment_code = equipment.getEquipment_code().toString(); | |
| 365 | + } | |
| 366 | + } | |
| 367 | + return equipment_code; | |
| 368 | + } | |
| 369 | + | |
| 370 | + public List<Long> getGpsDate(String daysYear, String equipment_code, Long fcsjStr, Long zdsjStr) throws ParseException { | |
| 371 | + List<Long> list = new ArrayList<>(); | |
| 372 | + for (Object[] obj :gpsDateList ) { | |
| 373 | + if (obj[0].equals(equipment_code)) { | |
| 374 | + Long ts = Long.valueOf(obj[1].toString()); | |
| 375 | + if (ts >= fcsjStr && ts <= zdsjStr) { | |
| 376 | + list.add(ts); | |
| 377 | + } | |
| 378 | + } | |
| 379 | + } | |
| 380 | + return list; | |
| 381 | + } | |
| 382 | + | |
| 383 | + /* | |
| 384 | + * 将时间转换为时间戳 | |
| 385 | + */ | |
| 386 | + public static String dateToStamp(String s) throws ParseException{ | |
| 387 | + String res; | |
| 388 | + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
| 389 | + Date date = simpleDateFormat.parse(s); | |
| 390 | + long ts = date.getTime(); | |
| 391 | + res = String.valueOf(ts); | |
| 392 | + return res; | |
| 393 | + } | |
| 394 | + | |
| 395 | + /* | |
| 396 | + * 将时间戳转换为时间 | |
| 397 | + */ | |
| 398 | + public static String stampToDate(String s){ | |
| 399 | + String res; | |
| 400 | + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
| 401 | + long lt = new Long(s); | |
| 402 | + Date date = new Date(lt); | |
| 403 | + res = simpleDateFormat.format(date); | |
| 404 | + return res; | |
| 405 | + } | |
| 406 | + | |
| 407 | + /* | |
| 408 | + * 计算今天是今年的第几天 | |
| 409 | + */ | |
| 410 | + public int orderDate(String dateStr){ | |
| 411 | + int dateSum = 0; | |
| 412 | + /*SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | |
| 413 | + String dateStr = format.format(date);*/ | |
| 414 | + int year = Integer.valueOf(dateStr.substring(0,4)); | |
| 415 | + int month = Integer.valueOf(dateStr.substring(5,7)); | |
| 416 | + int day = Integer.valueOf(dateStr.substring(8,10)); | |
| 417 | + for (int i = 1; i < month; i++){ | |
| 418 | + switch(i){ | |
| 419 | + case 1: case 3: case 5: case 7: case 8: case 10: case 12:dateSum += 31; break; | |
| 420 | + case 4: case 6: case 9: case 11:dateSum += 30; break; | |
| 421 | + case 2: | |
| 422 | + if(((year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0)) | |
| 423 | + dateSum += 29; | |
| 424 | + else dateSum += 28; | |
| 425 | + } | |
| 426 | + } | |
| 427 | + | |
| 428 | + return dateSum = dateSum + day; | |
| 429 | + } | |
| 430 | + | |
| 431 | +} | ... | ... |
src/main/java/com/bsth/thread/ReportCalculationThrad.java
0 → 100644
| 1 | +++ a/src/main/java/com/bsth/thread/ReportCalculationThrad.java | |
| 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 | +++ a/src/main/java/com/bsth/util/Arith.java | |
| 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 | +++ a/src/main/java/com/bsth/util/ConfigUtil.java | |
| 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 | +++ a/src/main/java/com/bsth/util/ConvertUtil.java | |
| 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 | +++ a/src/main/java/com/bsth/util/DBUtils_MS.java | |
| 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 | +++ a/src/main/java/com/bsth/util/DateUtils.java | |
| 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 | +++ a/src/main/java/com/bsth/util/Tools.java | |
| 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 | +++ a/src/main/resources/application-dev.properties | |
| 1 | +server.port=9089 | |
| 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/pd_control?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 | +++ a/src/main/resources/application-prod.properties | |
| 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.200.121:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 12 | +spring.datasource.username= root | |
| 13 | +spring.datasource.password= root2jsp | |
| 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 | +++ a/src/main/resources/application.properties | |
| 1 | +spring.profiles: dev,prod | |
| 2 | +spring.profiles.active: prod | |
| 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 | +++ a/src/main/resources/banner.txt | |
| 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 | +++ a/src/main/resources/logback.xml | |
| 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="/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 | +++ a/src/main/resources/ms-jdbc.properties | |
| 1 | +ms.mysql.driver= com.mysql.jdbc.Driver | |
| 2 | +ms.mysql.url= jdbc:mysql://10.10.150.122:3306/ms?useUnicode=true&characterEncoding=utf-8 | |
| 3 | +ms.mysql.username= root | |
| 4 | +ms.mysql.password= root2jsp | |
| 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 | ... | ... |