Commit f5fa95667c005d65890ce663f410abb44030e8c8

Authored by 徐烜
1 parent 8bcd7dea

时刻表v2.7.1

1、导出的报表,报到,出场和路牌第一个班次写在一起,路牌最后一个班次和进场,离场班次一起写
2、导出按钮样式丰富一点,按下后不能再点击,显示导出中...
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
... ... @@ -419,8 +419,8 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
419 419 XSSFRow lpRow = sheet.createRow((short) (i + 1));
420 420 PoiUtils.createStringXSSFCell(wb, lpRow, (short) 0, lpObj.getLpname());
421 421 for (int j = 0; j < groupCount; j++) {
422   - PoiUtils.createStringXSSFCell(wb, lpRow, (short) (j * 2 + 1), "");
423   - PoiUtils.createStringXSSFCell(wb, lpRow, (short) (j * 2 + 2), "");
  422 + PoiUtils.createBlankXSSFCell(wb, lpRow, (short) (j * 2 + 1));
  423 + PoiUtils.createBlankXSSFCell(wb, lpRow, (short) (j * 2 + 2));
424 424 }
425 425 for (BcObj bcObj : lpObj.getBcObjList()) {
426 426 Cell cell = lpRow.getCell((short) (bcObj.getGroupNo() * 2 + bcObj.getGroupBcNo() + 1));
... ... @@ -459,6 +459,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
459 459 XSSFRow xssfRow = sheet.createRow(i);
460 460 for (int j = 0; j < 10; j++) {
461 461 PoiUtils.createStringXSSFCell(wb, xssfRow, (short) j, "");
  462 +
462 463 }
463 464 }
464 465 // 合并第一行
... ...
src/main/java/com/bsth/service/schedule/utils/PoiUtils.java
... ... @@ -104,6 +104,18 @@ public class PoiUtils {
104 104 );
105 105 }
106 106  
  107 + public static XSSFCell createBlankXSSFCell(
  108 + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column) {
  109 + return createXSSFCell(
  110 + xssfWorkbook, xssfRow, column,
  111 + null, XSSFCell.CELL_TYPE_BLANK,
  112 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  113 + BorderStyle.MEDIUM, new Color(0xdedede),
  114 + (short) 13, new Color(0x2765A7), "宋体",
  115 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  116 + );
  117 + }
  118 +
107 119 public static XSSFCell setIntegerStyleXSSFCellStyle(XSSFWorkbook xssfWorkbook, XSSFCell xssfCell) {
108 120 CreationHelper creationHelper = xssfWorkbook.getCreationHelper();
109 121 XSSFCellStyle xssfCellStyle = xssfCell.getCellStyle();
... ... @@ -149,7 +161,11 @@ public class PoiUtils {
149 161 } else {
150 162 throw new RuntimeException("只支持 Date Double Integer 单元格类型");
151 163 }
152   - } else {
  164 + } else if (valueType == XSSFCell.CELL_TYPE_BLANK) {
  165 + cell.setCellType(Cell.CELL_TYPE_BLANK);
  166 + }
  167 +
  168 + else {
153 169 throw new RuntimeException("暂时不支持字符串、日期、数字以为的类型");
154 170 }
155 171  
... ...
src/main/resources/static/index.html
... ... @@ -61,9 +61,9 @@
61 61 href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css"
62 62 rel="stylesheet" type="text/css" />
63 63 <!-- table 表格控件 -->
64   - <!--<link rel="stylesheet"-->
65   - <!--href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"-->
66   - <!--type="text/css" />-->
  64 + <link rel="stylesheet"
  65 + href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"
  66 + type="text/css" />
