Commit c8cc89c26aa554d26022a6c4545552605d1b51fd

Authored by 徐烜
2 parents 09089711 22cdb082

Update

Showing 33 changed files with 1490 additions and 1142 deletions
src/main/java/com/bsth/controller/DownloadController.java
@@ -31,7 +31,7 @@ public class DownloadController @@ -31,7 +31,7 @@ public class DownloadController
31 @RequestMapping("download") 31 @RequestMapping("download")
32 public ResponseEntity<byte[]> download(String fileName) throws IOException { 32 public ResponseEntity<byte[]> download(String fileName) throws IOException {
33 fileName = fileName+".xls"; 33 fileName = fileName+".xls";
34 - String moudelPath = this.getClass().getResource("/").getPath()+ "static\\pages\\forms\\export\\"+fileName; 34 + String moudelPath = this.getClass().getResource("/").getPath()+ "static/pages/forms/export/"+fileName;
35 System.out.println(moudelPath); 35 System.out.println(moudelPath);
36 // String path="D:\\export\\target\\"+jName+".xls"; 36 // String path="D:\\export\\target\\"+jName+".xls";
37 File file=new File(moudelPath); 37 File file=new File(moudelPath);
src/main/java/com/bsth/controller/forms/ExportController.java
@@ -34,6 +34,7 @@ import com.bsth.util.ReportUtils; @@ -34,6 +34,7 @@ import com.bsth.util.ReportUtils;
34 @RequestMapping("mcy_export") 34 @RequestMapping("mcy_export")
35 public class ExportController { 35 public class ExportController {
36 36
  37 +
37 @Autowired 38 @Autowired
38 FormsService formsService; 39 FormsService formsService;
39 40
@@ -71,9 +72,9 @@ public class ExportController { @@ -71,9 +72,9 @@ public class ExportController {
71 72
72 try { 73 try {
73 listI.add(resList.iterator()); 74 listI.add(resList.iterator());
74 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
75 - ee.excelReplace(listI, new Object[] { map }, path + "mould\\linepasswengerflow.xls",  
76 - path + "export\\线路客流量报表" + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls"); 75 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  76 + ee.excelReplace(listI, new Object[] { map }, path + "mould/linepasswengerflow.xls",
  77 + path + "export/线路客流量报表" + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls");
77 } catch (Exception e) { 78 } catch (Exception e) {
78 e.printStackTrace(); 79 e.printStackTrace();
79 } 80 }
@@ -111,9 +112,9 @@ public class ExportController { @@ -111,9 +112,9 @@ public class ExportController {
111 112
112 try { 113 try {
113 listI.add(resList.iterator()); 114 listI.add(resList.iterator());
114 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
115 - ee.excelReplace(listI, new Object[] { map }, path + "mould\\shifday.xls",  
116 - path + "export\\班次车辆人员日报表" + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls"); 115 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  116 + ee.excelReplace(listI, new Object[] { map }, path + "mould/shifday.xls",
  117 + path + "export/班次车辆人员日报表" + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls");
117 } catch (Exception e) { 118 } catch (Exception e) {
118 e.printStackTrace(); 119 e.printStackTrace();
119 } 120 }
@@ -148,9 +149,9 @@ public class ExportController { @@ -148,9 +149,9 @@ public class ExportController {
148 try { 149 try {
149 listI.add(resList.iterator()); 150 listI.add(resList.iterator());
150 151
151 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
152 - ee.excelReplace(listI, new Object[] { map }, path + "mould\\shiftuehiclemanth.xls", path  
153 - + "export\\班次车辆人员月报表" + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 152 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  153 + ee.excelReplace(listI, new Object[] { map }, path + "mould/shiftuehiclemanth.xls", path
  154 + + "export/班次车辆人员月报表" + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls");
154 155
155 } catch (Exception e) { 156 } catch (Exception e) {
156 e.printStackTrace(); 157 e.printStackTrace();
@@ -177,6 +178,9 @@ public class ExportController { @@ -177,6 +178,9 @@ public class ExportController {
177 m.put("clzbh", l.getClzbh()); 178 m.put("clzbh", l.getClzbh());
178 m.put("jsy", l.getJsy()); 179 m.put("jsy", l.getJsy());
179 m.put("jName", l.getjName()); 180 m.put("jName", l.getjName());
  181 +
  182 +
  183 +
180 m.put("sgh", l.getSgh()); 184 m.put("sgh", l.getSgh());
181 m.put("sName", l.getsName()); 185 m.put("sName", l.getsName());
182 m.put("jhlc", l.getJhlc()); 186 m.put("jhlc", l.getJhlc());
@@ -186,14 +190,15 @@ public class ExportController { @@ -186,14 +190,15 @@ public class ExportController {
186 m.put("unyyyl", l.getUnyyyl()); 190 m.put("unyyyl", l.getUnyyyl());
187 m.put("jhjl", l.getJhjl()); 191 m.put("jhjl", l.getJhjl());
188 resList.add(m); 192 resList.add(m);
  193 +
189 i++; 194 i++;
190 } 195 }
191 196
192 try { 197 try {
193 listI.add(resList.iterator()); 198 listI.add(resList.iterator());
194 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
195 - ee.excelReplace(listI, new Object[] { map }, path + "mould\\singledata.xls",  
196 - path + "export\\路单数据" + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 199 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  200 + ee.excelReplace(listI, new Object[] { map }, path + "mould/singledata.xls",
  201 + path + "export/路单数据" + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls");
197 } catch (Exception e) { 202 } catch (Exception e) {
198 e.printStackTrace(); 203 e.printStackTrace();
199 } 204 }
@@ -231,9 +236,9 @@ public class ExportController { @@ -231,9 +236,9 @@ public class ExportController {
231 236
232 try { 237 try {
233 listI.add(resList.iterator()); 238 listI.add(resList.iterator());
234 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
235 - ee.excelReplace(listI, new Object[] { map }, path + "mould\\vehicleloading.xls",  
236 - path + "export\\车辆加注" + sdfSimple.format(sdfMonth.parse(map.get("data").toString())) + ".xls"); 239 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  240 + ee.excelReplace(listI, new Object[] { map }, path + "mould/vehicleloading.xls",
  241 + path + "export/车辆加注" + sdfSimple.format(sdfMonth.parse(map.get("data").toString())) + ".xls");
237 } catch (Exception e) { 242 } catch (Exception e) {
238 e.printStackTrace(); 243 e.printStackTrace();
239 } 244 }
@@ -264,8 +269,8 @@ public class ExportController { @@ -264,8 +269,8 @@ public class ExportController {
264 269
265 try { 270 try {
266 listI.add(resList.iterator()); 271 listI.add(resList.iterator());
267 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
268 - ee.excelReplace(listI, new Object[] { map }, path + "mould\\operationservice.xls", path + "export\\运营服务阶段报表" 272 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  273 + ee.excelReplace(listI, new Object[] { map }, path + "mould/operationservice.xls", path + "export/运营服务阶段报表"
269 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 274 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls");
270 } catch (Exception e) { 275 } catch (Exception e) {
271 e.printStackTrace(); 276 e.printStackTrace();
@@ -303,8 +308,8 @@ public class ExportController { @@ -303,8 +308,8 @@ public class ExportController {
303 308
304 try { 309 try {
305 listI.add(resList.iterator()); 310 listI.add(resList.iterator());
306 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
307 - ee.excelReplace(listI, new Object[] { map }, path + "mould\\changetochange.xls", path + "export\\换人换车情况日统计" 311 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  312 + ee.excelReplace(listI, new Object[] { map }, path + "mould/changetochange.xls", path + "export/换人换车情况日统计"
308 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 313 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls");
309 } catch (Exception e) { 314 } catch (Exception e) {
310 e.printStackTrace(); 315 e.printStackTrace();
@@ -383,8 +388,8 @@ public class ExportController { @@ -383,8 +388,8 @@ public class ExportController {
383 388
384 try { 389 try {
385 listI.add(resList.iterator()); 390 listI.add(resList.iterator());
386 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
387 - ee.excelReplace(listI, new Object[] { map1 }, path + "mould\\turnoutrate.xls", path + "export\\营运线路出车率统计表" 391 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  392 + ee.excelReplace(listI, new Object[] { map1 }, path + "mould/turnoutrate.xls", path + "export/营运线路出车率统计表"
388 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 393 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls");
389 } catch (Exception e) { 394 } catch (Exception e) {
390 e.printStackTrace(); 395 e.printStackTrace();
@@ -458,8 +463,8 @@ public class ExportController { @@ -458,8 +463,8 @@ public class ExportController {
458 463
459 try { 464 try {
460 listI.add(resList.iterator()); 465 listI.add(resList.iterator());
461 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
462 - ee.excelReplace(listI, new Object[] { map1 }, path + "mould\\executionrate.xls", path + "export\\班次执行率统计表" 466 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  467 + ee.excelReplace(listI, new Object[] { map1 }, path + "mould/executionrate.xls", path + "export/班次执行率统计表"
463 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 468 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls");
464 } catch (Exception e) { 469 } catch (Exception e) {
465 e.printStackTrace(); 470 e.printStackTrace();
@@ -527,8 +532,8 @@ public class ExportController { @@ -527,8 +532,8 @@ public class ExportController {
527 532
528 try { 533 try {
529 listI.add(resList.iterator()); 534 listI.add(resList.iterator());
530 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
531 - ee.excelReplace(listI, new Object[] { map1 }, path + "mould\\allline.xls", path + "export\\营运线路名称统计表" 535 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  536 + ee.excelReplace(listI, new Object[] { map1 }, path + "mould/allline.xls", path + "export/营运线路名称统计表"
532 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 537 + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls");
533 } catch (Exception e) { 538 } catch (Exception e) {
534 e.printStackTrace(); 539 e.printStackTrace();
@@ -579,8 +584,8 @@ public class ExportController { @@ -579,8 +584,8 @@ public class ExportController {
579 m.put("date", map.get("date").toString()); 584 m.put("date", map.get("date").toString());
580 try { 585 try {
581 listI.add(resList.iterator()); 586 listI.add(resList.iterator());
582 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
583 - ee.excelReplace(listI, new Object[] { m }, path + "mould\\daily.xls", path + "export\\班次日报表" 587 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  588 + ee.excelReplace(listI, new Object[] { m }, path + "mould/daily.xls", path + "export/班次日报表"
584 + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls"); 589 + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls");
585 } catch (Exception e) { 590 } catch (Exception e) {
586 e.printStackTrace(); 591 e.printStackTrace();
src/main/java/com/bsth/controller/oil/YlbController.java
@@ -186,9 +186,9 @@ public class YlbController extends BaseController&lt;Ylb, Integer&gt;{ @@ -186,9 +186,9 @@ public class YlbController extends BaseController&lt;Ylb, Integer&gt;{
186 } 186 }
187 try { 187 try {
188 listI.add(resList.iterator()); 188 listI.add(resList.iterator());
189 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
190 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\list.xls",  
191 - path+"export\\进出场存油量" + sdfSimple.format(sdfMonth.parse(map.get("rq").toString())) + ".xls"); 189 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  190 + ee.excelReplace(listI, new Object[] { map }, path+"mould/list.xls",
  191 + path+"export/进出场存油量" + sdfSimple.format(sdfMonth.parse(map.get("rq").toString())) + ".xls");
192 } catch (Exception e) { 192 } catch (Exception e) {
193 e.printStackTrace(); 193 e.printStackTrace();
194 } 194 }
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -340,8 +340,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -340,8 +340,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
340 } 340 }
341 341
342 @RequestMapping(value="/statisticsDaily") 342 @RequestMapping(value="/statisticsDaily")
343 - public List<Map<String,Object>> statisticsDaily(@RequestParam String line,@RequestParam String date,@RequestParam String xlName){  
344 - return scheduleRealInfoService.statisticsDaily(line, date,xlName); 343 + public List<Map<String,Object>> statisticsDaily(@RequestParam String line, @RequestParam String date,
  344 + @RequestParam String xlName, @RequestParam String type){
  345 + return scheduleRealInfoService.statisticsDaily(line, date, xlName, type);
345 } 346 }
346 347
347 @RequestMapping(value="/MapById",method = RequestMethod.GET) 348 @RequestMapping(value="/MapById",method = RequestMethod.GET)
src/main/java/com/bsth/data/gpsdata/GpsEntity.java
@@ -67,16 +67,10 @@ public class GpsEntity { @@ -67,16 +67,10 @@ public class GpsEntity {
67 /** 当前执行班次ID */ 67 /** 当前执行班次ID */
68 private Long schId; 68 private Long schId;
69 69
70 - /** 是否异常数据 */  
71 - private boolean abnormal;  
72 -/*  
73 - private int valid;*/  
74 -  
75 - private int version; 70 + /** 是否是不完整的数据 */
  71 + private boolean incomplete;
76 72
77 - /** 是否起终点站  
78 - private boolean sEPoint;  
79 - */ 73 + private int version;
80 74
81 /** 0: 站外 1:站内 2:场内 */ 75 /** 0: 站外 1:站内 2:场内 */
82 private int instation; 76 private int instation;
@@ -88,6 +82,12 @@ public class GpsEntity { @@ -88,6 +82,12 @@ public class GpsEntity {
88 /** 状态 */ 82 /** 状态 */
89 private String signalState = "normal"; 83 private String signalState = "normal";
90 84
  85 + /** 异常状态 */
  86 + private String abnormalStatus;
  87 +
  88 + /** 越界距离 */
  89 + private double outOfBoundDistance;
  90 +
91 public Integer getCompanyCode() { 91 public Integer getCompanyCode() {
92 return companyCode; 92 return companyCode;
93 } 93 }
@@ -241,14 +241,6 @@ public class GpsEntity { @@ -241,14 +241,6 @@ public class GpsEntity {
241 this.station = station; 241 this.station = station;
242 } 242 }
243 243
244 - public boolean isAbnormal() {  
245 - return abnormal;  
246 - }  
247 -  
248 - public void setAbnormal(boolean abnormal) {  
249 - this.abnormal = abnormal;  
250 - }  
251 -  
252 public String getSignalState() { 244 public String getSignalState() {
253 return signalState; 245 return signalState;
254 } 246 }
@@ -264,4 +256,28 @@ public class GpsEntity { @@ -264,4 +256,28 @@ public class GpsEntity {
264 public void setInstation(int instation) { 256 public void setInstation(int instation) {
265 this.instation = instation; 257 this.instation = instation;
266 } 258 }
  259 +
  260 + public String getAbnormalStatus() {
  261 + return abnormalStatus;
  262 + }
  263 +
  264 + public void setAbnormalStatus(String abnormalStatus) {
  265 + this.abnormalStatus = abnormalStatus;
  266 + }
  267 +
  268 + public boolean isIncomplete() {
  269 + return incomplete;
  270 + }
  271 +
  272 + public void setIncomplete(boolean incomplete) {
  273 + this.incomplete = incomplete;
  274 + }
  275 +
  276 + public double getOutOfBoundDistance() {
  277 + return outOfBoundDistance;
  278 + }
  279 +
  280 + public void setOutOfBoundDistance(double outOfBoundDistance) {
  281 + this.outOfBoundDistance = outOfBoundDistance;
  282 + }
267 } 283 }
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
@@ -122,7 +122,7 @@ public class GpsRealData implements CommandLineRunner { @@ -122,7 +122,7 @@ public class GpsRealData implements CommandLineRunner {
122 for (String device : set) { 122 for (String device : set) {
123 gps = gpsMap.get(device); 123 gps = gpsMap.get(device);
124 //过滤异常GPS数据 124 //过滤异常GPS数据
125 - if (gps == null || gps.isAbnormal()) 125 + if (gps == null || gps.isIncomplete())
126 continue; 126 continue;
127 127
128 sch = dayOfSchedule.execPlanMap().get(gps.getNbbm()); 128 sch = dayOfSchedule.execPlanMap().get(gps.getNbbm());
@@ -220,7 +220,7 @@ public class GpsRealData implements CommandLineRunner { @@ -220,7 +220,7 @@ public class GpsRealData implements CommandLineRunner {
220 220
221 nbbm = BasicData.deviceId2NbbmMap.get(gps.getDeviceId()); 221 nbbm = BasicData.deviceId2NbbmMap.get(gps.getDeviceId());
222 if (StringUtils.isBlank(nbbm)) 222 if (StringUtils.isBlank(nbbm))
223 - gps.setAbnormal(true);//标记为异常数据 223 + gps.setIncomplete(true);//标记为异常数据
224 else 224 else
225 gps.setNbbm(nbbm); 225 gps.setNbbm(nbbm);
226 //有更新的点位 226 //有更新的点位
src/main/java/com/bsth/data/gpsdata/arrival/GeoCacheData.java
@@ -45,6 +45,9 @@ public class GeoCacheData { @@ -45,6 +45,9 @@ public class GeoCacheData {
45 //停车场 45 //停车场
46 public static Map<String, Polygon> tccMap; 46 public static Map<String, Polygon> tccMap;
47 47
  48 + //线路限速信息
  49 + private static Map<String, Double> speedLimitMap;
  50 +
48 @Autowired 51 @Autowired
49 JdbcTemplate jdbcTemplate; 52 JdbcTemplate jdbcTemplate;
50 53
@@ -94,6 +97,14 @@ public class GeoCacheData { @@ -94,6 +97,14 @@ public class GeoCacheData {
94 return null; 97 return null;
95 } 98 }
96 99
  100 + public static Double speedLimit(String lineCode){
  101 + return speedLimitMap.get(lineCode);
  102 + }
  103 +
  104 + public static List<LineString> getLineStringList(GpsEntity gps){
  105 + return sectionCacheMap.get(gps.getLineId() + "_" + gps.getUpDown());
  106 + }
  107 +
97 public static List<StationRoute> midwayStation(String lineCode, int directions, String sCode, String eCode) { 108 public static List<StationRoute> midwayStation(String lineCode, int directions, String sCode, String eCode) {
98 List<StationRoute> list = getStationRoute(lineCode, directions), rs = new ArrayList<>(); 109 List<StationRoute> list = getStationRoute(lineCode, directions), rs = new ArrayList<>();
99 110
@@ -113,8 +124,72 @@ public class GeoCacheData { @@ -113,8 +124,72 @@ public class GeoCacheData {
113 return tccMap.get(code); 124 return tccMap.get(code);
114 } 125 }
115 126
  127 + GeometryFactory geometryFactory = new GeometryFactory();
116 public void loadData() { 128 public void loadData() {
117 - final GeometryFactory geometryFactory = new GeometryFactory(); 129 + loadStationRoutesData();
  130 + loadTccMapData();
  131 + loadSpeedLimit();
  132 +
  133 + //加载路段信息
  134 + loadRoadsData();
  135 + }
  136 +
  137 + private void loadRoadsData() {
  138 + String sql = "select r.LINE_CODE,r.SECTION_CODE,r.SECTIONROUTE_CODE,s.SECTION_NAME,ST_AsText(s.GSECTION_VECTOR) as GSECTION_VECTOR, r.DIRECTIONS from bsth_c_sectionroute r INNER JOIN bsth_c_section s on r.section=s.id where r.destroy=0 and GSECTION_VECTOR is not null order by line_code,directions,sectionroute_code";
  139 + List<Map<String, Object>> secList = jdbcTemplate.queryForList(sql);
  140 +
  141 + String polygonStr, key;
  142 + String[] coords;
  143 + int i, len;
  144 +
  145 + ArrayListMultimap<String, LineString> sectionCacheTempMap = ArrayListMultimap.create();
  146 + Coordinate[] cds;
  147 + String[] temps1, temps2;
  148 + for (Map<String, Object> tMap : secList) {
  149 + polygonStr = tMap.get("GSECTION_VECTOR").toString();
  150 + key = tMap.get("LINE_CODE") + "_" + tMap.get("DIRECTIONS");
  151 +
  152 + coords = polygonStr.substring(11, polygonStr.length() - 1).split(",");
  153 + len = coords.length - 1;
  154 + //每2个点连一条线
  155 + for(i = 0; i < len; i ++){
  156 + temps1 = coords[i].split(" ");
  157 + temps2 = coords[i + 1].split(" ");
  158 +
  159 + cds = new Coordinate[2];
  160 + cds[0] = new Coordinate(Float.parseFloat(temps1[1]), Float.parseFloat(temps1[0]));
  161 + cds[1] = new Coordinate(Float.parseFloat(temps2[1]), Float.parseFloat(temps2[0]));
  162 +
  163 + sectionCacheTempMap.put(key, geometryFactory.createLineString(cds));
  164 + }
  165 + }
  166 +
  167 + if(sectionCacheTempMap.size() > 0)
  168 + sectionCacheMap = sectionCacheTempMap;
  169 + }
  170 +
  171 + private void loadTccMapData(){
  172 + //加载停车场数据
  173 + String sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null";
  174 + List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql);
  175 + Map<String, Polygon> tccTempMap = new HashMap<>();
  176 +
  177 + Polygon polygon;
  178 + for (Map<String, Object> tMap : tccList) {
  179 +
  180 + try {
  181 + polygon = geometryFactory.createPolygon(parsePolygon(tMap.get("G_PARK_POINT").toString()));
  182 + tccTempMap.put(tMap.get("PARK_CODE").toString()
  183 + , polygon);
  184 + } catch (Exception e) {
  185 + logger.error("停车场:" + tMap.get("PARK_CODE"), e);
  186 + }
  187 + }
  188 + if (tccTempMap.size() > 0)
  189 + tccMap = tccTempMap;
  190 + }
  191 +
  192 + private void loadStationRoutesData(){
118 //加载站点路由 193 //加载站点路由
119 String sql = "select r.LINE_CODE,r.DIRECTIONS,r.STATION_CODE,r.STATION_MARK,s.SHAPES_TYPE,s.G_LONX,s.G_LATY,ST_AsText(s.G_POLYGON_GRID) as G_POLYGON_GRID,s.RADIUS, r.STATION_ROUTE_CODE,s.STATION_NAME from bsth_c_stationroute r left join bsth_c_station s on r.station=s.id where r.destroy=0 order by r.station_route_code"; 194 String sql = "select r.LINE_CODE,r.DIRECTIONS,r.STATION_CODE,r.STATION_MARK,s.SHAPES_TYPE,s.G_LONX,s.G_LATY,ST_AsText(s.G_POLYGON_GRID) as G_POLYGON_GRID,s.RADIUS, r.STATION_ROUTE_CODE,s.STATION_NAME from bsth_c_stationroute r left join bsth_c_station s on r.station=s.id where r.destroy=0 order by r.station_route_code";
120 List<StationRoute> routeList = jdbcTemplate.query(sql, new RowMapper<StationRoute>() { 195 List<StationRoute> routeList = jdbcTemplate.query(sql, new RowMapper<StationRoute>() {
@@ -159,26 +234,17 @@ public class GeoCacheData { @@ -159,26 +234,17 @@ public class GeoCacheData {
159 stationCacheMap = tempMap; 234 stationCacheMap = tempMap;
160 routeCodeMap = codeMap; 235 routeCodeMap = codeMap;
161 } 236 }
  237 + }
162 238
163 - //加载停车场数据  
164 - sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null";  
165 - List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql);  
166 - Map<String, Polygon> tccTempMap = new HashMap<>();  
167 -  
168 - Polygon polygon;  
169 - for (Map<String, Object> tMap : tccList) {  
170 -  
171 - try {  
172 - polygon = geometryFactory.createPolygon(parsePolygon(tMap.get("G_PARK_POINT").toString()));  
173 - tccTempMap.put(tMap.get("PARK_CODE").toString()  
174 - , polygon);  
175 - } catch (Exception e) {  
176 - logger.error("停车场:" + tMap.get("PARK_CODE"), e);  
177 - } 239 + private void loadSpeedLimit(){
  240 + //加载线路限速信息
  241 + String sql = "select l.LINE_CODE,i.SPEED_LIMIT from bsth_c_line_information i left join bsth_c_line l on i.line=l.id where i.speed_limit is not null";
  242 + List<Map<String, Object>> speedMap = jdbcTemplate.queryForList(sql);
  243 + Map<String, Double> speedTempMap = new HashMap<>();
  244 + for (Map<String, Object> tMap : speedMap) {
  245 + speedTempMap.put(tMap.get("LINE_CODE").toString(), Double.parseDouble(tMap.get("SPEED_LIMIT").toString()));
178 } 246 }
179 -  
180 - if (tccTempMap.size() > 0)  
181 - tccMap = tccTempMap; 247 + speedLimitMap = speedTempMap;
182 } 248 }
183 249
184 private void connectStationRoute(List<StationRoute> list) { 250 private void connectStationRoute(List<StationRoute> list) {
@@ -209,6 +275,7 @@ public class GeoCacheData { @@ -209,6 +275,7 @@ public class GeoCacheData {
209 275
210 /** 276 /**
211 * 是不是终点站 277 * 是不是终点站
  278 + *
212 * @param lineId 279 * @param lineId
213 * @param upDown 280 * @param upDown
214 * @param stationCode 281 * @param stationCode
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
@@ -33,6 +33,8 @@ public class GpsRealAnalyse { @@ -33,6 +33,8 @@ public class GpsRealAnalyse {
33 InOutStationSignalHandle inOutStationSignalHandle; 33 InOutStationSignalHandle inOutStationSignalHandle;
34 @Autowired 34 @Autowired
35 ReverseSignalHandle reverseSignalHandle; 35 ReverseSignalHandle reverseSignalHandle;
  36 + @Autowired
  37 + AbnormalStateHandle abnormalStateHandle;
36 38
37 @Autowired 39 @Autowired
38 GpsRealData gpsRealData; 40 GpsRealData gpsRealData;
@@ -72,14 +74,21 @@ public class GpsRealAnalyse { @@ -72,14 +74,21 @@ public class GpsRealAnalyse {
72 public void run() { 74 public void run() {
73 75
74 try { 76 try {
  77 + //是否有任务
  78 + boolean task;
75 CircleQueue<GpsEntity> prevs = GeoCacheData.getGps(gps.getNbbm()); 79 CircleQueue<GpsEntity> prevs = GeoCacheData.getGps(gps.getNbbm());
76 //掉线处理 80 //掉线处理
77 offlineSignalHandle.handle(gps, prevs); 81 offlineSignalHandle.handle(gps, prevs);
78 //状态处理 82 //状态处理
79 - if(!correctSignalHandle.handle(gps, prevs))  
80 - return; 83 + task = correctSignalHandle.handle(gps, prevs);
81 //场,站内外判断 84 //场,站内外判断
82 stationInsideHandle.handle(gps, prevs); 85 stationInsideHandle.handle(gps, prevs);
  86 + //异常判定(越界/超速)
  87 + abnormalStateHandle.handle(gps, prevs);
  88 +
  89 + if(!task)
  90 + return; //无任务的,到这里就结束
  91 +
83 //反向处理 92 //反向处理
84 reverseSignalHandle.handle(gps, prevs); 93 reverseSignalHandle.handle(gps, prevs);
85 //进出站动作处理 94 //进出站动作处理
src/main/java/com/bsth/data/gpsdata/arrival/handlers/AbnormalStateHandle.java 0 → 100644
  1 +package com.bsth.data.gpsdata.arrival.handlers;
  2 +
  3 +import com.bsth.data.gpsdata.GpsEntity;
  4 +import com.bsth.data.gpsdata.arrival.GeoCacheData;
  5 +import com.bsth.data.gpsdata.arrival.SignalHandle;
  6 +import com.bsth.data.gpsdata.arrival.utils.CircleQueue;
  7 +import com.bsth.data.gpsdata.arrival.utils.GeoUtils;
  8 +import com.vividsolutions.jts.geom.Coordinate;
  9 +import com.vividsolutions.jts.geom.GeometryFactory;
  10 +import com.vividsolutions.jts.geom.LineString;
  11 +import com.vividsolutions.jts.geom.Point;
  12 +import org.springframework.stereotype.Component;
  13 +
  14 +import java.util.List;
  15 +
  16 +/**
  17 + * GPS异常状态判定 (越界/超速)
  18 + * Created by panzhao on 2017/1/10.
  19 + */
  20 +@Component
  21 +public class AbnormalStateHandle extends SignalHandle{
  22 +
  23 + //默认限速
  24 + private static final double DEFAULT_SPEED_LIMIT = 60;
  25 + //越界阈值
  26 + private static final double OUT_BOUNDS_THRESHOLD = 100;
  27 +
  28 + GeometryFactory geometryFactory = new GeometryFactory();
  29 +
  30 + @Override
  31 + public boolean handle(GpsEntity gps, CircleQueue<GpsEntity> prevs) {
  32 +
  33 + if(overspeed(gps))
  34 + return true;
  35 +
  36 + if(outOfBounds((gps)))
  37 + return true;
  38 +
  39 + return false;
  40 + }
  41 +
  42 + /**
  43 + * 是否超速
  44 + * @param gps
  45 + * @return
  46 + */
  47 + public boolean overspeed(GpsEntity gps){
  48 + double maxSpeed = DEFAULT_SPEED_LIMIT;
  49 + if(GeoCacheData.speedLimit(gps.getLineId()) != null)
  50 + maxSpeed = GeoCacheData.speedLimit(gps.getLineId());
  51 +
  52 + if(gps.getSpeed() > maxSpeed){
  53 + gps.setAbnormalStatus("overspeed");
  54 + return true;
  55 + }
  56 + return false;
  57 + }
  58 +
  59 + /**
  60 + * 是否越界
  61 + * @param gps
  62 + * @return
  63 + */
  64 + public boolean outOfBounds(GpsEntity gps){
  65 + //场内的车不处理
  66 + if(gps.getInstation() == 2){
  67 + return false;
  68 + }
  69 +
  70 + List<LineString> list = GeoCacheData.getLineStringList(gps);
  71 + Point point = geometryFactory.createPoint(new Coordinate(gps.getLat(), gps.getLon()));
  72 +
  73 + double min = -1, distance;
  74 +
  75 + for(LineString lineString : list){
  76 + distance = GeoUtils.getDistanceFromLine(lineString, point);
  77 +
  78 + if(min == -1 || min > distance)
  79 + min = distance;
  80 + }
  81 +
  82 + gps.setOutOfBoundDistance(min);
  83 + if(min > OUT_BOUNDS_THRESHOLD){
  84 + gps.setAbnormalStatus("outBounds");
  85 + return true;
  86 + }
  87 + return false;
  88 + }
  89 +}
src/main/java/com/bsth/data/gpsdata/arrival/utils/GeoUtils.java
@@ -3,10 +3,7 @@ package com.bsth.data.gpsdata.arrival.utils; @@ -3,10 +3,7 @@ package com.bsth.data.gpsdata.arrival.utils;
3 import com.bsth.data.gpsdata.GpsEntity; 3 import com.bsth.data.gpsdata.GpsEntity;
4 import com.bsth.data.gpsdata.arrival.GeoCacheData; 4 import com.bsth.data.gpsdata.arrival.GeoCacheData;
5 import com.bsth.data.gpsdata.arrival.entity.StationRoute; 5 import com.bsth.data.gpsdata.arrival.entity.StationRoute;
6 -import com.vividsolutions.jts.geom.Coordinate;  
7 -import com.vividsolutions.jts.geom.GeometryFactory;  
8 -import com.vividsolutions.jts.geom.Point;  
9 -import com.vividsolutions.jts.geom.Polygon; 6 +import com.vividsolutions.jts.geom.*;
10 7
11 import java.util.List; 8 import java.util.List;
12 import java.util.Map; 9 import java.util.Map;
@@ -90,6 +87,36 @@ public class GeoUtils { @@ -90,6 +87,36 @@ public class GeoUtils {
90 return Math.PI * degree / 180; 87 return Math.PI * degree / 180;
91 } 88 }
92 89
  90 + /**
  91 + * 计算点 到 线的距离
  92 + * @param line
  93 + * @param p
  94 + * @return
  95 + */
  96 + public static double getDistanceFromLine(LineString line, Point p){
  97 + Point s = line.getStartPoint();
  98 + Point e = line.getEndPoint();
  99 +
  100 + double d1 = getDistance(s, p);
  101 + double d2 = getDistance(p, e);
  102 + double d3 = getDistance(s, e);
  103 + double distance = 0;
  104 +
  105 + double alpha = Math.acos((d1*d1 + d3*d3 - d2*d2)/(2*d1*d3));
  106 + double beta = Math.acos((d2*d2 + d3*d3 - d1*d1)/(2*d2*d3));
  107 +
  108 + if(alpha>Math.PI/2) {
  109 + distance = d1;
  110 + }
  111 + else if(beta > Math.PI/2) {
  112 + distance = d2;
  113 + }
  114 + else {
  115 + distance = Math.sin(alpha) * d1;
  116 + }
  117 + return distance;
  118 + }
  119 +
93 120
94 /** 121 /**
95 * gps 是否在某个停车场内 122 * gps 是否在某个停车场内
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -563,8 +563,12 @@ public class DayOfSchedule implements CommandLineRunner { @@ -563,8 +563,12 @@ public class DayOfSchedule implements CommandLineRunner {
563 */ 563 */
564 public boolean isFirstOut(ScheduleRealInfo sch){ 564 public boolean isFirstOut(ScheduleRealInfo sch){
565 List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh()); 565 List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh());
566 - if(list.get(0) == sch && sch.getBcType().equals("out"))  
567 - return true; 566 + try {
  567 + if(list.get(0) == sch && sch.getBcType().equals("out"))
  568 + return true;
  569 + } catch (IndexOutOfBoundsException e) {
  570 + logger.error("小小的数组越界,无伤大雅!");
  571 + }
568 return false; 572 return false;
569 } 573 }
570 574
src/main/java/com/bsth/service/forms/impl/ExportServiceImpl.java
@@ -46,9 +46,9 @@ public class ExportServiceImpl implements ExportService{ @@ -46,9 +46,9 @@ public class ExportServiceImpl implements ExportService{
46 46
47 try { 47 try {
48 listI.add(resList.iterator()); 48 listI.add(resList.iterator());
49 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
50 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\waybillday.xls",  
51 - path+"export\\行车路单日报表" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 49 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  50 + ee.excelReplace(listI, new Object[] { map }, path+"mould/waybillday.xls",
  51 + path+"export/行车路单日报表" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
52 } catch (Exception e) { 52 } catch (Exception e) {
53 e.printStackTrace(); 53 e.printStackTrace();
54 } 54 }
@@ -72,9 +72,9 @@ public class ExportServiceImpl implements ExportService{ @@ -72,9 +72,9 @@ public class ExportServiceImpl implements ExportService{
72 72
73 try { 73 try {
74 listI.add(resList.iterator()); 74 listI.add(resList.iterator());
75 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
76 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\linepasswengerflow.xls",  
77 - path+"export\\线路客流量报表" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 75 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  76 + ee.excelReplace(listI, new Object[] { map }, path+"mould/linepasswengerflow.xls",
  77 + path+"export/线路客流量报表" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
78 } catch (Exception e) { 78 } catch (Exception e) {
79 e.printStackTrace(); 79 e.printStackTrace();
80 } 80 }
@@ -115,9 +115,9 @@ public class ExportServiceImpl implements ExportService{ @@ -115,9 +115,9 @@ public class ExportServiceImpl implements ExportService{
115 115
116 try { 116 try {
117 listI.add(resList.iterator()); 117 listI.add(resList.iterator());
118 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
119 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\shifday.xls",  
120 - path+"export\\班次车辆人员日报表" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 118 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  119 + ee.excelReplace(listI, new Object[] { map }, path+"mould/shifday.xls",
  120 + path+"export/班次车辆人员日报表" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
121 } catch (Exception e) { 121 } catch (Exception e) {
122 e.printStackTrace(); 122 e.printStackTrace();
123 } 123 }
@@ -151,9 +151,9 @@ public class ExportServiceImpl implements ExportService{ @@ -151,9 +151,9 @@ public class ExportServiceImpl implements ExportService{
151 151
152 try { 152 try {
153 listI.add(resList.iterator()); 153 listI.add(resList.iterator());
154 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
155 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\shiftuehiclemanth.xls",  
156 - path+"export\\班次车辆人员月报表" + sdfSimple.format(sdfMonth.parse(startDate)) + ".xls"); 154 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  155 + ee.excelReplace(listI, new Object[] { map }, path+"mould/shiftuehiclemanth.xls",
  156 + path+"export/班次车辆人员月报表" + sdfSimple.format(sdfMonth.parse(startDate)) + ".xls");
157 } catch (Exception e) { 157 } catch (Exception e) {
158 e.printStackTrace(); 158 e.printStackTrace();
159 } 159 }
@@ -191,9 +191,9 @@ public class ExportServiceImpl implements ExportService{ @@ -191,9 +191,9 @@ public class ExportServiceImpl implements ExportService{
191 191
192 try { 192 try {
193 listI.add(resList.iterator()); 193 listI.add(resList.iterator());
194 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
195 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\singledata.xls",  
196 - path+"export\\路单日报表" + sdfSimple.format(sdfMonth.parse(startDate)) + ".xls"); 194 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  195 + ee.excelReplace(listI, new Object[] { map }, path+"mould/singledata.xls",
  196 + path+"export/路单日报表" + sdfSimple.format(sdfMonth.parse(startDate)) + ".xls");
197 } catch (Exception e) { 197 } catch (Exception e) {
198 e.printStackTrace(); 198 e.printStackTrace();
199 } 199 }
@@ -230,9 +230,9 @@ public class ExportServiceImpl implements ExportService{ @@ -230,9 +230,9 @@ public class ExportServiceImpl implements ExportService{
230 230
231 try { 231 try {
232 listI.add(resList.iterator()); 232 listI.add(resList.iterator());
233 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
234 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\vehicleloading.xls",  
235 - path+"export\\车辆加注" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 233 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  234 + ee.excelReplace(listI, new Object[] { map }, path+"mould/vehicleloading.xls",
  235 + path+"export/车辆加注" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
236 } catch (Exception e) { 236 } catch (Exception e) {
237 e.printStackTrace(); 237 e.printStackTrace();
238 } 238 }
@@ -261,9 +261,9 @@ public class ExportServiceImpl implements ExportService{ @@ -261,9 +261,9 @@ public class ExportServiceImpl implements ExportService{
261 261
262 try { 262 try {
263 listI.add(resList.iterator()); 263 listI.add(resList.iterator());
264 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
265 - ee.excelReplace(listI, new Object[] { map }, path+"mould\\operationservice.xls",  
266 - path+"export\\运营服务阶段报表" + sdfSimple.format(sdfMonth.parse(startDate)) + ".xls"); 264 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  265 + ee.excelReplace(listI, new Object[] { map }, path+"mould/operationservice.xls",
  266 + path+"export/运营服务阶段报表" + sdfSimple.format(sdfMonth.parse(startDate)) + ".xls");
267 } catch (Exception e) { 267 } catch (Exception e) {
268 e.printStackTrace(); 268 e.printStackTrace();
269 } 269 }
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -526,9 +526,9 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -526,9 +526,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
526 ReportUtils ee = new ReportUtils(); 526 ReportUtils ee = new ReportUtils();
527 try { 527 try {
528 listI.add(resList.iterator()); 528 listI.add(resList.iterator());
529 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
530 - ee.excelReplace(listI, new Object[] { m }, path+"mould\\busInterval"+statu+".xls",  
531 - path+"export\\班次间隔统计表" + sdfSimple.format(sdfMonth.parse(startDate)) 529 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  530 + ee.excelReplace(listI, new Object[] { m }, path+"mould/busInterval"+statu+".xls",
  531 + path+"export/班次间隔统计表" + sdfSimple.format(sdfMonth.parse(startDate))
532 + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls"); 532 + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
533 } catch (Exception e) { 533 } catch (Exception e) {
534 // TODO: handle exception 534 // TODO: handle exception
@@ -1076,9 +1076,9 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1076,9 +1076,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1076 modelMap.put("lpType", "路牌名"); 1076 modelMap.put("lpType", "路牌名");
1077 try { 1077 try {
1078 listI.add(((List<Map<String, Object>>)modelMap.get("dataList")).iterator()); 1078 listI.add(((List<Map<String, Object>>)modelMap.get("dataList")).iterator());
1079 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
1080 - ee.excelReplace(listI, new Object[] { modelMap }, path+"mould\\timeAndSpeed.xls",  
1081 - path+"export\\行驶时间及车速统计表" + sdfSimple.format(sdfMonth.parse(startDate)) 1079 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  1080 + ee.excelReplace(listI, new Object[] { modelMap }, path+"mould/timeAndSpeed.xls",
  1081 + path+"export/行驶时间及车速统计表" + sdfSimple.format(sdfMonth.parse(startDate))
1082 + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls"); 1082 + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
1083 } catch (Exception e) { 1083 } catch (Exception e) {
1084 // TODO: handle exception 1084 // TODO: handle exception
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
@@ -107,7 +107,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -107,7 +107,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
107 107
108 Map<String, Object> removeChildTask(Long taskId); 108 Map<String, Object> removeChildTask(Long taskId);
109 109
110 - List<Map<String,Object>> statisticsDaily(String line,String date,String xlName); 110 + List<Map<String,Object>> statisticsDaily(String line, String date, String xlName, String type);
111 111
112 //List<Object> scheduleDaily(String line,String date); 112 //List<Object> scheduleDaily(String line,String date);
113 113
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -538,11 +538,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -538,11 +538,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
538 map.put("ljbc", ljbc); 538 map.put("ljbc", ljbc);
539 map.put("sjbc", jhbc-cjbc+ljbc); 539 map.put("sjbc", jhbc-cjbc+ljbc);
540 540
541 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\"; 541 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
542 542
543 list.add(listMap.iterator()); 543 list.add(listMap.iterator());
544 - ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould\\waybill_minhang.xls",  
545 - path+"export\\" + date+"-"+jName+"-"+clZbh+"-"+lpName+"-行车路单.xls"); 544 + ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould/waybill_minhang.xls",
  545 + path+"export/" + date+"-"+jName+"-"+clZbh+"-"+lpName+"-行车路单.xls");
546 return scheduleRealInfos; 546 return scheduleRealInfos;
547 } 547 }
548 548
@@ -575,12 +575,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -575,12 +575,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
575 map.put("totalYH", totalYH); 575 map.put("totalYH", totalYH);
576 map.put("totalBCS", totalBCS); 576 map.put("totalBCS", totalBCS);
577 577
578 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\"; 578 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
579 579
580 listI.add(list.iterator()); 580 listI.add(list.iterator());
581 try { 581 try {
582 - ee.excelReplace(listI, new Object[]{map}, path + "mould\\daily.xls",  
583 - path + "export\\班次日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 582 + ee.excelReplace(listI, new Object[]{map}, path + "mould/daily.xls",
  583 + path + "export/班次日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
584 } catch (ParseException e) { 584 } catch (ParseException e) {
585 e.printStackTrace(); 585 e.printStackTrace();
586 } 586 }
@@ -632,9 +632,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -632,9 +632,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
632 } 632 }
633 try { 633 try {
634 listI.add(newList.iterator()); 634 listI.add(newList.iterator());
635 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
636 - ee.excelReplace(listI, new Object[]{m}, path + "mould\\historyMessage.xls",  
637 - path + "export\\调度历史消息" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 635 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  636 + ee.excelReplace(listI, new Object[]{m}, path + "mould/historyMessage.xls",
  637 + path + "export/调度历史消息" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
638 } catch (Exception e) { 638 } catch (Exception e) {
639 // TODO: handle exception 639 // TODO: handle exception
640 e.printStackTrace(); 640 e.printStackTrace();
@@ -661,9 +661,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -661,9 +661,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
661 } 661 }
662 try { 662 try {
663 listI.add(newList.iterator()); 663 listI.add(newList.iterator());
664 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
665 - ee.excelReplace(listI, new Object[]{m}, path + "mould\\message.xls",  
666 - path + "export\\调度消息分析" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 664 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  665 + ee.excelReplace(listI, new Object[]{m}, path + "mould/message.xls",
  666 + path + "export/调度消息分析" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
667 } catch (Exception e) { 667 } catch (Exception e) {
668 // TODO: handle exception 668 // TODO: handle exception
669 e.printStackTrace(); 669 e.printStackTrace();
@@ -1261,9 +1261,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1261,9 +1261,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1261 } 1261 }
1262 try { 1262 try {
1263 listI.add(listMap.iterator()); 1263 listI.add(listMap.iterator());
1264 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
1265 - ee.excelReplace(listI, new Object[]{m}, path + "mould\\account.xls",  
1266 - path + "export\\驾驶员请求台账" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 1264 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  1265 + ee.excelReplace(listI, new Object[]{m}, path + "mould/account.xls",
  1266 + path + "export/驾驶员请求台账" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
1267 } catch (Exception e) { 1267 } catch (Exception e) {
1268 // TODO: handle exception 1268 // TODO: handle exception
1269 e.printStackTrace(); 1269 e.printStackTrace();
@@ -1316,9 +1316,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1316,9 +1316,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1316 } 1316 }
1317 try { 1317 try {
1318 listI.add(tempList.iterator()); 1318 listI.add(tempList.iterator());
1319 - String path = this.getClass().getResource("/").getPath() + "static\\pages\\forms\\";  
1320 - ee.excelReplace(listI, new Object[]{m}, path + "mould\\correctForm.xls",  
1321 - path + "export\\修正报表" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls"); 1319 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  1320 + ee.excelReplace(listI, new Object[]{m}, path + "mould/correctForm.xls",
  1321 + path + "export/修正报表" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
1322 } catch (Exception e) { 1322 } catch (Exception e) {
1323 // TODO: handle exception 1323 // TODO: handle exception
1324 e.printStackTrace(); 1324 e.printStackTrace();
@@ -1378,7 +1378,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1378,7 +1378,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1378 1378
1379 @Override 1379 @Override
1380 public List<Map<String, Object>> statisticsDaily(String line, String date, 1380 public List<Map<String, Object>> statisticsDaily(String line, String date,
1381 - String xlName) { 1381 + String xlName, String type) {
1382 List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine(line, date); 1382 List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine(line, date);
1383 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); 1383 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
1384 DecimalFormat format = new DecimalFormat("0.00"); 1384 DecimalFormat format = new DecimalFormat("0.00");
@@ -1545,6 +1545,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1545,6 +1545,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1545 map.put("djg_a", djg_a); 1545 map.put("djg_a", djg_a);
1546 map.put("djg_time", djg_time); 1546 map.put("djg_time", djg_time);
1547 lMap.add(map); 1547 lMap.add(map);
  1548 +
  1549 + if(type != null && type.length() != 0 && type.equals("export")){
  1550 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  1551 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  1552 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  1553 + Map<String,Object> m = new HashMap<String, Object>();
  1554 + ReportUtils ee = new ReportUtils();
  1555 + try {
  1556 + listI.add(lMap.iterator());
  1557 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  1558 + ee.excelReplace(listI, new Object[] { m }, path+"mould/statisticsDaily_.xls",
  1559 + path+"export/统计日报" + sdfSimple.format(sdfMonth.parse(date))+".xls");
  1560 + } catch (Exception e) {
  1561 + // TODO: handle exception
  1562 + e.printStackTrace();
  1563 + }
  1564 + }
  1565 +
1548 return lMap; 1566 return lMap;
1549 } 1567 }
1550 1568
@@ -2201,12 +2219,43 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2201,12 +2219,43 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2201 map.put("sjbc", jhbc-cjbc+ljbc); 2219 map.put("sjbc", jhbc-cjbc+ljbc);
2202 map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc)); 2220 map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc));
2203 map.put("ljbc", ljbc); 2221 map.put("ljbc", ljbc);
2204 -  
2205 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
2206 - 2222 + String zdp="",zwdp="",wdp="";
  2223 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
  2224 + List<DutyEmployee> listDtuy= dutyEmployeeService.getDutyEmployee(line, date+"00:00", date+"23:59");
  2225 + try {
  2226 + Long fcsj1=sdf.parse(date+" 03:00").getTime();
  2227 + Long fcsj2=sdf.parse(date+" 11:00").getTime();
  2228 + Long fcsj3=sdf.parse(date+" 22:00").getTime();
  2229 + for(int i=0;i<list.size();i++){
  2230 + DutyEmployee t=listDtuy.get(i);
  2231 + Long ts=t.getTs();
  2232 + if(ts>fcsj1&&ts<fcsj2){
  2233 + if(zdp.indexOf(t.getuName())==-1){
  2234 + zdp +=t.getuName()+",";
  2235 +
  2236 + }
  2237 + }else if(ts>fcsj2 && ts<fcsj3){
  2238 + if(zwdp.indexOf(t.getuName())==-1){
  2239 + zwdp +=t.getuName()+",";
  2240 + }
  2241 + }else{
  2242 + if(wdp.indexOf(t.getuName())==-1){
  2243 + wdp +=t.getuName()+",";
  2244 + }
  2245 + }
  2246 + }
  2247 + }catch (ParseException e) {
  2248 + // TODO Auto-generated catch block
  2249 + e.printStackTrace();
  2250 + }
  2251 + map.put("zdp", zdp);
  2252 + map.put("zwdp", zwdp);
  2253 + map.put("wdp", wdp);
  2254 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
2207 list.add(listMap.iterator()); 2255 list.add(listMap.iterator());
2208 - ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould\\waybill_qingpu.xls",  
2209 - path+"export\\" + date+"-"+clZbh+"-行车路单.xls"); 2256 + ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould/waybill_qingpu.xls",
  2257 + path+"export/" + date+"-"+clZbh+"-行车路单.xls");
  2258 +
2210 return scheduleRealInfos; 2259 return scheduleRealInfos;
2211 } 2260 }
2212 2261
@@ -2304,6 +2353,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2304,6 +2353,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2304 map.put("sjbc", jhbc-cjbc+ljbc); 2353 map.put("sjbc", jhbc-cjbc+ljbc);
2305 map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc)); 2354 map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc));
2306 map.put("ljbc", ljbc); 2355 map.put("ljbc", ljbc);
  2356 +
2307 return map; 2357 return map;
2308 } 2358 }
2309 2359
@@ -2356,6 +2406,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2356,6 +2406,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2356 map.put("zdzName", s.getZdzName()); 2406 map.put("zdzName", s.getZdzName());
2357 map.put("scheduleDate", s.getScheduleDateStr()); 2407 map.put("scheduleDate", s.getScheduleDateStr());
2358 String zdp="",zwdp="",wdp=""; 2408 String zdp="",zwdp="",wdp="";
  2409 + String zdpT="",zwdpT="",wdpT="";
2359 2410
2360 List<DutyEmployee> list= dutyEmployeeService.getDutyEmployee(xlbm, fcrq+"00:00", fcrq+"23:59"); 2411 List<DutyEmployee> list= dutyEmployeeService.getDutyEmployee(xlbm, fcrq+"00:00", fcrq+"23:59");
2361 try { 2412 try {
@@ -2367,14 +2418,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2367,14 +2418,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2367 Long ts=t.getTs(); 2418 Long ts=t.getTs();
2368 if(ts>fcsj1&&ts<fcsj2){ 2419 if(ts>fcsj1&&ts<fcsj2){
2369 if(zdp.indexOf(t.getuName())==-1){ 2420 if(zdp.indexOf(t.getuName())==-1){
  2421 + if(!(zdp.length()>0)){
  2422 + zdpT =t.getuName()+"...";
  2423 + }
2370 zdp +=t.getuName()+","; 2424 zdp +=t.getuName()+",";
  2425 +
2371 } 2426 }
2372 }else if(ts>fcsj2 && ts<fcsj3){ 2427 }else if(ts>fcsj2 && ts<fcsj3){
2373 if(zwdp.indexOf(t.getuName())==-1){ 2428 if(zwdp.indexOf(t.getuName())==-1){
  2429 + if(!(zwdp.length()>0)){
  2430 + zwdpT =t.getuName()+"...";
  2431 + }
2374 zwdp +=t.getuName()+","; 2432 zwdp +=t.getuName()+",";
2375 } 2433 }
2376 }else{ 2434 }else{
2377 if(wdp.indexOf(t.getuName())==-1){ 2435 if(wdp.indexOf(t.getuName())==-1){
  2436 + if(!(wdp.length()>0)){
  2437 + wdpT =t.getuName()+"...";
  2438 + }
2378 wdp +=t.getuName()+","; 2439 wdp +=t.getuName()+",";
2379 } 2440 }
2380 } 2441 }
@@ -2386,6 +2447,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2386,6 +2447,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2386 map.put("zdp", zdp); 2447 map.put("zdp", zdp);
2387 map.put("zwdp", zwdp); 2448 map.put("zwdp", zwdp);
2388 map.put("wdp", wdp); 2449 map.put("wdp", wdp);
  2450 + map.put("zdpT", zdpT);
  2451 + map.put("zwdpT", zwdpT);
  2452 + map.put("wdpT", wdpT);
2389 return map; 2453 return map;
2390 } 2454 }
2391 2455
src/main/java/com/bsth/service/schedule/PeopleCarPlanServiceImpl.java
@@ -259,9 +259,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -259,9 +259,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
259 ReportUtils ee = new ReportUtils(); 259 ReportUtils ee = new ReportUtils();
260 try { 260 try {
261 listI.add(resList.iterator()); 261 listI.add(resList.iterator());
262 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
263 - ee.excelReplace(listI, new Object[] { m }, path+"mould\\peoCarPlan.xls",  
264 - path+"export\\计划车辆班次人员" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 262 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  263 + ee.excelReplace(listI, new Object[] { m }, path+"mould/peoCarPlan.xls",
  264 + path+"export/计划车辆班次人员" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
265 } catch (Exception e) { 265 } catch (Exception e) {
266 // TODO: handle exception 266 // TODO: handle exception
267 e.printStackTrace(); 267 e.printStackTrace();
@@ -463,9 +463,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -463,9 +463,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
463 ReportUtils ee = new ReportUtils(); 463 ReportUtils ee = new ReportUtils();
464 try { 464 try {
465 listI.add(resList.iterator()); 465 listI.add(resList.iterator());
466 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
467 - ee.excelReplace(listI, new Object[] { m }, path+"mould\\workDaily.xls",  
468 - path+"export\\营运服务日报表"+ sdfSimple.format(sdfMonth.parse(date))+".xls"); 466 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  467 + ee.excelReplace(listI, new Object[] { m }, path+"mould/workDaily.xls",
  468 + path+"export/营运服务日报表"+ sdfSimple.format(sdfMonth.parse(date))+".xls");
469 } catch (Exception e) { 469 } catch (Exception e) {
470 // TODO: handle exception 470 // TODO: handle exception
471 e.printStackTrace(); 471 e.printStackTrace();
@@ -735,9 +735,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -735,9 +735,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
735 ReportUtils ee = new ReportUtils(); 735 ReportUtils ee = new ReportUtils();
736 try { 736 try {
737 listI.add(resList.iterator()); 737 listI.add(resList.iterator());
738 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
739 - ee.excelReplace(listI, new Object[] { m }, path+"mould\\scheduleAnaly.xls",  
740 - path+"export\\时刻表分析" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls"); 738 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  739 + ee.excelReplace(listI, new Object[] { m }, path+"mould/scheduleAnaly.xls",
  740 + path+"export/时刻表分析" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
741 } catch (Exception e) { 741 } catch (Exception e) {
742 // TODO: handle exception 742 // TODO: handle exception
743 e.printStackTrace(); 743 e.printStackTrace();
@@ -989,9 +989,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -989,9 +989,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
989 ReportUtils ee = new ReportUtils(); 989 ReportUtils ee = new ReportUtils();
990 try { 990 try {
991 listI.add(resList.iterator()); 991 listI.add(resList.iterator());
992 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
993 - ee.excelReplace(listI, new Object[] { m }, path+"mould\\firstAndLastBus.xls",  
994 - path+"export\\线路首末班" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 992 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  993 + ee.excelReplace(listI, new Object[] { m }, path+"mould/firstAndLastBus.xls",
  994 + path+"export/线路首末班" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
995 } catch (Exception e) { 995 } catch (Exception e) {
996 // TODO: handle exception 996 // TODO: handle exception
997 e.printStackTrace(); 997 e.printStackTrace();
@@ -1146,9 +1146,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1146,9 +1146,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1146 ReportUtils ee = new ReportUtils(); 1146 ReportUtils ee = new ReportUtils();
1147 try { 1147 try {
1148 listI.add(resList.iterator()); 1148 listI.add(resList.iterator());
1149 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
1150 - ee.excelReplace(listI, new Object[] { m }, path+"mould\\commandState.xls",  
1151 - path+"export\\指令状态分析" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 1149 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  1150 + ee.excelReplace(listI, new Object[] { m }, path+"mould/commandState.xls",
  1151 + path+"export/指令状态分析" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
1152 } catch (Exception e) { 1152 } catch (Exception e) {
1153 // TODO: handle exception 1153 // TODO: handle exception
1154 e.printStackTrace(); 1154 e.printStackTrace();
@@ -1172,9 +1172,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1172,9 +1172,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1172 + " 车辆:" + map1.get("clZbh") + " 人员:" + map1.get("jsy")); 1172 + " 车辆:" + map1.get("clZbh") + " 人员:" + map1.get("jsy"));
1173 } 1173 }
1174 } 1174 }
1175 - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";  
1176 - ee.excelReplace(listI, new Object[] { m }, path+"mould\\commandState1.xls",  
1177 - path+"export\\指令状态明细" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 1175 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  1176 + ee.excelReplace(listI, new Object[] { m }, path+"mould/commandState1.xls",
  1177 + path+"export/指令状态明细" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
1178 } catch (Exception e) { 1178 } catch (Exception e) {
1179 // TODO: handle exception 1179 // TODO: handle exception
1180 e.printStackTrace(); 1180 e.printStackTrace();
src/main/java/com/bsth/util/ReportUtils.java
@@ -342,8 +342,8 @@ public class ReportUtils { @@ -342,8 +342,8 @@ public class ReportUtils {
342 dataList.add(sr); 342 dataList.add(sr);
343 list.add(dataList.iterator()); 343 list.add(dataList.iterator());
344 344
345 - ee.excelReplace(list, new Object[] { srr }, "D:\\waybill.xls",  
346 - "D:\\22.xls"); 345 + ee.excelReplace(list, new Object[] { srr }, "D:/waybill.xls",
  346 + "D:/22.xls");
347 System.out.println("ok"); 347 System.out.println("ok");
348 } catch (Exception e) { 348 } catch (Exception e) {
349 e.printStackTrace(); 349 e.printStackTrace();
@@ -452,7 +452,7 @@ public class ReportUtils { @@ -452,7 +452,7 @@ public class ReportUtils {
452 targetFile.delete(); 452 targetFile.delete();
453 } 453 }
454 // 创建目标文件夹 454 // 创建目标文件夹
455 - targetFile = new File(path.substring(0, path.lastIndexOf("\\"))); 455 + targetFile = new File(path.substring(0, path.lastIndexOf("/")));
456 if (!targetFile.exists()) { 456 if (!targetFile.exists()) {
457 targetFile.mkdirs(); 457 targetFile.mkdirs();
458 } 458 }
src/main/resources/datatools/ktrs/scheduleRuleDataInput.ktr
@@ -1629,4 +1629,4 @@ @@ -1629,4 +1629,4 @@
1629 </slave-step-copy-partition-distribution> 1629 </slave-step-copy-partition-distribution>
1630 <slave_transformation>N</slave_transformation> 1630 <slave_transformation>N</slave_transformation>
1631 1631
1632 -</transformation> 1632 -</transformation>
  1633 +</transformation>
1633 \ No newline at end of file 1634 \ No newline at end of file
src/main/resources/datatools/ktrs/scheduleRuleDataOutput.ktr
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<transformation>  
3 - <info>  
4 - <name>scheduleRuleDataOutput</name>  
5 - <description/>  
6 - <extended_description/>  
7 - <trans_version/>  
8 - <trans_type>Normal</trans_type>  
9 - <trans_status>0</trans_status>  
10 - <directory>&#x2f;</directory>  
11 - <parameters>  
12 - <parameter>  
13 - <name>filepath</name>  
14 - <default_value/>  
15 - <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>  
16 - </parameter>  
17 - </parameters>  
18 - <log>  
19 -<trans-log-table><connection/>  
20 -<schema/>  
21 -<table/>  
22 -<size_limit_lines/>  
23 -<interval/>  
24 -<timeout_days/>  
25 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>  
26 -<perf-log-table><connection/>  
27 -<schema/>  
28 -<table/>  
29 -<interval/>  
30 -<timeout_days/>  
31 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>  
32 -<channel-log-table><connection/>  
33 -<schema/>  
34 -<table/>  
35 -<timeout_days/>  
36 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>  
37 -<step-log-table><connection/>  
38 -<schema/>  
39 -<table/>  
40 -<timeout_days/>  
41 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>  
42 -<metrics-log-table><connection/>  
43 -<schema/>  
44 -<table/>  
45 -<timeout_days/>  
46 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>  
47 - </log>  
48 - <maxdate>  
49 - <connection/>  
50 - <table/>  
51 - <field/>  
52 - <offset>0.0</offset>  
53 - <maxdiff>0.0</maxdiff>  
54 - </maxdate>  
55 - <size_rowset>10000</size_rowset>  
56 - <sleep_time_empty>50</sleep_time_empty>  
57 - <sleep_time_full>50</sleep_time_full>  
58 - <unique_connections>N</unique_connections>  
59 - <feedback_shown>Y</feedback_shown>  
60 - <feedback_size>50000</feedback_size>  
61 - <using_thread_priorities>Y</using_thread_priorities>  
62 - <shared_objects_file/>  
63 - <capture_step_performance>N</capture_step_performance>  
64 - <step_performance_capturing_delay>1000</step_performance_capturing_delay>  
65 - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>  
66 - <dependencies>  
67 - </dependencies>  
68 - <partitionschemas>  
69 - </partitionschemas>  
70 - <slaveservers>  
71 - </slaveservers>  
72 - <clusterschemas>  
73 - </clusterschemas>  
74 - <created_user>-</created_user>  
75 - <created_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</created_date>  
76 - <modified_user>-</modified_user>  
77 - <modified_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</modified_date>  
78 - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>  
79 - <is_key_private>N</is_key_private>  
80 - </info>  
81 - <notepads>  
82 - <notepad>  
83 - <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>  
84 - <xloc>118</xloc>  
85 - <yloc>158</yloc>  
86 - <width>333</width>  
87 - <heigth>90</heigth>  
88 - <fontname>YaHei Consolas Hybrid</fontname>  
89 - <fontsize>12</fontsize>  
90 - <fontbold>N</fontbold>  
91 - <fontitalic>N</fontitalic>  
92 - <fontcolorred>0</fontcolorred>  
93 - <fontcolorgreen>0</fontcolorgreen>  
94 - <fontcolorblue>0</fontcolorblue>  
95 - <backgroundcolorred>255</backgroundcolorred>  
96 - <backgroundcolorgreen>205</backgroundcolorgreen>  
97 - <backgroundcolorblue>112</backgroundcolorblue>  
98 - <bordercolorred>100</bordercolorred>  
99 - <bordercolorgreen>100</bordercolorgreen>  
100 - <bordercolorblue>100</bordercolorblue>  
101 - <drawshadow>Y</drawshadow>  
102 - </notepad>  
103 - </notepads>  
104 - <connection>  
105 - <name>bus_control_variable</name>  
106 - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>  
107 - <type>MYSQL</type>  
108 - <access>Native</access>  
109 - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>  
110 - <port>3306</port>  
111 - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>  
112 - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>  
113 - <servername/>  
114 - <data_tablespace/>  
115 - <index_tablespace/>  
116 - <attributes>  
117 - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>  
118 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
119 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
120 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
121 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
122 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
123 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
124 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
125 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
126 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
127 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
128 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
129 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
130 - </attributes>  
131 - </connection>  
132 - <connection>  
133 - <name>bus_control_&#x516c;&#x53f8;_201</name>  
134 - <server>localhost</server>  
135 - <type>MYSQL</type>  
136 - <access>Native</access>  
137 - <database>control</database>  
138 - <port>3306</port>  
139 - <username>root</username>  
140 - <password>Encrypted </password>  
141 - <servername/>  
142 - <data_tablespace/>  
143 - <index_tablespace/>  
144 - <attributes>  
145 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
146 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
147 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
148 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
149 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
150 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
151 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
152 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
153 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
154 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
155 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
156 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
157 - </attributes>  
158 - </connection>  
159 - <connection>  
160 - <name>bus_control_&#x672c;&#x673a;</name>  
161 - <server>localhost</server>  
162 - <type>MYSQL</type>  
163 - <access>Native</access>  
164 - <database>control</database>  
165 - <port>3306</port>  
166 - <username>root</username>  
167 - <password>Encrypted </password>  
168 - <servername/>  
169 - <data_tablespace/>  
170 - <index_tablespace/>  
171 - <attributes>  
172 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
173 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
174 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
175 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
176 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
177 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
178 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
179 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
180 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
181 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
182 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
183 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
184 - </attributes>  
185 - </connection>  
186 - <connection>  
187 - <name>xlab_mysql_youle</name>  
188 - <server>101.231.124.8</server>  
189 - <type>MYSQL</type>  
190 - <access>Native</access>  
191 - <database>xlab_youle</database>  
192 - <port>45687</port>  
193 - <username>xlab-youle</username>  
194 - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>  
195 - <servername/>  
196 - <data_tablespace/>  
197 - <index_tablespace/>  
198 - <attributes>  
199 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
200 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
201 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
202 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
203 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
204 - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>  
205 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
206 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
207 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
208 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
209 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
210 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
211 - </attributes>  
212 - </connection>  
213 - <connection>  
214 - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>  
215 - <server>localhost</server>  
216 - <type>MYSQL</type>  
217 - <access>Native</access>  
218 - <database>xlab_youle</database>  
219 - <port>3306</port>  
220 - <username>root</username>  
221 - <password>Encrypted </password>  
222 - <servername/>  
223 - <data_tablespace/>  
224 - <index_tablespace/>  
225 - <attributes>  
226 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
227 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
228 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
229 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
230 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
231 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
232 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
233 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
234 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
235 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
236 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
237 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
238 - </attributes>  
239 - </connection>  
240 - <connection>  
241 - <name>xlab_youle</name>  
242 - <server/>  
243 - <type>MYSQL</type>  
244 - <access>JNDI</access>  
245 - <database>xlab_youle</database>  
246 - <port>1521</port>  
247 - <username/>  
248 - <password>Encrypted </password>  
249 - <servername/>  
250 - <data_tablespace/>  
251 - <index_tablespace/>  
252 - <attributes>  
253 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
254 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
255 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
256 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
257 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
258 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
259 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
260 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
261 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
262 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
263 - </attributes>  
264 - </connection>  
265 - <order>  
266 - <hop> <from>&#x6392;&#x7248;&#x89c4;&#x5219;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
267 - <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
268 - <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
269 - <hop> <from>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</from><to>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</to><enabled>Y</enabled> </hop>  
270 - <hop> <from>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
271 - <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>  
272 - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>  
273 - </order>  
274 - <step>  
275 - <name>Excel&#x8f93;&#x51fa;</name>  
276 - <type>ExcelOutput</type>  
277 - <description/>  
278 - <distribute>Y</distribute>  
279 - <custom_distribution/>  
280 - <copies>1</copies>  
281 - <partitioning>  
282 - <method>none</method>  
283 - <schema_name/>  
284 - </partitioning>  
285 - <header>Y</header>  
286 - <footer>N</footer>  
287 - <encoding/>  
288 - <append>N</append>  
289 - <add_to_result_filenames>Y</add_to_result_filenames>  
290 - <file>  
291 - <name>&#x24;&#x7b;filepath&#x7d;</name>  
292 - <extention/>  
293 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
294 - <create_parent_folder>N</create_parent_folder>  
295 - <split>N</split>  
296 - <add_date>N</add_date>  
297 - <add_time>N</add_time>  
298 - <SpecifyFormat>N</SpecifyFormat>  
299 - <date_time_format>yyyyMMddHHmmss</date_time_format>  
300 - <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>  
301 - <autosizecolums>N</autosizecolums>  
302 - <nullisblank>N</nullisblank>  
303 - <protect_sheet>N</protect_sheet>  
304 - <password>Encrypted </password>  
305 - <splitevery>0</splitevery>  
306 - <usetempfiles>N</usetempfiles>  
307 - <tempdirectory/>  
308 - </file>  
309 - <template>  
310 - <enabled>N</enabled>  
311 - <append>N</append>  
312 - <filename>template.xls</filename>  
313 - </template>  
314 - <fields>  
315 - <field>  
316 - <name>&#x7ebf;&#x8def;</name>  
317 - <type>String</type>  
318 - <format/>  
319 - </field>  
320 - <field>  
321 - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
322 - <type>String</type>  
323 - <format/>  
324 - </field>  
325 - <field>  
326 - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
327 - <type>String</type>  
328 - <format/>  
329 - </field>  
330 - <field>  
331 - <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>  
332 - <type>String</type>  
333 - <format/>  
334 - </field>  
335 - <field>  
336 - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>  
337 - <type>String</type>  
338 - <format/>  
339 - </field>  
340 - <field>  
341 - <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>  
342 - <type>String</type>  
343 - <format/>  
344 - </field>  
345 - <field>  
346 - <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>  
347 - <type>String</type>  
348 - <format/>  
349 - </field>  
350 - <field>  
351 - <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>  
352 - <type>String</type>  
353 - <format/>  
354 - </field>  
355 - </fields>  
356 - <custom>  
357 - <header_font_name>arial</header_font_name>  
358 - <header_font_size>10</header_font_size>  
359 - <header_font_bold>N</header_font_bold>  
360 - <header_font_italic>N</header_font_italic>  
361 - <header_font_underline>no</header_font_underline>  
362 - <header_font_orientation>horizontal</header_font_orientation>  
363 - <header_font_color>black</header_font_color>  
364 - <header_background_color>none</header_background_color>  
365 - <header_row_height>255</header_row_height>  
366 - <header_alignment>left</header_alignment>  
367 - <header_image/>  
368 - <row_font_name>arial</row_font_name>  
369 - <row_font_size>10</row_font_size>  
370 - <row_font_color>black</row_font_color>  
371 - <row_background_color>none</row_background_color>  
372 - </custom>  
373 - <cluster_schema/>  
374 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
375 - <xloc>707</xloc>  
376 - <yloc>348</yloc>  
377 - <draw>Y</draw>  
378 - </GUI>  
379 - </step>  
380 -  
381 - <step>  
382 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>  
383 - <type>SelectValues</type>  
384 - <description/>  
385 - <distribute>Y</distribute>  
386 - <custom_distribution/>  
387 - <copies>1</copies>  
388 - <partitioning>  
389 - <method>none</method>  
390 - <schema_name/>  
391 - </partitioning>  
392 - <fields> <field> <name>xlmc</name>  
393 - <rename>&#x7ebf;&#x8def;</rename>  
394 - <length>-2</length>  
395 - <precision>-2</precision>  
396 - </field> <field> <name>zbh</name>  
397 - <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>  
398 - <length>-2</length>  
399 - <precision>-2</precision>  
400 - </field> <field> <name>qyrq</name>  
401 - <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>  
402 - <length>-2</length>  
403 - <precision>-2</precision>  
404 - </field> <field> <name>lp_start</name>  
405 - <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>  
406 - <length>-2</length>  
407 - <precision>-2</precision>  
408 - </field> <field> <name>lp_names</name>  
409 - <rename>&#x8def;&#x724c;&#x8303;&#x56f4;</rename>  
410 - <length>-2</length>  
411 - <precision>-2</precision>  
412 - </field> <field> <name>ry_start</name>  
413 - <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>  
414 - <length>-2</length>  
415 - <precision>-2</precision>  
416 - </field> <field> <name>ry_dbbms</name>  
417 - <rename>&#x4eba;&#x5458;&#x8303;&#x56f4;</rename>  
418 - <length>-2</length>  
419 - <precision>-2</precision>  
420 - </field> <field> <name>fbgs</name>  
421 - <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>  
422 - <length>-2</length>  
423 - <precision>-2</precision>  
424 - </field> <select_unspecified>N</select_unspecified>  
425 - </fields> <cluster_schema/>  
426 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
427 - <xloc>705</xloc>  
428 - <yloc>270</yloc>  
429 - <draw>Y</draw>  
430 - </GUI>  
431 - </step>  
432 -  
433 - <step>  
434 - <name>&#x6392;&#x7248;&#x89c4;&#x5219;</name>  
435 - <type>TableInput</type>  
436 - <description/>  
437 - <distribute>Y</distribute>  
438 - <custom_distribution/>  
439 - <copies>1</copies>  
440 - <partitioning>  
441 - <method>none</method>  
442 - <schema_name/>  
443 - </partitioning>  
444 - <connection>bus_control_variable</connection>  
445 - <sql>SELECT &#x2a; FROM bsth_c_s_sr1_flat</sql>  
446 - <limit>0</limit>  
447 - <lookup/>  
448 - <execute_each_row>N</execute_each_row>  
449 - <variables_active>N</variables_active>  
450 - <lazy_conversion_active>N</lazy_conversion_active>  
451 - <cluster_schema/>  
452 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
453 - <xloc>129</xloc>  
454 - <yloc>65</yloc>  
455 - <draw>Y</draw>  
456 - </GUI>  
457 - </step>  
458 -  
459 - <step>  
460 - <name>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</name>  
461 - <type>SelectValues</type>  
462 - <description/>  
463 - <distribute>Y</distribute>  
464 - <custom_distribution/>  
465 - <copies>1</copies>  
466 - <partitioning>  
467 - <method>none</method>  
468 - <schema_name/>  
469 - </partitioning>  
470 - <fields> <select_unspecified>N</select_unspecified>  
471 - <meta> <name>qyrq</name>  
472 - <rename>qyrq</rename>  
473 - <type>String</type>  
474 - <length>-2</length>  
475 - <precision>-2</precision>  
476 - <conversion_mask>yyyy-MM-dd</conversion_mask>  
477 - <date_format_lenient>false</date_format_lenient>  
478 - <date_format_locale/>  
479 - <date_format_timezone/>  
480 - <lenient_string_to_number>false</lenient_string_to_number>  
481 - <encoding/>  
482 - <decimal_symbol/>  
483 - <grouping_symbol/>  
484 - <currency_symbol/>  
485 - <storage_type/>  
486 - </meta> <meta> <name>lp_start</name>  
487 - <rename>lp_start</rename>  
488 - <type>String</type>  
489 - <length>-2</length>  
490 - <precision>-2</precision>  
491 - <conversion_mask/>  
492 - <date_format_lenient>false</date_format_lenient>  
493 - <date_format_locale/>  
494 - <date_format_timezone/>  
495 - <lenient_string_to_number>false</lenient_string_to_number>  
496 - <encoding/>  
497 - <decimal_symbol/>  
498 - <grouping_symbol/>  
499 - <currency_symbol/>  
500 - <storage_type/>  
501 - </meta> <meta> <name>ry_start</name>  
502 - <rename>ry_start</rename>  
503 - <type>String</type>  
504 - <length>-2</length>  
505 - <precision>-2</precision>  
506 - <conversion_mask>&#x23;</conversion_mask>  
507 - <date_format_lenient>false</date_format_lenient>  
508 - <date_format_locale/>  
509 - <date_format_timezone/>  
510 - <lenient_string_to_number>false</lenient_string_to_number>  
511 - <encoding/>  
512 - <decimal_symbol/>  
513 - <grouping_symbol/>  
514 - <currency_symbol/>  
515 - <storage_type/>  
516 - </meta> </fields> <cluster_schema/>  
517 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
518 - <xloc>705</xloc>  
519 - <yloc>65</yloc>  
520 - <draw>Y</draw>  
521 - </GUI>  
522 - </step>  
523 -  
524 - <step>  
525 - <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>  
526 - <type>DBLookup</type>  
527 - <description/>  
528 - <distribute>Y</distribute>  
529 - <custom_distribution/>  
530 - <copies>1</copies>  
531 - <partitioning>  
532 - <method>none</method>  
533 - <schema_name/>  
534 - </partitioning>  
535 - <connection>bus_control_variable</connection>  
536 - <cache>Y</cache>  
537 - <cache_load_all>Y</cache_load_all>  
538 - <cache_size>0</cache_size>  
539 - <lookup>  
540 - <schema/>  
541 - <table>bsth_c_line</table>  
542 - <orderby/>  
543 - <fail_on_multiple>N</fail_on_multiple>  
544 - <eat_row_on_failure>N</eat_row_on_failure>  
545 - <key>  
546 - <name>xl</name>  
547 - <field>id</field>  
548 - <condition>&#x3d;</condition>  
549 - <name2/>  
550 - </key>  
551 - <value>  
552 - <name>name</name>  
553 - <rename>xlmc</rename>  
554 - <default/>  
555 - <type>String</type>  
556 - </value>  
557 - </lookup>  
558 - <cluster_schema/>  
559 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
560 - <xloc>329</xloc>  
561 - <yloc>65</yloc>  
562 - <draw>Y</draw>  
563 - </GUI>  
564 - </step>  
565 -  
566 - <step>  
567 - <name>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</name>  
568 - <type>DBLookup</type>  
569 - <description/>  
570 - <distribute>Y</distribute>  
571 - <custom_distribution/>  
572 - <copies>1</copies>  
573 - <partitioning>  
574 - <method>none</method>  
575 - <schema_name/>  
576 - </partitioning>  
577 - <connection>bus_control_variable</connection>  
578 - <cache>N</cache>  
579 - <cache_load_all>N</cache_load_all>  
580 - <cache_size>0</cache_size>  
581 - <lookup>  
582 - <schema/>  
583 - <table>bsth_c_cars</table>  
584 - <orderby/>  
585 - <fail_on_multiple>N</fail_on_multiple>  
586 - <eat_row_on_failure>N</eat_row_on_failure>  
587 - <key>  
588 - <name>clid</name>  
589 - <field>id</field>  
590 - <condition>&#x3d;</condition>  
591 - <name2/>  
592 - </key>  
593 - <value>  
594 - <name>inside_code</name>  
595 - <rename>zbh</rename>  
596 - <default/>  
597 - <type>String</type>  
598 - </value>  
599 - </lookup>  
600 - <cluster_schema/>  
601 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
602 - <xloc>600</xloc>  
603 - <yloc>64</yloc>  
604 - <draw>Y</draw>  
605 - </GUI>  
606 - </step>  
607 -  
608 - <step>  
609 - <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</name>  
610 - <type>DBLookup</type>  
611 - <description/>  
612 - <distribute>Y</distribute>  
613 - <custom_distribution/>  
614 - <copies>1</copies>  
615 - <partitioning>  
616 - <method>none</method>  
617 - <schema_name/>  
618 - </partitioning>  
619 - <connection>bus_control_variable</connection>  
620 - <cache>N</cache>  
621 - <cache_load_all>N</cache_load_all>  
622 - <cache_size>0</cache_size>  
623 - <lookup>  
624 - <schema/>  
625 - <table>bsth_c_s_ccinfo</table>  
626 - <orderby/>  
627 - <fail_on_multiple>N</fail_on_multiple>  
628 - <eat_row_on_failure>N</eat_row_on_failure>  
629 - <key>  
630 - <name>car_config_info</name>  
631 - <field>id</field>  
632 - <condition>&#x3d;</condition>  
633 - <name2/>  
634 - </key>  
635 - <value>  
636 - <name>cl</name>  
637 - <rename>clid</rename>  
638 - <default/>  
639 - <type>Integer</type>  
640 - </value>  
641 - </lookup>  
642 - <cluster_schema/>  
643 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
644 - <xloc>471</xloc>  
645 - <yloc>64</yloc>  
646 - <draw>Y</draw>  
647 - </GUI>  
648 - </step>  
649 -  
650 - <step>  
651 - <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>  
652 - <type>SortRows</type>  
653 - <description/>  
654 - <distribute>Y</distribute>  
655 - <custom_distribution/>  
656 - <copies>1</copies>  
657 - <partitioning>  
658 - <method>none</method>  
659 - <schema_name/>  
660 - </partitioning>  
661 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
662 - <prefix>out</prefix>  
663 - <sort_size>1000000</sort_size>  
664 - <free_memory/>  
665 - <compress>N</compress>  
666 - <compress_variable/>  
667 - <unique_rows>N</unique_rows>  
668 - <fields>  
669 - <field>  
670 - <name>xlmc</name>  
671 - <ascending>Y</ascending>  
672 - <case_sensitive>N</case_sensitive>  
673 - <presorted>N</presorted>  
674 - </field>  
675 - <field>  
676 - <name>zbh</name>  
677 - <ascending>Y</ascending>  
678 - <case_sensitive>N</case_sensitive>  
679 - <presorted>N</presorted>  
680 - </field>  
681 - <field>  
682 - <name>qyrq</name>  
683 - <ascending>Y</ascending>  
684 - <case_sensitive>N</case_sensitive>  
685 - <presorted>N</presorted>  
686 - </field>  
687 - <field>  
688 - <name>lp_names</name>  
689 - <ascending>Y</ascending>  
690 - <case_sensitive>N</case_sensitive>  
691 - <presorted>N</presorted>  
692 - </field>  
693 - <field>  
694 - <name>ry_dbbms</name>  
695 - <ascending>Y</ascending>  
696 - <case_sensitive>N</case_sensitive>  
697 - <presorted>N</presorted>  
698 - </field>  
699 - </fields>  
700 - <cluster_schema/>  
701 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
702 - <xloc>705</xloc>  
703 - <yloc>177</yloc>  
704 - <draw>Y</draw>  
705 - </GUI>  
706 - </step>  
707 -  
708 - <step_error_handling>  
709 - </step_error_handling>  
710 - <slave-step-copy-partition-distribution>  
711 -</slave-step-copy-partition-distribution>  
712 - <slave_transformation>N</slave_transformation>  
713 -  
714 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>scheduleRuleDataOutput</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value/>
  15 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  16 + </parameter>
  17 + </parameters>
  18 + <log>
  19 +<trans-log-table><connection/>
  20 +<schema/>
  21 +<table/>
  22 +<size_limit_lines/>
  23 +<interval/>
  24 +<timeout_days/>
  25 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  26 +<perf-log-table><connection/>
  27 +<schema/>
  28 +<table/>
  29 +<interval/>
  30 +<timeout_days/>
  31 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  32 +<channel-log-table><connection/>
  33 +<schema/>
  34 +<table/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  37 +<step-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  42 +<metrics-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  47 + </log>
  48 + <maxdate>
  49 + <connection/>
  50 + <table/>
  51 + <field/>
  52 + <offset>0.0</offset>
  53 + <maxdiff>0.0</maxdiff>
  54 + </maxdate>
  55 + <size_rowset>10000</size_rowset>
  56 + <sleep_time_empty>50</sleep_time_empty>
  57 + <sleep_time_full>50</sleep_time_full>
  58 + <unique_connections>N</unique_connections>
  59 + <feedback_shown>Y</feedback_shown>
  60 + <feedback_size>50000</feedback_size>
  61 + <using_thread_priorities>Y</using_thread_priorities>
  62 + <shared_objects_file/>
  63 + <capture_step_performance>N</capture_step_performance>
  64 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  65 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  66 + <dependencies>
  67 + </dependencies>
  68 + <partitionschemas>
  69 + </partitionschemas>
  70 + <slaveservers>
  71 + </slaveservers>
  72 + <clusterschemas>
  73 + </clusterschemas>
  74 + <created_user>-</created_user>
  75 + <created_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</created_date>
  76 + <modified_user>-</modified_user>
  77 + <modified_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</modified_date>
  78 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  79 + <is_key_private>N</is_key_private>
  80 + </info>
  81 + <notepads>
  82 + <notepad>
  83 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  84 + <xloc>118</xloc>
  85 + <yloc>158</yloc>
  86 + <width>333</width>
  87 + <heigth>90</heigth>
  88 + <fontname>YaHei Consolas Hybrid</fontname>
  89 + <fontsize>12</fontsize>
  90 + <fontbold>N</fontbold>
  91 + <fontitalic>N</fontitalic>
  92 + <fontcolorred>0</fontcolorred>
  93 + <fontcolorgreen>0</fontcolorgreen>
  94 + <fontcolorblue>0</fontcolorblue>
  95 + <backgroundcolorred>255</backgroundcolorred>
  96 + <backgroundcolorgreen>205</backgroundcolorgreen>
  97 + <backgroundcolorblue>112</backgroundcolorblue>
  98 + <bordercolorred>100</bordercolorred>
  99 + <bordercolorgreen>100</bordercolorgreen>
  100 + <bordercolorblue>100</bordercolorblue>
  101 + <drawshadow>Y</drawshadow>
  102 + </notepad>
  103 + </notepads>
  104 + <connection>
  105 + <name>bus_control_variable</name>
  106 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  107 + <type>MYSQL</type>
  108 + <access>Native</access>
  109 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  110 + <port>3306</port>
  111 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  112 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  113 + <servername/>
  114 + <data_tablespace/>
  115 + <index_tablespace/>
  116 + <attributes>
  117 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  118 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  119 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  120 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  121 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  122 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  123 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  124 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  126 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  127 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  128 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  130 + </attributes>
  131 + </connection>
  132 + <connection>
  133 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  134 + <server>localhost</server>
  135 + <type>MYSQL</type>
  136 + <access>Native</access>
  137 + <database>control</database>
  138 + <port>3306</port>
  139 + <username>root</username>
  140 + <password>Encrypted </password>
  141 + <servername/>
  142 + <data_tablespace/>
  143 + <index_tablespace/>
  144 + <attributes>
  145 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  147 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  148 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  149 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  150 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  151 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  153 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  154 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  155 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  156 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  157 + </attributes>
  158 + </connection>
  159 + <connection>
  160 + <name>bus_control_&#x672c;&#x673a;</name>
  161 + <server>localhost</server>
  162 + <type>MYSQL</type>
  163 + <access>Native</access>
  164 + <database>control</database>
  165 + <port>3306</port>
  166 + <username>root</username>
  167 + <password>Encrypted </password>
  168 + <servername/>
  169 + <data_tablespace/>
  170 + <index_tablespace/>
  171 + <attributes>
  172 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  173 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  174 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  175 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  176 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  177 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  178 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  180 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  181 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  182 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  183 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  184 + </attributes>
  185 + </connection>
  186 + <connection>
  187 + <name>xlab_mysql_youle</name>
  188 + <server>101.231.124.8</server>
  189 + <type>MYSQL</type>
  190 + <access>Native</access>
  191 + <database>xlab_youle</database>
  192 + <port>45687</port>
  193 + <username>xlab-youle</username>
  194 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  195 + <servername/>
  196 + <data_tablespace/>
  197 + <index_tablespace/>
  198 + <attributes>
  199 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  200 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  201 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  202 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  203 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  204 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  205 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  207 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  208 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  209 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  211 + </attributes>
  212 + </connection>
  213 + <connection>
  214 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  215 + <server>localhost</server>
  216 + <type>MYSQL</type>
  217 + <access>Native</access>
  218 + <database>xlab_youle</database>
  219 + <port>3306</port>
  220 + <username>root</username>
  221 + <password>Encrypted </password>
  222 + <servername/>
  223 + <data_tablespace/>
  224 + <index_tablespace/>
  225 + <attributes>
  226 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  227 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  228 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  229 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  230 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  231 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  232 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  234 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  235 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  236 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  238 + </attributes>
  239 + </connection>
  240 + <connection>
  241 + <name>xlab_youle</name>
  242 + <server/>
  243 + <type>MYSQL</type>
  244 + <access>JNDI</access>
  245 + <database>xlab_youle</database>
  246 + <port>1521</port>
  247 + <username/>
  248 + <password>Encrypted </password>
  249 + <servername/>
  250 + <data_tablespace/>
  251 + <index_tablespace/>
  252 + <attributes>
  253 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  254 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  255 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  256 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  257 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  259 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  260 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  261 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  262 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  263 + </attributes>
  264 + </connection>
  265 + <order>
  266 + <hop> <from>&#x6392;&#x7248;&#x89c4;&#x5219;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  267 + <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  268 + <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  269 + <hop> <from>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</from><to>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</to><enabled>Y</enabled> </hop>
  270 + <hop> <from>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  273 + </order>
  274 + <step>
  275 + <name>Excel&#x8f93;&#x51fa;</name>
  276 + <type>ExcelOutput</type>
  277 + <description/>
  278 + <distribute>Y</distribute>
  279 + <custom_distribution/>
  280 + <copies>1</copies>
  281 + <partitioning>
  282 + <method>none</method>
  283 + <schema_name/>
  284 + </partitioning>
  285 + <header>Y</header>
  286 + <footer>N</footer>
  287 + <encoding/>
  288 + <append>N</append>
  289 + <add_to_result_filenames>Y</add_to_result_filenames>
  290 + <file>
  291 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  292 + <extention/>
  293 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  294 + <create_parent_folder>N</create_parent_folder>
  295 + <split>N</split>
  296 + <add_date>N</add_date>
  297 + <add_time>N</add_time>
  298 + <SpecifyFormat>N</SpecifyFormat>
  299 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  300 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  301 + <autosizecolums>N</autosizecolums>
  302 + <nullisblank>N</nullisblank>
  303 + <protect_sheet>N</protect_sheet>
  304 + <password>Encrypted </password>
  305 + <splitevery>0</splitevery>
  306 + <usetempfiles>N</usetempfiles>
  307 + <tempdirectory/>
  308 + </file>
  309 + <template>
  310 + <enabled>N</enabled>
  311 + <append>N</append>
  312 + <filename>template.xls</filename>
  313 + </template>
  314 + <fields>
  315 + <field>
  316 + <name>&#x7ebf;&#x8def;</name>
  317 + <type>String</type>
  318 + <format/>
  319 + </field>
  320 + <field>
  321 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  322 + <type>String</type>
  323 + <format/>
  324 + </field>
  325 + <field>
  326 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  327 + <type>String</type>
  328 + <format/>
  329 + </field>
  330 + <field>
  331 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  332 + <type>String</type>
  333 + <format/>
  334 + </field>
  335 + <field>
  336 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  337 + <type>String</type>
  338 + <format/>
  339 + </field>
  340 + <field>
  341 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  342 + <type>String</type>
  343 + <format/>
  344 + </field>
  345 + <field>
  346 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  347 + <type>String</type>
  348 + <format/>
  349 + </field>
  350 + <field>
  351 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  352 + <type>String</type>
  353 + <format/>
  354 + </field>
  355 + </fields>
  356 + <custom>
  357 + <header_font_name>arial</header_font_name>
  358 + <header_font_size>10</header_font_size>
  359 + <header_font_bold>N</header_font_bold>
  360 + <header_font_italic>N</header_font_italic>
  361 + <header_font_underline>no</header_font_underline>
  362 + <header_font_orientation>horizontal</header_font_orientation>
  363 + <header_font_color>black</header_font_color>
  364 + <header_background_color>none</header_background_color>
  365 + <header_row_height>255</header_row_height>
  366 + <header_alignment>left</header_alignment>
  367 + <header_image/>
  368 + <row_font_name>arial</row_font_name>
  369 + <row_font_size>10</row_font_size>
  370 + <row_font_color>black</row_font_color>
  371 + <row_background_color>none</row_background_color>
  372 + </custom>
  373 + <cluster_schema/>
  374 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  375 + <xloc>707</xloc>
  376 + <yloc>348</yloc>
  377 + <draw>Y</draw>
  378 + </GUI>
  379 + </step>
  380 +
  381 + <step>
  382 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  383 + <type>SelectValues</type>
  384 + <description/>
  385 + <distribute>Y</distribute>
  386 + <custom_distribution/>
  387 + <copies>1</copies>
  388 + <partitioning>
  389 + <method>none</method>
  390 + <schema_name/>
  391 + </partitioning>
  392 + <fields> <field> <name>xlmc</name>
  393 + <rename>&#x7ebf;&#x8def;</rename>
  394 + <length>-2</length>
  395 + <precision>-2</precision>
  396 + </field> <field> <name>zbh</name>
  397 + <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
  398 + <length>-2</length>
  399 + <precision>-2</precision>
  400 + </field> <field> <name>qyrq</name>
  401 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  402 + <length>-2</length>
  403 + <precision>-2</precision>
  404 + </field> <field> <name>lp_start</name>
  405 + <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>
  406 + <length>-2</length>
  407 + <precision>-2</precision>
  408 + </field> <field> <name>lp_names</name>
  409 + <rename>&#x8def;&#x724c;&#x8303;&#x56f4;</rename>
  410 + <length>-2</length>
  411 + <precision>-2</precision>
  412 + </field> <field> <name>ry_start</name>
  413 + <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>
  414 + <length>-2</length>
  415 + <precision>-2</precision>
  416 + </field> <field> <name>ry_dbbms</name>
  417 + <rename>&#x4eba;&#x5458;&#x8303;&#x56f4;</rename>
  418 + <length>-2</length>
  419 + <precision>-2</precision>
  420 + </field> <field> <name>fbgs</name>
  421 + <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>
  422 + <length>-2</length>
  423 + <precision>-2</precision>
  424 + </field> <select_unspecified>N</select_unspecified>
  425 + </fields> <cluster_schema/>
  426 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  427 + <xloc>705</xloc>
  428 + <yloc>270</yloc>
  429 + <draw>Y</draw>
  430 + </GUI>
  431 + </step>
  432 +
  433 + <step>
  434 + <name>&#x6392;&#x7248;&#x89c4;&#x5219;</name>
  435 + <type>TableInput</type>
  436 + <description/>
  437 + <distribute>Y</distribute>
  438 + <custom_distribution/>
  439 + <copies>1</copies>
  440 + <partitioning>
  441 + <method>none</method>
  442 + <schema_name/>
  443 + </partitioning>
  444 + <connection>bus_control_variable</connection>
  445 + <sql>SELECT &#x2a; FROM bsth_c_s_sr1_flat</sql>
  446 + <limit>0</limit>
  447 + <lookup/>
  448 + <execute_each_row>N</execute_each_row>
  449 + <variables_active>N</variables_active>
  450 + <lazy_conversion_active>N</lazy_conversion_active>
  451 + <cluster_schema/>
  452 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  453 + <xloc>129</xloc>
  454 + <yloc>65</yloc>
  455 + <draw>Y</draw>
  456 + </GUI>
  457 + </step>
  458 +
  459 + <step>
  460 + <name>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</name>
  461 + <type>SelectValues</type>
  462 + <description/>
  463 + <distribute>Y</distribute>
  464 + <custom_distribution/>
  465 + <copies>1</copies>
  466 + <partitioning>
  467 + <method>none</method>
  468 + <schema_name/>
  469 + </partitioning>
  470 + <fields> <select_unspecified>N</select_unspecified>
  471 + <meta> <name>qyrq</name>
  472 + <rename>qyrq</rename>
  473 + <type>String</type>
  474 + <length>-2</length>
  475 + <precision>-2</precision>
  476 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  477 + <date_format_lenient>false</date_format_lenient>
  478 + <date_format_locale/>
  479 + <date_format_timezone/>
  480 + <lenient_string_to_number>false</lenient_string_to_number>
  481 + <encoding/>
  482 + <decimal_symbol/>
  483 + <grouping_symbol/>
  484 + <currency_symbol/>
  485 + <storage_type/>
  486 + </meta> <meta> <name>lp_start</name>
  487 + <rename>lp_start</rename>
  488 + <type>String</type>
  489 + <length>-2</length>
  490 + <precision>-2</precision>
  491 + <conversion_mask/>
  492 + <date_format_lenient>false</date_format_lenient>
  493 + <date_format_locale/>
  494 + <date_format_timezone/>
  495 + <lenient_string_to_number>false</lenient_string_to_number>
  496 + <encoding/>
  497 + <decimal_symbol/>
  498 + <grouping_symbol/>
  499 + <currency_symbol/>
  500 + <storage_type/>
  501 + </meta> <meta> <name>ry_start</name>
  502 + <rename>ry_start</rename>
  503 + <type>String</type>
  504 + <length>-2</length>
  505 + <precision>-2</precision>
  506 + <conversion_mask>&#x23;</conversion_mask>
  507 + <date_format_lenient>false</date_format_lenient>
  508 + <date_format_locale/>
  509 + <date_format_timezone/>
  510 + <lenient_string_to_number>false</lenient_string_to_number>
  511 + <encoding/>
  512 + <decimal_symbol/>
  513 + <grouping_symbol/>
  514 + <currency_symbol/>
  515 + <storage_type/>
  516 + </meta> </fields> <cluster_schema/>
  517 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  518 + <xloc>705</xloc>
  519 + <yloc>65</yloc>
  520 + <draw>Y</draw>
  521 + </GUI>
  522 + </step>
  523 +
  524 + <step>
  525 + <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
  526 + <type>DBLookup</type>
  527 + <description/>
  528 + <distribute>Y</distribute>
  529 + <custom_distribution/>
  530 + <copies>1</copies>
  531 + <partitioning>
  532 + <method>none</method>
  533 + <schema_name/>
  534 + </partitioning>
  535 + <connection>bus_control_variable</connection>
  536 + <cache>Y</cache>
  537 + <cache_load_all>Y</cache_load_all>
  538 + <cache_size>0</cache_size>
  539 + <lookup>
  540 + <schema/>
  541 + <table>bsth_c_line</table>
  542 + <orderby/>
  543 + <fail_on_multiple>N</fail_on_multiple>
  544 + <eat_row_on_failure>N</eat_row_on_failure>
  545 + <key>
  546 + <name>xl</name>
  547 + <field>id</field>
  548 + <condition>&#x3d;</condition>
  549 + <name2/>
  550 + </key>
  551 + <value>
  552 + <name>name</name>
  553 + <rename>xlmc</rename>
  554 + <default/>
  555 + <type>String</type>
  556 + </value>
  557 + </lookup>
  558 + <cluster_schema/>
  559 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  560 + <xloc>329</xloc>
  561 + <yloc>65</yloc>
  562 + <draw>Y</draw>
  563 + </GUI>
  564 + </step>
  565 +
  566 + <step>
  567 + <name>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</name>
  568 + <type>DBLookup</type>
  569 + <description/>
  570 + <distribute>Y</distribute>
  571 + <custom_distribution/>
  572 + <copies>1</copies>
  573 + <partitioning>
  574 + <method>none</method>
  575 + <schema_name/>
  576 + </partitioning>
  577 + <connection>bus_control_variable</connection>
  578 + <cache>N</cache>
  579 + <cache_load_all>N</cache_load_all>
  580 + <cache_size>0</cache_size>
  581 + <lookup>
  582 + <schema/>
  583 + <table>bsth_c_cars</table>
  584 + <orderby/>
  585 + <fail_on_multiple>N</fail_on_multiple>
  586 + <eat_row_on_failure>N</eat_row_on_failure>
  587 + <key>
  588 + <name>clid</name>
  589 + <field>id</field>
  590 + <condition>&#x3d;</condition>
  591 + <name2/>
  592 + </key>
  593 + <value>
  594 + <name>inside_code</name>
  595 + <rename>zbh</rename>
  596 + <default/>
  597 + <type>String</type>
  598 + </value>
  599 + </lookup>
  600 + <cluster_schema/>
  601 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  602 + <xloc>600</xloc>
  603 + <yloc>64</yloc>
  604 + <draw>Y</draw>
  605 + </GUI>
  606 + </step>
  607 +
  608 + <step>
  609 + <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</name>
  610 + <type>DBLookup</type>
  611 + <description/>
  612 + <distribute>Y</distribute>
  613 + <custom_distribution/>
  614 + <copies>1</copies>
  615 + <partitioning>
  616 + <method>none</method>
  617 + <schema_name/>
  618 + </partitioning>
  619 + <connection>bus_control_variable</connection>
  620 + <cache>N</cache>
  621 + <cache_load_all>N</cache_load_all>
  622 + <cache_size>0</cache_size>
  623 + <lookup>
  624 + <schema/>
  625 + <table>bsth_c_s_ccinfo</table>
  626 + <orderby/>
  627 + <fail_on_multiple>N</fail_on_multiple>
  628 + <eat_row_on_failure>N</eat_row_on_failure>
  629 + <key>
  630 + <name>car_config_info</name>
  631 + <field>id</field>
  632 + <condition>&#x3d;</condition>
  633 + <name2/>
  634 + </key>
  635 + <value>
  636 + <name>cl</name>
  637 + <rename>clid</rename>
  638 + <default/>
  639 + <type>Integer</type>
  640 + </value>
  641 + </lookup>
  642 + <cluster_schema/>
  643 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  644 + <xloc>471</xloc>
  645 + <yloc>64</yloc>
  646 + <draw>Y</draw>
  647 + </GUI>
  648 + </step>
  649 +
  650 + <step>
  651 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  652 + <type>SortRows</type>
  653 + <description/>
  654 + <distribute>Y</distribute>
  655 + <custom_distribution/>
  656 + <copies>1</copies>
  657 + <partitioning>
  658 + <method>none</method>
  659 + <schema_name/>
  660 + </partitioning>
  661 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  662 + <prefix>out</prefix>
  663 + <sort_size>1000000</sort_size>
  664 + <free_memory/>
  665 + <compress>N</compress>
  666 + <compress_variable/>
  667 + <unique_rows>N</unique_rows>
  668 + <fields>
  669 + <field>
  670 + <name>xlmc</name>
  671 + <ascending>Y</ascending>
  672 + <case_sensitive>N</case_sensitive>
  673 + <presorted>N</presorted>
  674 + </field>
  675 + <field>
  676 + <name>zbh</name>
  677 + <ascending>Y</ascending>
  678 + <case_sensitive>N</case_sensitive>
  679 + <presorted>N</presorted>
  680 + </field>
  681 + <field>
  682 + <name>qyrq</name>
  683 + <ascending>Y</ascending>
  684 + <case_sensitive>N</case_sensitive>
  685 + <presorted>N</presorted>
  686 + </field>
  687 + <field>
  688 + <name>lp_names</name>
  689 + <ascending>Y</ascending>
  690 + <case_sensitive>N</case_sensitive>
  691 + <presorted>N</presorted>
  692 + </field>
  693 + <field>
  694 + <name>ry_dbbms</name>
  695 + <ascending>Y</ascending>
  696 + <case_sensitive>N</case_sensitive>
  697 + <presorted>N</presorted>
  698 + </field>
  699 + </fields>
  700 + <cluster_schema/>
  701 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  702 + <xloc>705</xloc>
  703 + <yloc>177</yloc>
  704 + <draw>Y</draw>
  705 + </GUI>
  706 + </step>
  707 +
  708 + <step_error_handling>
  709 + </step_error_handling>
  710 + <slave-step-copy-partition-distribution>
  711 +</slave-step-copy-partition-distribution>
  712 + <slave_transformation>N</slave_transformation>
  713 +
  714 +</transformation>
src/main/resources/static/pages/forms/mould/operationservice.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/statisticsDaily_.xls 0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/mould/waybill_qingpu.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/scheduleDaily.html
@@ -277,16 +277,16 @@ @@ -277,16 +277,16 @@
277 var line = $("#line").val(); 277 var line = $("#line").val();
278 var xlName = $("#select2-line-container").html(); 278 var xlName = $("#select2-line-container").html();
279 var date = $("#date").val(); 279 var date = $("#date").val();
280 - $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName},function(result){ 280 + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){
281 var scheduleDaily_1 = template('scheduleDaily_1',{list:result}); 281 var scheduleDaily_1 = template('scheduleDaily_1',{list:result});
282 $('#forms .scheduleDaily_1').html(scheduleDaily_1); 282 $('#forms .scheduleDaily_1').html(scheduleDaily_1);
283 }); 283 });
284 - $.get('/realSchedule/queryUserInfo',{line:line,date:date,state:2},function(result){ 284 + $.get('/realSchedule/queryUserInfo',{line:line,date:date,state:2,type:"query"},function(result){
285 console.log(result); 285 console.log(result);
286 var scheduleDaily_2 = template('scheduleDaily_2',{list:result}); 286 var scheduleDaily_2 = template('scheduleDaily_2',{list:result});
287 $('#forms .scheduleDaily_2').html(scheduleDaily_2); 287 $('#forms .scheduleDaily_2').html(scheduleDaily_2);
288 }); 288 });
289 - $.get('/realSchedule/realScheduleList',{line:line,date:date},function(result){ 289 + $.get('/realSchedule/realScheduleList',{line:line,date:date,type:"query"},function(result){
290 var scheduleDaily_3 = template('scheduleDaily_3',{list:result}); 290 var scheduleDaily_3 = template('scheduleDaily_3',{list:result});
291 $('#forms .scheduleDaily_3').html(scheduleDaily_3); 291 $('#forms .scheduleDaily_3').html(scheduleDaily_3);
292 }); 292 });
src/main/resources/static/pages/forms/statement/statisticsDaily .html
1 -<style type="text/css">  
2 - .table-bordered {  
3 - border: 1px solid; }  
4 - .table-bordered > thead > tr > th,  
5 - .table-bordered > thead > tr > td,  
6 - .table-bordered > tbody > tr > th,  
7 - .table-bordered > tbody > tr > td,  
8 - .table-bordered > tfoot > tr > th,  
9 - .table-bordered > tfoot > tr > td {  
10 - border: 1px solid; }  
11 - .table-bordered > thead > tr > th,  
12 - .table-bordered > thead > tr > td {  
13 - border-bottom-width: 2px; }  
14 -  
15 - .table > tbody + tbody {  
16 - border-top: 1px solid; }  
17 -</style>  
18 -  
19 -<div class="page-head">  
20 - <div class="page-title">  
21 - <h1>统计日报</h1>  
22 - </div>  
23 -</div>  
24 -  
25 -<div class="row">  
26 - <div class="col-md-12">  
27 - <div class="portlet light porttlet-fit bordered">  
28 - <div class="portlet-title">  
29 - <form class="form-inline" action="">  
30 - <div style="display: inline-block;">  
31 - <span class="item-label" style="width: 80px;">线路: </span>  
32 - <select class="form-control" name="line" id="line" style="width: 180px;"></select>  
33 - </div>  
34 - <div style="display: inline-block;margin-left: 15px;">  
35 - <span class="item-label" style="width: 80px;">时间: </span>  
36 - <input class="form-control" type="text" id="date" style="width: 180px;"/>  
37 - </div>  
38 - <div class="form-group">  
39 - <input class="btn btn-default" type="button" id="query" value="查询"/>  
40 -<!-- <input class="btn btn-default" type="button" id="export" value="导出"/> -->  
41 - </div>  
42 - </form>  
43 - </div>  
44 - <div class="portlet-body">  
45 - <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">  
46 - <label>早高峰:6:31~8:30&nbsp;&nbsp;&nbsp;&nbsp;晚高峰:16:01~18:00</label>  
47 - <table class="table table-bordered table-hover table-checkable" id="forms">  
48 - <thead>  
49 - <tr>  
50 - <th colspan="36">线路运营情况统计日报</th>  
51 - </tr>  
52 - <tr>  
53 - <td rowspan="3">路线别</td>  
54 - <td colspan="15">全日营运里程(公里)</td>  
55 - <td colspan="15">全日营运班次</td>  
56 - <td colspan="5">大间隔情况</td>  
57 - </tr>  
58 - <tr>  
59 - <td rowspan="2">计划</td>  
60 - <td rowspan="2">实驶</td>  
61 - <td rowspan="2">少驶</td>  
62 - <td colspan="11">少驶原因(公里)</td>  
63 - <td rowspan="2">临加公里</td>  
64 - <td colspan="3">计划班次</td>  
65 - <td colspan="3">实际班次</td>  
66 - <td colspan="3">临加班次</td>  
67 - <td colspan="3">放站班次</td>  
68 - <td colspan="3">调头班次</td>  
69 - <td colspan="3">发生次数</td>  
70 - <td rowspan="2">最大间隔时间(秒)</td>  
71 - <td rowspan="2">原因</td>  
72 - </tr>  
73 - <tr>  
74 - <td width="31px">路阻</td>  
75 - <td>吊慢</td>  
76 - <td>故障</td>  
77 - <td>纠纷</td>  
78 - <td>肇事</td>  
79 - <td>缺人</td>  
80 - <td>缺车</td>  
81 - <td>客稀</td>  
82 - <td>气候</td>  
83 - <td>援外</td>  
84 - <td>其他</td>  
85 - <td>全日</td>  
86 - <td>早高峰</td>  
87 - <td>晚高峰</td>  
88 - <td>全日</td>  
89 - <td>早高峰</td>  
90 - <td>晚高峰</td>  
91 - <td>全日</td>  
92 - <td>早高峰</td>  
93 - <td>晚高峰</td>  
94 - <td>全日</td>  
95 - <td>早高峰</td>  
96 - <td>晚高峰</td>  
97 - <td>全日</td>  
98 - <td>早高峰</td>  
99 - <td>晚高峰</td>  
100 - <td>全日</td>  
101 - <td>早高峰</td>  
102 - <td>晚高峰</td>  
103 - </tr>  
104 - </thead>  
105 - <tbody class="statisticsDaily">  
106 -  
107 - </tbody>  
108 - <tr>  
109 - <td>合计</td>  
110 - <td>&nbsp;</td>  
111 - <td>&nbsp;</td>  
112 - <td>&nbsp;</td>  
113 - <td>&nbsp;</td>  
114 - <td>&nbsp;</td>  
115 - <td>&nbsp;</td>  
116 - <td>&nbsp;</td>  
117 - <td>&nbsp;</td>  
118 - <td>&nbsp;</td>  
119 - <td>&nbsp;</td>  
120 - <td>&nbsp;</td>  
121 - <td>&nbsp;</td>  
122 - <td>&nbsp;</td>  
123 - <td>&nbsp;</td>  
124 - <td>&nbsp;</td>  
125 - <td>&nbsp;</td>  
126 - <td>&nbsp;</td>  
127 - <td>&nbsp;</td>  
128 - <td>&nbsp;</td>  
129 - <td>&nbsp;</td>  
130 - <td>&nbsp;</td>  
131 - <td>&nbsp;</td>  
132 - <td>&nbsp;</td>  
133 - <td>&nbsp;</td>  
134 - <td>&nbsp;</td>  
135 - <td>&nbsp;</td>  
136 - <td>&nbsp;</td>  
137 - <td>&nbsp;</td>  
138 - <td>&nbsp;</td>  
139 - <td>&nbsp;</td>  
140 - <td>&nbsp;</td>  
141 - <td>&nbsp;</td>  
142 - <td>&nbsp;</td>  
143 - <td>&nbsp;</td>  
144 - <td>&nbsp;</td>  
145 - </tr>  
146 - <tr>  
147 - <td>运营情况摘录</td>  
148 - <td colspan="35">&nbsp;</td>  
149 - </tr>  
150 - </table>  
151 - </div>  
152 - </div>  
153 - </div>  
154 - </div>  
155 -</div>  
156 -  
157 -<script>  
158 - $(function(){  
159 - // 关闭左侧栏  
160 - if (!$('body').hasClass('page-sidebar-closed'))  
161 - $('.menu-toggler.sidebar-toggler').click();  
162 -  
163 - $("#date").datetimepicker({  
164 - format : 'YYYY-MM-DD',  
165 - locale : 'zh-cn'  
166 - });  
167 - $.get('/basic/lineCode2Name',function(result){  
168 - var data=[];  
169 -  
170 - for(var code in result){  
171 - data.push({id: code, text: result[code]});  
172 - }  
173 - console.log(data);  
174 - initPinYinSelect2('#line',data,'');  
175 -  
176 - })  
177 -  
178 -  
179 - $("#query").on("click",function(){  
180 - var line = $("#line").val();  
181 - var xlName = $("#select2-line-container").html();  
182 - var date = $("#date").val();  
183 - $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName},function(result){  
184 - // 把数据填充到模版中  
185 - var tbodyHtml = template('statisticsDaily',{list:result});  
186 - // 把渲染好的模版html文本追加到表格中  
187 - $('#forms .statisticsDaily').html(tbodyHtml);  
188 - });  
189 - });  
190 - });  
191 -</script>  
192 -<script type="text/html" id="statisticsDaily">  
193 - {{each list as obj i}}  
194 - <tr>  
195 - <td>{{obj.xlName}}</td>  
196 - <td>{{obj.jhlc}}</td>  
197 - <td>{{obj.sjgl}}</td>  
198 - <td>{{obj.ssgl}}</td>  
199 - <td>{{obj.ssgl_lz}}</td>  
200 - <td>{{obj.ssgl_dm}}</td>  
201 - <td>{{obj.ssgl_gz}}</td>  
202 - <td>{{obj.ssgl_jf}}</td>  
203 - <td>{{obj.ssgl_zs}}</td>  
204 - <td>{{obj.ssgl_qr}}</td>  
205 - <td>{{obj.ssgl_qc}}</td>  
206 - <td>{{obj.ssgl_kx}}</td>  
207 - <td>{{obj.ssgl_qh}}</td>  
208 - <td>{{obj.ssgl_yw}}</td>  
209 - <td>{{obj.ssgl_other}}</td>  
210 - <td>{{obj.ljgl}}</td>  
211 - <td>{{obj.jhbc}}</td>  
212 - <td>{{obj.jhbc_m}}</td>  
213 - <td>{{obj.jhbc_a}}</td>  
214 - <td>{{obj.sjbc}}</td>  
215 - <td>{{obj.sjbc_m}}</td>  
216 - <td>{{obj.sjbc_a}}</td>  
217 - <td>{{obj.ljbc}}</td>  
218 - <td>{{obj.ljbc_m}}</td>  
219 - <td>{{obj.ljbc_a}}</td>  
220 - <td>{{obj.fzbc}}</td>  
221 - <td>{{obj.fzbc_m}}</td>  
222 - <td>{{obj.fzbc_a}}</td>  
223 - <td>{{obj.dtbc}}</td>  
224 - <td>{{obj.dtbc_m}}</td>  
225 - <td>{{obj.dtbc_a}}</td>  
226 - <td>{{obj.djg}}</td>  
227 - <td>{{obj.djg_m}}</td>  
228 - <td>{{obj.djg_a}}</td>  
229 - <td>{{obj.djg_time}}</td>  
230 - <td>&nbsp;</td>  
231 - </tr>  
232 - {{/each}}  
233 - {{if list.length == 0}}  
234 - <tr>  
235 - <td colspan="36"><h6 class="muted">没有找到相关数据</h6></td>  
236 - </tr>  
237 - {{/if}} 1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>统计日报</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 80px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  37 + </div>
  38 + <div class="form-group">
  39 + <input class="btn btn-default" type="button" id="query" value="查询"/>
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  41 + </div>
  42 + </form>
  43 + </div>
  44 + <div class="portlet-body">
  45 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  46 + <label>早高峰:6:31~8:30&nbsp;&nbsp;&nbsp;&nbsp;晚高峰:16:01~18:00</label>
  47 + <table class="table table-bordered table-hover table-checkable" id="forms">
  48 + <thead>
  49 + <tr>
  50 + <th colspan="36">线路运营情况统计日报</th>
  51 + </tr>
  52 + <tr>
  53 + <td rowspan="3">路线别</td>
  54 + <td colspan="15">全日营运里程(公里)</td>
  55 + <td colspan="15">全日营运班次</td>
  56 + <td colspan="5">大间隔情况</td>
  57 + </tr>
  58 + <tr>
  59 + <td rowspan="2">计划</td>
  60 + <td rowspan="2">实驶</td>
  61 + <td rowspan="2">少驶</td>
  62 + <td colspan="11">少驶原因(公里)</td>
  63 + <td rowspan="2">临加公里</td>
  64 + <td colspan="3">计划班次</td>
  65 + <td colspan="3">实际班次</td>
  66 + <td colspan="3">临加班次</td>
  67 + <td colspan="3">放站班次</td>
  68 + <td colspan="3">调头班次</td>
  69 + <td colspan="3">发生次数</td>
  70 + <td rowspan="2">最大间隔时间(秒)</td>
  71 + <td rowspan="2">原因</td>
  72 + </tr>
  73 + <tr>
  74 + <td width="31px">路阻</td>
  75 + <td>吊慢</td>
  76 + <td>故障</td>
  77 + <td>纠纷</td>
  78 + <td>肇事</td>
  79 + <td>缺人</td>
  80 + <td>缺车</td>
  81 + <td>客稀</td>
  82 + <td>气候</td>
  83 + <td>援外</td>
  84 + <td>其他</td>
  85 + <td>全日</td>
  86 + <td>早高峰</td>
  87 + <td>晚高峰</td>
  88 + <td>全日</td>
  89 + <td>早高峰</td>
  90 + <td>晚高峰</td>
  91 + <td>全日</td>
  92 + <td>早高峰</td>
  93 + <td>晚高峰</td>
  94 + <td>全日</td>
  95 + <td>早高峰</td>
  96 + <td>晚高峰</td>
  97 + <td>全日</td>
  98 + <td>早高峰</td>
  99 + <td>晚高峰</td>
  100 + <td>全日</td>
  101 + <td>早高峰</td>
  102 + <td>晚高峰</td>
  103 + </tr>
  104 + </thead>
  105 + <tbody class="statisticsDaily">
  106 +
  107 + </tbody>
  108 + <tr>
  109 + <td>合计</td>
  110 + <td>&nbsp;</td>
  111 + <td>&nbsp;</td>
  112 + <td>&nbsp;</td>
  113 + <td>&nbsp;</td>
  114 + <td>&nbsp;</td>
  115 + <td>&nbsp;</td>
  116 + <td>&nbsp;</td>
  117 + <td>&nbsp;</td>
  118 + <td>&nbsp;</td>
  119 + <td>&nbsp;</td>
  120 + <td>&nbsp;</td>
  121 + <td>&nbsp;</td>
  122 + <td>&nbsp;</td>
  123 + <td>&nbsp;</td>
  124 + <td>&nbsp;</td>
  125 + <td>&nbsp;</td>
  126 + <td>&nbsp;</td>
  127 + <td>&nbsp;</td>
  128 + <td>&nbsp;</td>
  129 + <td>&nbsp;</td>
  130 + <td>&nbsp;</td>
  131 + <td>&nbsp;</td>
  132 + <td>&nbsp;</td>
  133 + <td>&nbsp;</td>
  134 + <td>&nbsp;</td>
  135 + <td>&nbsp;</td>
  136 + <td>&nbsp;</td>
  137 + <td>&nbsp;</td>
  138 + <td>&nbsp;</td>
  139 + <td>&nbsp;</td>
  140 + <td>&nbsp;</td>
  141 + <td>&nbsp;</td>
  142 + <td>&nbsp;</td>
  143 + <td>&nbsp;</td>
  144 + <td>&nbsp;</td>
  145 + </tr>
  146 + <tr>
  147 + <td>运营情况摘录</td>
  148 + <td colspan="35">&nbsp;</td>
  149 + </tr>
  150 + </table>
  151 + </div>
  152 + </div>
  153 + </div>
  154 + </div>
  155 +</div>
  156 +
  157 +<script>
  158 + $(function(){
  159 + $('#export').attr('disabled', "true");
  160 +
  161 + // 关闭左侧栏
  162 + if (!$('body').hasClass('page-sidebar-closed'))
  163 + $('.menu-toggler.sidebar-toggler').click();
  164 +
  165 + $("#date").datetimepicker({
  166 + format : 'YYYY-MM-DD',
  167 + locale : 'zh-cn'
  168 + });
  169 + $.get('/basic/lineCode2Name',function(result){
  170 + var data=[];
  171 +
  172 + for(var code in result){
  173 + data.push({id: code, text: result[code]});
  174 + }
  175 + console.log(data);
  176 + initPinYinSelect2('#line',data,'');
  177 +
  178 + })
  179 +
  180 +
  181 + var line = $("#line").val();
  182 + var xlName = $("#select2-line-container").html();
  183 + var date = $("#date").val();
  184 + $("#query").on("click",function(){
  185 + line = $("#line").val();
  186 + xlName = $("#select2-line-container").html();
  187 + date = $("#date").val();
  188 + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){
  189 + // 把数据填充到模版中
  190 + var tbodyHtml = template('statisticsDaily',{list:result});
  191 + // 把渲染好的模版html文本追加到表格中
  192 + $('#forms .statisticsDaily').html(tbodyHtml);
  193 +
  194 + if(result.length == 0)
  195 + $("#export").attr('disabled',"true");
  196 + else
  197 + $("#export").removeAttr("disabled");
  198 + });
  199 + });
  200 +
  201 + $("#export").on("click",function(){
  202 + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"export"},function(result){
  203 + window.open("/downloadFile/download?fileName=统计日报"+moment(date).format("YYYYMMDD"));
  204 + });
  205 + });
  206 +
  207 + });
  208 +</script>
  209 +<script type="text/html" id="statisticsDaily">
  210 + {{each list as obj i}}
  211 + <tr>
  212 + <td>{{obj.xlName}}</td>
  213 + <td>{{obj.jhlc}}</td>
  214 + <td>{{obj.sjgl}}</td>
  215 + <td>{{obj.ssgl}}</td>
  216 + <td>{{obj.ssgl_lz}}</td>
  217 + <td>{{obj.ssgl_dm}}</td>
  218 + <td>{{obj.ssgl_gz}}</td>
  219 + <td>{{obj.ssgl_jf}}</td>
  220 + <td>{{obj.ssgl_zs}}</td>
  221 + <td>{{obj.ssgl_qr}}</td>
  222 + <td>{{obj.ssgl_qc}}</td>
  223 + <td>{{obj.ssgl_kx}}</td>
  224 + <td>{{obj.ssgl_qh}}</td>
  225 + <td>{{obj.ssgl_yw}}</td>
  226 + <td>{{obj.ssgl_other}}</td>
  227 + <td>{{obj.ljgl}}</td>
  228 + <td>{{obj.jhbc}}</td>
  229 + <td>{{obj.jhbc_m}}</td>
  230 + <td>{{obj.jhbc_a}}</td>
  231 + <td>{{obj.sjbc}}</td>
  232 + <td>{{obj.sjbc_m}}</td>
  233 + <td>{{obj.sjbc_a}}</td>
  234 + <td>{{obj.ljbc}}</td>
  235 + <td>{{obj.ljbc_m}}</td>
  236 + <td>{{obj.ljbc_a}}</td>
  237 + <td>{{obj.fzbc}}</td>
  238 + <td>{{obj.fzbc_m}}</td>
  239 + <td>{{obj.fzbc_a}}</td>
  240 + <td>{{obj.dtbc}}</td>
  241 + <td>{{obj.dtbc_m}}</td>
  242 + <td>{{obj.dtbc_a}}</td>
  243 + <td>{{obj.djg}}</td>
  244 + <td>{{obj.djg_m}}</td>
  245 + <td>{{obj.djg_a}}</td>
  246 + <td>{{obj.djg_time}}</td>
  247 + <td>&nbsp;</td>
  248 + </tr>
  249 + {{/each}}
  250 + {{if list.length == 0}}
  251 + <tr>
  252 + <td colspan="36"><h6 class="muted">没有找到相关数据</h6></td>
  253 + </tr>
  254 + {{/if}}
238 </script> 255 </script>
239 \ No newline at end of file 256 \ No newline at end of file
src/main/resources/static/pages/forms/statement/waybillQp.html
@@ -258,11 +258,11 @@ @@ -258,11 +258,11 @@
258 <tr> 258 <tr>
259 <td colspan="2">调度员</td> 259 <td colspan="2">调度员</td>
260 <td colspan="2">早班(职号)</td> 260 <td colspan="2">早班(职号)</td>
261 - <td >{{map.zdp}}</td> 261 + <td title={{map.zdp}}>{{map.zdpT}}</td>
262 <td >中班(职号)</td> 262 <td >中班(职号)</td>
263 - <td >{{map.zwdp}}</td> 263 + <td title={{map.zwdp}}>{{map.zwdpT}}</td>
264 <td colspan="2">夜班(职号)</td> 264 <td colspan="2">夜班(职号)</td>
265 - <td colspan="2">{{map.wdp}}</td> 265 + <td colspan="2" title={{map.wdp}}>{{map.wdpT}}</td>
266 <td colspan="2">其他</td> 266 <td colspan="2">其他</td>
267 <td colspan="2">&nbsp;</td> 267 <td colspan="2">&nbsp;</td>
268 </tr> 268 </tr>
src/main/resources/static/real_control_v2/css/home.css
@@ -79,7 +79,7 @@ @@ -79,7 +79,7 @@
79 } 79 }
80 80
81 .home-gps-table dl dt:nth-of-type(4), .home-gps-table dl dd:nth-of-type(4) { 81 .home-gps-table dl dt:nth-of-type(4), .home-gps-table dl dd:nth-of-type(4) {
82 - width: 9% 82 + width: 8%;
83 } 83 }
84 84
85 .home-gps-table dl dt:nth-of-type(5), .home-gps-table dl dd:nth-of-type(5) { 85 .home-gps-table dl dt:nth-of-type(5), .home-gps-table dl dd:nth-of-type(5) {
@@ -248,6 +248,13 @@ span.signal-state-outbounds{ @@ -248,6 +248,13 @@ span.signal-state-outbounds{
248 font-size: 11px; 248 font-size: 11px;
249 } 249 }
250 250
  251 +span.signal-state-speed-limit{
  252 + color: red;
  253 + padding: 2px 3px;
  254 + border-radius: 3px;
  255 + font-size: 11px;
  256 +}
  257 +
251 .home-svg-edit-icon{ 258 .home-svg-edit-icon{
252 position: absolute; 259 position: absolute;
253 right: 10px; 260 right: 10px;
@@ -265,4 +272,10 @@ span.signal-state-outbounds{ @@ -265,4 +272,10 @@ span.signal-state-outbounds{
265 .home-svg-edit-icon:before{ 272 .home-svg-edit-icon:before{
266 font-family: FontAwesome; 273 font-family: FontAwesome;
267 content: "\f040"; 274 content: "\f040";
  275 +}
  276 +
  277 +.carpark-icon{
  278 + color: #4dc24d;
  279 + font-size: 14px;
  280 + margin-left: 5px;
268 } 281 }
269 \ No newline at end of file 282 \ No newline at end of file
src/main/resources/static/real_control_v2/css/main.css
@@ -180,10 +180,10 @@ svg.line-chart g.item:nth-last-child(3)&gt;text.down { @@ -180,10 +180,10 @@ svg.line-chart g.item:nth-last-child(3)&gt;text.down {
180 } 180 }
181 181
182 svg.line-chart g.gps-wrap>rect { 182 svg.line-chart g.gps-wrap>rect {
183 - width: 34px; 183 + width: 30px;
184 height: 15px; 184 height: 15px;
185 - /*fill: #fff;*/  
186 - rx: 4px; 185 + /* fill: #fff; */
  186 + rx: 2px;
187 cursor: pointer; 187 cursor: pointer;
188 } 188 }
189 189
@@ -202,8 +202,8 @@ svg.line-chart g.gps-wrap&gt;rect.hover { @@ -202,8 +202,8 @@ svg.line-chart g.gps-wrap&gt;rect.hover {
202 } 202 }
203 203
204 svg.line-chart g.gps-wrap>text { 204 svg.line-chart g.gps-wrap>text {
205 - font-size: 13px;  
206 - transform: translate(2px, 12px); 205 + font-size: 12px;
  206 + transform: translate(0, 12px);
207 pointer-events: none; 207 pointer-events: none;
208 } 208 }
209 209
@@ -220,8 +220,8 @@ svg.line-chart .merge_hide { @@ -220,8 +220,8 @@ svg.line-chart .merge_hide {
220 } 220 }
221 221
222 svg.line-chart g.merge-item rect { 222 svg.line-chart g.merge-item rect {
223 - width: 24px;  
224 - height: 24px; 223 + width: 22px;
  224 + height: 22px;
225 rx: 15px; 225 rx: 15px;
226 fill: #19a53a; 226 fill: #19a53a;
227 cursor: pointer; 227 cursor: pointer;
src/main/resources/static/real_control_v2/fragments/home/line_panel.html
@@ -30,12 +30,16 @@ @@ -30,12 +30,16 @@
30 <dd>{{speed}}</dd> 30 <dd>{{speed}}</dd>
31 <dd>{{expectStopTime}}</dd> 31 <dd>{{expectStopTime}}</dd>
32 <dd> 32 <dd>
33 - {{if abnormal != null}}  
34 - {{if abnormal == 'outBounds'}}  
35 - 越界 33 + {{if abnormalStatus != null}}
  34 + {{if abnormalStatus == 'outBounds'}}
  35 + <span class="signal-state-outbounds">越界</span>
  36 + {{else if abnormalStatus == 'overspeed'}}
  37 + <span class="signal-state-speed-limit">超速</span>
36 {{/if}} 38 {{/if}}
37 - {{else}}  
38 - 正常 39 + {{/if}}
  40 +
  41 + {{if instation == 2}}
  42 + <i class="uk-icon-product-hunt carpark-icon"></i>
39 {{/if}} 43 {{/if}}
40 </dd> 44 </dd>
41 <dd title="{{stationName}}">{{stationName}}</dd> 45 <dd title="{{stationName}}">{{stationName}}</dd>
@@ -46,12 +50,16 @@ @@ -46,12 +50,16 @@
46 </script> 50 </script>
47 51
48 <script id="home-gps-abnormal-temp" type="text/html"> 52 <script id="home-gps-abnormal-temp" type="text/html">
49 - {{if abnormal != null}}  
50 - {{if abnormal == 'outBounds'}} 53 + {{if abnormalStatus != null}}
  54 + {{if abnormalStatus == 'outBounds'}}
51 <span class="signal-state-outbounds">越界</span> 55 <span class="signal-state-outbounds">越界</span>
  56 + {{else if abnormalStatus == 'overspeed'}}
  57 + <span class="signal-state-speed-limit">超速</span>
52 {{/if}} 58 {{/if}}
53 - {{else}}  
54 - 正常 59 + {{/if}}
  60 +
  61 + {{if instation == 2}}
  62 + <i class="uk-icon-product-hunt carpark-icon"></i>
55 {{/if}} 63 {{/if}}
56 </script> 64 </script>
57 </div> 65 </div>
src/main/resources/static/real_control_v2/js/data/data_basic.js
@@ -135,6 +135,9 @@ var gb_data_basic = (function () { @@ -135,6 +135,9 @@ var gb_data_basic = (function () {
135 return nbbm2deviceMap; 135 return nbbm2deviceMap;
136 }, 136 },
137 getLineInformation: getLineInformation, 137 getLineInformation: getLineInformation,
  138 + allInformations: function () {
  139 + return lineInformations;
  140 + },
138 stationRoutes: function (lineCode) { 141 stationRoutes: function (lineCode) {
139 return stationRoutes[lineCode] 142 return stationRoutes[lineCode]
140 }, 143 },
src/main/resources/static/real_control_v2/js/data/data_gps.js
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 var gb_data_gps = (function() { 3 var gb_data_gps = (function() {
4 4
5 //fixed time refresh delay 5 //fixed time refresh delay
6 - var delay = 1000 * 5; 6 + var delay = 1000 * 7;
7 //deviceId ——> gps 7 //deviceId ——> gps
8 var realData = {}; 8 var realData = {};
9 //refresh after callback 9 //refresh after callback
@@ -38,11 +38,13 @@ var gb_data_gps = (function() { @@ -38,11 +38,13 @@ var gb_data_gps = (function() {
38 $.each(rs, function() { 38 $.each(rs, function() {
39 old = realData[this.deviceId]; 39 old = realData[this.deviceId];
40 if (old) { 40 if (old) {
41 - if (old.timestamp < this.timestamp) 41 + if (this.timestamp > old.timestamp){
42 if (old.upDown != this.upDown) 42 if (old.upDown != this.upDown)
43 upDownChange.push(this); 43 upDownChange.push(this);
44 else 44 else
45 upArr.push(this); 45 upArr.push(this);
  46 + }
  47 +
46 } else 48 } else
47 addArr.push(this); 49 addArr.push(this);
48 50
@@ -55,8 +57,6 @@ var gb_data_gps = (function() { @@ -55,8 +57,6 @@ var gb_data_gps = (function() {
55 57
56 //时间格式化 58 //时间格式化
57 this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss'); 59 this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss');
58 - //异常检测  
59 - gb_gps_abnormal.check(this);  
60 realData[this.deviceId] = this; 60 realData[this.deviceId] = this;
61 }); 61 });
62 62
src/main/resources/static/real_control_v2/js/data/gps_abnormal.js
1 -/** gps 信号异常状态,无效 | 越界 | 超速 */ 1 +/** gps 信号异常状态,无效 | 越界 | 超速
  2 + *
  3 + *
  4 + * 前端计算略微有点卡顿, 交由后端计算
  5 + * */
2 6
3 var gb_gps_abnormal = (function () { 7 var gb_gps_abnormal = (function () {
4 8
@@ -11,7 +15,12 @@ var gb_gps_abnormal = (function () { @@ -11,7 +15,12 @@ var gb_gps_abnormal = (function () {
11 }; 15 };
12 16
13 //越界 17 //越界
  18 + var threshold = 120;
14 var gpsOutOfBounds = function (gps) { 19 var gpsOutOfBounds = function (gps) {
  20 + //进场班次不管
  21 + if (gps.sch && gps.sch.bcType == 'in')
  22 + return;
  23 +
15 var roads = allRoads[gps.lineId + '_' + gps.upDown]; 24 var roads = allRoads[gps.lineId + '_' + gps.upDown];
16 if (!roads) 25 if (!roads)
17 return; 26 return;
@@ -25,15 +34,19 @@ var gb_gps_abnormal = (function () { @@ -25,15 +34,19 @@ var gb_gps_abnormal = (function () {
25 }); 34 });
26 35
27 //越界阈值 120米 36 //越界阈值 120米
28 - var threshold = 120;  
29 - if (gps.sch && gps.sch.bcType == 'in')  
30 - return;  
31 -  
32 if (min > threshold) { 37 if (min > threshold) {
33 gps.abnormal = 'outBounds'; 38 gps.abnormal = 'outBounds';
34 gps.outBoundsDistance = min; 39 gps.outBoundsDistance = min;
  40 + return true;
35 } 41 }
36 - //console.log('最短距离', min, gps.nbbm); 42 + };
  43 +
  44 +
  45 + //线路限速数据
  46 + var lineSpeedLimit = {};
  47 + //超速
  48 + var overspeed = function (gps) {
  49 +
37 }; 50 };
38 51
39 /** 52 /**
@@ -56,6 +69,14 @@ var gb_gps_abnormal = (function () { @@ -56,6 +69,14 @@ var gb_gps_abnormal = (function () {
56 //按线路_走向 分组数据 69 //按线路_走向 分组数据
57 allRoads = groupByLineAndUpdown(list); 70 allRoads = groupByLineAndUpdown(list);
58 }); 71 });
  72 +
  73 + //线路限速数据
  74 + var infos = gb_data_basic.allInformations();
  75 + for (var lineCode in infos) {
  76 + lineSpeedLimit[lineCode] = infos[lineCode].speedLimit == null ? 70 : infos[lineCode].speedLimit;
  77 + }
  78 +
  79 + console.log('lineSpeedLimit', lineSpeedLimit);
59 }; 80 };
60 81
61 function minDistanceFromRoad(pos, gps) { 82 function minDistanceFromRoad(pos, gps) {
@@ -69,6 +90,9 @@ var gb_gps_abnormal = (function () { @@ -69,6 +90,9 @@ var gb_gps_abnormal = (function () {
69 90
70 if (!min || min > distance) 91 if (!min || min > distance)
71 min = distance; 92 min = distance;
  93 +
  94 + if (distance <= threshold)
  95 + return threshold;
72 } 96 }
73 97
74 return min; 98 return min;
@@ -104,10 +128,11 @@ var gb_gps_abnormal = (function () { @@ -104,10 +128,11 @@ var gb_gps_abnormal = (function () {
104 return { 128 return {
105 initData: initData, 129 initData: initData,
106 check: function (gps) { 130 check: function (gps) {
107 - if (!allRoads) { 131 + if (!allRoads || gps.instation == 2) {
108 return; 132 return;
109 } 133 }
110 134
  135 + //越界判定
111 gpsOutOfBounds(gps); 136 gpsOutOfBounds(gps);
112 } 137 }
113 } 138 }
src/main/resources/static/real_control_v2/js/utils/svg_chart.js
@@ -183,7 +183,7 @@ var gb_svg_chart = (function () { @@ -183,7 +183,7 @@ var gb_svg_chart = (function () {
183 var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); 183 var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg);
184 if (!circle) return -100; 184 if (!circle) return -100;
185 185
186 - return circle.attr('cx') - 17.5; 186 + return circle.attr('cx') - 16.5;
187 }, 187 },
188 gy = function (gps, svg) { 188 gy = function (gps, svg) {
189 var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg); 189 var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg);
@@ -322,14 +322,14 @@ var gb_svg_chart = (function () { @@ -322,14 +322,14 @@ var gb_svg_chart = (function () {
322 'merge-item': true 322 'merge-item': true
323 }); 323 });
324 //merge rect 324 //merge rect
325 - mergerG.append('rect').attr('x', x - 12) 325 + mergerG.append('rect').attr('x', x - 11)
326 .attr('y', function () { 326 .attr('y', function () {
327 - return isDown ? y + 7 : y - 32; 327 + return isDown ? y + 8 : y - 31;
328 }); 328 });
329 //merge text 329 //merge text
330 var len = gpsArr.length; 330 var len = gpsArr.length;
331 mergerG.append('text').text(len) 331 mergerG.append('text').text(len)
332 - .attr('x', x - ((len + '').length * 4)) 332 + .attr('x', x - ((len + '').length * 4.5))
333 .attr('y', isDown ? y + 24 : y - 14); 333 .attr('y', isDown ? y + 24 : y - 14);
334 }; 334 };
335 335
src/main/resources/static/real_control_v2/js/utils/svg_chart_tooltip.js
@@ -13,7 +13,6 @@ var gb_svg_tooltip = (function () { @@ -13,7 +13,6 @@ var gb_svg_tooltip = (function () {
13 if (rect.attr('aria-describedby')) 13 if (rect.attr('aria-describedby'))
14 return; 14 return;
15 var gps = gb_data_gps.findOne($(this).attr('_id').split('_')[1]); 15 var gps = gb_data_gps.findOne($(this).attr('_id').split('_')[1]);
16 - console.log('gps', gps);  
17 $(this).qtip({ 16 $(this).qtip({
18 show: { 17 show: {
19 ready: true, 18 ready: true,