AverageSpeedHandler.java
3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.bsth.handler;
import com.bsth.StartCommand;
import com.bsth.entity.result.AverageSpeed;
import com.bsth.service.ScheduleRealInfoService;
import com.bsth.util.DBUtils_jdsas;
import com.bsth.util.DateUtils;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
/**
* @ClassName: MileageCalculationHandler.java
* @Description: TODO(营运公里处理程序)
* @author: YouRuiFeng
* @date: 2017-8-14 下午2:06:22
*
*/
@Component
public class AverageSpeedHandler {
@Autowired
ScheduleRealInfoService scheduleRealInfoService;
@Autowired
JdbcTemplate jdbcTemplate;
Logger logger = LoggerFactory.getLogger(this.getClass());
public void calc() {
try {
DateTime dt = DateTime.now();
dt = dt.plusDays(-1);//凌晨两点计算前一天的
String rq = dt.toString("yyyy-MM");
// String rqs = "2021-";
// for(int i=1;i<3;i++){
// String rq = rqs+(i<10? "0"+i:i);
// logger.info("开始计算报表: " + rq);
// List<AverageSpeed> oMList = scheduleRealInfoService.averageSpeed(rq);
// logger.info("报表计算完成: " + rq);
// save(oMList);
// logger.info("数据保存完成: " + rq);
// }
// String rq = "2017-04";
if(!rq.equals(StartCommand.RQ)){
logger.info("开始计算报表: " + rq);
List<AverageSpeed> oMList = scheduleRealInfoService.averageSpeed(rq);
logger.info("报表计算完成: " + rq);
save(oMList);
StartCommand.RQ = rq;
logger.info("数据保存完成: " + rq);
}
} catch (Exception e) {
logger.error("", e);
}
}
private void save(final List<AverageSpeed> list) {
Connection conn = null;
PreparedStatement ps = null;
// ResultSet rs = null;
try {
conn = DBUtils_jdsas.getConnection();
conn.setAutoCommit(false);
String sql = "insert into calc_average_speed(company_id, branche_company_id, company_name, branche_company_name, line_code, line_name, " +
"plan_speed,real_speed,rq,rq_str,create_date) " +
" VALUES(?,?,?,?,?,?,?,?,?,?,?)";
ps = conn.prepareStatement(sql);
for (int i=0; i<list.size(); i++) {
AverageSpeed averageSpeed = list.get(i);
ps.setString(1, averageSpeed.getCompanyId());
ps.setString(2, averageSpeed.getBrancheCompanyId());
ps.setString(3, averageSpeed.getCompanyName());
ps.setString(4, averageSpeed.getBrancheCompanyName());
ps.setString(5, averageSpeed.getLineCode());
ps.setString(6, averageSpeed.getLineName());
ps.setFloat(7, averageSpeed.getPlanSpeed());
ps.setFloat(8, averageSpeed.getRealSpeed());
ps.setDate(9, new java.sql.Date(averageSpeed.getRq().getTime()));
ps.setString(10, averageSpeed.getRqStr());
ps.setDate(11, new java.sql.Date(DateUtils.getTimestamp()));
ps.addBatch();
// 1w条记录插入一次
if (i % 10000 == 0){
ps.executeBatch();
conn.commit();
}
}
// 最后插入不足1w条的数据
ps.executeBatch();
conn.commit();
} catch (Exception e) {
e.printStackTrace();
// throw new RuntimeException(e);
logger.error("", e);
}finally{
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
logger.error("", e);
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
logger.error("", e);
}
}
}
}
}