67 67 <link href="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css" rel="stylesheet" type="text/css"/>
68 68 <!-- handsontable样式 -->
69 69 <link rel="stylesheet"
... ... @@ -612,24 +612,24 @@
612 612  
613 613 <!-- 地图相关 -->
614 614 <!-- 百度 -->
615   -<!--<script-->
616   - <!--src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"-->
617   - <!--data-exclude=1></script>-->
618   -<!--<script-->
619   - <!--src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"-->
620   - <!--data-exclude=1></script>-->
621   -<!--<script type="text/javascript"-->
622   - <!--src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"-->
623   - <!--data-exclude=1></script>-->
624   -<!--<script type="text/javascript"-->
625   - <!--src="http://api.map.baidu.com/library/RichMarker/1.2/src/RichMarker_min.js "-->
626   - <!--data-exclude=1></script>-->
  615 +<script
  616 + src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"
  617 + data-exclude=1></script>
  618 +<script
  619 + src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"
  620 + data-exclude=1></script>
  621 +<script type="text/javascript"
  622 + src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"
  623 + data-exclude=1></script>
  624 +<script type="text/javascript"
  625 + src="http://api.map.baidu.com/library/RichMarker/1.2/src/RichMarker_min.js "
  626 + data-exclude=1></script>
627 627 <script src="/assets/js/baidu/TextIconOverlay.js" data-exclude=1></script>
628 628 <script src="/assets/js/baidu//MarkerClusterer.js" data-exclude=1></script>
629 629 <!-- 高德 -->
630   -<!--<script-->
631   - <!--src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"-->
632   - <!--data-exclude=1></script>-->
  630 +<script
  631 + src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"
  632 + data-exclude=1></script>
633 633  
634 634 <script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
635 635  
... ...
src/main/resources/static/pages/base/timesmodel/gantt.html
... ... @@ -44,11 +44,11 @@
44 44 <div class="btn-group btn-group-devided countbtn" data-toggle="buttons">
45 45 <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 统计数据</a>
46 46 </div>
47   - <div class="btn-group btn-group-devided checkbtn" data-toggle="buttons">
48   - <a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a>
49   - </div>
  47 + <!--<div class="btn-group btn-group-devided checkbtn" data-toggle="buttons">-->
  48 + <!--<a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a>-->
  49 + <!--</div>-->
50 50 <div class="btn-group btn-group-devided exportbtn" data-toggle="buttons">
51   - <a class="btn btn-circle blue exportAdd" href="javascript:;" data-pjax><i class="fa fa-file-excel-o"></i> 导出数据</a>
  51 + <!--<a class="btn btn-circle blue exportAdd" href="javascript:;" data-pjax><i class="fa fa-file-excel-o"></i> 导出数据</a>-->
52 52 </div>
53 53 <div class="btn-group checkbtn">
54 54 <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown" aria-expanded="false">
... ...
src/main/resources/static/pages/base/timesmodel/js/gantt.js
... ... @@ -83,6 +83,7 @@
83 83 // TODO:绘制gantt图表
84 84 // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置
85 85 // TODO:CSMap.maxCar 之后要设定一下的
  86 + $(".exportbtn").html("<a class=\"btn btn-circle blue exportAdd\" href=\"javascript:;\" data-pjax><i class=\"fa fa-file-excel-o\"></i> 导出数据</a>");
86 87 data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);
87 88 Main_v2.exportDataConfig(data.aInternalLpObj);
88 89 }
... ...
src/main/resources/static/pages/base/timesmodel/js/v2/main_v2.js
... ... @@ -156,10 +156,142 @@ var Main_v2 = function() {
156 156 "stationRouteId1": 0, // 第一个班次起点站路由id
157 157 "stationRouteId2": 0 // 第二个班次起点站路由id
158 158 };
  159 +
  160 + // 将报到班次,进出场班次加到班次的时间上
  161 + var iBcChainCount;
  162 + var oStartBc;
  163 + var oEndBc;
  164 + var oTempBc;
  165 + var aFcsj = [];
  166 +
  167 + iBcChainCount = oInternalLp.fnGetBcChainCount();
  168 + if (iBcChainCount == 1) { // 单一车次链,连班班型
  169 + oStartBc = oInternalLp.getBc(
  170 + oInternalLp.fnGetBcChainInfo(0)["s_q"],
  171 + oInternalLp.fnGetBcChainInfo(0)["s_b"]
  172 + );
  173 + oTempBc = _factory.createBcObj(
  174 + oLp, "bd", true, 1,
  175 + oStartBc.getFcTimeObj(),
  176 + _paramObj
  177 + );
  178 + aFcsj.push("(到" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  179 + oTempBc = _factory.createBcObj(
  180 + oLp, "out", true, 1,
  181 + oStartBc.getFcTimeObj(),
  182 + _paramObj
  183 + );
  184 + aFcsj.push("(出" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  185 + aFcsj.push("(" + oStartBc.getFcTimeObj().format("HH:mm") + ")");
  186 + oStartBc._$_fcsj_desc = aFcsj.join("");
  187 +
  188 + aFcsj = [];
  189 +
  190 + oEndBc = oInternalLp.getBc(
  191 + oInternalLp.fnGetBcChainInfo(0)["e_q"],
  192 + oInternalLp.fnGetBcChainInfo(0)["e_b"]
  193 + );
  194 + aFcsj.push("(" + oStartBc.getFcTimeObj().format("HH:mm") + ")");
  195 + oTempBc = _factory.createBcObj(
  196 + oLp, "in", true, 1,
  197 + oEndBc.getArrTimeObj(),
  198 + _paramObj
  199 + );
  200 + aFcsj.push("(进" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  201 + oTempBc = _factory.createBcObj(
  202 + oLp, "lc", true, 1,
  203 + oEndBc.getArrTimeObj(),
  204 + _paramObj
  205 + );
  206 + aFcsj.push("(离" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  207 + oEndBc._$_fcsj_desc = aFcsj.join("");
  208 +
  209 + } else if (iBcChainCount == 2) { // 两个车次链,分班班型
  210 + oStartBc = oInternalLp.getBc(
  211 + oInternalLp.fnGetBcChainInfo(0)["s_q"],
  212 + oInternalLp.fnGetBcChainInfo(0)["s_b"]
  213 + );
  214 + oTempBc = _factory.createBcObj(
  215 + oLp, "bd", true, 1,
  216 + oStartBc.getFcTimeObj(),
  217 + _paramObj
  218 + );
  219 + aFcsj.push("(到" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  220 + oTempBc = _factory.createBcObj(
  221 + oLp, "out", true, 1,
  222 + oStartBc.getFcTimeObj(),
  223 + _paramObj
  224 + );
  225 + aFcsj.push("(出" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  226 + aFcsj.push("(" + oStartBc.getFcTimeObj().format("HH:mm") + ")");
  227 + oStartBc._$_fcsj_desc = aFcsj.join("");
  228 +
  229 + aFcsj = [];
  230 +
  231 + oEndBc = oInternalLp.getBc(
  232 + oInternalLp.fnGetBcChainInfo(0)["e_q"],
  233 + oInternalLp.fnGetBcChainInfo(0)["e_b"]
  234 + );
  235 + aFcsj.push("(" + oStartBc.getFcTimeObj().format("HH:mm") + ")");
  236 + oTempBc = _factory.createBcObj(
  237 + oLp, "in", true, 1,
  238 + oEndBc.getArrTimeObj(),
  239 + _paramObj
  240 + );
  241 + aFcsj.push("(进" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  242 + oTempBc = _factory.createBcObj(
  243 + oLp, "lc", true, 1,
  244 + oEndBc.getArrTimeObj(),
  245 + _paramObj
  246 + );
  247 + oEndBc._$_fcsj_desc = aFcsj.join("");
  248 +
  249 + aFcsj = [];
  250 +
  251 + oStartBc = oInternalLp.getBc(
  252 + oInternalLp.fnGetBcChainInfo(1)["s_q"],
  253 + oInternalLp.fnGetBcChainInfo(1)["s_b"]
  254 + );
  255 + oTempBc = _factory.createBcObj(
  256 + oLp, "out", true, 1,
  257 + oStartBc.getFcTimeObj(),
  258 + _paramObj
  259 + );
  260 + aFcsj.push("(出" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  261 + aFcsj.push("(" + oStartBc.getFcTimeObj().format("HH:mm") + ")");
  262 + oStartBc._$_fcsj_desc = aFcsj.join("");
  263 +
  264 + aFcsj = [];
  265 +
  266 + oEndBc = oInternalLp.getBc(
  267 + oInternalLp.fnGetBcChainInfo(1)["e_q"],
  268 + oInternalLp.fnGetBcChainInfo(1)["e_b"]
  269 + );
  270 + aFcsj.push("(" + oStartBc.getFcTimeObj().format("HH:mm") + ")");
  271 + oTempBc = _factory.createBcObj(
  272 + oLp, "in", true, 1,
  273 + oEndBc.getArrTimeObj(),
  274 + _paramObj
  275 + );
  276 + aFcsj.push("(进" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  277 + oTempBc = _factory.createBcObj(
  278 + oLp, "lc", true, 1,
  279 + oEndBc.getArrTimeObj(),
  280 + _paramObj
  281 + );
  282 + aFcsj.push("(离" + oTempBc.getFcTimeObj().format("HH:mm") + ")");
  283 + oEndBc._$_fcsj_desc = aFcsj.join("");
  284 +
  285 + }
  286 +
159 287 for (j = 0; j < oInternalLp.fnGetGroupCount(); j++) {
160 288 for (z = 0; z < 2; z++) {
161 289 oInternalBc = oInternalLp.getBc(j, z);
162 290 if (oInternalBc) {
  291 + if (oInternalBc.fnGetEatTime() > 0) {
  292 + oInternalBc._$_fcsj_desc = "(吃" + oInternalBc.getFcTimeObj().format("HH:mm") + ")";
  293 + }
  294 +
163 295 oLp.bcObjList.push({
164 296 "bcsj": oInternalBc.getBcTime(), // 班次时间
165 297 "ssj": oInternalBc.getStopTime(), // 停站时间
... ... @@ -172,7 +304,7 @@ var Main_v2 = function() {
172 304 "isUp": oInternalBc._$_isUp, // 是否上行
173 305  
174 306 "bcType": oInternalBc._$_bcType, // 班次类型
175   - "fcsj": oInternalBc._$_fcsjObj.format("HH:mm"), // 发车时间
  307 + "fcsj": oInternalBc._$_fcsj_desc || oInternalBc._$_fcsjObj.format("HH:mm"), // 发车时间描述
176 308  
177 309 "groupNo": j, // 第几圈
178 310 "groupBcNo": z // 圈里第几个班次
... ... @@ -213,8 +345,6 @@ var Main_v2 = function() {
213 345 }
214 346 }
215 347  
216   -
217   -
218 348 oLp.zgs = iZgs;
219 349 oLp.zbc = iZbc;
220 350 aLpObj.push(oLp);
... ... @@ -420,6 +550,9 @@ var Main_v2 = function() {
420 550  
421 551 console.log(aInfos);
422 552  
  553 + $(".exportAdd").addClass("disabled");
  554 + $(".exportAdd").html("<i class=\"fa fa-spinner\" aria-hidden=\"true\"></i>" + " 正在导出...");
  555 +
423 556 // 提交
424 557 $.ajax({
425 558 type: 'POST',
... ... @@ -429,9 +562,15 @@ var Main_v2 = function() {
429 562 data: JSON.stringify(aInfos),
430 563 success: function(data){
431 564 Main_v2.downloadFile(data, "application/octet-stream", "时刻表信息.xls");
  565 +
  566 + $(".exportAdd").removeClass("disabled");
  567 + $(".exportAdd").html("<i class=\"fa fa-file-excel-o\"></i>" + " 导出数据");
432 568 },
433 569 error: function(xhr, type){
434 570 alert('错误:TODO');
  571 +
  572 + $(".exportAdd").removeClass("disabled");
  573 + $(".exportAdd").html("<i class=\"fa fa-file-excel-o\"></i>" + " 导出数据");
435 574 }
436 575 });
437 576  
... ...