Commit 4de38ce85bd3e0c3443c3f803d0341d821998975
Merge branch 'pudong_jdk8' of 192.168.168.201:panzhaov5/bsth_control into pudong_jdk8
Showing
69 changed files
with
7065 additions
and
3049 deletions
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| 1 | -package com.bsth.controller.realcontrol; | |
| 2 | - | |
| 3 | -import java.io.ByteArrayOutputStream; | |
| 4 | -import java.io.IOException; | |
| 5 | -import java.io.InputStream; | |
| 6 | -import java.io.OutputStream; | |
| 7 | -import java.net.HttpURLConnection; | |
| 8 | -import java.net.MalformedURLException; | |
| 9 | -import java.net.URL; | |
| 10 | -import java.net.URLEncoder; | |
| 11 | -import java.sql.Connection; | |
| 12 | -import java.sql.Date; | |
| 13 | -import java.sql.PreparedStatement; | |
| 14 | -import java.sql.ResultSet; | |
| 15 | -import java.util.*; | |
| 16 | - | |
| 17 | -import com.bsth.data.forecast.entity.ArrivalEntity; | |
| 18 | -import com.bsth.entity.sys.SysUser; | |
| 19 | -import com.bsth.security.util.SecurityUtils; | |
| 20 | -import com.bsth.util.ReportUtils; | |
| 21 | -import com.bsth.util.db.DBUtils_MS; | |
| 22 | -import com.bsth.util.db.DBUtils_control; | |
| 23 | -import com.fasterxml.jackson.databind.ObjectMapper; | |
| 24 | -import org.apache.commons.io.IOUtils; | |
| 25 | -import org.apache.commons.lang3.StringEscapeUtils; | |
| 26 | -import org.joda.time.DateTime; | |
| 27 | -import org.joda.time.format.DateTimeFormat; | |
| 28 | -import org.joda.time.format.DateTimeFormatter; | |
| 29 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 30 | -import org.springframework.web.bind.annotation.*; | |
| 31 | - | |
| 32 | -import com.alibaba.fastjson.JSONArray; | |
| 33 | -import com.bsth.common.ResponseCode; | |
| 34 | -import com.bsth.controller.BaseController; | |
| 35 | -import com.bsth.controller.realcontrol.dto.ChangePersonCar; | |
| 36 | -import com.bsth.controller.realcontrol.dto.DfsjChange; | |
| 37 | -import com.bsth.data.BasicData; | |
| 38 | -import com.bsth.data.schedule.DayOfSchedule; | |
| 39 | -import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; | |
| 40 | -import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 41 | -import com.bsth.entity.report.RepairReport; | |
| 42 | -import com.bsth.entity.schedule.SchedulePlanInfo; | |
| 43 | -import com.bsth.service.realcontrol.ScheduleRealInfoService; | |
| 44 | - | |
| 45 | -@RestController | |
| 46 | -@RequestMapping("/realSchedule") | |
| 47 | -public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, Long> { | |
| 48 | - | |
| 49 | - @Autowired | |
| 50 | - ScheduleRealInfoService scheduleRealInfoService; | |
| 51 | - | |
| 52 | - @Autowired | |
| 53 | - DayOfSchedule dayOfSchedule; | |
| 54 | - | |
| 55 | - @RequestMapping(value = "check_fgs_ascription", method = RequestMethod.POST) | |
| 56 | - public Map<String, Object> checkPCFgsAscription(@RequestParam Long schId, String jGh, String sGh, String nbbm){ | |
| 57 | - return scheduleRealInfoService.checkPCFgsAscription(schId, jGh, sGh, nbbm); | |
| 58 | - } | |
| 59 | - | |
| 60 | - @RequestMapping(value = "/lines") | |
| 61 | - public Map<String, Collection<ScheduleRealInfo>> findByLines(@RequestParam String lines) { | |
| 62 | - return scheduleRealInfoService.findByLines(lines); | |
| 63 | - } | |
| 64 | - | |
| 65 | - @RequestMapping(value = "/car") | |
| 66 | - public List<ScheduleRealInfo> findByCar(String nbbm){ | |
| 67 | - return dayOfSchedule.findByNbbm(nbbm); | |
| 68 | - } | |
| 69 | - | |
| 70 | - /** | |
| 71 | - * | |
| 72 | - * @Title: outgoAdjust @Description: TODO(待发调整) @param @param id | |
| 73 | - * 主键 @param @param remarks 备注 @param @param dfsj 待发时间(HH:mm) @throws | |
| 74 | - */ | |
| 75 | - @RequestMapping(value = "/outgoAdjust", method = RequestMethod.POST) | |
| 76 | - public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks, | |
| 77 | - @RequestParam String dfsj,String bcType, | |
| 78 | - @RequestParam(defaultValue = "") String opType) { | |
| 79 | - return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType, opType, null); | |
| 80 | - } | |
| 81 | - | |
| 82 | - /** | |
| 83 | - * | |
| 84 | - * @Title: destroy @Description: TODO(销毁,烂班) @param @param idsStr 要烂掉的班次ID ,分隔 | |
| 85 | - */ | |
| 86 | - @RequestMapping(value = "/destroy", method = RequestMethod.POST) | |
| 87 | - public Map<String, Object> destroy(@RequestParam String idsStr | |
| 88 | - /*, @RequestParam(defaultValue = "-1") int spaceAdjust*/, | |
| 89 | - @RequestParam String remarks, @RequestParam String adjustExps/*, @RequestParam(defaultValue = "0") int spaceNum*/) { | |
| 90 | - return scheduleRealInfoService.destroy(idsStr, remarks, adjustExps, null); | |
| 91 | - } | |
| 92 | - | |
| 93 | - /** | |
| 94 | - * | |
| 95 | - * @Title: carDeviceMapp @Description: TODO(获取车辆自编号和设备号对照,从缓存取) @throws | |
| 96 | - */ | |
| 97 | - @RequestMapping(value = "/carDeviceMapp", method = RequestMethod.GET) | |
| 98 | - public Map<String, String> carDeviceMapp() { | |
| 99 | - return BasicData.deviceId2NbbmMap.inverse(); | |
| 100 | - } | |
| 101 | - | |
| 102 | - /** | |
| 103 | - * | |
| 104 | - * @Title: findPersionByLine @Description: TODO(根据线路主键获取驾驶员) @param @param | |
| 105 | - * lineId @throws | |
| 106 | - */ | |
| 107 | - @RequestMapping(value = "/driver", method = RequestMethod.GET) | |
| 108 | - public List<Map<String, String>> findDriverByLine(@RequestParam String lineCode) { | |
| 109 | - return scheduleRealInfoService.findDriverByLine(lineCode); | |
| 110 | - } | |
| 111 | - | |
| 112 | - /** | |
| 113 | - * | |
| 114 | - * @Title: findPersionByLine @Description: TODO(根据线路主键获取售票员) @param @param | |
| 115 | - * lineId @throws | |
| 116 | - */ | |
| 117 | - @RequestMapping(value = "/conductor", method = RequestMethod.GET) | |
| 118 | - public List<Map<String, String>> findConductorByLine(@RequestParam String lineCode) { | |
| 119 | - return scheduleRealInfoService.findConductorByLine(lineCode); | |
| 120 | - } | |
| 121 | - | |
| 122 | - /** | |
| 123 | - * | |
| 124 | - * @Title: findPersionByLine @Description: TODO(根据线路主键获取车辆) @param @param | |
| 125 | - * lineId @throws | |
| 126 | - */ | |
| 127 | - @RequestMapping(value = "/cars", method = RequestMethod.GET) | |
| 128 | - public List<Map<String, String>> findCarByLine(@RequestParam String lineCode) { | |
| 129 | - return scheduleRealInfoService.findCarByLine(lineCode); | |
| 130 | - } | |
| 131 | - | |
| 132 | - /** | |
| 133 | - * | |
| 134 | - * @Title: sreachNbbm @Description: TODO(搜索车辆内部编码) @throws | |
| 135 | - */ | |
| 136 | - @RequestMapping(value = "/sreachVehic", method = RequestMethod.GET) | |
| 137 | - public List<Map<String, String>> sreachVehic(@RequestParam String nbbm) { | |
| 138 | - return scheduleRealInfoService.sreachVehic(nbbm); | |
| 139 | - } | |
| 140 | - /** | |
| 141 | - * | |
| 142 | - * @Title: realOutAdjust | |
| 143 | - * @Description: TODO(实发调整) | |
| 144 | - * @param @param id 班次ID | |
| 145 | - * @param @param fcsjActual 实际发车时间 HH:mm | |
| 146 | - * @param @param remarks 备注 | |
| 147 | - * @throws | |
| 148 | - */ | |
| 149 | - @RequestMapping(value = "/realOutAdjust", method = RequestMethod.POST) | |
| 150 | - public Map<String, Object> realOutAdjust(@RequestParam Map<String, String> map) { | |
| 151 | - return scheduleRealInfoService.realOutAdjust(map); | |
| 152 | - } | |
| 153 | - | |
| 154 | - /** | |
| 155 | - * | |
| 156 | - * @Title: revokeDestroy | |
| 157 | - * @Description: TODO(撤销烂班) | |
| 158 | - * @param @param id | |
| 159 | - * @throws | |
| 160 | - */ | |
| 161 | - @RequestMapping(value = "/revokeDestroy", method = RequestMethod.POST) | |
| 162 | - public Map<String, Object> revokeDestroy(@RequestParam Long id){ | |
| 163 | - return scheduleRealInfoService.revokeDestroy(id); | |
| 164 | - } | |
| 165 | - | |
| 166 | - /** | |
| 167 | - * | |
| 168 | - * @Title: revokeRealOutgo | |
| 169 | - * @Description: TODO(撤销实发) | |
| 170 | - * @param @param id | |
| 171 | - * @throws | |
| 172 | - */ | |
| 173 | - @RequestMapping(value = "/revokeRealOutgo", method = RequestMethod.POST) | |
| 174 | - public Map<String, Object> revokeRealOutgo(@RequestParam Long id){ | |
| 175 | - return scheduleRealInfoService.revokeRealOutgo(id); | |
| 176 | - } | |
| 177 | - | |
| 178 | - /** | |
| 179 | - * 撤销执行 | |
| 180 | - * @param id | |
| 181 | - * @return | |
| 182 | - */ | |
| 183 | - @RequestMapping(value = "/revokeRealArrive", method = RequestMethod.POST) | |
| 184 | - public Map<String, Object> revokeRealArrive(@RequestParam Long id){ | |
| 185 | - return scheduleRealInfoService.revokeRealArrive(id); | |
| 186 | - } | |
| 187 | - | |
| 188 | - /** | |
| 189 | - * | |
| 190 | - * @Title: spaceAdjust | |
| 191 | - * @Description: TODO(间隔调整) | |
| 192 | - * @param @param ids 要调整的班次数组ID | |
| 193 | - * @param @param space 间隔 | |
| 194 | - * @throws | |
| 195 | - */ | |
| 196 | - @RequestMapping(value = "/spaceAdjust", method = RequestMethod.POST) | |
| 197 | - public Map<String, Object> spaceAdjust(Long[] ids, Integer space){ | |
| 198 | - return scheduleRealInfoService.spaceAdjust(ids, space); | |
| 199 | - } | |
| 200 | - | |
| 201 | - /** | |
| 202 | - * | |
| 203 | - * @Title: schInfoFineTune | |
| 204 | - * @Description: TODO(发车信息微调) | |
| 205 | - * @param @param map | |
| 206 | - * @throws | |
| 207 | - */ | |
| 208 | - @RequestMapping(value = "/schInfoFineTune", method = RequestMethod.POST) | |
| 209 | - public Map<String, Object> schInfoFineTune(@RequestParam Map<String, String> map){ | |
| 210 | - return scheduleRealInfoService.schInfoFineTune(map); | |
| 211 | - } | |
| 212 | - | |
| 213 | - /** | |
| 214 | - * | |
| 215 | - * @Title: outgoAdjustAll | |
| 216 | - * @Description: TODO(批量待发调整) | |
| 217 | - * @param @param list | |
| 218 | - * @throws | |
| 219 | - */ | |
| 220 | - @RequestMapping(value = "/outgoAdjustAll", method = RequestMethod.POST) | |
| 221 | - public Map<String, Object> outgoAdjustAll(@RequestParam String params){ | |
| 222 | - //反转义 | |
| 223 | - params = StringEscapeUtils.unescapeHtml4(params); | |
| 224 | - return scheduleRealInfoService.outgoAdjustAll(params); | |
| 225 | - } | |
| 226 | - | |
| 227 | - /** | |
| 228 | - * | |
| 229 | - * @Title: findByLineAndUpDown | |
| 230 | - * @Description: TODO(根据线路和走向获取班次) | |
| 231 | - * @param @param line | |
| 232 | - * @param @param upDown | |
| 233 | - */ | |
| 234 | - @RequestMapping(value = "/findByLineAndUpDown") | |
| 235 | - public List<ScheduleRealInfo> findByLineAndUpDown(@RequestParam String line,@RequestParam Integer upDown){ | |
| 236 | - return dayOfSchedule.findByLineAndUpDown(line, upDown); | |
| 237 | - } | |
| 238 | - | |
| 239 | - /** | |
| 240 | - * | |
| 241 | - * @Title: findRouteByLine | |
| 242 | - * @Description: TODO(获取线路的站点,路段路由) | |
| 243 | - * @param @param lineCode | |
| 244 | - * @throws | |
| 245 | - */ | |
| 246 | - @RequestMapping(value = "/findRouteByLine") | |
| 247 | - public Map<String, Object> findRouteByLine(@RequestParam String lineCode){ | |
| 248 | - return scheduleRealInfoService.findRouteByLine(lineCode); | |
| 249 | - } | |
| 250 | - | |
| 251 | - /** | |
| 252 | - * | |
| 253 | - * @Title: removeChildTask | |
| 254 | - * @Description: TODO(删除子任务) | |
| 255 | - * @param @param taskId 子任务ID | |
| 256 | - * @throws | |
| 257 | - */ | |
| 258 | - @RequestMapping(value = "/childTask/{taskId}", method = RequestMethod.DELETE) | |
| 259 | - public Map<String, Object> removeChildTask(@PathVariable("taskId") Long taskId){ | |
| 260 | - return scheduleRealInfoService.removeChildTask(taskId); | |
| 261 | - } | |
| 262 | - | |
| 263 | - /** | |
| 264 | - * | |
| 265 | - * @Title: findByLineCode | |
| 266 | - * @Description: TODO(根据线路获取班次信息) | |
| 267 | - * @param @param lineCode | |
| 268 | - */ | |
| 269 | - @RequestMapping(value = "/lineCode/{lineCode}") | |
| 270 | - public List<ScheduleRealInfo> findByLineCode(@PathVariable("lineCode") String lineCode){ | |
| 271 | - return dayOfSchedule.findByLineCode(lineCode); | |
| 272 | - } | |
| 273 | - | |
| 274 | - @RequestMapping(value = "/queryUserInfo") | |
| 275 | - public List<ScheduleRealInfo> queryUserInfo(@RequestParam String line, | |
| 276 | - @RequestParam String date,@RequestParam String state) { | |
| 277 | - return scheduleRealInfoService.queryUserInfo(line, date,state); | |
| 278 | - } | |
| 279 | - | |
| 280 | - @RequestMapping(value = "/queryUserInfoPx") | |
| 281 | - public List<ScheduleRealInfo> queryUserInfoPx(@RequestParam String line, | |
| 282 | - @RequestParam String date,@RequestParam String state,@RequestParam String type) { | |
| 283 | - return scheduleRealInfoService.queryUserInfoPx(line, date,state,type); | |
| 284 | - } | |
| 285 | - | |
| 286 | - @RequestMapping(value = "/exportWaybill",method = RequestMethod.GET) | |
| 287 | - public List<ScheduleRealInfo> exportWaybill(@RequestParam String jName,@RequestParam String jGh, @RequestParam String clZbh, | |
| 288 | - @RequestParam String lpName,@RequestParam String date,@RequestParam String line) { | |
| 289 | - return scheduleRealInfoService.exportWaybill(jName,jGh, clZbh, lpName,date,line); | |
| 290 | - } | |
| 291 | - | |
| 292 | - @RequestMapping(value = "/exportWaybillQp",method = RequestMethod.GET) | |
| 293 | - public List<ScheduleRealInfo> exportWaybillQp(@RequestParam String clZbh | |
| 294 | - ,@RequestParam String date,@RequestParam String line) { | |
| 295 | - return scheduleRealInfoService.exportWaybillQp( clZbh, date,line); | |
| 296 | - } | |
| 297 | - | |
| 298 | - | |
| 299 | - @RequestMapping(value = "/dailyInfo") | |
| 300 | - public List<Map<String, Object>> dailyInfo(@RequestParam String line, @RequestParam String date,@RequestParam String type) { | |
| 301 | - return scheduleRealInfoService.dailyInfo(line, date, type); | |
| 302 | - } | |
| 303 | - | |
| 304 | - @RequestMapping(value = "/historyMessage") | |
| 305 | - public List<Object[]> historyMessage(@RequestParam String line, @RequestParam String date, | |
| 306 | - @RequestParam String code, @RequestParam String type) { | |
| 307 | - return scheduleRealInfoService.historyMessage(line, date, code, type); | |
| 308 | - } | |
| 309 | - | |
| 310 | - @RequestMapping(value="/findLine") | |
| 311 | - public List<Map<String,String>> findLine(@RequestParam String line){ | |
| 312 | - return scheduleRealInfoService.findLine(line); | |
| 313 | - } | |
| 314 | - | |
| 315 | - @RequestMapping(value="/findKMBC",method = RequestMethod.GET) | |
| 316 | - public Map<String,Object> findKMBC(@RequestParam String jGh,@RequestParam String clZbh,@RequestParam String lpName | |
| 317 | - ,@RequestParam String date,@RequestParam String line){ | |
| 318 | - return scheduleRealInfoService.findKMBC(jGh, clZbh,lpName,date,line); | |
| 319 | - } | |
| 320 | - | |
| 321 | - /** | |
| 322 | - * 路单公里统计 (闵行审计专用) | |
| 323 | - * @param jGh | |
| 324 | - * @param clZbh | |
| 325 | - * @param lpName | |
| 326 | - * @param date | |
| 327 | - * @param line | |
| 328 | - * @return | |
| 329 | - */ | |
| 330 | - @RequestMapping(value="/findKMBC_mh_2",method = RequestMethod.GET) | |
| 331 | - public Map<String,Object> findKMBC_mh_2(@RequestParam String jGh,@RequestParam String clZbh,@RequestParam String lpName | |
| 332 | - ,@RequestParam String date,@RequestParam String line){ | |
| 333 | - return scheduleRealInfoService.findKMBC_mh_2(jGh, clZbh,lpName,date,line); | |
| 334 | - } | |
| 335 | - | |
| 336 | - @RequestMapping(value="/findKMBCQp",method = RequestMethod.GET) | |
| 337 | - public Map<String,Object> findKMBCQp(@RequestParam String clZbh | |
| 338 | - ,@RequestParam String date,@RequestParam String line){ | |
| 339 | - return scheduleRealInfoService.findKMBCQp(clZbh,date,line); | |
| 340 | - } | |
| 341 | - | |
| 342 | - @RequestMapping(value="/findLpName") | |
| 343 | - public List<Map<String,String>> findLpName(@RequestParam String lpName){ | |
| 344 | - return scheduleRealInfoService.findLpName(lpName); | |
| 345 | - } | |
| 346 | - | |
| 347 | - @RequestMapping(value = "/account") | |
| 348 | - public List<Map<String,Object>> account(@RequestParam String line, @RequestParam String date, | |
| 349 | - @RequestParam String code,@RequestParam String xlName, @RequestParam String type) { | |
| 350 | - return scheduleRealInfoService.account(line, date, code, xlName, type); | |
| 351 | - } | |
| 352 | - | |
| 353 | - @RequestMapping(value = "/accountPx") | |
| 354 | - public List<Map<String,Object>> accountPx(@RequestParam String line, @RequestParam String date, | |
| 355 | - @RequestParam String code,@RequestParam String xlName, @RequestParam String px) { | |
| 356 | - return scheduleRealInfoService.accountPx(line, date, code, xlName, px); | |
| 357 | - } | |
| 358 | - | |
| 359 | - @RequestMapping(value = "/correctForm") | |
| 360 | - public List<SchEditInfoDto> correctForm(@RequestParam String line, @RequestParam String date, | |
| 361 | - @RequestParam String endDate, | |
| 362 | - @RequestParam String lpName, @RequestParam String code, | |
| 363 | - @RequestParam String type,@RequestParam String changType) { | |
| 364 | - return scheduleRealInfoService.correctForm(line, date, endDate, lpName, code, type,changType); | |
| 365 | - } | |
| 366 | - /** | |
| 367 | - * @Title queryListWaybill | |
| 368 | - * @Description 查询行车路单列表 | |
| 369 | - * @param jGh 驾驶员名字 | |
| 370 | - * @param clZbh 车辆自编号(内部编号) | |
| 371 | - * @param lpName 路牌 | |
| 372 | - * @return | |
| 373 | - */ | |
| 374 | - @RequestMapping(value="/queryListWaybill",method = RequestMethod.GET) | |
| 375 | - public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jGh,@RequestParam String clZbh,@RequestParam String lpName | |
| 376 | - ,@RequestParam String date,@RequestParam String line){ | |
| 377 | - return scheduleRealInfoService.queryListWaybill(jGh, clZbh,lpName,date,line); | |
| 378 | - } | |
| 379 | - | |
| 380 | - /** | |
| 381 | - * @Title queryListWaybill | |
| 382 | - * @Description 查询行车路单列表(闵行审计专用路单) | |
| 383 | - * @param jName 驾驶员名字 | |
| 384 | - * @param clZbh 车辆自编号(内部编号) | |
| 385 | - * @param lpName 路牌 | |
| 386 | - * @return | |
| 387 | - */ | |
| 388 | - @RequestMapping(value="/queryListWaybill_mh_2",method = RequestMethod.GET) | |
| 389 | - public List<ScheduleRealInfo> queryListWaybill_mh_2(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName | |
| 390 | - ,@RequestParam String date,@RequestParam String line){ | |
| 391 | - return scheduleRealInfoService.queryListWaybill2(jName, clZbh,lpName,date,line); | |
| 392 | - } | |
| 393 | - | |
| 394 | - @RequestMapping(value="/queryListWaybillQp",method = RequestMethod.GET) | |
| 395 | - public List<ScheduleRealInfo> queryListWaybillQp(@RequestParam String clZbh, | |
| 396 | - @RequestParam String date,@RequestParam String line){ | |
| 397 | - return scheduleRealInfoService.queryListWaybillQp(clZbh,date,line); | |
| 398 | - } | |
| 399 | - | |
| 400 | - @RequestMapping(value="/statisticsDaily") | |
| 401 | - public List<Map<String,Object>> statisticsDaily(@RequestParam String line, @RequestParam String date, | |
| 402 | - @RequestParam String xlName, @RequestParam String type){ | |
| 403 | - return scheduleRealInfoService.statisticsDaily(line, date, xlName, type); | |
| 404 | - } | |
| 405 | - | |
| 406 | - @RequestMapping(value="/statisticsDaily_mh_2") | |
| 407 | - public List<Map<String,Object>> statisticsDaily_mh_2(@RequestParam String line, @RequestParam String date, | |
| 408 | - @RequestParam String xlName, @RequestParam String type){ | |
| 409 | - return scheduleRealInfoService.statisticsDaily_mh_2(line, date, xlName, type); | |
| 410 | - } | |
| 411 | - | |
| 412 | - @RequestMapping(value="/statisticsDailyTj") | |
| 413 | - public List<Map<String,Object>> statisticsDailyTj(@RequestParam Map<String, Object> map){ | |
| 414 | - String gsdm=""; | |
| 415 | - if(map.get("gsdm")!=null){ | |
| 416 | - gsdm=map.get("gsdm").toString(); | |
| 417 | - } | |
| 418 | - String fgsdm=""; | |
| 419 | - if(map.get("fgsdm")!=null){ | |
| 420 | - fgsdm=map.get("fgsdm").toString(); | |
| 421 | - } | |
| 422 | - String line=""; | |
| 423 | - if(map.get("line")!=null){ | |
| 424 | - line=map.get("line").toString(); | |
| 425 | - } | |
| 426 | - String date=""; | |
| 427 | - if(map.get("date")!=null){ | |
| 428 | - date=map.get("date").toString(); | |
| 429 | - } | |
| 430 | - String date2=""; | |
| 431 | - if(map.get("date2")!=null){ | |
| 432 | - date2=map.get("date2").toString(); | |
| 433 | - } | |
| 434 | - String xlName=""; | |
| 435 | - if(map.get("xlName")!=null){ | |
| 436 | - xlName=map.get("xlName").toString(); | |
| 437 | - } | |
| 438 | - String type=""; | |
| 439 | - if(map.get("type")!=null){ | |
| 440 | - type=map.get("type").toString(); | |
| 441 | - } | |
| 442 | - String nature="0"; | |
| 443 | - if(map.get("nature")!=null){ | |
| 444 | - nature=map.get("nature").toString(); | |
| 445 | - } | |
| 446 | - return scheduleRealInfoService.statisticsDailyTj(gsdm,fgsdm,line, date,date2, xlName, type,nature); | |
| 447 | - } | |
| 448 | - | |
| 449 | - /* | |
| 450 | - * 公里修正报表 | |
| 451 | - */ | |
| 452 | - @RequestMapping(value="/mileageReportTj") | |
| 453 | - public List<Map<String,Object>> mileageReport(@RequestParam Map<String, Object> map){ | |
| 454 | - String gsdm=""; | |
| 455 | - if(map.get("gsdm")!=null){ | |
| 456 | - gsdm=map.get("gsdm").toString(); | |
| 457 | - } | |
| 458 | - String fgsdm=""; | |
| 459 | - if(map.get("fgsdm")!=null){ | |
| 460 | - fgsdm=map.get("fgsdm").toString(); | |
| 461 | - } | |
| 462 | - String line=""; | |
| 463 | - if(map.get("line")!=null){ | |
| 464 | - line=map.get("line").toString(); | |
| 465 | - } | |
| 466 | - String date=""; | |
| 467 | - if(map.get("date")!=null){ | |
| 468 | - date=map.get("date").toString(); | |
| 469 | - } | |
| 470 | - String date2=""; | |
| 471 | - if(map.get("date2")!=null){ | |
| 472 | - date2=map.get("date2").toString(); | |
| 473 | - } | |
| 474 | - String xlName=""; | |
| 475 | - if(map.get("xlName")!=null){ | |
| 476 | - xlName=map.get("xlName").toString(); | |
| 477 | - } | |
| 478 | - return scheduleRealInfoService.mileageReport(gsdm,fgsdm,line, date,date2); | |
| 479 | - } | |
| 480 | - | |
| 481 | - /* | |
| 482 | - * 班次修正报表 | |
| 483 | - */ | |
| 484 | - @RequestMapping(value="/scheduleCorrectionReport") | |
| 485 | - public List<Map<String,Object>> scheduleCorrectionReport(@RequestParam Map<String, Object> map){ | |
| 486 | - String gsdm=""; | |
| 487 | - if(map.get("gsdm")!=null){ | |
| 488 | - gsdm=map.get("gsdm").toString(); | |
| 489 | - } | |
| 490 | - String fgsdm=""; | |
| 491 | - if(map.get("fgsdm")!=null){ | |
| 492 | - fgsdm=map.get("fgsdm").toString(); | |
| 493 | - } | |
| 494 | - String line=""; | |
| 495 | - if(map.get("line")!=null){ | |
| 496 | - line=map.get("line").toString(); | |
| 497 | - } | |
| 498 | - String date=""; | |
| 499 | - if(map.get("date")!=null){ | |
| 500 | - date=map.get("date").toString(); | |
| 501 | - } | |
| 502 | - String date2=""; | |
| 503 | - if(map.get("date2")!=null){ | |
| 504 | - date2=map.get("date2").toString(); | |
| 505 | - } | |
| 506 | - String xlName=""; | |
| 507 | - if(map.get("xlName")!=null){ | |
| 508 | - xlName=map.get("xlName").toString(); | |
| 509 | - } | |
| 510 | - return scheduleRealInfoService.scheduleCorrectionReport(gsdm,fgsdm,line, date,date2); | |
| 511 | - } | |
| 512 | - | |
| 513 | - @RequestMapping(value="/MapById",method = RequestMethod.GET) | |
| 514 | - public Map<String, Object> MapById(@RequestParam("id") Long id){ | |
| 515 | - return scheduleRealInfoService.MapById(id); | |
| 516 | - } | |
| 517 | - | |
| 518 | - @RequestMapping(value="/MapByIdQp",method = RequestMethod.GET) | |
| 519 | - public Map<String, Object> MapByIdQp(@RequestParam("id") Long id){ | |
| 520 | - return scheduleRealInfoService.MapByIdQp(id); | |
| 521 | - } | |
| 522 | - | |
| 523 | - /** | |
| 524 | - * @Title: scheduleDaily | |
| 525 | - * @Description: TODO(调度日报表) | |
| 526 | - * @param line 线路 | |
| 527 | - * @param date 时间 | |
| 528 | - * @return | |
| 529 | - */ | |
| 530 | - @RequestMapping(value="/scheduleDaily") | |
| 531 | - public Map<String,Object> scheduleDaily(@RequestParam String line,@RequestParam String date){ | |
| 532 | - return scheduleRealInfoService.scheduleDaily(line,date); | |
| 533 | - } | |
| 534 | - | |
| 535 | - @RequestMapping(value="/realScheduleList") | |
| 536 | - public List<ScheduleRealInfo> realScheduleList(@RequestParam String line,@RequestParam String date){ | |
| 537 | - return scheduleRealInfoService.realScheduleList(line,date); | |
| 538 | - } | |
| 539 | - | |
| 540 | - @RequestMapping(value="/realScheduleList_zrw") | |
| 541 | - public List<ScheduleRealInfo> realScheduleList_zrw(@RequestParam String line,@RequestParam String date){ | |
| 542 | - return scheduleRealInfoService.realScheduleList_zrw(line,date); | |
| 543 | - } | |
| 544 | - | |
| 545 | - @RequestMapping(value="/realScheduleList_mh_2") | |
| 546 | - public List<ScheduleRealInfo> realScheduleList_mh_2(@RequestParam String line,@RequestParam String date){ | |
| 547 | - return scheduleRealInfoService.realScheduleList_mh_2(line,date); | |
| 548 | - } | |
| 549 | - | |
| 550 | - @RequestMapping(value="/realScheduleListQp") | |
| 551 | - public List<ScheduleRealInfo> realScheduleListQp(@RequestParam String line,@RequestParam String date){ | |
| 552 | - return scheduleRealInfoService.realScheduleListQp(line,date); | |
| 553 | - } | |
| 554 | - | |
| 555 | - @RequestMapping(value="/multi_tzrc", method=RequestMethod.POST) | |
| 556 | - public synchronized Map<String, Object> multi_tzrc(@RequestParam String cpcsJson){ | |
| 557 | - cpcsJson = StringEscapeUtils.unescapeHtml4(cpcsJson); | |
| 558 | - List<ChangePersonCar> cpcs = JSONArray.parseArray(cpcsJson, ChangePersonCar.class); | |
| 559 | - return scheduleRealInfoService.multi_tzrc(cpcs, null); | |
| 560 | - } | |
| 561 | - | |
| 562 | - @RequestMapping(value="/multi_dftz", method=RequestMethod.POST) | |
| 563 | - public Map<String, Object> multi_dftz(@RequestParam String dcsJson){ | |
| 564 | - dcsJson = StringEscapeUtils.unescapeHtml4(dcsJson); | |
| 565 | - List<DfsjChange> dfsjcs = JSONArray.parseArray(dcsJson, DfsjChange.class); | |
| 566 | - return scheduleRealInfoService.multi_dftz(dfsjcs); | |
| 567 | - } | |
| 568 | - | |
| 569 | - @RequestMapping(value="/changeBcType/{id}", method=RequestMethod.POST) | |
| 570 | - public Map<String, Object> changeBcType(@PathVariable("id") Long id, String bcType, String remarks, String majorStationName){ | |
| 571 | - return scheduleRealInfoService.changeBcType(id, bcType, remarks, majorStationName); | |
| 572 | - } | |
| 573 | - | |
| 574 | - @RequestMapping(value="/history", method=RequestMethod.POST) | |
| 575 | - public Map<String,Object> historySave(ScheduleRealInfo sch){ | |
| 576 | - return scheduleRealInfoService.historySave(sch); | |
| 577 | - } | |
| 578 | - | |
| 579 | - | |
| 580 | - private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"); | |
| 581 | - private final static long ONE_DAY = 1000 * 60 * 60 * 24; | |
| 582 | - /** | |
| 583 | - * 获取可编辑的历史班次日期 | |
| 584 | - * @return | |
| 585 | - */ | |
| 586 | - @RequestMapping("dateArray") | |
| 587 | - public List<String> dateArray(@RequestParam(defaultValue = "0") int c){ | |
| 588 | - List<String> rs = new ArrayList<>(); | |
| 589 | - | |
| 590 | - long t = System.currentTimeMillis(); | |
| 591 | - if(c != 1) | |
| 592 | - t -= (ONE_DAY + (1000 * 60 * 60 * 6)); | |
| 593 | - for(int i = 0; i < 3; i ++){ | |
| 594 | - rs.add(fmtyyyyMMdd.print(t)); | |
| 595 | - t -= ONE_DAY; | |
| 596 | - } | |
| 597 | - return rs; | |
| 598 | - } | |
| 599 | - | |
| 600 | - @RequestMapping(value = "svgAttr", method = RequestMethod.POST) | |
| 601 | - public Map<String, Object> svgAttr(@RequestParam String jsonStr){ | |
| 602 | - return scheduleRealInfoService.svgAttr(jsonStr); | |
| 603 | - } | |
| 604 | - | |
| 605 | - @RequestMapping(value = "svgAttr", method = RequestMethod.GET) | |
| 606 | - public Map<String, Object> findSvgAttr(@RequestParam String idx){ | |
| 607 | - return scheduleRealInfoService.findSvgAttr(idx); | |
| 608 | - } | |
| 609 | - | |
| 610 | - @RequestMapping(value = "addRemarks", method = RequestMethod.POST) | |
| 611 | - public Map<String, Object> addRemarks(@RequestParam Long id, @RequestParam String remarks){ | |
| 612 | - return scheduleRealInfoService.addRemarks(id, remarks); | |
| 613 | - } | |
| 614 | - | |
| 615 | - @RequestMapping(value = "scheduleDailyQp", method = RequestMethod.GET) | |
| 616 | - public List<Map<String, Object>> scheduleDailyQp(@RequestParam String line,@RequestParam String date){ | |
| 617 | - return scheduleRealInfoService.scheduleDailyQp(line,date); | |
| 618 | - } | |
| 619 | - | |
| 620 | - @RequestMapping(value = "scheduleDailyExport", method = RequestMethod.GET) | |
| 621 | - public List<Map<String, Object>> scheduleDailyExport(@RequestParam Map<String, Object> map){ | |
| 622 | - return scheduleRealInfoService.scheduleDailyExport(map); | |
| 623 | - } | |
| 624 | - | |
| 625 | - @RequestMapping(value = "exportWaybillMore", method = RequestMethod.GET) | |
| 626 | - public Map<String, Object> exportWaybillMore(@RequestParam Map<String, Object> map){ | |
| 627 | - return scheduleRealInfoService.exportWaybillMore(map); | |
| 628 | - } | |
| 629 | - | |
| 630 | - /** | |
| 631 | - * 获取当日计划排班 , 从计划表抓取数据 | |
| 632 | - * @return | |
| 633 | - */ | |
| 634 | - @RequestMapping(value = "currSchedulePlanByLineCode", method = RequestMethod.GET) | |
| 635 | - public List<SchedulePlanInfo> currentSchedulePlan(@RequestParam String lineCode){ | |
| 636 | - return scheduleRealInfoService.currentSchedulePlan(lineCode); | |
| 637 | - } | |
| 638 | - | |
| 639 | - @RequestMapping(value = "lpChangeMulti", method = RequestMethod.POST) | |
| 640 | - public Map<String, Object> lpChangeMulti(@RequestParam String leftIdx, @RequestParam String rightIdx,@RequestParam int type){ | |
| 641 | - return scheduleRealInfoService.lpChangeMulti(leftIdx, rightIdx, type); | |
| 642 | - } | |
| 643 | - | |
| 644 | - /** | |
| 645 | - * 删除当日实际排班 | |
| 646 | - * @return | |
| 647 | - */ | |
| 648 | - @RequestMapping(value = "deleteRealSchedule", method = RequestMethod.POST) | |
| 649 | - public Map<String, Object> deleteRealSchedule(@RequestParam String lineCode){ | |
| 650 | - return dayOfSchedule.deleteRealSchedule(lineCode); | |
| 651 | - } | |
| 652 | - | |
| 653 | - /** | |
| 654 | - * 从计划表重新加载当日排班 | |
| 655 | - * @param lineCode | |
| 656 | - * @return | |
| 657 | - */ | |
| 658 | - @RequestMapping(value = "reLoadRealSchedule", method = RequestMethod.POST) | |
| 659 | - public Map<String, Object> reLoadRealSchedule(@RequestParam String lineCode){ | |
| 660 | - Map<String, Object> rs = new HashMap<>(); | |
| 661 | - List<ScheduleRealInfo> list = dayOfSchedule.findByLineCode(lineCode); | |
| 662 | - if(list != null && list.size() > 0){ | |
| 663 | - rs.put("status", ResponseCode.ERROR); | |
| 664 | - rs.put("msg", "失败," + list.get(0).getXlName() + "当日存在实际排班,无法重新加载。"); | |
| 665 | - return rs; | |
| 666 | - } | |
| 667 | - | |
| 668 | - int code = dayOfSchedule.reloadSch(lineCode); | |
| 669 | - | |
| 670 | - //重新按公司编码索引数据 | |
| 671 | - dayOfSchedule.groupByGsbm(); | |
| 672 | - rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR); | |
| 673 | - return rs; | |
| 674 | - } | |
| 675 | - | |
| 676 | - /** | |
| 677 | - * 误点调整 | |
| 678 | - * @param idx | |
| 679 | - * @param minute | |
| 680 | - * @return | |
| 681 | - */ | |
| 682 | - @RequestMapping(value = "lateAdjust", method = RequestMethod.POST) | |
| 683 | - public Map<String, Object> lateAdjust(@RequestParam String idx,@RequestParam float minute ){ | |
| 684 | - return scheduleRealInfoService.lateAdjust(idx, minute); | |
| 685 | - } | |
| 686 | - | |
| 687 | - /** | |
| 688 | - * 获取所有应发未到的班次 | |
| 689 | - * @param idx | |
| 690 | - * @return | |
| 691 | - */ | |
| 692 | - @RequestMapping(value = "allLate2") | |
| 693 | - public List<ScheduleRealInfo> allLate2(@RequestParam String idx){ | |
| 694 | - return scheduleRealInfoService.allLate2(idx); | |
| 695 | - } | |
| 696 | - | |
| 697 | - /** | |
| 698 | - * 添加一个临加到历史库 | |
| 699 | - * @param sch | |
| 700 | - * @return | |
| 701 | - */ | |
| 702 | - @RequestMapping(value = "history/add", method = RequestMethod.POST) | |
| 703 | - public Map<String, Object> addToHistory(ScheduleRealInfo sch){ | |
| 704 | - return scheduleRealInfoService.addToHistory(sch); | |
| 705 | - } | |
| 706 | - | |
| 707 | - /** | |
| 708 | - * 从历史库里删除临加班次 | |
| 709 | - * @param id | |
| 710 | - * @return | |
| 711 | - */ | |
| 712 | - @RequestMapping(value = "history/{id}", method = RequestMethod.DELETE) | |
| 713 | - public Map<String, Object> deleteToHistory(@PathVariable("id") Long id){ | |
| 714 | - return scheduleRealInfoService.deleteToHistory(id); | |
| 715 | - } | |
| 716 | - | |
| 717 | - @RequestMapping(value = "isCircleQdz", method = RequestMethod.POST) | |
| 718 | - public Map<String, Object> isCircleQdz(@RequestParam String line, String nbbm, String ts, String qdzCode){ | |
| 719 | - Map<String, Object> map =new HashMap<>(); | |
| 720 | - map.put("isExist",scheduleRealInfoService.isCircleQdz(nbbm, ts, line, qdzCode)); | |
| 721 | - return map; | |
| 722 | - } | |
| 723 | - | |
| 724 | - /** | |
| 725 | - * 从历史库里删除临加班次 | |
| 726 | - * @param param | |
| 727 | - * @return | |
| 728 | - */ | |
| 729 | - @RequestMapping(value = "wxsb", method = RequestMethod.POST) | |
| 730 | - public Map<String, Object> repairReport(@RequestParam Map<String, Object> param){ | |
| 731 | - return scheduleRealInfoService.repairReport(param, true); | |
| 732 | - } | |
| 733 | - | |
| 734 | - @RequestMapping(value = "wxsb", method = RequestMethod.GET) | |
| 735 | - public List<RepairReport> repairReportList(@RequestParam String line, @RequestParam String date, @RequestParam String code, @RequestParam String type){ | |
| 736 | - return scheduleRealInfoService.repairReportList(line, date, code, type); | |
| 737 | - } | |
| 738 | - | |
| 739 | - @RequestMapping(value = "lineLevel", method = RequestMethod.GET) | |
| 740 | - public Map<String, String> lineLevel(@RequestParam String idx){ | |
| 741 | - return scheduleRealInfoService.getLevelsByLines(Arrays.asList(idx.split(","))); | |
| 742 | - } | |
| 743 | - | |
| 744 | - /** | |
| 745 | - * 反馈安全驾驶系统 | |
| 746 | - * @param param | |
| 747 | - * @return | |
| 748 | - */ | |
| 749 | - @RequestMapping(value = "ackDsm", method = RequestMethod.POST) | |
| 750 | - public Map<String, Object> ackDsm(@RequestParam Map<String, Object> param){ | |
| 751 | - Map<String, Object> res = new HashMap<>(); | |
| 752 | - InputStream in = null; | |
| 753 | - SysUser user = SecurityUtils.getCurrentUser(); | |
| 754 | - DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); | |
| 755 | - StringBuilder url = new StringBuilder("http://211.95.61.66:9008/modules/dsmCheckTheRecord/addDsm?"), uri = new StringBuilder(); | |
| 756 | - HttpURLConnection con = null; | |
| 757 | - try { | |
| 758 | - uri.append("ddyName=").append(URLEncoder.encode(user == null ? "admin" : user.getUserName(), "UTF-8")); | |
| 759 | - uri.append("&checkTime=").append(URLEncoder.encode(fmt.print(System.currentTimeMillis()), "UTF-8")); | |
| 760 | - uri.append("&nbbm=").append(URLEncoder.encode(param.get("nbbm").toString(), "UTF-8")); | |
| 761 | - uri.append("&starttime=").append(URLEncoder.encode(fmt.print(Long.parseLong(param.get("ts").toString())), "UTF-8")); | |
| 762 | - url.append(uri); | |
| 763 | - con = (HttpURLConnection)new URL(url.toString()).openConnection(); | |
| 764 | - con.setDoInput(true); | |
| 765 | - con.setRequestMethod("POST"); | |
| 766 | - con.setConnectTimeout(5000); | |
| 767 | - con.setReadTimeout(5000); | |
| 768 | - con.setRequestProperty("keep-alive", "true"); | |
| 769 | - con.setRequestProperty("accept", "*/*"); | |
| 770 | - con.setRequestProperty("content-type", "application/x-www-form-urlencoded"); | |
| 771 | - con.connect(); | |
| 772 | - | |
| 773 | - if (con.getResponseCode() == 200) { | |
| 774 | - in = con.getInputStream(); | |
| 775 | - ByteArrayOutputStream bout = new ByteArrayOutputStream(); | |
| 776 | - IOUtils.copy(in, bout); | |
| 777 | - Map<String, Object> map = new ObjectMapper().readValue(bout.toByteArray(), Map.class); | |
| 778 | - System.out.println(map); | |
| 779 | - } | |
| 780 | - } catch (MalformedURLException e) { | |
| 781 | - // TODO Auto-generated catch block | |
| 782 | - e.printStackTrace(); | |
| 783 | - } catch (IOException e) { | |
| 784 | - // TODO Auto-generated catch block | |
| 785 | - e.printStackTrace(); | |
| 786 | - } finally { | |
| 787 | - if (con != null) { | |
| 788 | - con.disconnect(); | |
| 789 | - } | |
| 790 | - } | |
| 791 | - | |
| 792 | - return res; | |
| 793 | - } | |
| 794 | - | |
| 795 | - @RequestMapping(value = "exportPlan", method = RequestMethod.GET) | |
| 796 | - public Map<String, Object> exportPlan(@RequestParam String date){ | |
| 797 | - Map<String, Object> res = new HashMap<>(); | |
| 798 | - DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm"); | |
| 799 | - Connection conn = null; | |
| 800 | - PreparedStatement ps = null; | |
| 801 | - ResultSet rs = null; | |
| 802 | - | |
| 803 | - List<Map<String, Object>> list = new ArrayList<>(); | |
| 804 | - String sql = "select xl_name,xl_dir,schedule_date,fcsj,cl_zbh,j_name,bcsj from bsth_c_s_sp_info where schedule_date = ? and xl_bm in (22205, 202104, 202105, 202106, 202107, 210415) and bc_type = 'normal'"; | |
| 805 | - try{ | |
| 806 | - conn = DBUtils_control.getConnection(); | |
| 807 | - ps = conn.prepareStatement(sql); | |
| 808 | - ps.setString(1, date); | |
| 809 | - rs = ps.executeQuery(); | |
| 810 | - ObjectMapper mapper = new ObjectMapper(); | |
| 811 | - | |
| 812 | - while (rs.next()) { | |
| 813 | - SchedulePlan schedulePlan = new SchedulePlan(); | |
| 814 | - schedulePlan.setXlName(rs.getString("xl_name")); | |
| 815 | - schedulePlan.setXlDir(rs.getInt("xl_dir")); | |
| 816 | - Date scheduleDate = rs.getDate("schedule_date"); | |
| 817 | - schedulePlan.setScheduleDate(new DateTime(scheduleDate.getTime()).toString("yyyy-MM-dd")); | |
| 818 | - String fcsj = rs.getString("fcsj"); | |
| 819 | - int bcsj = rs.getInt("bcsj"); | |
| 820 | - DateTime fcsjDt = dateTimeFormatter.parseDateTime(schedulePlan.getScheduleDate() + " " + fcsj); | |
| 821 | - schedulePlan.setFcsj(fcsjDt.toString("HH:mm:00")); | |
| 822 | - DateTime ddsjDt = fcsjDt.plusMinutes(bcsj); | |
| 823 | - schedulePlan.setDdsj(ddsjDt.toString("HH:mm:00")); | |
| 824 | - schedulePlan.setSjdStart(fcsjDt.toString("HH:00:00")); | |
| 825 | - DateTime endDt = fcsjDt.plusHours(1); | |
| 826 | - schedulePlan.setSjdEnd(endDt.toString("HH:00:00")); | |
| 827 | - schedulePlan.setClZbh(rs.getString("cl_zbh")); | |
| 828 | - schedulePlan.setJsy(rs.getString("j_name")); | |
| 829 | - schedulePlan.setBcsj(bcsj); | |
| 830 | - | |
| 831 | - list.add(mapper.readValue(mapper.writeValueAsString(schedulePlan), HashMap.class)); | |
| 832 | - } | |
| 833 | - List<Iterator<?>> iterators = new ArrayList<Iterator<?>>(); | |
| 834 | - iterators.add(list.iterator()); | |
| 835 | - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 836 | - String sourcePath = path + "mould/schedulePlan.xls"; | |
| 837 | - | |
| 838 | - new ReportUtils().excelReplace(iterators, new Object[]{}, sourcePath, path + "export/" + date + "-花博会专线班次.xls"); | |
| 839 | - | |
| 840 | - res.put("status", ResponseCode.SUCCESS); | |
| 841 | - res.put("msg", "成功"); | |
| 842 | - } catch (Exception e) { | |
| 843 | - res.put("status", ResponseCode.ERROR); | |
| 844 | - res.put("msg", e.getMessage()); | |
| 845 | - } finally { | |
| 846 | - DBUtils_control.close(rs, ps, conn); | |
| 847 | - } | |
| 848 | - | |
| 849 | - return res; | |
| 850 | - } | |
| 851 | - | |
| 852 | - public final static class SchedulePlan { | |
| 853 | - private String company = "浦东公司[46]"; | |
| 854 | - | |
| 855 | - private String xlName = ""; | |
| 856 | - | |
| 857 | - private int xlDir; | |
| 858 | - | |
| 859 | - private String xlDirStr = ""; | |
| 860 | - | |
| 861 | - private String scheduleDate = ""; | |
| 862 | - | |
| 863 | - private String sjdStart = ""; | |
| 864 | - | |
| 865 | - private String sjdEnd = ""; | |
| 866 | - | |
| 867 | - private String fcsj = ""; | |
| 868 | - | |
| 869 | - private int bcsj; | |
| 870 | - | |
| 871 | - private String ddsj = ""; | |
| 872 | - | |
| 873 | - private int yys = 25; | |
| 874 | - | |
| 875 | - private String clZbh = ""; | |
| 876 | - | |
| 877 | - private String cph = ""; | |
| 878 | - | |
| 879 | - private String color = "绿牌"; | |
| 880 | - | |
| 881 | - private String jsy = ""; | |
| 882 | - | |
| 883 | - private String jsydh = ""; | |
| 884 | - | |
| 885 | - private int pj = 10; | |
| 886 | - | |
| 887 | - public String getCompany() { | |
| 888 | - return company; | |
| 889 | - } | |
| 890 | - | |
| 891 | - public void setCompany(String company) { | |
| 892 | - this.company = company; | |
| 893 | - } | |
| 894 | - | |
| 895 | - public String getXlName() { | |
| 896 | - return xlName; | |
| 897 | - } | |
| 898 | - | |
| 899 | - public void setXlName(String xlName) { | |
| 900 | - this.xlName = xlName; | |
| 901 | - } | |
| 902 | - | |
| 903 | - public int getXlDir() { | |
| 904 | - return xlDir; | |
| 905 | - } | |
| 906 | - | |
| 907 | - public void setXlDir(int xlDir) { | |
| 908 | - this.xlDir = xlDir; | |
| 909 | - } | |
| 910 | - | |
| 911 | - public String getXlDirStr() { | |
| 912 | - xlDirStr = ""; | |
| 913 | - if (xlDir == 0) { | |
| 914 | - xlDirStr = "上行"; | |
| 915 | - } else if (xlDir == 1) { | |
| 916 | - xlDirStr = "下行"; | |
| 917 | - } | |
| 918 | - return xlDirStr; | |
| 919 | - } | |
| 920 | - | |
| 921 | - public void setXlDirStr(String xlDirStr) { | |
| 922 | - this.xlDirStr = xlDirStr; | |
| 923 | - } | |
| 924 | - | |
| 925 | - public String getScheduleDate() { | |
| 926 | - return scheduleDate; | |
| 927 | - } | |
| 928 | - | |
| 929 | - public void setScheduleDate(String scheduleDate) { | |
| 930 | - this.scheduleDate = scheduleDate; | |
| 931 | - } | |
| 932 | - | |
| 933 | - public String getSjdStart() { | |
| 934 | - return sjdStart; | |
| 935 | - } | |
| 936 | - | |
| 937 | - public void setSjdStart(String sjdStart) { | |
| 938 | - this.sjdStart = sjdStart; | |
| 939 | - } | |
| 940 | - | |
| 941 | - public String getSjdEnd() { | |
| 942 | - return sjdEnd; | |
| 943 | - } | |
| 944 | - | |
| 945 | - public void setSjdEnd(String sjdEnd) { | |
| 946 | - this.sjdEnd = sjdEnd; | |
| 947 | - } | |
| 948 | - | |
| 949 | - public String getFcsj() { | |
| 950 | - return fcsj; | |
| 951 | - } | |
| 952 | - | |
| 953 | - public void setFcsj(String fcsj) { | |
| 954 | - this.fcsj = fcsj; | |
| 955 | - } | |
| 956 | - | |
| 957 | - public int getBcsj() { | |
| 958 | - return bcsj; | |
| 959 | - } | |
| 960 | - | |
| 961 | - public void setBcsj(int bcsj) { | |
| 962 | - this.bcsj = bcsj; | |
| 963 | - } | |
| 964 | - | |
| 965 | - public String getDdsj() { | |
| 966 | - return ddsj; | |
| 967 | - } | |
| 968 | - | |
| 969 | - public void setDdsj(String ddsj) { | |
| 970 | - this.ddsj = ddsj; | |
| 971 | - } | |
| 972 | - | |
| 973 | - public int getYys() { | |
| 974 | - return yys; | |
| 975 | - } | |
| 976 | - | |
| 977 | - public void setYys(int yys) { | |
| 978 | - this.yys = yys; | |
| 979 | - } | |
| 980 | - | |
| 981 | - public String getClZbh() { | |
| 982 | - return clZbh; | |
| 983 | - } | |
| 984 | - | |
| 985 | - public void setClZbh(String clZbh) { | |
| 986 | - this.clZbh = clZbh; | |
| 987 | - } | |
| 988 | - | |
| 989 | - public String getCph() { | |
| 990 | - cph = BasicData.nbbmCompanyPlateMap.get(clZbh); | |
| 991 | - if (cph == null) { | |
| 992 | - cph = ""; | |
| 993 | - } | |
| 994 | - return cph; | |
| 995 | - } | |
| 996 | - | |
| 997 | - public void setCph(String cph) { | |
| 998 | - this.cph = cph; | |
| 999 | - } | |
| 1000 | - | |
| 1001 | - public String getColor() { | |
| 1002 | - return color; | |
| 1003 | - } | |
| 1004 | - | |
| 1005 | - public void setColor(String color) { | |
| 1006 | - this.color = color; | |
| 1007 | - } | |
| 1008 | - | |
| 1009 | - public String getJsy() { | |
| 1010 | - return jsy; | |
| 1011 | - } | |
| 1012 | - | |
| 1013 | - public void setJsy(String jsy) { | |
| 1014 | - this.jsy = jsy; | |
| 1015 | - } | |
| 1016 | - | |
| 1017 | - public String getJsydh() { | |
| 1018 | - return jsydh; | |
| 1019 | - } | |
| 1020 | - | |
| 1021 | - public void setJsydh(String jsydh) { | |
| 1022 | - this.jsydh = jsydh; | |
| 1023 | - } | |
| 1024 | - | |
| 1025 | - public int getPj() { | |
| 1026 | - return pj; | |
| 1027 | - } | |
| 1028 | - | |
| 1029 | - public void setPj(int pj) { | |
| 1030 | - this.pj = pj; | |
| 1031 | - } | |
| 1032 | - } | |
| 1033 | -} | |
| 1 | +package com.bsth.controller.realcontrol; | |
| 2 | + | |
| 3 | +import java.io.ByteArrayOutputStream; | |
| 4 | +import java.io.IOException; | |
| 5 | +import java.io.InputStream; | |
| 6 | +import java.io.OutputStream; | |
| 7 | +import java.net.HttpURLConnection; | |
| 8 | +import java.net.MalformedURLException; | |
| 9 | +import java.net.URL; | |
| 10 | +import java.net.URLEncoder; | |
| 11 | +import java.sql.Connection; | |
| 12 | +import java.sql.Date; | |
| 13 | +import java.sql.PreparedStatement; | |
| 14 | +import java.sql.ResultSet; | |
| 15 | +import java.util.*; | |
| 16 | + | |
| 17 | +import com.bsth.data.forecast.entity.ArrivalEntity; | |
| 18 | +import com.bsth.entity.sys.SysUser; | |
| 19 | +import com.bsth.security.util.SecurityUtils; | |
| 20 | +import com.bsth.util.ReportUtils; | |
| 21 | +import com.bsth.util.db.DBUtils_MS; | |
| 22 | +import com.bsth.util.db.DBUtils_control; | |
| 23 | +import com.fasterxml.jackson.databind.ObjectMapper; | |
| 24 | +import org.apache.commons.io.IOUtils; | |
| 25 | +import org.apache.commons.lang3.StringEscapeUtils; | |
| 26 | +import org.joda.time.DateTime; | |
| 27 | +import org.joda.time.format.DateTimeFormat; | |
| 28 | +import org.joda.time.format.DateTimeFormatter; | |
| 29 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 30 | +import org.springframework.web.bind.annotation.*; | |
| 31 | + | |
| 32 | +import com.alibaba.fastjson.JSONArray; | |
| 33 | +import com.bsth.common.ResponseCode; | |
| 34 | +import com.bsth.controller.BaseController; | |
| 35 | +import com.bsth.controller.realcontrol.dto.ChangePersonCar; | |
| 36 | +import com.bsth.controller.realcontrol.dto.DfsjChange; | |
| 37 | +import com.bsth.data.BasicData; | |
| 38 | +import com.bsth.data.schedule.DayOfSchedule; | |
| 39 | +import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; | |
| 40 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 41 | +import com.bsth.entity.report.RepairReport; | |
| 42 | +import com.bsth.entity.schedule.SchedulePlanInfo; | |
| 43 | +import com.bsth.service.realcontrol.ScheduleRealInfoService; | |
| 44 | + | |
| 45 | +@RestController | |
| 46 | +@RequestMapping("/realSchedule") | |
| 47 | +public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, Long> { | |
| 48 | + | |
| 49 | + @Autowired | |
| 50 | + ScheduleRealInfoService scheduleRealInfoService; | |
| 51 | + | |
| 52 | + @Autowired | |
| 53 | + DayOfSchedule dayOfSchedule; | |
| 54 | + | |
| 55 | + @RequestMapping(value = "check_fgs_ascription", method = RequestMethod.POST) | |
| 56 | + public Map<String, Object> checkPCFgsAscription(@RequestParam Long schId, String jGh, String sGh, String nbbm){ | |
| 57 | + return scheduleRealInfoService.checkPCFgsAscription(schId, jGh, sGh, nbbm); | |
| 58 | + } | |
| 59 | + | |
| 60 | + @RequestMapping(value = "/lines") | |
| 61 | + public Map<String, Collection<ScheduleRealInfo>> findByLines(@RequestParam String lines) { | |
| 62 | + return scheduleRealInfoService.findByLines(lines); | |
| 63 | + } | |
| 64 | + | |
| 65 | + @RequestMapping(value = "/car") | |
| 66 | + public List<ScheduleRealInfo> findByCar(String nbbm){ | |
| 67 | + return dayOfSchedule.findByNbbm(nbbm); | |
| 68 | + } | |
| 69 | + | |
| 70 | + /** | |
| 71 | + * | |
| 72 | + * @Title: outgoAdjust @Description: TODO(待发调整) @param @param id | |
| 73 | + * 主键 @param @param remarks 备注 @param @param dfsj 待发时间(HH:mm) @throws | |
| 74 | + */ | |
| 75 | + @RequestMapping(value = "/outgoAdjust", method = RequestMethod.POST) | |
| 76 | + public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks, | |
| 77 | + @RequestParam String dfsj,String bcType, | |
| 78 | + @RequestParam(defaultValue = "") String opType) { | |
| 79 | + return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType, opType, null); | |
| 80 | + } | |
| 81 | + | |
| 82 | + /** | |
| 83 | + * | |
| 84 | + * @Title: destroy @Description: TODO(销毁,烂班) @param @param idsStr 要烂掉的班次ID ,分隔 | |
| 85 | + */ | |
| 86 | + @RequestMapping(value = "/destroy", method = RequestMethod.POST) | |
| 87 | + public Map<String, Object> destroy(@RequestParam String idsStr | |
| 88 | + /*, @RequestParam(defaultValue = "-1") int spaceAdjust*/, | |
| 89 | + @RequestParam String remarks, @RequestParam String adjustExps/*, @RequestParam(defaultValue = "0") int spaceNum*/) { | |
| 90 | + return scheduleRealInfoService.destroy(idsStr, remarks, adjustExps, null); | |
| 91 | + } | |
| 92 | + | |
| 93 | + /** | |
| 94 | + * | |
| 95 | + * @Title: carDeviceMapp @Description: TODO(获取车辆自编号和设备号对照,从缓存取) @throws | |
| 96 | + */ | |
| 97 | + @RequestMapping(value = "/carDeviceMapp", method = RequestMethod.GET) | |
| 98 | + public Map<String, String> carDeviceMapp() { | |
| 99 | + return BasicData.deviceId2NbbmMap.inverse(); | |
| 100 | + } | |
| 101 | + | |
| 102 | + /** | |
| 103 | + * | |
| 104 | + * @Title: findPersionByLine @Description: TODO(根据线路主键获取驾驶员) @param @param | |
| 105 | + * lineId @throws | |
| 106 | + */ | |
| 107 | + @RequestMapping(value = "/driver", method = RequestMethod.GET) | |
| 108 | + public List<Map<String, String>> findDriverByLine(@RequestParam String lineCode) { | |
| 109 | + return scheduleRealInfoService.findDriverByLine(lineCode); | |
| 110 | + } | |
| 111 | + | |
| 112 | + /** | |
| 113 | + * | |
| 114 | + * @Title: findPersionByLine @Description: TODO(根据线路主键获取售票员) @param @param | |
| 115 | + * lineId @throws | |
| 116 | + */ | |
| 117 | + @RequestMapping(value = "/conductor", method = RequestMethod.GET) | |
| 118 | + public List<Map<String, String>> findConductorByLine(@RequestParam String lineCode) { | |
| 119 | + return scheduleRealInfoService.findConductorByLine(lineCode); | |
| 120 | + } | |
| 121 | + | |
| 122 | + /** | |
| 123 | + * | |
| 124 | + * @Title: findPersionByLine @Description: TODO(根据线路主键获取车辆) @param @param | |
| 125 | + * lineId @throws | |
| 126 | + */ | |
| 127 | + @RequestMapping(value = "/cars", method = RequestMethod.GET) | |
| 128 | + public List<Map<String, String>> findCarByLine(@RequestParam String lineCode) { | |
| 129 | + return scheduleRealInfoService.findCarByLine(lineCode); | |
| 130 | + } | |
| 131 | + | |
| 132 | + /** | |
| 133 | + * | |
| 134 | + * @Title: sreachNbbm @Description: TODO(搜索车辆内部编码) @throws | |
| 135 | + */ | |
| 136 | + @RequestMapping(value = "/sreachVehic", method = RequestMethod.GET) | |
| 137 | + public List<Map<String, String>> sreachVehic(@RequestParam String nbbm) { | |
| 138 | + return scheduleRealInfoService.sreachVehic(nbbm); | |
| 139 | + } | |
| 140 | + /** | |
| 141 | + * | |
| 142 | + * @Title: realOutAdjust | |
| 143 | + * @Description: TODO(实发调整) | |
| 144 | + * @param @param id 班次ID | |
| 145 | + * @param @param fcsjActual 实际发车时间 HH:mm | |
| 146 | + * @param @param remarks 备注 | |
| 147 | + * @throws | |
| 148 | + */ | |
| 149 | + @RequestMapping(value = "/realOutAdjust", method = RequestMethod.POST) | |
| 150 | + public Map<String, Object> realOutAdjust(@RequestParam Map<String, String> map) { | |
| 151 | + return scheduleRealInfoService.realOutAdjust(map); | |
| 152 | + } | |
| 153 | + | |
| 154 | + /** | |
| 155 | + * | |
| 156 | + * @Title: revokeDestroy | |
| 157 | + * @Description: TODO(撤销烂班) | |
| 158 | + * @param @param id | |
| 159 | + * @throws | |
| 160 | + */ | |
| 161 | + @RequestMapping(value = "/revokeDestroy", method = RequestMethod.POST) | |
| 162 | + public Map<String, Object> revokeDestroy(@RequestParam Long id){ | |
| 163 | + return scheduleRealInfoService.revokeDestroy(id); | |
| 164 | + } | |
| 165 | + | |
| 166 | + /** | |
| 167 | + * | |
| 168 | + * @Title: revokeRealOutgo | |
| 169 | + * @Description: TODO(撤销实发) | |
| 170 | + * @param @param id | |
| 171 | + * @throws | |
| 172 | + */ | |
| 173 | + @RequestMapping(value = "/revokeRealOutgo", method = RequestMethod.POST) | |
| 174 | + public Map<String, Object> revokeRealOutgo(@RequestParam Long id){ | |
| 175 | + return scheduleRealInfoService.revokeRealOutgo(id); | |
| 176 | + } | |
| 177 | + | |
| 178 | + /** | |
| 179 | + * 撤销执行 | |
| 180 | + * @param id | |
| 181 | + * @return | |
| 182 | + */ | |
| 183 | + @RequestMapping(value = "/revokeRealArrive", method = RequestMethod.POST) | |
| 184 | + public Map<String, Object> revokeRealArrive(@RequestParam Long id){ | |
| 185 | + return scheduleRealInfoService.revokeRealArrive(id); | |
| 186 | + } | |
| 187 | + | |
| 188 | + /** | |
| 189 | + * | |
| 190 | + * @Title: spaceAdjust | |
| 191 | + * @Description: TODO(间隔调整) | |
| 192 | + * @param @param ids 要调整的班次数组ID | |
| 193 | + * @param @param space 间隔 | |
| 194 | + * @throws | |
| 195 | + */ | |
| 196 | + @RequestMapping(value = "/spaceAdjust", method = RequestMethod.POST) | |
| 197 | + public Map<String, Object> spaceAdjust(Long[] ids, Integer space){ | |
| 198 | + return scheduleRealInfoService.spaceAdjust(ids, space); | |
| 199 | + } | |
| 200 | + | |
| 201 | + /** | |
| 202 | + * | |
| 203 | + * @Title: schInfoFineTune | |
| 204 | + * @Description: TODO(发车信息微调) | |
| 205 | + * @param @param map | |
| 206 | + * @throws | |
| 207 | + */ | |
| 208 | + @RequestMapping(value = "/schInfoFineTune", method = RequestMethod.POST) | |
| 209 | + public Map<String, Object> schInfoFineTune(@RequestParam Map<String, String> map){ | |
| 210 | + return scheduleRealInfoService.schInfoFineTune(map); | |
| 211 | + } | |
| 212 | + | |
| 213 | + /** | |
| 214 | + * | |
| 215 | + * @Title: outgoAdjustAll | |
| 216 | + * @Description: TODO(批量待发调整) | |
| 217 | + * @param @param list | |
| 218 | + * @throws | |
| 219 | + */ | |
| 220 | + @RequestMapping(value = "/outgoAdjustAll", method = RequestMethod.POST) | |
| 221 | + public Map<String, Object> outgoAdjustAll(@RequestParam String params){ | |
| 222 | + //反转义 | |
| 223 | + params = StringEscapeUtils.unescapeHtml4(params); | |
| 224 | + return scheduleRealInfoService.outgoAdjustAll(params); | |
| 225 | + } | |
| 226 | + | |
| 227 | + /** | |
| 228 | + * | |
| 229 | + * @Title: findByLineAndUpDown | |
| 230 | + * @Description: TODO(根据线路和走向获取班次) | |
| 231 | + * @param @param line | |
| 232 | + * @param @param upDown | |
| 233 | + */ | |
| 234 | + @RequestMapping(value = "/findByLineAndUpDown") | |
| 235 | + public List<ScheduleRealInfo> findByLineAndUpDown(@RequestParam String line,@RequestParam Integer upDown){ | |
| 236 | + return dayOfSchedule.findByLineAndUpDown(line, upDown); | |
| 237 | + } | |
| 238 | + | |
| 239 | + /** | |
| 240 | + * | |
| 241 | + * @Title: findRouteByLine | |
| 242 | + * @Description: TODO(获取线路的站点,路段路由) | |
| 243 | + * @param @param lineCode | |
| 244 | + * @throws | |
| 245 | + */ | |
| 246 | + @RequestMapping(value = "/findRouteByLine") | |
| 247 | + public Map<String, Object> findRouteByLine(@RequestParam String lineCode){ | |
| 248 | + return scheduleRealInfoService.findRouteByLine(lineCode); | |
| 249 | + } | |
| 250 | + | |
| 251 | + /** | |
| 252 | + * | |
| 253 | + * @Title: removeChildTask | |
| 254 | + * @Description: TODO(删除子任务) | |
| 255 | + * @param @param taskId 子任务ID | |
| 256 | + * @throws | |
| 257 | + */ | |
| 258 | + @RequestMapping(value = "/childTask/{taskId}", method = RequestMethod.DELETE) | |
| 259 | + public Map<String, Object> removeChildTask(@PathVariable("taskId") Long taskId){ | |
| 260 | + return scheduleRealInfoService.removeChildTask(taskId); | |
| 261 | + } | |
| 262 | + | |
| 263 | + /** | |
| 264 | + * | |
| 265 | + * @Title: findByLineCode | |
| 266 | + * @Description: TODO(根据线路获取班次信息) | |
| 267 | + * @param @param lineCode | |
| 268 | + */ | |
| 269 | + @RequestMapping(value = "/lineCode/{lineCode}") | |
| 270 | + public List<ScheduleRealInfo> findByLineCode(@PathVariable("lineCode") String lineCode){ | |
| 271 | + return dayOfSchedule.findByLineCode(lineCode); | |
| 272 | + } | |
| 273 | + | |
| 274 | + @RequestMapping(value = "/queryUserInfo") | |
| 275 | + public List<ScheduleRealInfo> queryUserInfo(@RequestParam String line, | |
| 276 | + @RequestParam String date,@RequestParam String state) { | |
| 277 | + return scheduleRealInfoService.queryUserInfo(line, date,state); | |
| 278 | + } | |
| 279 | + | |
| 280 | + @RequestMapping(value = "/queryUserInfoPx") | |
| 281 | + public List<ScheduleRealInfo> queryUserInfoPx(@RequestParam String line, | |
| 282 | + @RequestParam String date,@RequestParam String state,@RequestParam String type) { | |
| 283 | + return scheduleRealInfoService.queryUserInfoPx(line, date,state,type); | |
| 284 | + } | |
| 285 | + | |
| 286 | + @RequestMapping(value = "/exportWaybill",method = RequestMethod.GET) | |
| 287 | + public List<ScheduleRealInfo> exportWaybill(@RequestParam String jName,@RequestParam String jGh, @RequestParam String clZbh, | |
| 288 | + @RequestParam String lpName,@RequestParam String date,@RequestParam String line) { | |
| 289 | + return scheduleRealInfoService.exportWaybill(jName,jGh, clZbh, lpName,date,line); | |
| 290 | + } | |
| 291 | + | |
| 292 | + @RequestMapping(value = "/exportWaybillQp",method = RequestMethod.GET) | |
| 293 | + public List<ScheduleRealInfo> exportWaybillQp(@RequestParam String clZbh | |
| 294 | + ,@RequestParam String date,@RequestParam String line) { | |
| 295 | + return scheduleRealInfoService.exportWaybillQp( clZbh, date,line); | |
| 296 | + } | |
| 297 | + | |
| 298 | + | |
| 299 | + @RequestMapping(value = "/dailyInfo") | |
| 300 | + public List<Map<String, Object>> dailyInfo(@RequestParam String line, @RequestParam String date,@RequestParam String type) { | |
| 301 | + return scheduleRealInfoService.dailyInfo(line, date, type); | |
| 302 | + } | |
| 303 | + | |
| 304 | + @RequestMapping(value = "/historyMessage") | |
| 305 | + public List<Object[]> historyMessage(@RequestParam String line, @RequestParam String date, | |
| 306 | + @RequestParam String code, @RequestParam String type) { | |
| 307 | + return scheduleRealInfoService.historyMessage(line, date, code, type); | |
| 308 | + } | |
| 309 | + | |
| 310 | + @RequestMapping(value="/findLine") | |
| 311 | + public List<Map<String,String>> findLine(@RequestParam String line){ | |
| 312 | + return scheduleRealInfoService.findLine(line); | |
| 313 | + } | |
| 314 | + | |
| 315 | + @RequestMapping(value="/findKMBC",method = RequestMethod.GET) | |
| 316 | + public Map<String,Object> findKMBC(@RequestParam String jGh,@RequestParam String clZbh,@RequestParam String lpName | |
| 317 | + ,@RequestParam String date,@RequestParam String line){ | |
| 318 | + return scheduleRealInfoService.findKMBC(jGh, clZbh,lpName,date,line); | |
| 319 | + } | |
| 320 | + | |
| 321 | + /** | |
| 322 | + * 路单公里统计 (闵行审计专用) | |
| 323 | + * @param jGh | |
| 324 | + * @param clZbh | |
| 325 | + * @param lpName | |
| 326 | + * @param date | |
| 327 | + * @param line | |
| 328 | + * @return | |
| 329 | + */ | |
| 330 | + @RequestMapping(value="/findKMBC_mh_2",method = RequestMethod.GET) | |
| 331 | + public Map<String,Object> findKMBC_mh_2(@RequestParam String jGh,@RequestParam String clZbh,@RequestParam String lpName | |
| 332 | + ,@RequestParam String date,@RequestParam String line){ | |
| 333 | + return scheduleRealInfoService.findKMBC_mh_2(jGh, clZbh,lpName,date,line); | |
| 334 | + } | |
| 335 | + | |
| 336 | + @RequestMapping(value="/findKMBCQp",method = RequestMethod.GET) | |
| 337 | + public Map<String,Object> findKMBCQp(@RequestParam String clZbh | |
| 338 | + ,@RequestParam String date,@RequestParam String line){ | |
| 339 | + return scheduleRealInfoService.findKMBCQp(clZbh,date,line); | |
| 340 | + } | |
| 341 | + | |
| 342 | + @RequestMapping(value="/findLpName") | |
| 343 | + public List<Map<String,String>> findLpName(@RequestParam String lpName){ | |
| 344 | + return scheduleRealInfoService.findLpName(lpName); | |
| 345 | + } | |
| 346 | + | |
| 347 | + @RequestMapping(value = "/account") | |
| 348 | + public List<Map<String,Object>> account(@RequestParam String line, @RequestParam String date, | |
| 349 | + @RequestParam String code,@RequestParam String xlName, @RequestParam String type) { | |
| 350 | + return scheduleRealInfoService.account(line, date, code, xlName, type); | |
| 351 | + } | |
| 352 | + | |
| 353 | + @RequestMapping(value = "/accountPx") | |
| 354 | + public List<Map<String,Object>> accountPx(@RequestParam String line, @RequestParam String date, | |
| 355 | + @RequestParam String code,@RequestParam String xlName, @RequestParam String px) { | |
| 356 | + return scheduleRealInfoService.accountPx(line, date, code, xlName, px); | |
| 357 | + } | |
| 358 | + | |
| 359 | + @RequestMapping(value = "/correctForm") | |
| 360 | + public List<SchEditInfoDto> correctForm(@RequestParam String line, @RequestParam String date, | |
| 361 | + @RequestParam String endDate, | |
| 362 | + @RequestParam String lpName, @RequestParam String code, | |
| 363 | + @RequestParam String type,@RequestParam String changType) { | |
| 364 | + return scheduleRealInfoService.correctForm(line, date, endDate, lpName, code, type,changType); | |
| 365 | + } | |
| 366 | + /** | |
| 367 | + * @Title queryListWaybill | |
| 368 | + * @Description 查询行车路单列表 | |
| 369 | + * @param jGh 驾驶员名字 | |
| 370 | + * @param clZbh 车辆自编号(内部编号) | |
| 371 | + * @param lpName 路牌 | |
| 372 | + * @return | |
| 373 | + */ | |
| 374 | + @RequestMapping(value="/queryListWaybill",method = RequestMethod.GET) | |
| 375 | + public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jGh,@RequestParam String clZbh,@RequestParam String lpName | |
| 376 | + ,@RequestParam String date,@RequestParam String line){ | |
| 377 | + return scheduleRealInfoService.queryListWaybill(jGh, clZbh,lpName,date,line); | |
| 378 | + } | |
| 379 | + | |
| 380 | + /** | |
| 381 | + * @Title queryListWaybill | |
| 382 | + * @Description 查询行车路单列表(闵行审计专用路单) | |
| 383 | + * @param jName 驾驶员名字 | |
| 384 | + * @param clZbh 车辆自编号(内部编号) | |
| 385 | + * @param lpName 路牌 | |
| 386 | + * @return | |
| 387 | + */ | |
| 388 | + @RequestMapping(value="/queryListWaybill_mh_2",method = RequestMethod.GET) | |
| 389 | + public List<ScheduleRealInfo> queryListWaybill_mh_2(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName | |
| 390 | + ,@RequestParam String date,@RequestParam String line){ | |
| 391 | + return scheduleRealInfoService.queryListWaybill2(jName, clZbh,lpName,date,line); | |
| 392 | + } | |
| 393 | + | |
| 394 | + @RequestMapping(value="/queryListWaybillQp",method = RequestMethod.GET) | |
| 395 | + public List<ScheduleRealInfo> queryListWaybillQp(@RequestParam String clZbh, | |
| 396 | + @RequestParam String date,@RequestParam String line){ | |
| 397 | + return scheduleRealInfoService.queryListWaybillQp(clZbh,date,line); | |
| 398 | + } | |
| 399 | + | |
| 400 | + @RequestMapping(value="/statisticsDaily") | |
| 401 | + public List<Map<String,Object>> statisticsDaily(@RequestParam String line, @RequestParam String date, | |
| 402 | + @RequestParam String xlName, @RequestParam String type){ | |
| 403 | + return scheduleRealInfoService.statisticsDaily(line, date, xlName, type); | |
| 404 | + } | |
| 405 | + | |
| 406 | + @RequestMapping(value="/statisticsDaily_mh_2") | |
| 407 | + public List<Map<String,Object>> statisticsDaily_mh_2(@RequestParam String line, @RequestParam String date, | |
| 408 | + @RequestParam String xlName, @RequestParam String type){ | |
| 409 | + return scheduleRealInfoService.statisticsDaily_mh_2(line, date, xlName, type); | |
| 410 | + } | |
| 411 | + | |
| 412 | + @RequestMapping(value="/dispatchDailySum") | |
| 413 | + public List<Map<String,Object>> dispatchDailySum(@RequestParam Map<String, Object> map){ | |
| 414 | + String date=""; | |
| 415 | + if(map.get("date")!=null){ | |
| 416 | + date=map.get("date").toString(); | |
| 417 | + } | |
| 418 | + String date2=""; | |
| 419 | + if(map.get("date2")!=null){ | |
| 420 | + date2=map.get("date2").toString(); | |
| 421 | + } | |
| 422 | + String nature="0"; | |
| 423 | + if(map.get("nature")!=null){ | |
| 424 | + nature=map.get("nature").toString(); | |
| 425 | + } | |
| 426 | + String type=""; | |
| 427 | + if(map.get("type")!=null){ | |
| 428 | + type=map.get("type").toString(); | |
| 429 | + } | |
| 430 | + return scheduleRealInfoService.dispatchDailySum(date, date2, nature, type); | |
| 431 | + } | |
| 432 | + | |
| 433 | + @RequestMapping(value="/statisticsDailyTj") | |
| 434 | + public List<Map<String,Object>> statisticsDailyTj(@RequestParam Map<String, Object> map){ | |
| 435 | + String gsdm=""; | |
| 436 | + if(map.get("gsdm")!=null){ | |
| 437 | + gsdm=map.get("gsdm").toString(); | |
| 438 | + } | |
| 439 | + String fgsdm=""; | |
| 440 | + if(map.get("fgsdm")!=null){ | |
| 441 | + fgsdm=map.get("fgsdm").toString(); | |
| 442 | + } | |
| 443 | + String line=""; | |
| 444 | + if(map.get("line")!=null){ | |
| 445 | + line=map.get("line").toString(); | |
| 446 | + } | |
| 447 | + String date=""; | |
| 448 | + if(map.get("date")!=null){ | |
| 449 | + date=map.get("date").toString(); | |
| 450 | + } | |
| 451 | + String date2=""; | |
| 452 | + if(map.get("date2")!=null){ | |
| 453 | + date2=map.get("date2").toString(); | |
| 454 | + } | |
| 455 | + String xlName=""; | |
| 456 | + if(map.get("xlName")!=null){ | |
| 457 | + xlName=map.get("xlName").toString(); | |
| 458 | + } | |
| 459 | + String type=""; | |
| 460 | + if(map.get("type")!=null){ | |
| 461 | + type=map.get("type").toString(); | |
| 462 | + } | |
| 463 | + String nature="0"; | |
| 464 | + if(map.get("nature")!=null){ | |
| 465 | + nature=map.get("nature").toString(); | |
| 466 | + } | |
| 467 | + return scheduleRealInfoService.statisticsDailyTj(gsdm,fgsdm,line, date,date2, xlName, type,nature); | |
| 468 | + } | |
| 469 | + | |
| 470 | + /* | |
| 471 | + * 公里修正报表 | |
| 472 | + */ | |
| 473 | + @RequestMapping(value="/mileageReportTj") | |
| 474 | + public List<Map<String,Object>> mileageReport(@RequestParam Map<String, Object> map){ | |
| 475 | + String gsdm=""; | |
| 476 | + if(map.get("gsdm")!=null){ | |
| 477 | + gsdm=map.get("gsdm").toString(); | |
| 478 | + } | |
| 479 | + String fgsdm=""; | |
| 480 | + if(map.get("fgsdm")!=null){ | |
| 481 | + fgsdm=map.get("fgsdm").toString(); | |
| 482 | + } | |
| 483 | + String line=""; | |
| 484 | + if(map.get("line")!=null){ | |
| 485 | + line=map.get("line").toString(); | |
| 486 | + } | |
| 487 | + String date=""; | |
| 488 | + if(map.get("date")!=null){ | |
| 489 | + date=map.get("date").toString(); | |
| 490 | + } | |
| 491 | + String date2=""; | |
| 492 | + if(map.get("date2")!=null){ | |
| 493 | + date2=map.get("date2").toString(); | |
| 494 | + } | |
| 495 | + String xlName=""; | |
| 496 | + if(map.get("xlName")!=null){ | |
| 497 | + xlName=map.get("xlName").toString(); | |
| 498 | + } | |
| 499 | + return scheduleRealInfoService.mileageReport(gsdm,fgsdm,line, date,date2); | |
| 500 | + } | |
| 501 | + | |
| 502 | + /* | |
| 503 | + * 班次修正报表 | |
| 504 | + */ | |
| 505 | + @RequestMapping(value="/scheduleCorrectionReport") | |
| 506 | + public List<Map<String,Object>> scheduleCorrectionReport(@RequestParam Map<String, Object> map){ | |
| 507 | + String gsdm=""; | |
| 508 | + if(map.get("gsdm")!=null){ | |
| 509 | + gsdm=map.get("gsdm").toString(); | |
| 510 | + } | |
| 511 | + String fgsdm=""; | |
| 512 | + if(map.get("fgsdm")!=null){ | |
| 513 | + fgsdm=map.get("fgsdm").toString(); | |
| 514 | + } | |
| 515 | + String line=""; | |
| 516 | + if(map.get("line")!=null){ | |
| 517 | + line=map.get("line").toString(); | |
| 518 | + } | |
| 519 | + String date=""; | |
| 520 | + if(map.get("date")!=null){ | |
| 521 | + date=map.get("date").toString(); | |
| 522 | + } | |
| 523 | + String date2=""; | |
| 524 | + if(map.get("date2")!=null){ | |
| 525 | + date2=map.get("date2").toString(); | |
| 526 | + } | |
| 527 | + String xlName=""; | |
| 528 | + if(map.get("xlName")!=null){ | |
| 529 | + xlName=map.get("xlName").toString(); | |
| 530 | + } | |
| 531 | + return scheduleRealInfoService.scheduleCorrectionReport(gsdm,fgsdm,line, date,date2); | |
| 532 | + } | |
| 533 | + | |
| 534 | + @RequestMapping(value="/MapById",method = RequestMethod.GET) | |
| 535 | + public Map<String, Object> MapById(@RequestParam("id") Long id){ | |
| 536 | + return scheduleRealInfoService.MapById(id); | |
| 537 | + } | |
| 538 | + | |
| 539 | + @RequestMapping(value="/MapByIdQp",method = RequestMethod.GET) | |
| 540 | + public Map<String, Object> MapByIdQp(@RequestParam("id") Long id){ | |
| 541 | + return scheduleRealInfoService.MapByIdQp(id); | |
| 542 | + } | |
| 543 | + | |
| 544 | + /** | |
| 545 | + * @Title: scheduleDaily | |
| 546 | + * @Description: TODO(调度日报表) | |
| 547 | + * @param line 线路 | |
| 548 | + * @param date 时间 | |
| 549 | + * @return | |
| 550 | + */ | |
| 551 | + @RequestMapping(value="/scheduleDaily") | |
| 552 | + public Map<String,Object> scheduleDaily(@RequestParam String line,@RequestParam String date){ | |
| 553 | + return scheduleRealInfoService.scheduleDaily(line,date); | |
| 554 | + } | |
| 555 | + | |
| 556 | + @RequestMapping(value="/realScheduleList") | |
| 557 | + public List<ScheduleRealInfo> realScheduleList(@RequestParam String line,@RequestParam String date){ | |
| 558 | + return scheduleRealInfoService.realScheduleList(line,date); | |
| 559 | + } | |
| 560 | + | |
| 561 | + @RequestMapping(value="/realScheduleList_zrw") | |
| 562 | + public List<ScheduleRealInfo> realScheduleList_zrw(@RequestParam String line,@RequestParam String date){ | |
| 563 | + return scheduleRealInfoService.realScheduleList_zrw(line,date); | |
| 564 | + } | |
| 565 | + | |
| 566 | + @RequestMapping(value="/realScheduleList_mh_2") | |
| 567 | + public List<ScheduleRealInfo> realScheduleList_mh_2(@RequestParam String line,@RequestParam String date){ | |
| 568 | + return scheduleRealInfoService.realScheduleList_mh_2(line,date); | |
| 569 | + } | |
| 570 | + | |
| 571 | + @RequestMapping(value="/realScheduleListQp") | |
| 572 | + public List<ScheduleRealInfo> realScheduleListQp(@RequestParam String line,@RequestParam String date){ | |
| 573 | + return scheduleRealInfoService.realScheduleListQp(line,date); | |
| 574 | + } | |
| 575 | + | |
| 576 | + @RequestMapping(value="/multi_tzrc", method=RequestMethod.POST) | |
| 577 | + public synchronized Map<String, Object> multi_tzrc(@RequestParam String cpcsJson){ | |
| 578 | + cpcsJson = StringEscapeUtils.unescapeHtml4(cpcsJson); | |
| 579 | + List<ChangePersonCar> cpcs = JSONArray.parseArray(cpcsJson, ChangePersonCar.class); | |
| 580 | + return scheduleRealInfoService.multi_tzrc(cpcs, null); | |
| 581 | + } | |
| 582 | + | |
| 583 | + @RequestMapping(value="/multi_dftz", method=RequestMethod.POST) | |
| 584 | + public Map<String, Object> multi_dftz(@RequestParam String dcsJson){ | |
| 585 | + dcsJson = StringEscapeUtils.unescapeHtml4(dcsJson); | |
| 586 | + List<DfsjChange> dfsjcs = JSONArray.parseArray(dcsJson, DfsjChange.class); | |
| 587 | + return scheduleRealInfoService.multi_dftz(dfsjcs); | |
| 588 | + } | |
| 589 | + | |
| 590 | + @RequestMapping(value="/changeBcType/{id}", method=RequestMethod.POST) | |
| 591 | + public Map<String, Object> changeBcType(@PathVariable("id") Long id, String bcType, String remarks, String majorStationName){ | |
| 592 | + return scheduleRealInfoService.changeBcType(id, bcType, remarks, majorStationName); | |
| 593 | + } | |
| 594 | + | |
| 595 | + @RequestMapping(value="/history", method=RequestMethod.POST) | |
| 596 | + public Map<String,Object> historySave(ScheduleRealInfo sch){ | |
| 597 | + return scheduleRealInfoService.historySave(sch); | |
| 598 | + } | |
| 599 | + | |
| 600 | + | |
| 601 | + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"); | |
| 602 | + private final static long ONE_DAY = 1000 * 60 * 60 * 24; | |
| 603 | + /** | |
| 604 | + * 获取可编辑的历史班次日期 | |
| 605 | + * @return | |
| 606 | + */ | |
| 607 | + @RequestMapping("dateArray") | |
| 608 | + public List<String> dateArray(@RequestParam(defaultValue = "0") int c){ | |
| 609 | + List<String> rs = new ArrayList<>(); | |
| 610 | + | |
| 611 | + long t = System.currentTimeMillis(); | |
| 612 | + if(c != 1) | |
| 613 | + t -= (ONE_DAY + (1000 * 60 * 60 * 6)); | |
| 614 | + for(int i = 0; i < 3; i ++){ | |
| 615 | + rs.add(fmtyyyyMMdd.print(t)); | |
| 616 | + t -= ONE_DAY; | |
| 617 | + } | |
| 618 | + return rs; | |
| 619 | + } | |
| 620 | + | |
| 621 | + @RequestMapping(value = "svgAttr", method = RequestMethod.POST) | |
| 622 | + public Map<String, Object> svgAttr(@RequestParam String jsonStr){ | |
| 623 | + return scheduleRealInfoService.svgAttr(jsonStr); | |
| 624 | + } | |
| 625 | + | |
| 626 | + @RequestMapping(value = "svgAttr", method = RequestMethod.GET) | |
| 627 | + public Map<String, Object> findSvgAttr(@RequestParam String idx){ | |
| 628 | + return scheduleRealInfoService.findSvgAttr(idx); | |
| 629 | + } | |
| 630 | + | |
| 631 | + @RequestMapping(value = "addRemarks", method = RequestMethod.POST) | |
| 632 | + public Map<String, Object> addRemarks(@RequestParam Long id, @RequestParam String remarks){ | |
| 633 | + return scheduleRealInfoService.addRemarks(id, remarks); | |
| 634 | + } | |
| 635 | + | |
| 636 | + @RequestMapping(value = "scheduleDailyQp", method = RequestMethod.GET) | |
| 637 | + public List<Map<String, Object>> scheduleDailyQp(@RequestParam String line,@RequestParam String date){ | |
| 638 | + return scheduleRealInfoService.scheduleDailyQp(line,date); | |
| 639 | + } | |
| 640 | + | |
| 641 | + @RequestMapping(value = "scheduleDailyExport", method = RequestMethod.GET) | |
| 642 | + public List<Map<String, Object>> scheduleDailyExport(@RequestParam Map<String, Object> map){ | |
| 643 | + return scheduleRealInfoService.scheduleDailyExport(map); | |
| 644 | + } | |
| 645 | + | |
| 646 | + @RequestMapping(value = "exportWaybillMore", method = RequestMethod.GET) | |
| 647 | + public Map<String, Object> exportWaybillMore(@RequestParam Map<String, Object> map){ | |
| 648 | + return scheduleRealInfoService.exportWaybillMore(map); | |
| 649 | + } | |
| 650 | + | |
| 651 | + /** | |
| 652 | + * 获取当日计划排班 , 从计划表抓取数据 | |
| 653 | + * @return | |
| 654 | + */ | |
| 655 | + @RequestMapping(value = "currSchedulePlanByLineCode", method = RequestMethod.GET) | |
| 656 | + public List<SchedulePlanInfo> currentSchedulePlan(@RequestParam String lineCode){ | |
| 657 | + return scheduleRealInfoService.currentSchedulePlan(lineCode); | |
| 658 | + } | |
| 659 | + | |
| 660 | + @RequestMapping(value = "lpChangeMulti", method = RequestMethod.POST) | |
| 661 | + public Map<String, Object> lpChangeMulti(@RequestParam String leftIdx, @RequestParam String rightIdx,@RequestParam int type){ | |
| 662 | + return scheduleRealInfoService.lpChangeMulti(leftIdx, rightIdx, type); | |
| 663 | + } | |
| 664 | + | |
| 665 | + /** | |
| 666 | + * 删除当日实际排班 | |
| 667 | + * @return | |
| 668 | + */ | |
| 669 | + @RequestMapping(value = "deleteRealSchedule", method = RequestMethod.POST) | |
| 670 | + public Map<String, Object> deleteRealSchedule(@RequestParam String lineCode){ | |
| 671 | + return dayOfSchedule.deleteRealSchedule(lineCode); | |
| 672 | + } | |
| 673 | + | |
| 674 | + /** | |
| 675 | + * 从计划表重新加载当日排班 | |
| 676 | + * @param lineCode | |
| 677 | + * @return | |
| 678 | + */ | |
| 679 | + @RequestMapping(value = "reLoadRealSchedule", method = RequestMethod.POST) | |
| 680 | + public Map<String, Object> reLoadRealSchedule(@RequestParam String lineCode){ | |
| 681 | + Map<String, Object> rs = new HashMap<>(); | |
| 682 | + List<ScheduleRealInfo> list = dayOfSchedule.findByLineCode(lineCode); | |
| 683 | + if(list != null && list.size() > 0){ | |
| 684 | + rs.put("status", ResponseCode.ERROR); | |
| 685 | + rs.put("msg", "失败," + list.get(0).getXlName() + "当日存在实际排班,无法重新加载。"); | |
| 686 | + return rs; | |
| 687 | + } | |
| 688 | + | |
| 689 | + int code = dayOfSchedule.reloadSch(lineCode); | |
| 690 | + | |
| 691 | + //重新按公司编码索引数据 | |
| 692 | + dayOfSchedule.groupByGsbm(); | |
| 693 | + rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR); | |
| 694 | + return rs; | |
| 695 | + } | |
| 696 | + | |
| 697 | + /** | |
| 698 | + * 误点调整 | |
| 699 | + * @param idx | |
| 700 | + * @param minute | |
| 701 | + * @return | |
| 702 | + */ | |
| 703 | + @RequestMapping(value = "lateAdjust", method = RequestMethod.POST) | |
| 704 | + public Map<String, Object> lateAdjust(@RequestParam String idx,@RequestParam float minute ){ | |
| 705 | + return scheduleRealInfoService.lateAdjust(idx, minute); | |
| 706 | + } | |
| 707 | + | |
| 708 | + /** | |
| 709 | + * 获取所有应发未到的班次 | |
| 710 | + * @param idx | |
| 711 | + * @return | |
| 712 | + */ | |
| 713 | + @RequestMapping(value = "allLate2") | |
| 714 | + public List<ScheduleRealInfo> allLate2(@RequestParam String idx){ | |
| 715 | + return scheduleRealInfoService.allLate2(idx); | |
| 716 | + } | |
| 717 | + | |
| 718 | + /** | |
| 719 | + * 添加一个临加到历史库 | |
| 720 | + * @param sch | |
| 721 | + * @return | |
| 722 | + */ | |
| 723 | + @RequestMapping(value = "history/add", method = RequestMethod.POST) | |
| 724 | + public Map<String, Object> addToHistory(ScheduleRealInfo sch){ | |
| 725 | + return scheduleRealInfoService.addToHistory(sch); | |
| 726 | + } | |
| 727 | + | |
| 728 | + /** | |
| 729 | + * 从历史库里删除临加班次 | |
| 730 | + * @param id | |
| 731 | + * @return | |
| 732 | + */ | |
| 733 | + @RequestMapping(value = "history/{id}", method = RequestMethod.DELETE) | |
| 734 | + public Map<String, Object> deleteToHistory(@PathVariable("id") Long id){ | |
| 735 | + return scheduleRealInfoService.deleteToHistory(id); | |
| 736 | + } | |
| 737 | + | |
| 738 | + @RequestMapping(value = "isCircleQdz", method = RequestMethod.POST) | |
| 739 | + public Map<String, Object> isCircleQdz(@RequestParam String line, String nbbm, String ts, String qdzCode){ | |
| 740 | + Map<String, Object> map =new HashMap<>(); | |
| 741 | + map.put("isExist",scheduleRealInfoService.isCircleQdz(nbbm, ts, line, qdzCode)); | |
| 742 | + return map; | |
| 743 | + } | |
| 744 | + | |
| 745 | + /** | |
| 746 | + * 从历史库里删除临加班次 | |
| 747 | + * @param param | |
| 748 | + * @return | |
| 749 | + */ | |
| 750 | + @RequestMapping(value = "wxsb", method = RequestMethod.POST) | |
| 751 | + public Map<String, Object> repairReport(@RequestParam Map<String, Object> param){ | |
| 752 | + return scheduleRealInfoService.repairReport(param, true); | |
| 753 | + } | |
| 754 | + | |
| 755 | + @RequestMapping(value = "wxsb", method = RequestMethod.GET) | |
| 756 | + public List<RepairReport> repairReportList(@RequestParam String line, @RequestParam String date, @RequestParam String code, @RequestParam String type){ | |
| 757 | + return scheduleRealInfoService.repairReportList(line, date, code, type); | |
| 758 | + } | |
| 759 | + | |
| 760 | + @RequestMapping(value = "lineLevel", method = RequestMethod.GET) | |
| 761 | + public Map<String, String> lineLevel(@RequestParam String idx){ | |
| 762 | + return scheduleRealInfoService.getLevelsByLines(Arrays.asList(idx.split(","))); | |
| 763 | + } | |
| 764 | + | |
| 765 | + /** | |
| 766 | + * 反馈安全驾驶系统 | |
| 767 | + * @param param | |
| 768 | + * @return | |
| 769 | + */ | |
| 770 | + @RequestMapping(value = "ackDsm", method = RequestMethod.POST) | |
| 771 | + public Map<String, Object> ackDsm(@RequestParam Map<String, Object> param){ | |
| 772 | + Map<String, Object> res = new HashMap<>(); | |
| 773 | + InputStream in = null; | |
| 774 | + SysUser user = SecurityUtils.getCurrentUser(); | |
| 775 | + DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); | |
| 776 | + StringBuilder url = new StringBuilder("http://211.95.61.66:9008/modules/dsmCheckTheRecord/addDsm?"), uri = new StringBuilder(); | |
| 777 | + HttpURLConnection con = null; | |
| 778 | + try { | |
| 779 | + uri.append("ddyName=").append(URLEncoder.encode(user == null ? "admin" : user.getUserName(), "UTF-8")); | |
| 780 | + uri.append("&checkTime=").append(URLEncoder.encode(fmt.print(System.currentTimeMillis()), "UTF-8")); | |
| 781 | + uri.append("&nbbm=").append(URLEncoder.encode(param.get("nbbm").toString(), "UTF-8")); | |
| 782 | + uri.append("&starttime=").append(URLEncoder.encode(fmt.print(Long.parseLong(param.get("ts").toString())), "UTF-8")); | |
| 783 | + url.append(uri); | |
| 784 | + con = (HttpURLConnection)new URL(url.toString()).openConnection(); | |
| 785 | + con.setDoInput(true); | |
| 786 | + con.setRequestMethod("POST"); | |
| 787 | + con.setConnectTimeout(5000); | |
| 788 | + con.setReadTimeout(5000); | |
| 789 | + con.setRequestProperty("keep-alive", "true"); | |
| 790 | + con.setRequestProperty("accept", "*/*"); | |
| 791 | + con.setRequestProperty("content-type", "application/x-www-form-urlencoded"); | |
| 792 | + con.connect(); | |
| 793 | + | |
| 794 | + if (con.getResponseCode() == 200) { | |
| 795 | + in = con.getInputStream(); | |
| 796 | + ByteArrayOutputStream bout = new ByteArrayOutputStream(); | |
| 797 | + IOUtils.copy(in, bout); | |
| 798 | + Map<String, Object> map = new ObjectMapper().readValue(bout.toByteArray(), Map.class); | |
| 799 | + System.out.println(map); | |
| 800 | + } | |
| 801 | + } catch (MalformedURLException e) { | |
| 802 | + // TODO Auto-generated catch block | |
| 803 | + e.printStackTrace(); | |
| 804 | + } catch (IOException e) { | |
| 805 | + // TODO Auto-generated catch block | |
| 806 | + e.printStackTrace(); | |
| 807 | + } finally { | |
| 808 | + if (con != null) { | |
| 809 | + con.disconnect(); | |
| 810 | + } | |
| 811 | + } | |
| 812 | + | |
| 813 | + return res; | |
| 814 | + } | |
| 815 | + | |
| 816 | + @RequestMapping(value = "exportPlan", method = RequestMethod.GET) | |
| 817 | + public Map<String, Object> exportPlan(@RequestParam String date){ | |
| 818 | + Map<String, Object> res = new HashMap<>(); | |
| 819 | + DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm"); | |
| 820 | + Connection conn = null; | |
| 821 | + PreparedStatement ps = null; | |
| 822 | + ResultSet rs = null; | |
| 823 | + | |
| 824 | + List<Map<String, Object>> list = new ArrayList<>(); | |
| 825 | + String sql = "select xl_name,xl_dir,schedule_date,fcsj,cl_zbh,j_name,bcsj from bsth_c_s_sp_info where schedule_date = ? and xl_bm in (22205, 202104, 202105, 202106, 202107, 210415) and bc_type = 'normal'"; | |
| 826 | + try{ | |
| 827 | + conn = DBUtils_control.getConnection(); | |
| 828 | + ps = conn.prepareStatement(sql); | |
| 829 | + ps.setString(1, date); | |
| 830 | + rs = ps.executeQuery(); | |
| 831 | + ObjectMapper mapper = new ObjectMapper(); | |
| 832 | + | |
| 833 | + while (rs.next()) { | |
| 834 | + SchedulePlan schedulePlan = new SchedulePlan(); | |
| 835 | + schedulePlan.setXlName(rs.getString("xl_name")); | |
| 836 | + schedulePlan.setXlDir(rs.getInt("xl_dir")); | |
| 837 | + Date scheduleDate = rs.getDate("schedule_date"); | |
| 838 | + schedulePlan.setScheduleDate(new DateTime(scheduleDate.getTime()).toString("yyyy-MM-dd")); | |
| 839 | + String fcsj = rs.getString("fcsj"); | |
| 840 | + int bcsj = rs.getInt("bcsj"); | |
| 841 | + DateTime fcsjDt = dateTimeFormatter.parseDateTime(schedulePlan.getScheduleDate() + " " + fcsj); | |
| 842 | + schedulePlan.setFcsj(fcsjDt.toString("HH:mm:00")); | |
| 843 | + DateTime ddsjDt = fcsjDt.plusMinutes(bcsj); | |
| 844 | + schedulePlan.setDdsj(ddsjDt.toString("HH:mm:00")); | |
| 845 | + schedulePlan.setSjdStart(fcsjDt.toString("HH:00:00")); | |
| 846 | + DateTime endDt = fcsjDt.plusHours(1); | |
| 847 | + schedulePlan.setSjdEnd(endDt.toString("HH:00:00")); | |
| 848 | + schedulePlan.setClZbh(rs.getString("cl_zbh")); | |
| 849 | + schedulePlan.setJsy(rs.getString("j_name")); | |
| 850 | + schedulePlan.setBcsj(bcsj); | |
| 851 | + | |
| 852 | + list.add(mapper.readValue(mapper.writeValueAsString(schedulePlan), HashMap.class)); | |
| 853 | + } | |
| 854 | + List<Iterator<?>> iterators = new ArrayList<Iterator<?>>(); | |
| 855 | + iterators.add(list.iterator()); | |
| 856 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 857 | + String sourcePath = path + "mould/schedulePlan.xls"; | |
| 858 | + | |
| 859 | + new ReportUtils().excelReplace(iterators, new Object[]{}, sourcePath, path + "export/" + date + "-花博会专线班次.xls"); | |
| 860 | + | |
| 861 | + res.put("status", ResponseCode.SUCCESS); | |
| 862 | + res.put("msg", "成功"); | |
| 863 | + } catch (Exception e) { | |
| 864 | + res.put("status", ResponseCode.ERROR); | |
| 865 | + res.put("msg", e.getMessage()); | |
| 866 | + } finally { | |
| 867 | + DBUtils_control.close(rs, ps, conn); | |
| 868 | + } | |
| 869 | + | |
| 870 | + return res; | |
| 871 | + } | |
| 872 | + | |
| 873 | + public final static class SchedulePlan { | |
| 874 | + private String company = "浦东公司[46]"; | |
| 875 | + | |
| 876 | + private String xlName = ""; | |
| 877 | + | |
| 878 | + private int xlDir; | |
| 879 | + | |
| 880 | + private String xlDirStr = ""; | |
| 881 | + | |
| 882 | + private String scheduleDate = ""; | |
| 883 | + | |
| 884 | + private String sjdStart = ""; | |
| 885 | + | |
| 886 | + private String sjdEnd = ""; | |
| 887 | + | |
| 888 | + private String fcsj = ""; | |
| 889 | + | |
| 890 | + private int bcsj; | |
| 891 | + | |
| 892 | + private String ddsj = ""; | |
| 893 | + | |
| 894 | + private int yys = 25; | |
| 895 | + | |
| 896 | + private String clZbh = ""; | |
| 897 | + | |
| 898 | + private String cph = ""; | |
| 899 | + | |
| 900 | + private String color = "绿牌"; | |
| 901 | + | |
| 902 | + private String jsy = ""; | |
| 903 | + | |
| 904 | + private String jsydh = ""; | |
| 905 | + | |
| 906 | + private int pj = 10; | |
| 907 | + | |
| 908 | + public String getCompany() { | |
| 909 | + return company; | |
| 910 | + } | |
| 911 | + | |
| 912 | + public void setCompany(String company) { | |
| 913 | + this.company = company; | |
| 914 | + } | |
| 915 | + | |
| 916 | + public String getXlName() { | |
| 917 | + return xlName; | |
| 918 | + } | |
| 919 | + | |
| 920 | + public void setXlName(String xlName) { | |
| 921 | + this.xlName = xlName; | |
| 922 | + } | |
| 923 | + | |
| 924 | + public int getXlDir() { | |
| 925 | + return xlDir; | |
| 926 | + } | |
| 927 | + | |
| 928 | + public void setXlDir(int xlDir) { | |
| 929 | + this.xlDir = xlDir; | |
| 930 | + } | |
| 931 | + | |
| 932 | + public String getXlDirStr() { | |
| 933 | + xlDirStr = ""; | |
| 934 | + if (xlDir == 0) { | |
| 935 | + xlDirStr = "上行"; | |
| 936 | + } else if (xlDir == 1) { | |
| 937 | + xlDirStr = "下行"; | |
| 938 | + } | |
| 939 | + return xlDirStr; | |
| 940 | + } | |
| 941 | + | |
| 942 | + public void setXlDirStr(String xlDirStr) { | |
| 943 | + this.xlDirStr = xlDirStr; | |
| 944 | + } | |
| 945 | + | |
| 946 | + public String getScheduleDate() { | |
| 947 | + return scheduleDate; | |
| 948 | + } | |
| 949 | + | |
| 950 | + public void setScheduleDate(String scheduleDate) { | |
| 951 | + this.scheduleDate = scheduleDate; | |
| 952 | + } | |
| 953 | + | |
| 954 | + public String getSjdStart() { | |
| 955 | + return sjdStart; | |
| 956 | + } | |
| 957 | + | |
| 958 | + public void setSjdStart(String sjdStart) { | |
| 959 | + this.sjdStart = sjdStart; | |
| 960 | + } | |
| 961 | + | |
| 962 | + public String getSjdEnd() { | |
| 963 | + return sjdEnd; | |
| 964 | + } | |
| 965 | + | |
| 966 | + public void setSjdEnd(String sjdEnd) { | |
| 967 | + this.sjdEnd = sjdEnd; | |
| 968 | + } | |
| 969 | + | |
| 970 | + public String getFcsj() { | |
| 971 | + return fcsj; | |
| 972 | + } | |
| 973 | + | |
| 974 | + public void setFcsj(String fcsj) { | |
| 975 | + this.fcsj = fcsj; | |
| 976 | + } | |
| 977 | + | |
| 978 | + public int getBcsj() { | |
| 979 | + return bcsj; | |
| 980 | + } | |
| 981 | + | |
| 982 | + public void setBcsj(int bcsj) { | |
| 983 | + this.bcsj = bcsj; | |
| 984 | + } | |
| 985 | + | |
| 986 | + public String getDdsj() { | |
| 987 | + return ddsj; | |
| 988 | + } | |
| 989 | + | |
| 990 | + public void setDdsj(String ddsj) { | |
| 991 | + this.ddsj = ddsj; | |
| 992 | + } | |
| 993 | + | |
| 994 | + public int getYys() { | |
| 995 | + return yys; | |
| 996 | + } | |
| 997 | + | |
| 998 | + public void setYys(int yys) { | |
| 999 | + this.yys = yys; | |
| 1000 | + } | |
| 1001 | + | |
| 1002 | + public String getClZbh() { | |
| 1003 | + return clZbh; | |
| 1004 | + } | |
| 1005 | + | |
| 1006 | + public void setClZbh(String clZbh) { | |
| 1007 | + this.clZbh = clZbh; | |
| 1008 | + } | |
| 1009 | + | |
| 1010 | + public String getCph() { | |
| 1011 | + cph = BasicData.nbbmCompanyPlateMap.get(clZbh); | |
| 1012 | + if (cph == null) { | |
| 1013 | + cph = ""; | |
| 1014 | + } | |
| 1015 | + return cph; | |
| 1016 | + } | |
| 1017 | + | |
| 1018 | + public void setCph(String cph) { | |
| 1019 | + this.cph = cph; | |
| 1020 | + } | |
| 1021 | + | |
| 1022 | + public String getColor() { | |
| 1023 | + return color; | |
| 1024 | + } | |
| 1025 | + | |
| 1026 | + public void setColor(String color) { | |
| 1027 | + this.color = color; | |
| 1028 | + } | |
| 1029 | + | |
| 1030 | + public String getJsy() { | |
| 1031 | + return jsy; | |
| 1032 | + } | |
| 1033 | + | |
| 1034 | + public void setJsy(String jsy) { | |
| 1035 | + this.jsy = jsy; | |
| 1036 | + } | |
| 1037 | + | |
| 1038 | + public String getJsydh() { | |
| 1039 | + return jsydh; | |
| 1040 | + } | |
| 1041 | + | |
| 1042 | + public void setJsydh(String jsydh) { | |
| 1043 | + this.jsydh = jsydh; | |
| 1044 | + } | |
| 1045 | + | |
| 1046 | + public int getPj() { | |
| 1047 | + return pj; | |
| 1048 | + } | |
| 1049 | + | |
| 1050 | + public void setPj(int pj) { | |
| 1051 | + this.pj = pj; | |
| 1052 | + } | |
| 1053 | + } | |
| 1054 | +} | ... | ... |
src/main/java/com/bsth/controller/report/ReportController.java
| ... | ... | @@ -304,6 +304,12 @@ public class ReportController { |
| 304 | 304 | return service.userList(map); |
| 305 | 305 | } |
| 306 | 306 | |
| 307 | + @RequestMapping(value="/countMileageSum") | |
| 308 | + public List<Map<String,Object>> countMileageSum(@RequestParam Map<String, Object> map){ | |
| 309 | + | |
| 310 | + return service.countMileageSum(map); | |
| 311 | + } | |
| 312 | + | |
| 307 | 313 | @RequestMapping(value="/countLineMileage") |
| 308 | 314 | public List<Map<String,Object>> countLineMileage(@RequestParam Map<String, Object> map){ |
| 309 | 315 | ... | ... |
src/main/java/com/bsth/controller/schedule/core/legacy/EmployeeConfigInfoController.java
| ... | ... | @@ -61,13 +61,10 @@ public class EmployeeConfigInfoController extends BController<EmployeeConfigInfo |
| 61 | 61 | } |
| 62 | 62 | |
| 63 | 63 | @RequestMapping(value = "/validate_get_destroy_info", method = RequestMethod.GET) |
| 64 | - public Map<String, Object> validate_get_destroy_info(HttpServletRequest request) { | |
| 65 | - HttpSession session = request.getSession(); | |
| 66 | - List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS); | |
| 67 | - | |
| 64 | + public Map<String, Object> validate_get_destroy_info() { | |
| 68 | 65 | Map<String, Object> rtn = new HashMap<>(); |
| 69 | 66 | try { |
| 70 | - rtn.put("data", this.employeeConfigInfoService.validate_get_destroy_info(cmyAuths)); | |
| 67 | + rtn.put("data", this.employeeConfigInfoService.validate_get_destory_info()); | |
| 71 | 68 | rtn.put("status", ResponseCode.SUCCESS); |
| 72 | 69 | } catch (Exception exp) { |
| 73 | 70 | rtn.put("status", ResponseCode.ERROR); |
| ... | ... | @@ -77,21 +74,17 @@ public class EmployeeConfigInfoController extends BController<EmployeeConfigInfo |
| 77 | 74 | return rtn; |
| 78 | 75 | } |
| 79 | 76 | @GetMapping(value = "/validate_get_destroy_info/download") |
| 80 | - public void exportValidateGetDestroyInfo( | |
| 81 | - HttpServletRequest request, | |
| 82 | - HttpServletResponse response) throws Exception { | |
| 77 | + public void exportValidateGetDestroyInfo(HttpServletResponse response) throws Exception { | |
| 83 | 78 | // 流输出导出文件 |
| 84 | 79 | response.setHeader("content-type", "application/octet-stream"); |
| 85 | - response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("人员配置停用信息.txt", "UTF-8")); | |
| 80 | + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("排班人员停用信息.txt", "UTF-8")); | |
| 86 | 81 | response.setContentType("application/octet-stream"); |
| 87 | 82 | |
| 88 | 83 | try ( |
| 89 | 84 | OutputStream os = response.getOutputStream(); |
| 90 | 85 | PrintWriter printWriter = new PrintWriter(os); |
| 91 | 86 | ) { |
| 92 | - HttpSession session = request.getSession(); | |
| 93 | - List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS); | |
| 94 | - List<String> infos = this.employeeConfigInfoService.validate_get_destroy_info(cmyAuths); | |
| 87 | + List<String> infos = this.employeeConfigInfoService.validate_get_destory_info(); | |
| 95 | 88 | for (String info : infos) { |
| 96 | 89 | printWriter.println(info); |
| 97 | 90 | } | ... | ... |
src/main/java/com/bsth/controller/schedule/core/legacy/TTInfoDetailController.java
| ... | ... | @@ -10,6 +10,7 @@ import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData; |
| 10 | 10 | import com.bsth.service.schedule.timetable.ExcelFormatType; |
| 11 | 11 | import com.bsth.service.schedule.utils.DataToolsFile; |
| 12 | 12 | import com.bsth.service.schedule.utils.DataToolsFileType; |
| 13 | +import com.bsth.service.schedule.utils.MyHttpUtils; | |
| 13 | 14 | import org.springframework.beans.factory.annotation.Autowired; |
| 14 | 15 | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
| 15 | 16 | import org.springframework.web.bind.annotation.*; |
| ... | ... | @@ -118,12 +119,12 @@ public class TTInfoDetailController extends BController<TTInfoDetail, Long> { |
| 118 | 119 | } |
| 119 | 120 | return rtn; |
| 120 | 121 | } |
| 121 | - | |
| 122 | + | |
| 122 | 123 | /** |
| 123 | 124 | * 时刻表明细批量插入 |
| 124 | - * | |
| 125 | + * | |
| 125 | 126 | * @param entities |
| 126 | - * | |
| 127 | + * | |
| 127 | 128 | * @return |
| 128 | 129 | */ |
| 129 | 130 | @RequestMapping(value = "/skbDetailMxSave" ,method = RequestMethod.POST) |
| ... | ... | @@ -131,6 +132,60 @@ public class TTInfoDetailController extends BController<TTInfoDetail, Long> { |
| 131 | 132 | return ttInfoDetailService.skbDetailMxSave(entities); |
| 132 | 133 | } |
| 133 | 134 | |
| 135 | + // 导出预览视图数据 | |
| 136 | + @GetMapping(value = "/exportPvInfo/{id}") | |
| 137 | + public void exportPvInfo(@PathVariable("id") Long ttInfoId, HttpServletResponse response) throws Exception { | |
| 138 | + DataToolsFile dataToolsFile = this.ttInfoDetailService.exportPvInfo(ttInfoId); | |
| 139 | + MyHttpUtils.responseStreamFile(response, dataToolsFile.getFile()); | |
| 140 | + } | |
| 141 | + // 添加路牌 | |
| 142 | + @GetMapping(value = "/addLp/{ttInfoId}/{lpId}") | |
| 143 | + public Map<String, Object> addLp(@PathVariable("ttInfoId") Long ttInfoId, @PathVariable("lpId") Long lpId) { | |
| 144 | + Map<String, Object> rtn = new HashMap<>(); | |
| 145 | + try { | |
| 146 | + this.ttInfoDetailService.addLp(ttInfoId, lpId); | |
| 147 | + rtn.put("status", ResponseCode.SUCCESS); | |
| 148 | + rtn.put("data", "添加路牌成功!"); | |
| 149 | + } catch (Exception exp) { | |
| 150 | + exp.printStackTrace(); | |
| 151 | + rtn.put("status", ResponseCode.ERROR); | |
| 152 | + rtn.put("msg", "添加路牌失败:" + exp.getMessage()); | |
| 153 | + } | |
| 154 | + return rtn; | |
| 155 | + } | |
| 156 | + // 删除路牌 | |
| 157 | + @GetMapping(value = "/removeLp/{ttInfoId}/{lpId}") | |
| 158 | + public Map<String, Object> removeLp(@PathVariable("ttInfoId") Long ttInfoId, @PathVariable("lpId") Long lpId) { | |
| 159 | + Map<String, Object> rtn = new HashMap<>(); | |
| 160 | + try { | |
| 161 | + this.ttInfoDetailService.removeBcByLp(ttInfoId, lpId); | |
| 162 | + rtn.put("status", ResponseCode.SUCCESS); | |
| 163 | + rtn.put("data", "删除路牌成功!"); | |
| 164 | + } catch (Exception exp) { | |
| 165 | + exp.printStackTrace(); | |
| 166 | + rtn.put("status", ResponseCode.ERROR); | |
| 167 | + rtn.put("msg", "删除路牌失败:" + exp.getMessage()); | |
| 168 | + } | |
| 169 | + return rtn; | |
| 170 | + } | |
| 171 | + // 调换路牌 | |
| 172 | + @GetMapping(value = "/switchLp/{ttInfoId}/{lpAId}/{lpBId}") | |
| 173 | + public Map<String, Object> switchLp(@PathVariable("ttInfoId") Long ttInfoId, | |
| 174 | + @PathVariable("lpAId") Long lpAId, | |
| 175 | + @PathVariable("lpBId") Long lpBId) { | |
| 176 | + Map<String, Object> rtn = new HashMap<>(); | |
| 177 | + try { | |
| 178 | + this.ttInfoDetailService.switchBcByLp(ttInfoId, lpAId, lpBId); | |
| 179 | + rtn.put("status", ResponseCode.SUCCESS); | |
| 180 | + rtn.put("data", "调换路牌成功!"); | |
| 181 | + } catch (Exception exp) { | |
| 182 | + exp.printStackTrace(); | |
| 183 | + rtn.put("status", ResponseCode.ERROR); | |
| 184 | + rtn.put("msg", "调换路牌失败:" + exp.getMessage()); | |
| 185 | + } | |
| 186 | + return rtn; | |
| 187 | + } | |
| 188 | + | |
| 134 | 189 | |
| 135 | 190 | @RequestMapping(value = "/exportDTDFile/{type}", method = RequestMethod.POST) |
| 136 | 191 | public void exportFile( | ... | ... |
src/main/java/com/bsth/controller/schedule/datasync/VehicleDataSyncController.java
| ... | ... | @@ -6,13 +6,12 @@ import com.bsth.controller.schedule.datasync.request.VehicleDataSyncTaskRequest; |
| 6 | 6 | import com.bsth.entity.schedule.datasync.VehicleDataSyncTask; |
| 7 | 7 | import com.bsth.entity.schedule.datasync.VehicleDataSyncTaskTypeEnum; |
| 8 | 8 | import com.bsth.service.schedule.datasync.VehicleDataSyncTaskService; |
| 9 | -import com.bsth.service.schedule.utils.MyStringUtils; | |
| 9 | +import com.bsth.service.schedule.utils.MyHttpUtils; | |
| 10 | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| 11 | 11 | import org.springframework.web.bind.annotation.*; |
| 12 | 12 | |
| 13 | 13 | import javax.servlet.http.HttpServletResponse; |
| 14 | -import java.io.*; | |
| 15 | -import java.net.URLEncoder; | |
| 14 | +import java.io.File; | |
| 16 | 15 | import java.util.Date; |
| 17 | 16 | |
| 18 | 17 | @RestController |
| ... | ... | @@ -107,38 +106,11 @@ public class VehicleDataSyncController extends BController<VehicleDataSyncTask, |
| 107 | 106 | } |
| 108 | 107 | |
| 109 | 108 | try { |
| 110 | - responseStreamFile(response, file); | |
| 109 | + MyHttpUtils.responseStreamFile(response, file); | |
| 111 | 110 | } catch (Exception exp) { |
| 112 | 111 | exp.printStackTrace(); |
| 113 | 112 | throw new RuntimeException("获取同步日志文件错误:" + exp.getMessage()); |
| 114 | 113 | } |
| 115 | 114 | } |
| 116 | 115 | |
| 117 | - // 流输出文件 | |
| 118 | - private void responseStreamFile(HttpServletResponse response, File file) throws IOException { | |
| 119 | - // 流输出导出文件 | |
| 120 | - response.setHeader("content-type", "application/octet-stream"); | |
| 121 | - String fileName = file.getName(); | |
| 122 | - if (MyStringUtils.isContainChinese(fileName)) { | |
| 123 | - response.setHeader("Content-Disposition", "attachment; filename*=" + URLEncoder.encode(fileName, "UTF-8")); | |
| 124 | - } else { | |
| 125 | - response.setHeader("Content-Disposition", "attachment; filename=" + fileName); | |
| 126 | - } | |
| 127 | - response.setContentType("application/octet-stream"); | |
| 128 | - | |
| 129 | - try ( | |
| 130 | - OutputStream os = response.getOutputStream(); | |
| 131 | - BufferedOutputStream bos = new BufferedOutputStream(os); | |
| 132 | - InputStream is = new FileInputStream(file); | |
| 133 | - BufferedInputStream bis = new BufferedInputStream(is) | |
| 134 | - ) { | |
| 135 | - int length; | |
| 136 | - byte[] temp = new byte[1024 * 10]; | |
| 137 | - while ((length = bis.read(temp)) != -1) { | |
| 138 | - bos.write(temp, 0, length); | |
| 139 | - } | |
| 140 | - bos.flush(); | |
| 141 | - } | |
| 142 | - } | |
| 143 | - | |
| 144 | 116 | } | ... | ... |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| ... | ... | @@ -25,6 +25,7 @@ import org.joda.time.format.DateTimeFormatter; |
| 25 | 25 | import org.slf4j.Logger; |
| 26 | 26 | import org.slf4j.LoggerFactory; |
| 27 | 27 | import org.springframework.beans.factory.annotation.Autowired; |
| 28 | +import org.springframework.beans.factory.annotation.Value; | |
| 28 | 29 | import org.springframework.dao.DataIntegrityViolationException; |
| 29 | 30 | import org.springframework.jdbc.core.BatchPreparedStatementSetter; |
| 30 | 31 | import org.springframework.jdbc.core.JdbcTemplate; |
| ... | ... | @@ -52,6 +53,9 @@ import java.util.concurrent.ConcurrentMap; |
| 52 | 53 | @Component |
| 53 | 54 | public class DayOfSchedule { |
| 54 | 55 | |
| 56 | + @Value("${ms.fl.generate}") | |
| 57 | + private boolean generate; | |
| 58 | + | |
| 55 | 59 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 56 | 60 | |
| 57 | 61 | //按线路分组的 “原始计划” 排班数据 |
| ... | ... | @@ -203,7 +207,9 @@ public class DayOfSchedule { |
| 203 | 207 | putAll(list); |
| 204 | 208 | |
| 205 | 209 | //标记首末班 |
| 206 | - FirstAndLastHandler.marks(list); | |
| 210 | + if (generate) { | |
| 211 | + FirstAndLastHandler.marks(list); | |
| 212 | + } | |
| 207 | 213 | |
| 208 | 214 | Set<String> lps = searchAllLP(list); |
| 209 | 215 | for (String lp : lps) { | ... | ... |
src/main/java/com/bsth/entity/calc/CalcStatistics.java
| 1 | -package com.bsth.entity.calc; | |
| 2 | - | |
| 3 | -import java.util.Date; | |
| 4 | - | |
| 5 | -import javax.persistence.*; | |
| 6 | - | |
| 7 | -@Entity | |
| 8 | -@Table(name = "calc_statistics") | |
| 9 | -public class CalcStatistics { | |
| 10 | - /* 主键*/ | |
| 11 | - @Id | |
| 12 | - @GeneratedValue(strategy = GenerationType.IDENTITY) | |
| 13 | - private Long id; | |
| 14 | - /* 日期*/ | |
| 15 | - private Date date; | |
| 16 | - /* 日期字符串*/ | |
| 17 | - private String dateStr; | |
| 18 | - /* 线路编码*/ | |
| 19 | - private String xl; | |
| 20 | - /* 线路名称*/ | |
| 21 | - private String xlName; | |
| 22 | - /* 公司代码*/ | |
| 23 | - private String gsdm; | |
| 24 | - /* 分公司代码*/ | |
| 25 | - private String fgsdm; | |
| 26 | - /* 计划总公里*/ | |
| 27 | - private Double jhzlc; | |
| 28 | - /* 计划营运公里*/ | |
| 29 | - private Double jhyylc; | |
| 30 | - /* 计划空驶公里*/ | |
| 31 | - private Double jhkslc; | |
| 32 | - /* 实际总公里*/ | |
| 33 | - private Double sjzlc; | |
| 34 | - /* 实际营运公里*/ | |
| 35 | - private Double sjyylc; | |
| 36 | - /* 实际空驶公里*/ | |
| 37 | - private Double sjkslc; | |
| 38 | - /* 少驶公里*/ | |
| 39 | - private Double sslc; | |
| 40 | - /* 少驶班次*/ | |
| 41 | - private int ssbc; | |
| 42 | - /* 路阻公里*/ | |
| 43 | - private Double lzlc; | |
| 44 | - /* 吊慢公里*/ | |
| 45 | - private Double dmlc; | |
| 46 | - /* 故障公里*/ | |
| 47 | - private Double gzlc; | |
| 48 | - /* 纠纷公里*/ | |
| 49 | - private Double jflc; | |
| 50 | - /* 肇事公里*/ | |
| 51 | - private Double zslc; | |
| 52 | - /* 缺人公里*/ | |
| 53 | - private Double qrlc; | |
| 54 | - /* 缺车公里*/ | |
| 55 | - private Double qclc; | |
| 56 | - /* 客稀公里*/ | |
| 57 | - private Double kxlc; | |
| 58 | - /* 气候公里*/ | |
| 59 | - private Double qhlc; | |
| 60 | - /* 援外公里*/ | |
| 61 | - private Double ywlc; | |
| 62 | - /* 其他公里*/ | |
| 63 | - private Double qtlc; | |
| 64 | - /* 临加公里*/ | |
| 65 | - private Double ljlc; | |
| 66 | - /* 临加空驶公里*/ | |
| 67 | - private Double ljkslc; | |
| 68 | - /* 计划班次*/ | |
| 69 | - private int jhbcq; | |
| 70 | - /* 计划班次(早高峰)*/ | |
| 71 | - private int jhbcz; | |
| 72 | - /* 计划班次(晚高峰)*/ | |
| 73 | - private int jhbcw; | |
| 74 | - /* 实际班次*/ | |
| 75 | - private int sjbcq; | |
| 76 | - /* 实际班次(早高峰)*/ | |
| 77 | - private int sjbcz; | |
| 78 | - /* 实际班次(晚高峰)*/ | |
| 79 | - private int sjbcw; | |
| 80 | - /* 临加班次*/ | |
| 81 | - private int ljbcq; | |
| 82 | - /* 临加班次(早高峰)*/ | |
| 83 | - private int ljbcz; | |
| 84 | - /* 临加班次(晚高峰)*/ | |
| 85 | - private int ljbcw; | |
| 86 | - /* 放站班次*/ | |
| 87 | - private int fzbcq; | |
| 88 | - /* 放站班次(早高峰)*/ | |
| 89 | - private int fzbcz; | |
| 90 | - /* 放站班次(晚高峰)*/ | |
| 91 | - private int fzbcw; | |
| 92 | - /* 调头班次*/ | |
| 93 | - private int dtbcq; | |
| 94 | - /* 调头班次(早高峰)*/ | |
| 95 | - private int dtbcz; | |
| 96 | - /* 调头班次(晚高峰)*/ | |
| 97 | - private int dtbcw; | |
| 98 | - /* 大间隔次数*/ | |
| 99 | - private int djgq; | |
| 100 | - /* 大间隔次数(早高峰)*/ | |
| 101 | - private int djgz; | |
| 102 | - /* 大间隔次数(晚高峰)*/ | |
| 103 | - private int djgw; | |
| 104 | - /* 最大大间隔时间*/ | |
| 105 | - private int djgsj; | |
| 106 | - /* 备注*/ | |
| 107 | - private String remark; | |
| 108 | - /*分公司名字*/ | |
| 109 | - @Transient | |
| 110 | - private String fgsName; | |
| 111 | - public Long getId() { | |
| 112 | - return id; | |
| 113 | - } | |
| 114 | - public void setId(Long id) { | |
| 115 | - this.id = id; | |
| 116 | - } | |
| 117 | - public Date getDate() { | |
| 118 | - return date; | |
| 119 | - } | |
| 120 | - public void setDate(Date date) { | |
| 121 | - this.date = date; | |
| 122 | - } | |
| 123 | - public String getDateStr() { | |
| 124 | - return dateStr; | |
| 125 | - } | |
| 126 | - public void setDateStr(String dateStr) { | |
| 127 | - this.dateStr = dateStr; | |
| 128 | - } | |
| 129 | - public String getXl() { | |
| 130 | - return xl; | |
| 131 | - } | |
| 132 | - public void setXl(String xl) { | |
| 133 | - this.xl = xl; | |
| 134 | - } | |
| 135 | - public String getXlName() { | |
| 136 | - return xlName; | |
| 137 | - } | |
| 138 | - public void setXlName(String xlName) { | |
| 139 | - this.xlName = xlName; | |
| 140 | - } | |
| 141 | - public String getGsdm() { | |
| 142 | - return gsdm; | |
| 143 | - } | |
| 144 | - public void setGsdm(String gsdm) { | |
| 145 | - this.gsdm = gsdm; | |
| 146 | - } | |
| 147 | - public String getFgsdm() { | |
| 148 | - return fgsdm; | |
| 149 | - } | |
| 150 | - public void setFgsdm(String fgsdm) { | |
| 151 | - this.fgsdm = fgsdm; | |
| 152 | - } | |
| 153 | - public Double getJhzlc() { | |
| 154 | - return jhzlc; | |
| 155 | - } | |
| 156 | - public void setJhzlc(Double jhzlc) { | |
| 157 | - this.jhzlc = jhzlc; | |
| 158 | - } | |
| 159 | - public Double getJhyylc() { | |
| 160 | - return jhyylc; | |
| 161 | - } | |
| 162 | - public void setJhyylc(Double jhyylc) { | |
| 163 | - this.jhyylc = jhyylc; | |
| 164 | - } | |
| 165 | - public Double getJhkslc() { | |
| 166 | - return jhkslc; | |
| 167 | - } | |
| 168 | - public void setJhkslc(Double jhkslc) { | |
| 169 | - this.jhkslc = jhkslc; | |
| 170 | - } | |
| 171 | - public Double getSjzlc() { | |
| 172 | - return sjzlc; | |
| 173 | - } | |
| 174 | - public void setSjzlc(Double sjzlc) { | |
| 175 | - this.sjzlc = sjzlc; | |
| 176 | - } | |
| 177 | - public Double getSjyylc() { | |
| 178 | - return sjyylc; | |
| 179 | - } | |
| 180 | - public void setSjyylc(Double sjyylc) { | |
| 181 | - this.sjyylc = sjyylc; | |
| 182 | - } | |
| 183 | - public Double getSjkslc() { | |
| 184 | - return sjkslc; | |
| 185 | - } | |
| 186 | - public void setSjkslc(Double sjkslc) { | |
| 187 | - this.sjkslc = sjkslc; | |
| 188 | - } | |
| 189 | - public Double getSslc() { | |
| 190 | - return sslc; | |
| 191 | - } | |
| 192 | - public void setSslc(Double sslc) { | |
| 193 | - this.sslc = sslc; | |
| 194 | - } | |
| 195 | - public int getSsbc() { | |
| 196 | - return ssbc; | |
| 197 | - } | |
| 198 | - public void setSsbc(int ssbc) { | |
| 199 | - this.ssbc = ssbc; | |
| 200 | - } | |
| 201 | - public Double getLzlc() { | |
| 202 | - return lzlc; | |
| 203 | - } | |
| 204 | - public void setLzlc(Double lzlc) { | |
| 205 | - this.lzlc = lzlc; | |
| 206 | - } | |
| 207 | - public Double getDmlc() { | |
| 208 | - return dmlc; | |
| 209 | - } | |
| 210 | - public void setDmlc(Double dmlc) { | |
| 211 | - this.dmlc = dmlc; | |
| 212 | - } | |
| 213 | - public Double getGzlc() { | |
| 214 | - return gzlc; | |
| 215 | - } | |
| 216 | - public void setGzlc(Double gzlc) { | |
| 217 | - this.gzlc = gzlc; | |
| 218 | - } | |
| 219 | - public Double getJflc() { | |
| 220 | - return jflc; | |
| 221 | - } | |
| 222 | - public void setJflc(Double jflc) { | |
| 223 | - this.jflc = jflc; | |
| 224 | - } | |
| 225 | - public Double getZslc() { | |
| 226 | - return zslc; | |
| 227 | - } | |
| 228 | - public void setZslc(Double zslc) { | |
| 229 | - this.zslc = zslc; | |
| 230 | - } | |
| 231 | - public Double getQrlc() { | |
| 232 | - return qrlc; | |
| 233 | - } | |
| 234 | - public void setQrlc(Double qrlc) { | |
| 235 | - this.qrlc = qrlc; | |
| 236 | - } | |
| 237 | - public Double getQclc() { | |
| 238 | - return qclc; | |
| 239 | - } | |
| 240 | - public void setQclc(Double qclc) { | |
| 241 | - this.qclc = qclc; | |
| 242 | - } | |
| 243 | - public Double getKxlc() { | |
| 244 | - return kxlc; | |
| 245 | - } | |
| 246 | - public void setKxlc(Double kxlc) { | |
| 247 | - this.kxlc = kxlc; | |
| 248 | - } | |
| 249 | - public Double getQhlc() { | |
| 250 | - return qhlc; | |
| 251 | - } | |
| 252 | - public void setQhlc(Double qhlc) { | |
| 253 | - this.qhlc = qhlc; | |
| 254 | - } | |
| 255 | - public Double getYwlc() { | |
| 256 | - return ywlc; | |
| 257 | - } | |
| 258 | - public void setYwlc(Double ywlc) { | |
| 259 | - this.ywlc = ywlc; | |
| 260 | - } | |
| 261 | - public Double getQtlc() { | |
| 262 | - return qtlc; | |
| 263 | - } | |
| 264 | - public void setQtlc(Double qtlc) { | |
| 265 | - this.qtlc = qtlc; | |
| 266 | - } | |
| 267 | - public Double getLjlc() { | |
| 268 | - return ljlc; | |
| 269 | - } | |
| 270 | - public void setLjlc(Double ljlc) { | |
| 271 | - this.ljlc = ljlc; | |
| 272 | - } | |
| 273 | - public Double getLjkslc() { | |
| 274 | - return ljkslc; | |
| 275 | - } | |
| 276 | - public void setLjkslc(Double ljkslc) { | |
| 277 | - this.ljkslc = ljkslc; | |
| 278 | - } | |
| 279 | - public int getJhbcq() { | |
| 280 | - return jhbcq; | |
| 281 | - } | |
| 282 | - public void setJhbcq(int jhbcq) { | |
| 283 | - this.jhbcq = jhbcq; | |
| 284 | - } | |
| 285 | - public int getJhbcz() { | |
| 286 | - return jhbcz; | |
| 287 | - } | |
| 288 | - public void setJhbcz(int jhbcz) { | |
| 289 | - this.jhbcz = jhbcz; | |
| 290 | - } | |
| 291 | - public int getJhbcw() { | |
| 292 | - return jhbcw; | |
| 293 | - } | |
| 294 | - public void setJhbcw(int jhbcw) { | |
| 295 | - this.jhbcw = jhbcw; | |
| 296 | - } | |
| 297 | - public int getSjbcq() { | |
| 298 | - return sjbcq; | |
| 299 | - } | |
| 300 | - public void setSjbcq(int sjbcq) { | |
| 301 | - this.sjbcq = sjbcq; | |
| 302 | - } | |
| 303 | - public int getSjbcz() { | |
| 304 | - return sjbcz; | |
| 305 | - } | |
| 306 | - public void setSjbcz(int sjbcz) { | |
| 307 | - this.sjbcz = sjbcz; | |
| 308 | - } | |
| 309 | - public int getSjbcw() { | |
| 310 | - return sjbcw; | |
| 311 | - } | |
| 312 | - public void setSjbcw(int sjbcw) { | |
| 313 | - this.sjbcw = sjbcw; | |
| 314 | - } | |
| 315 | - public int getLjbcq() { | |
| 316 | - return ljbcq; | |
| 317 | - } | |
| 318 | - public void setLjbcq(int ljbcq) { | |
| 319 | - this.ljbcq = ljbcq; | |
| 320 | - } | |
| 321 | - public int getLjbcz() { | |
| 322 | - return ljbcz; | |
| 323 | - } | |
| 324 | - public void setLjbcz(int ljbcz) { | |
| 325 | - this.ljbcz = ljbcz; | |
| 326 | - } | |
| 327 | - public int getLjbcw() { | |
| 328 | - return ljbcw; | |
| 329 | - } | |
| 330 | - public void setLjbcw(int ljbcw) { | |
| 331 | - this.ljbcw = ljbcw; | |
| 332 | - } | |
| 333 | - public int getFzbcq() { | |
| 334 | - return fzbcq; | |
| 335 | - } | |
| 336 | - public void setFzbcq(int fzbcq) { | |
| 337 | - this.fzbcq = fzbcq; | |
| 338 | - } | |
| 339 | - public int getFzbcz() { | |
| 340 | - return fzbcz; | |
| 341 | - } | |
| 342 | - public void setFzbcz(int fzbcz) { | |
| 343 | - this.fzbcz = fzbcz; | |
| 344 | - } | |
| 345 | - public int getFzbcw() { | |
| 346 | - return fzbcw; | |
| 347 | - } | |
| 348 | - public void setFzbcw(int fzbcw) { | |
| 349 | - this.fzbcw = fzbcw; | |
| 350 | - } | |
| 351 | - public int getDtbcq() { | |
| 352 | - return dtbcq; | |
| 353 | - } | |
| 354 | - public void setDtbcq(int dtbcq) { | |
| 355 | - this.dtbcq = dtbcq; | |
| 356 | - } | |
| 357 | - public int getDtbcz() { | |
| 358 | - return dtbcz; | |
| 359 | - } | |
| 360 | - public void setDtbcz(int dtbcz) { | |
| 361 | - this.dtbcz = dtbcz; | |
| 362 | - } | |
| 363 | - public int getDtbcw() { | |
| 364 | - return dtbcw; | |
| 365 | - } | |
| 366 | - public void setDtbcw(int dtbcw) { | |
| 367 | - this.dtbcw = dtbcw; | |
| 368 | - } | |
| 369 | - public int getDjgq() { | |
| 370 | - return djgq; | |
| 371 | - } | |
| 372 | - public void setDjgq(int djgq) { | |
| 373 | - this.djgq = djgq; | |
| 374 | - } | |
| 375 | - public int getDjgz() { | |
| 376 | - return djgz; | |
| 377 | - } | |
| 378 | - public void setDjgz(int djgz) { | |
| 379 | - this.djgz = djgz; | |
| 380 | - } | |
| 381 | - public int getDjgw() { | |
| 382 | - return djgw; | |
| 383 | - } | |
| 384 | - public void setDjgw(int djgw) { | |
| 385 | - this.djgw = djgw; | |
| 386 | - } | |
| 387 | - public int getDjgsj() { | |
| 388 | - return djgsj; | |
| 389 | - } | |
| 390 | - public void setDjgsj(int djgsj) { | |
| 391 | - this.djgsj = djgsj; | |
| 392 | - } | |
| 393 | - public String getRemark() { | |
| 394 | - return remark; | |
| 395 | - } | |
| 396 | - public void setRemark(String remark) { | |
| 397 | - this.remark = remark; | |
| 398 | - } | |
| 399 | - public String getFgsName() { | |
| 400 | - return fgsName; | |
| 401 | - } | |
| 402 | - public void setFgsName(String fgsName) { | |
| 403 | - this.fgsName = fgsName; | |
| 404 | - } | |
| 405 | - | |
| 406 | -} | |
| 1 | +package com.bsth.entity.calc; | |
| 2 | + | |
| 3 | +import java.util.Date; | |
| 4 | + | |
| 5 | +import javax.persistence.*; | |
| 6 | + | |
| 7 | +@Entity | |
| 8 | +@Table(name = "calc_statistics") | |
| 9 | +public class CalcStatistics { | |
| 10 | + /* 主键*/ | |
| 11 | + @Id | |
| 12 | + @GeneratedValue(strategy = GenerationType.IDENTITY) | |
| 13 | + private Long id; | |
| 14 | + /* 日期*/ | |
| 15 | + private Date date; | |
| 16 | + /* 日期字符串*/ | |
| 17 | + private String dateStr; | |
| 18 | + /* 线路编码*/ | |
| 19 | + private String xl; | |
| 20 | + /* 线路名称*/ | |
| 21 | + private String xlName; | |
| 22 | + /* 公司代码*/ | |
| 23 | + private String gsdm; | |
| 24 | + /* 分公司代码*/ | |
| 25 | + private String fgsdm; | |
| 26 | + /* 计划总公里*/ | |
| 27 | + private Double jhzlc; | |
| 28 | + /* 计划营运公里*/ | |
| 29 | + private Double jhyylc; | |
| 30 | + /* 计划空驶公里*/ | |
| 31 | + private Double jhkslc; | |
| 32 | + /* 实际总公里*/ | |
| 33 | + private Double sjzlc; | |
| 34 | + /* 实际营运公里*/ | |
| 35 | + private Double sjyylc; | |
| 36 | + /* 实际空驶公里*/ | |
| 37 | + private Double sjkslc; | |
| 38 | + /* 少驶公里*/ | |
| 39 | + private Double sslc; | |
| 40 | + /* 少驶班次*/ | |
| 41 | + private int ssbc; | |
| 42 | + /* 路阻公里*/ | |
| 43 | + private Double lzlc; | |
| 44 | + /* 吊慢公里*/ | |
| 45 | + private Double dmlc; | |
| 46 | + /* 故障公里*/ | |
| 47 | + private Double gzlc; | |
| 48 | + /* 纠纷公里*/ | |
| 49 | + private Double jflc; | |
| 50 | + /* 肇事公里*/ | |
| 51 | + private Double zslc; | |
| 52 | + /* 缺人公里*/ | |
| 53 | + private Double qrlc; | |
| 54 | + /* 缺车公里*/ | |
| 55 | + private Double qclc; | |
| 56 | + /* 客稀公里*/ | |
| 57 | + private Double kxlc; | |
| 58 | + /* 气候公里*/ | |
| 59 | + private Double qhlc; | |
| 60 | + /* 援外公里*/ | |
| 61 | + private Double ywlc; | |
| 62 | + /* 其他公里*/ | |
| 63 | + private Double qtlc; | |
| 64 | + /* 临加公里*/ | |
| 65 | + private Double ljlc; | |
| 66 | + /* 临加空驶公里*/ | |
| 67 | + private Double ljkslc; | |
| 68 | + /* 计划班次*/ | |
| 69 | + private int jhbcq; | |
| 70 | + /* 计划班次(早高峰)*/ | |
| 71 | + private int jhbcz; | |
| 72 | + /* 计划班次(晚高峰)*/ | |
| 73 | + private int jhbcw; | |
| 74 | + /* 实际班次*/ | |
| 75 | + private int sjbcq; | |
| 76 | + /* 实际班次(早高峰)*/ | |
| 77 | + private int sjbcz; | |
| 78 | + /* 实际班次(晚高峰)*/ | |
| 79 | + private int sjbcw; | |
| 80 | + /* 临加班次*/ | |
| 81 | + private int ljbcq; | |
| 82 | + /* 临加班次(早高峰)*/ | |
| 83 | + private int ljbcz; | |
| 84 | + /* 临加班次(晚高峰)*/ | |
| 85 | + private int ljbcw; | |
| 86 | + /* 放站班次*/ | |
| 87 | + private int fzbcq; | |
| 88 | + /* 放站班次(早高峰)*/ | |
| 89 | + private int fzbcz; | |
| 90 | + /* 放站班次(晚高峰)*/ | |
| 91 | + private int fzbcw; | |
| 92 | + /* 调头班次*/ | |
| 93 | + private int dtbcq; | |
| 94 | + /* 调头班次(早高峰)*/ | |
| 95 | + private int dtbcz; | |
| 96 | + /* 调头班次(晚高峰)*/ | |
| 97 | + private int dtbcw; | |
| 98 | + /* 大间隔次数*/ | |
| 99 | + private int djgq; | |
| 100 | + /* 大间隔次数(早高峰)*/ | |
| 101 | + private int djgz; | |
| 102 | + /* 大间隔次数(晚高峰)*/ | |
| 103 | + private int djgw; | |
| 104 | + /* 最大大间隔时间*/ | |
| 105 | + private int djgsj; | |
| 106 | + /* 备注*/ | |
| 107 | + private String remark; | |
| 108 | + | |
| 109 | + /*公司名字*/ | |
| 110 | + @Transient | |
| 111 | + private String gsName; | |
| 112 | + /*分公司名字*/ | |
| 113 | + @Transient | |
| 114 | + private String fgsName; | |
| 115 | + public Long getId() { | |
| 116 | + return id; | |
| 117 | + } | |
| 118 | + public void setId(Long id) { | |
| 119 | + this.id = id; | |
| 120 | + } | |
| 121 | + public Date getDate() { | |
| 122 | + return date; | |
| 123 | + } | |
| 124 | + public void setDate(Date date) { | |
| 125 | + this.date = date; | |
| 126 | + } | |
| 127 | + public String getDateStr() { | |
| 128 | + return dateStr; | |
| 129 | + } | |
| 130 | + public void setDateStr(String dateStr) { | |
| 131 | + this.dateStr = dateStr; | |
| 132 | + } | |
| 133 | + public String getXl() { | |
| 134 | + return xl; | |
| 135 | + } | |
| 136 | + public void setXl(String xl) { | |
| 137 | + this.xl = xl; | |
| 138 | + } | |
| 139 | + public String getXlName() { | |
| 140 | + return xlName; | |
| 141 | + } | |
| 142 | + public void setXlName(String xlName) { | |
| 143 | + this.xlName = xlName; | |
| 144 | + } | |
| 145 | + public String getGsdm() { | |
| 146 | + return gsdm; | |
| 147 | + } | |
| 148 | + public void setGsdm(String gsdm) { | |
| 149 | + this.gsdm = gsdm; | |
| 150 | + } | |
| 151 | + public String getFgsdm() { | |
| 152 | + return fgsdm; | |
| 153 | + } | |
| 154 | + public void setFgsdm(String fgsdm) { | |
| 155 | + this.fgsdm = fgsdm; | |
| 156 | + } | |
| 157 | + public Double getJhzlc() { | |
| 158 | + return jhzlc; | |
| 159 | + } | |
| 160 | + public void setJhzlc(Double jhzlc) { | |
| 161 | + this.jhzlc = jhzlc; | |
| 162 | + } | |
| 163 | + public Double getJhyylc() { | |
| 164 | + return jhyylc; | |
| 165 | + } | |
| 166 | + public void setJhyylc(Double jhyylc) { | |
| 167 | + this.jhyylc = jhyylc; | |
| 168 | + } | |
| 169 | + public Double getJhkslc() { | |
| 170 | + return jhkslc; | |
| 171 | + } | |
| 172 | + public void setJhkslc(Double jhkslc) { | |
| 173 | + this.jhkslc = jhkslc; | |
| 174 | + } | |
| 175 | + public Double getSjzlc() { | |
| 176 | + return sjzlc; | |
| 177 | + } | |
| 178 | + public void setSjzlc(Double sjzlc) { | |
| 179 | + this.sjzlc = sjzlc; | |
| 180 | + } | |
| 181 | + public Double getSjyylc() { | |
| 182 | + return sjyylc; | |
| 183 | + } | |
| 184 | + public void setSjyylc(Double sjyylc) { | |
| 185 | + this.sjyylc = sjyylc; | |
| 186 | + } | |
| 187 | + public Double getSjkslc() { | |
| 188 | + return sjkslc; | |
| 189 | + } | |
| 190 | + public void setSjkslc(Double sjkslc) { | |
| 191 | + this.sjkslc = sjkslc; | |
| 192 | + } | |
| 193 | + public Double getSslc() { | |
| 194 | + return sslc; | |
| 195 | + } | |
| 196 | + public void setSslc(Double sslc) { | |
| 197 | + this.sslc = sslc; | |
| 198 | + } | |
| 199 | + public int getSsbc() { | |
| 200 | + return ssbc; | |
| 201 | + } | |
| 202 | + public void setSsbc(int ssbc) { | |
| 203 | + this.ssbc = ssbc; | |
| 204 | + } | |
| 205 | + public Double getLzlc() { | |
| 206 | + return lzlc; | |
| 207 | + } | |
| 208 | + public void setLzlc(Double lzlc) { | |
| 209 | + this.lzlc = lzlc; | |
| 210 | + } | |
| 211 | + public Double getDmlc() { | |
| 212 | + return dmlc; | |
| 213 | + } | |
| 214 | + public void setDmlc(Double dmlc) { | |
| 215 | + this.dmlc = dmlc; | |
| 216 | + } | |
| 217 | + public Double getGzlc() { | |
| 218 | + return gzlc; | |
| 219 | + } | |
| 220 | + public void setGzlc(Double gzlc) { | |
| 221 | + this.gzlc = gzlc; | |
| 222 | + } | |
| 223 | + public Double getJflc() { | |
| 224 | + return jflc; | |
| 225 | + } | |
| 226 | + public void setJflc(Double jflc) { | |
| 227 | + this.jflc = jflc; | |
| 228 | + } | |
| 229 | + public Double getZslc() { | |
| 230 | + return zslc; | |
| 231 | + } | |
| 232 | + public void setZslc(Double zslc) { | |
| 233 | + this.zslc = zslc; | |
| 234 | + } | |
| 235 | + public Double getQrlc() { | |
| 236 | + return qrlc; | |
| 237 | + } | |
| 238 | + public void setQrlc(Double qrlc) { | |
| 239 | + this.qrlc = qrlc; | |
| 240 | + } | |
| 241 | + public Double getQclc() { | |
| 242 | + return qclc; | |
| 243 | + } | |
| 244 | + public void setQclc(Double qclc) { | |
| 245 | + this.qclc = qclc; | |
| 246 | + } | |
| 247 | + public Double getKxlc() { | |
| 248 | + return kxlc; | |
| 249 | + } | |
| 250 | + public void setKxlc(Double kxlc) { | |
| 251 | + this.kxlc = kxlc; | |
| 252 | + } | |
| 253 | + public Double getQhlc() { | |
| 254 | + return qhlc; | |
| 255 | + } | |
| 256 | + public void setQhlc(Double qhlc) { | |
| 257 | + this.qhlc = qhlc; | |
| 258 | + } | |
| 259 | + public Double getYwlc() { | |
| 260 | + return ywlc; | |
| 261 | + } | |
| 262 | + public void setYwlc(Double ywlc) { | |
| 263 | + this.ywlc = ywlc; | |
| 264 | + } | |
| 265 | + public Double getQtlc() { | |
| 266 | + return qtlc; | |
| 267 | + } | |
| 268 | + public void setQtlc(Double qtlc) { | |
| 269 | + this.qtlc = qtlc; | |
| 270 | + } | |
| 271 | + public Double getLjlc() { | |
| 272 | + return ljlc; | |
| 273 | + } | |
| 274 | + public void setLjlc(Double ljlc) { | |
| 275 | + this.ljlc = ljlc; | |
| 276 | + } | |
| 277 | + public Double getLjkslc() { | |
| 278 | + return ljkslc; | |
| 279 | + } | |
| 280 | + public void setLjkslc(Double ljkslc) { | |
| 281 | + this.ljkslc = ljkslc; | |
| 282 | + } | |
| 283 | + public int getJhbcq() { | |
| 284 | + return jhbcq; | |
| 285 | + } | |
| 286 | + public void setJhbcq(int jhbcq) { | |
| 287 | + this.jhbcq = jhbcq; | |
| 288 | + } | |
| 289 | + public int getJhbcz() { | |
| 290 | + return jhbcz; | |
| 291 | + } | |
| 292 | + public void setJhbcz(int jhbcz) { | |
| 293 | + this.jhbcz = jhbcz; | |
| 294 | + } | |
| 295 | + public int getJhbcw() { | |
| 296 | + return jhbcw; | |
| 297 | + } | |
| 298 | + public void setJhbcw(int jhbcw) { | |
| 299 | + this.jhbcw = jhbcw; | |
| 300 | + } | |
| 301 | + public int getSjbcq() { | |
| 302 | + return sjbcq; | |
| 303 | + } | |
| 304 | + public void setSjbcq(int sjbcq) { | |
| 305 | + this.sjbcq = sjbcq; | |
| 306 | + } | |
| 307 | + public int getSjbcz() { | |
| 308 | + return sjbcz; | |
| 309 | + } | |
| 310 | + public void setSjbcz(int sjbcz) { | |
| 311 | + this.sjbcz = sjbcz; | |
| 312 | + } | |
| 313 | + public int getSjbcw() { | |
| 314 | + return sjbcw; | |
| 315 | + } | |
| 316 | + public void setSjbcw(int sjbcw) { | |
| 317 | + this.sjbcw = sjbcw; | |
| 318 | + } | |
| 319 | + public int getLjbcq() { | |
| 320 | + return ljbcq; | |
| 321 | + } | |
| 322 | + public void setLjbcq(int ljbcq) { | |
| 323 | + this.ljbcq = ljbcq; | |
| 324 | + } | |
| 325 | + public int getLjbcz() { | |
| 326 | + return ljbcz; | |
| 327 | + } | |
| 328 | + public void setLjbcz(int ljbcz) { | |
| 329 | + this.ljbcz = ljbcz; | |
| 330 | + } | |
| 331 | + public int getLjbcw() { | |
| 332 | + return ljbcw; | |
| 333 | + } | |
| 334 | + public void setLjbcw(int ljbcw) { | |
| 335 | + this.ljbcw = ljbcw; | |
| 336 | + } | |
| 337 | + public int getFzbcq() { | |
| 338 | + return fzbcq; | |
| 339 | + } | |
| 340 | + public void setFzbcq(int fzbcq) { | |
| 341 | + this.fzbcq = fzbcq; | |
| 342 | + } | |
| 343 | + public int getFzbcz() { | |
| 344 | + return fzbcz; | |
| 345 | + } | |
| 346 | + public void setFzbcz(int fzbcz) { | |
| 347 | + this.fzbcz = fzbcz; | |
| 348 | + } | |
| 349 | + public int getFzbcw() { | |
| 350 | + return fzbcw; | |
| 351 | + } | |
| 352 | + public void setFzbcw(int fzbcw) { | |
| 353 | + this.fzbcw = fzbcw; | |
| 354 | + } | |
| 355 | + public int getDtbcq() { | |
| 356 | + return dtbcq; | |
| 357 | + } | |
| 358 | + public void setDtbcq(int dtbcq) { | |
| 359 | + this.dtbcq = dtbcq; | |
| 360 | + } | |
| 361 | + public int getDtbcz() { | |
| 362 | + return dtbcz; | |
| 363 | + } | |
| 364 | + public void setDtbcz(int dtbcz) { | |
| 365 | + this.dtbcz = dtbcz; | |
| 366 | + } | |
| 367 | + public int getDtbcw() { | |
| 368 | + return dtbcw; | |
| 369 | + } | |
| 370 | + public void setDtbcw(int dtbcw) { | |
| 371 | + this.dtbcw = dtbcw; | |
| 372 | + } | |
| 373 | + public int getDjgq() { | |
| 374 | + return djgq; | |
| 375 | + } | |
| 376 | + public void setDjgq(int djgq) { | |
| 377 | + this.djgq = djgq; | |
| 378 | + } | |
| 379 | + public int getDjgz() { | |
| 380 | + return djgz; | |
| 381 | + } | |
| 382 | + public void setDjgz(int djgz) { | |
| 383 | + this.djgz = djgz; | |
| 384 | + } | |
| 385 | + public int getDjgw() { | |
| 386 | + return djgw; | |
| 387 | + } | |
| 388 | + public void setDjgw(int djgw) { | |
| 389 | + this.djgw = djgw; | |
| 390 | + } | |
| 391 | + public int getDjgsj() { | |
| 392 | + return djgsj; | |
| 393 | + } | |
| 394 | + public void setDjgsj(int djgsj) { | |
| 395 | + this.djgsj = djgsj; | |
| 396 | + } | |
| 397 | + public String getRemark() { | |
| 398 | + return remark; | |
| 399 | + } | |
| 400 | + public void setRemark(String remark) { | |
| 401 | + this.remark = remark; | |
| 402 | + } | |
| 403 | + public String getGsName() { | |
| 404 | + return gsName; | |
| 405 | + } | |
| 406 | + public void setGsName(String gsName) { | |
| 407 | + this.gsName = gsName; | |
| 408 | + } | |
| 409 | + public String getFgsName() { | |
| 410 | + return fgsName; | |
| 411 | + } | |
| 412 | + public void setFgsName(String fgsName) { | |
| 413 | + this.fgsName = fgsName; | |
| 414 | + } | |
| 415 | + | |
| 416 | +} | ... | ... |
src/main/java/com/bsth/entity/schedule/EmployeeConfigInfo.java
| ... | ... | @@ -54,6 +54,22 @@ public class EmployeeConfigInfo extends BEntity implements Serializable { |
| 54 | 54 | @Column(nullable = false) |
| 55 | 55 | private Boolean isCancel = false; |
| 56 | 56 | |
| 57 | + /** 驾驶员停用信息 */ | |
| 58 | + @Formula("(" + | |
| 59 | + "(select IFNULL(t2.destroy, 0) from bsth_c_s_ecinfo t1 left join bsth_c_personnel t2 on t1.jsy = t2.id where t1.id = id)" + | |
| 60 | + "+" + | |
| 61 | + "(select IFNULL(t2.destroy, 0) from bsth_c_s_ecinfo t1 left join bsth_c_personnel t2 on t1.spy = t2.id where t1.id = id)" + | |
| 62 | + ")") | |
| 63 | + private Integer ryDestroyStatus; | |
| 64 | + | |
| 65 | + public Integer getRyDestroyStatus() { | |
| 66 | + return ryDestroyStatus; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public void setRyDestroyStatus(Integer ryDestroyStatus) { | |
| 70 | + this.ryDestroyStatus = ryDestroyStatus; | |
| 71 | + } | |
| 72 | + | |
| 57 | 73 | public EmployeeConfigInfo() {} |
| 58 | 74 | |
| 59 | 75 | public EmployeeConfigInfo(Object id, Object xlid, Object xlname, Object jsyid, Object spyid) { | ... | ... |
src/main/java/com/bsth/repository/calc/CalcIntervalRepository.java
| ... | ... | @@ -33,6 +33,12 @@ public interface CalcIntervalRepository extends BaseRepository<CalcInterval, Int |
| 33 | 33 | @Query(value="select DISTINCT c from CalcInterval c where c.xlBm = ?1 and c.date = ?2 and c.level like %?3% order by c.xlBm") |
| 34 | 34 | List<CalcInterval> selectByDateAndLine(String line,String date,String level); |
| 35 | 35 | |
| 36 | + //按照时间段统计 | |
| 37 | + @Query(value="select gsbm,fgsbm,xl_bm,SUM(djg_all) as djgAll,SUM(djg_gf) as djgGf,SUM(djg_dg) as djgDg,SUM(djg_zgf) as djgZgf,SUM(djg_wgf) as djgWgf,MAX(djg_time) as djgTime " | |
| 38 | + + " from bsth_c_calc_interval where date >=?1 and date <=?2 " | |
| 39 | + + " group by xl_bm,gsbm,fgsbm",nativeQuery=true) | |
| 40 | + List<Object[]> countByDate(String date,String date2); | |
| 41 | + | |
| 36 | 42 | //按照时间段,公司统计 |
| 37 | 43 | @Query(value="select gsbm,fgsbm,xl_bm,SUM(djg_all) as djgAll,SUM(djg_gf) as djgGf,SUM(djg_dg) as djgDg,SUM(djg_zgf) as djgZgf,SUM(djg_wgf) as djgWgf,MAX(djg_time) as djgTime " |
| 38 | 44 | + " from bsth_c_calc_interval where gsbm like %?1% and fgsbm like %?2% and date >=?3 and date <=?4 " | ... | ... |
src/main/java/com/bsth/repository/calc/CalcLineMileageRepository.java
| ... | ... | @@ -25,6 +25,10 @@ public interface CalcLineMileageRepository extends BaseRepository<CalcLineMileag |
| 25 | 25 | @Query(value="select DISTINCT c from CalcLineMileage c where c.xl = ?1 and c.dateStr between ?2 and ?3 order by c.id") |
| 26 | 26 | List<CalcLineMileage> selectByDateAndLineTj2(String line,String date,String date2); |
| 27 | 27 | |
| 28 | + //按照时间段统计,全部线路 | |
| 29 | + @Query(value="select DISTINCT c from CalcLineMileage c where c.dateStr between ?1 and ?2 order by c.id") | |
| 30 | + List<CalcLineMileage> selectByDateAndLineTj3(String date,String date2); | |
| 31 | + | |
| 28 | 32 | //按照日期和线路删除数据 |
| 29 | 33 | @Modifying |
| 30 | 34 | @Transactional | ... | ... |
src/main/java/com/bsth/repository/calc/CalcStatisticsRepository.java
| ... | ... | @@ -28,6 +28,10 @@ public interface CalcStatisticsRepository extends BaseRepository<CalcStatistics, |
| 28 | 28 | @Query(value="select DISTINCT c from CalcStatistics c where c.xl = ?1 and c.dateStr between ?2 and ?3 order by c.fgsdm,c.xl") |
| 29 | 29 | List<CalcStatistics> selectByDateAndLineTj2(String line,String date,String date2); |
| 30 | 30 | |
| 31 | + //按照时间段统计 | |
| 32 | + @Query(value="select DISTINCT c from CalcStatistics c where c.dateStr between ?1 and ?2 order by c.gsdm,c.fgsdm,c.xl") | |
| 33 | + List<CalcStatistics> selectByDateAndLineTj3(String date,String date2); | |
| 34 | + | |
| 31 | 35 | //按照日期和线路删除数据 |
| 32 | 36 | @Modifying |
| 33 | 37 | @Transactional | ... | ... |
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
| ... | ... | @@ -188,6 +188,11 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI |
| 188 | 188 | @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) |
| 189 | 189 | @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr >= ?2 and s.scheduleDateStr<= ?3 order by s.fgsBm,s.xlBm") |
| 190 | 190 | List<ScheduleRealInfo> scheduleByDateAndLineTj2(String line,String date,String date2); |
| 191 | + | |
| 192 | + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) | |
| 193 | + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.scheduleDateStr >= ?1 and s.scheduleDateStr<= ?2 order by s.gsBm,s.fgsBm,s.xlBm") | |
| 194 | + List<ScheduleRealInfo> scheduleByDateAndLineTj3(String date,String date2); | |
| 195 | + | |
| 191 | 196 | //月报表 |
| 192 | 197 | @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) |
| 193 | 198 | @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr >= ?2 and s.scheduleDateStr<= ?3 order by s.xlBm") | ... | ... |
src/main/java/com/bsth/repository/schedule/TTInfoDetailRepository.java
| 1 | 1 | package com.bsth.repository.schedule; |
| 2 | 2 | |
| 3 | -import com.bsth.entity.schedule.CarConfigInfo; | |
| 4 | 3 | import com.bsth.entity.schedule.TTInfoDetail; |
| 5 | 4 | import com.bsth.repository.BaseRepository; |
| 6 | 5 | import org.springframework.data.domain.Page; |
| ... | ... | @@ -10,9 +9,6 @@ import org.springframework.data.jpa.repository.EntityGraph; |
| 10 | 9 | import org.springframework.data.jpa.repository.Modifying; |
| 11 | 10 | import org.springframework.data.jpa.repository.Query; |
| 12 | 11 | import org.springframework.stereotype.Repository; |
| 13 | -import org.springframework.transaction.annotation.Isolation; | |
| 14 | -import org.springframework.transaction.annotation.Propagation; | |
| 15 | -import org.springframework.transaction.annotation.Transactional; | |
| 16 | 12 | |
| 17 | 13 | import java.util.List; |
| 18 | 14 | |
| ... | ... | @@ -42,9 +38,15 @@ public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Lon |
| 42 | 38 | @Query(value = "select max(tt.fcno) as mx from bsth_c_s_ttinfo_detail tt where tt.xl =?1 and tt.ttinfo =?2", nativeQuery = true) |
| 43 | 39 | Long findMaxFcno(Integer xlid, Long ttinfoid); |
| 44 | 40 | |
| 41 | + @Query(value = "select max(tt.bcs) as mx from bsth_c_s_ttinfo_detail tt where tt.ttinfo =?1", nativeQuery = true) | |
| 42 | + Long findMaxBcs(Long ttinfoid); | |
| 43 | + | |
| 45 | 44 | @Query(value = "select tt from TTInfoDetail tt where tt.xl.id = ?1 and tt.ttinfo.id = ?2 and tt.lp.id = ?3 order by tt.fcno asc") |
| 46 | 45 | List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId); |
| 47 | 46 | |
| 47 | + @Query(value = "select tt from TTInfoDetail tt where tt.ttinfo.id = ?1 and tt.lp.id = ?2 order by tt.fcno asc") | |
| 48 | + List<TTInfoDetail> findBcdetails(Long ttinfoId, Long lpId); | |
| 49 | + | |
| 48 | 50 | List<TTInfoDetail> findByTtinfoId(Long id); |
| 49 | 51 | |
| 50 | 52 | @Modifying |
| ... | ... | @@ -52,6 +54,10 @@ public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Lon |
| 52 | 54 | void deleteByTtinfoIdWithModify(Long ttinfoid); |
| 53 | 55 | |
| 54 | 56 | @Modifying |
| 57 | + @Query(value = "delete from TTInfoDetail t where t.ttinfo.id = ?1 and t.lp.id = ?2") | |
| 58 | + void deleteByTtinfoIdAndLpidWithModify(Long ttinfoid, Long lpid); | |
| 59 | + | |
| 60 | + @Modifying | |
| 55 | 61 | @Query(value = "delete from TTInfoDetail t where t.xl.id=?1 and t.ttinfo.id = ?2") |
| 56 | 62 | void deltidc(int xl , Long ttinfoid ); |
| 57 | 63 | } | ... | ... |
src/main/java/com/bsth/service/calc/impl/CalcWaybillServiceImpl.java
| ... | ... | @@ -47,6 +47,8 @@ import org.springframework.jdbc.core.RowMapper; |
| 47 | 47 | import org.springframework.stereotype.Service; |
| 48 | 48 | |
| 49 | 49 | import javax.transaction.Transactional; |
| 50 | + | |
| 51 | +import java.math.BigDecimal; | |
| 50 | 52 | import java.sql.ResultSet; |
| 51 | 53 | import java.sql.SQLException; |
| 52 | 54 | import java.text.DecimalFormat; |
| ... | ... | @@ -738,7 +740,9 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 738 | 740 | String line, String date, String date2, String xlName, String type,String nature) { |
| 739 | 741 | // TODO Auto-generated method stub |
| 740 | 742 | List<CalcStatistics> listAll = new ArrayList<CalcStatistics>(); |
| 741 | - if(line.length() > 0){ | |
| 743 | + if(gsdm.equals("") && fgsdm.equals("") && line.equals("")){ | |
| 744 | + listAll = calcStatisticsRepository.selectByDateAndLineTj3(date, date2); | |
| 745 | + } else if(line.length() > 0){ | |
| 742 | 746 | listAll = calcStatisticsRepository.selectByDateAndLineTj2(line, date, date2); |
| 743 | 747 | } else { |
| 744 | 748 | listAll = calcStatisticsRepository.selectByDateAndLineTj(line, date, date2, gsdm, fgsdm); |
| ... | ... | @@ -767,13 +771,8 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 767 | 771 | |
| 768 | 772 | for(CalcStatistics s : list){ |
| 769 | 773 | try { |
| 770 | -// String key = PinyinHelper.convertToPinyinString(s.getXl(), "" , PinyinFormat.WITHOUT_TONE); | |
| 771 | - String key =s.getFgsdm()+s.getXl(); | |
| 772 | -// if(line.equals("")){ | |
| 773 | -// key =s.getFgsdm()+s.getXl(); | |
| 774 | -// }else{ | |
| 775 | -// key =s.getXl(); | |
| 776 | -// } | |
| 774 | +// String key =s.getGsdm()+"/"+s.getFgsdm()+"/"+s.getXl(); | |
| 775 | + String key = PinyinHelper.convertToPinyinString(s.getGsdm()+s.getFgsdm()+s.getXlName(), "", PinyinFormat.WITHOUT_TONE); | |
| 777 | 776 | if(!keyMap.containsKey(key)){ |
| 778 | 777 | keyMap.put(key, new ArrayList<CalcStatistics>()); |
| 779 | 778 | keyList.add(key); |
| ... | ... | @@ -789,18 +788,14 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 789 | 788 | for(String key : keyList){ |
| 790 | 789 | if(keyMap.get(key).size() > 0){ |
| 791 | 790 | CalcStatistics s = keyMap.get(key).get(0); |
| 792 | - if(keyMap.get(key).size() > 1) | |
| 791 | + if(keyMap.get(key).size() > 1){ | |
| 793 | 792 | for(int i = 1; i < keyMap.get(key).size(); i++){ |
| 794 | 793 | CalcStatistics s_ = keyMap.get(key).get(i); |
| 795 | 794 | s = addStatistics(s, s_); |
| 796 | 795 | } |
| 797 | -// if(line.equals("")){ | |
| 798 | - s.setFgsName(BasicData.businessFgsCodeNameMap.get(s.getFgsdm()+"_"+s.getGsdm())); | |
| 799 | - /*}else{ | |
| 800 | - List<Line> l=lineRepository.findLineByCode(line); | |
| 801 | - if(l.size()>0) | |
| 802 | - s.setFgsName(BasicData.businessFgsCodeNameMap.get(l.get(0).getBrancheCompany()+"_"+l.get(0).getCompany())); | |
| 803 | - }*/ | |
| 796 | + } | |
| 797 | + s.setGsName(BasicData.businessCodeNameMap.get(s.getGsdm())); | |
| 798 | + s.setFgsName(BasicData.businessFgsCodeNameMap.get(s.getFgsdm()+"_"+s.getGsdm())); | |
| 804 | 799 | resList.add(s); |
| 805 | 800 | } |
| 806 | 801 | } |
| ... | ... | @@ -809,6 +804,7 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 809 | 804 | CalcStatistics temp = new CalcStatistics(); |
| 810 | 805 | temp.setXlName("合计"); |
| 811 | 806 | temp.setFgsName(""); |
| 807 | + temp.setGsName(""); | |
| 812 | 808 | for(CalcStatistics s : resList){ |
| 813 | 809 | temp = addStatistics(temp, s); |
| 814 | 810 | } |
| ... | ... | @@ -818,6 +814,7 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 818 | 814 | List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>(); |
| 819 | 815 | for(CalcStatistics c : resList){ |
| 820 | 816 | Map<String, Object> m = new HashMap<String, Object>(); |
| 817 | + m.put("gsName", c.getGsName()); | |
| 821 | 818 | m.put("fgsName", c.getFgsName()); |
| 822 | 819 | m.put("xlName", c.getXlName()); |
| 823 | 820 | m.put("jhzlc", c.getJhzlc()); |
| ... | ... | @@ -888,6 +885,69 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 888 | 885 | logger.info("" , e); |
| 889 | 886 | } |
| 890 | 887 | } |
| 888 | + | |
| 889 | + if (type != null && type.length() != 0 && type.equals("exportAll")) { | |
| 890 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 891 | + Map<String, Map<String, Object>> tempMap = new HashMap<String, Map<String, Object>>(); | |
| 892 | + List<Map<String, Object>> removeList = new ArrayList<Map<String, Object>>(); | |
| 893 | + for(Map<String, Object> m : mapList){ | |
| 894 | + if(m.get("gsName") != null && m.get("gsName").toString().trim().length() > 0 | |
| 895 | + && m.get("gsName").toString().trim().contains("临港")){ | |
| 896 | + removeList.add(m); | |
| 897 | + } | |
| 898 | + } | |
| 899 | + for(Map<String, Object> m : removeList){ | |
| 900 | + mapList.remove(m); | |
| 901 | + } | |
| 902 | + for(Map<String, Object> m : mapList){ | |
| 903 | + if(m.get("gsName") != null && m.get("gsName").toString().trim().length() > 0){ | |
| 904 | + String gsName = m.get("gsName").toString().trim(); | |
| 905 | + Map<String, Object> temp = new HashMap<String, Object>(); | |
| 906 | + if(tempMap.get(gsName) != null){ | |
| 907 | + temp = tempMap.get(gsName); | |
| 908 | + } else { | |
| 909 | + temp.put("gsName", gsName); | |
| 910 | + temp.put("fgsName", "小计"); | |
| 911 | + temp.put("xlName", ""); | |
| 912 | + tempList.add(temp); | |
| 913 | + tempMap.put(gsName, temp); | |
| 914 | + } | |
| 915 | + for(String key : m.keySet()){ | |
| 916 | + try { | |
| 917 | + temp.put(key, new BigDecimal(m.get(key).toString()).add( | |
| 918 | + new BigDecimal(temp.get(key)!=null?temp.get(key).toString():"0"))); | |
| 919 | + } catch (Exception e) { | |
| 920 | + // TODO: handle exception | |
| 921 | + } | |
| 922 | + } | |
| 923 | + } | |
| 924 | + } | |
| 925 | + mapList.addAll(mapList.size()>0?mapList.size()-1:0, tempList); | |
| 926 | + | |
| 927 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 928 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 929 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 930 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 931 | + m.put("date", date + "至" + date2); | |
| 932 | + ReportUtils ee = new ReportUtils(); | |
| 933 | + try { | |
| 934 | + String dateTime = ""; | |
| 935 | + if (date.equals(date2)) { | |
| 936 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 937 | + } else { | |
| 938 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 939 | + + "-" + sdfSimple.format(sdfMonth.parse(date2)); | |
| 940 | + } | |
| 941 | + listI.add(mapList.iterator()); | |
| 942 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 943 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_4.xls", | |
| 944 | + path + "export/" + dateTime + "-全部公司-统计日报.xls"); | |
| 945 | + } catch (Exception e) { | |
| 946 | + // TODO: handle exception | |
| 947 | + //e.printStackTrace(); | |
| 948 | + logger.info("", e); | |
| 949 | + } | |
| 950 | + } | |
| 891 | 951 | |
| 892 | 952 | return resList; |
| 893 | 953 | } |
| ... | ... | @@ -1512,7 +1572,11 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 1512 | 1572 | List<String> keyList = new ArrayList<String>(); |
| 1513 | 1573 | Map<String, List<CalcLineMileage>> keyMap = new HashMap<String, List<CalcLineMileage>>(); |
| 1514 | 1574 | |
| 1515 | - if(line == null || line.trim().length() == 0){ | |
| 1575 | + if((line == null || line.trim().length() == 0) | |
| 1576 | + && (gsdm == null || gsdm.trim().length() == 0) | |
| 1577 | + && (fgsdm == null || fgsdm.trim().length() == 0)){ | |
| 1578 | + list = calcLineMileageRepository.selectByDateAndLineTj3(date, date2); | |
| 1579 | + } else if(line == null || line.trim().length() == 0){ | |
| 1516 | 1580 | list = calcLineMileageRepository.selectByDateAndLineTj(line, date, date2, gsdm, fgsdm); |
| 1517 | 1581 | } else { |
| 1518 | 1582 | list = calcLineMileageRepository.selectByDateAndLineTj2(line, date, date2); |
| ... | ... | @@ -1558,6 +1622,7 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer |
| 1558 | 1622 | m.put("fgsdm", c.getFgsdm()); |
| 1559 | 1623 | m.put("fgs", c.getFgsName()); |
| 1560 | 1624 | } |
| 1625 | + m.put("xl", c.getXl()); | |
| 1561 | 1626 | m.put("xlName", c.getXlName()); |
| 1562 | 1627 | m.put("jhzlc", c.getJhzlc()); |
| 1563 | 1628 | m.put("jhlc", c.getJhlc()); | ... | ... |
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
| ... | ... | @@ -118,6 +118,8 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L |
| 118 | 118 | |
| 119 | 119 | List<Map<String,Object>> statisticsDaily(String line, String date, String xlName, String type); |
| 120 | 120 | |
| 121 | + List<Map<String,Object>> dispatchDailySum(String date, String date2, String nature, String type); | |
| 122 | + | |
| 121 | 123 | List<Map<String,Object>> statisticsDailyTj(String gsdm,String fgsdm,String line, String date,String date2, String xlName, String type,String nature); |
| 122 | 124 | |
| 123 | 125 | //用于实时数据与统计数据合并查询 | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| 1 | 1 | package com.bsth.service.realcontrol.impl; |
| 2 | 2 | |
| 3 | 3 | import java.io.*; |
| 4 | +import java.lang.reflect.Field; | |
| 5 | +import java.math.BigDecimal; | |
| 4 | 6 | import java.net.HttpURLConnection; |
| 5 | 7 | import java.net.MalformedURLException; |
| 6 | 8 | import java.net.URL; |
| ... | ... | @@ -69,6 +71,7 @@ import com.bsth.entity.Cars; |
| 69 | 71 | import com.bsth.entity.Line; |
| 70 | 72 | import com.bsth.entity.Personnel; |
| 71 | 73 | import com.bsth.entity.calc.CalcInterval; |
| 74 | +import com.bsth.entity.calc.CalcStatistics; | |
| 72 | 75 | import com.bsth.entity.oil.Dlb; |
| 73 | 76 | import com.bsth.entity.oil.Ylb; |
| 74 | 77 | import com.bsth.entity.oil.Ylxxb; |
| ... | ... | @@ -103,6 +106,7 @@ import com.bsth.repository.schedule.GuideboardInfoRepository; |
| 103 | 106 | import com.bsth.security.util.SecurityUtils; |
| 104 | 107 | import com.bsth.service.LineService; |
| 105 | 108 | import com.bsth.service.SectionRouteService; |
| 109 | +import com.bsth.service.calc.CalcWaybillService; | |
| 106 | 110 | import com.bsth.service.directive.DirectiveService; |
| 107 | 111 | import com.bsth.service.impl.BaseServiceImpl; |
| 108 | 112 | import com.bsth.service.realcontrol.ScheduleRealInfoService; |
| ... | ... | @@ -155,6 +159,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 155 | 159 | DictionaryService dictionaryService; |
| 156 | 160 | |
| 157 | 161 | @Autowired |
| 162 | + CalcWaybillService calcWaybillService; | |
| 163 | + | |
| 164 | + @Autowired | |
| 158 | 165 | CalcIntervalRepository calcIntervalRepository; |
| 159 | 166 | /*@Autowired |
| 160 | 167 | BorrowCenter borrowCenter;*/ |
| ... | ... | @@ -2863,12 +2870,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2863 | 2870 | } |
| 2864 | 2871 | Map<String, Object> map = new HashMap<String, Object>(); |
| 2865 | 2872 | if (list.size() > 0) { |
| 2873 | + map.put("gsBm", list.get(0).getGsBm()); | |
| 2866 | 2874 | map.put("fgsBm", list.get(0).getFgsBm()); |
| 2867 | 2875 | map.put("xlBm", list.get(0).getXlBm()); |
| 2868 | 2876 | map.put("xlName", list.get(0).getXlName()); |
| 2869 | 2877 | map.put("fgsName", list.get(0).getFgsName()); |
| 2878 | + map.put("gsName", list.get(0).getGsName()); | |
| 2879 | + | |
| 2870 | 2880 | try { |
| 2871 | - map.put("xlNamePy", PinyinHelper.convertToPinyinString(list.get(0).getFgsBm()+list.get(0).getXlName(), "", PinyinFormat.WITHOUT_TONE)); | |
| 2881 | + map.put("xlNamePy", PinyinHelper.convertToPinyinString(list.get(0).getGsBm()+list.get(0).getFgsBm()+list.get(0).getXlName(), "", PinyinFormat.WITHOUT_TONE)); | |
| 2872 | 2882 | } catch (PinyinException e) { |
| 2873 | 2883 | // TODO Auto-generated catch block |
| 2874 | 2884 | e.printStackTrace(); |
| ... | ... | @@ -2948,6 +2958,250 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2948 | 2958 | } |
| 2949 | 2959 | return map; |
| 2950 | 2960 | } |
| 2961 | + | |
| 2962 | + @Override | |
| 2963 | + public List<Map<String, Object>> dispatchDailySum(String date, String date2, String nature, String type) { | |
| 2964 | + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | |
| 2965 | + | |
| 2966 | +// List<Map<String, Object>> list = statisticsDailyTj("", "", "", date, date2, "", "query", nature); | |
| 2967 | + List<CalcStatistics> calc = calcWaybillService.calcStatisticsDaily("", "", "", date, date2, "", "query", nature); | |
| 2968 | + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); | |
| 2969 | + try { | |
| 2970 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 2971 | + for(CalcStatistics c : calc){ | |
| 2972 | + Map<String, Object> m = new HashMap<>(); | |
| 2973 | + Field[] fields = c.getClass().getDeclaredFields(); | |
| 2974 | + for(Field f : fields){ | |
| 2975 | + f.setAccessible(true); | |
| 2976 | + String key = new String(f.getName()); | |
| 2977 | + m.put(key, f.get(c)); | |
| 2978 | + } | |
| 2979 | + tempList.add(m); | |
| 2980 | + } | |
| 2981 | + list = tempList; | |
| 2982 | + } catch (Exception e) { | |
| 2983 | + // TODO: handle exception | |
| 2984 | + e.printStackTrace(); | |
| 2985 | + } | |
| 2986 | + | |
| 2987 | + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>(); | |
| 2988 | + Map<String, Object> temp = new HashMap<String, Object>(); | |
| 2989 | + temp.put("gsName", "杨高");temp.put("fgsName", "杨高分");temp.put("key", "05_5"); | |
| 2990 | + resList.add(temp);keyMap.put("05_5", temp); | |
| 2991 | + temp = new HashMap<String, Object>(); | |
| 2992 | + temp.put("gsName", "杨高");temp.put("fgsName", "金桥分");temp.put("key", "05_2"); | |
| 2993 | + resList.add(temp);keyMap.put("05_2", temp); | |
| 2994 | + temp = new HashMap<String, Object>(); | |
| 2995 | + temp.put("gsName", "杨高");temp.put("fgsName", "川沙分");temp.put("key", "05_1"); | |
| 2996 | + resList.add(temp);keyMap.put("05_1", temp); | |
| 2997 | + temp = new HashMap<String, Object>(); | |
| 2998 | + temp.put("gsName", "杨高");temp.put("fgsName", "周浦分");temp.put("key", "05_6"); | |
| 2999 | + resList.add(temp);keyMap.put("05_6", temp); | |
| 3000 | + temp = new HashMap<String, Object>(); | |
| 3001 | + temp.put("gsName", "杨高");temp.put("fgsName", "小计");temp.put("key", "05_sum"); | |
| 3002 | + resList.add(temp);keyMap.put("05_sum", temp); | |
| 3003 | + | |
| 3004 | + temp = new HashMap<String, Object>(); | |
| 3005 | + temp.put("gsName", "上南");temp.put("fgsName", "一分");temp.put("key", "55_4"); | |
| 3006 | + resList.add(temp);keyMap.put("55_4", temp); | |
| 3007 | + temp = new HashMap<String, Object>(); | |
| 3008 | + temp.put("gsName", "上南");temp.put("fgsName", "二分");temp.put("key", "55_1"); | |
| 3009 | + resList.add(temp);keyMap.put("55_1", temp); | |
| 3010 | + temp = new HashMap<String, Object>(); | |
| 3011 | + temp.put("gsName", "上南");temp.put("fgsName", "三分");temp.put("key", "55_2"); | |
| 3012 | + resList.add(temp);keyMap.put("55_2", temp); | |
| 3013 | + temp = new HashMap<String, Object>(); | |
| 3014 | + temp.put("gsName", "上南");temp.put("fgsName", "六分");temp.put("key", "55_3"); | |
| 3015 | + resList.add(temp);keyMap.put("55_3", temp); | |
| 3016 | + temp = new HashMap<String, Object>(); | |
| 3017 | + temp.put("gsName", "上南");temp.put("fgsName", "小计");temp.put("key", "55_sum"); | |
| 3018 | + resList.add(temp);keyMap.put("55_sum", temp); | |
| 3019 | + | |
| 3020 | + temp = new HashMap<String, Object>(); | |
| 3021 | + temp.put("gsName", "金高");temp.put("fgsName", "一分");temp.put("key", "22_5"); | |
| 3022 | + resList.add(temp);keyMap.put("22_5", temp); | |
| 3023 | + temp = new HashMap<String, Object>(); | |
| 3024 | + temp.put("gsName", "金高");temp.put("fgsName", "二分");temp.put("key", "22_2"); | |
| 3025 | + resList.add(temp);keyMap.put("22_2", temp); | |
| 3026 | + temp = new HashMap<String, Object>(); | |
| 3027 | + temp.put("gsName", "金高");temp.put("fgsName", "三分");temp.put("key", "22_3"); | |
| 3028 | + resList.add(temp);keyMap.put("22_3", temp); | |
| 3029 | + temp = new HashMap<String, Object>(); | |
| 3030 | + temp.put("gsName", "金高");temp.put("fgsName", "四分");temp.put("key", "22_1"); | |
| 3031 | + resList.add(temp);keyMap.put("22_1", temp); | |
| 3032 | + temp = new HashMap<String, Object>(); | |
| 3033 | + temp.put("gsName", "金高");temp.put("fgsName", "小计");temp.put("key", "22_sum"); | |
| 3034 | + resList.add(temp);keyMap.put("22_sum", temp); | |
| 3035 | + | |
| 3036 | + temp = new HashMap<String, Object>(); | |
| 3037 | + temp.put("gsName", "南汇");temp.put("fgsName", "一分");temp.put("key", "26_1"); | |
| 3038 | + resList.add(temp);keyMap.put("26_1", temp); | |
| 3039 | + temp = new HashMap<String, Object>(); | |
| 3040 | + temp.put("gsName", "南汇");temp.put("fgsName", "二分");temp.put("key", "26_2"); | |
| 3041 | + resList.add(temp);keyMap.put("26_2", temp); | |
| 3042 | + temp = new HashMap<String, Object>(); | |
| 3043 | + temp.put("gsName", "南汇");temp.put("fgsName", "三分");temp.put("key", "26_3"); | |
| 3044 | + resList.add(temp);keyMap.put("26_3", temp); | |
| 3045 | + temp = new HashMap<String, Object>(); | |
| 3046 | + temp.put("gsName", "南汇");temp.put("fgsName", "六分");temp.put("key", "26_6"); | |
| 3047 | + resList.add(temp);keyMap.put("26_6", temp); | |
| 3048 | + temp = new HashMap<String, Object>(); | |
| 3049 | + temp.put("gsName", "南汇");temp.put("fgsName", "小计");temp.put("key", "26_sum"); | |
| 3050 | + resList.add(temp);keyMap.put("26_sum", temp); | |
| 3051 | + | |
| 3052 | + temp = new HashMap<String, Object>(); | |
| 3053 | + temp.put("gsName", "浦交");temp.put("fgsName", " ");temp.put("key", "88"); | |
| 3054 | + resList.add(temp);keyMap.put("88", temp); | |
| 3055 | + | |
| 3056 | + for(Map<String, Object> m : list){ | |
| 3057 | + m.put("gsBm", m.get("gsdm")); | |
| 3058 | + m.put("fgsBm", m.get("fgsdm")); | |
| 3059 | + if(m.get("gsBm") != null && m.get("fgsBm") != null | |
| 3060 | + && m.get("gsBm").toString().trim().length() > 0 | |
| 3061 | + && m.get("fgsBm").toString().trim().length() > 0){ | |
| 3062 | + String gsBm = m.get("gsBm").toString().trim(); | |
| 3063 | + String fgsBm = m.get("fgsBm").toString().trim(); | |
| 3064 | + String key = gsBm + "_" + fgsBm; | |
| 3065 | + if(keyMap.containsKey(key)){ | |
| 3066 | + Map<String, Object> t = keyMap.get(key); | |
| 3067 | + for(String s : m.keySet()){ | |
| 3068 | + if("gsName,fgsName,key".contains(s)){ | |
| 3069 | + continue; | |
| 3070 | + } | |
| 3071 | + try { | |
| 3072 | + if(t.containsKey(s)){ | |
| 3073 | + t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString()))); | |
| 3074 | + } else { | |
| 3075 | + t.put(s, m.get(s).toString()); | |
| 3076 | + } | |
| 3077 | + } catch (Exception e) { | |
| 3078 | + // TODO: handle exception | |
| 3079 | + continue; | |
| 3080 | + } | |
| 3081 | + } | |
| 3082 | + } | |
| 3083 | + } | |
| 3084 | + } | |
| 3085 | + | |
| 3086 | + for(Map<String, Object> m : resList){ | |
| 3087 | + String key = m.get("key").toString(); | |
| 3088 | + if(key.contains("_sum") || key.equals("88")){ | |
| 3089 | + continue; | |
| 3090 | + } | |
| 3091 | + | |
| 3092 | + Map<String, Object> t = keyMap.get(key.split("_")[0] + "_sum"); | |
| 3093 | + for(String s : m.keySet()){ | |
| 3094 | + if("gsName,fgsName,key".contains(s)){ | |
| 3095 | + continue; | |
| 3096 | + } | |
| 3097 | + try { | |
| 3098 | + if(t.containsKey(s)){ | |
| 3099 | + t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString()))); | |
| 3100 | + } else { | |
| 3101 | + t.put(s, m.get(s).toString()); | |
| 3102 | + } | |
| 3103 | + } catch (Exception e) { | |
| 3104 | + // TODO: handle exception | |
| 3105 | + continue; | |
| 3106 | + } | |
| 3107 | + } | |
| 3108 | + | |
| 3109 | + t = keyMap.get("88"); | |
| 3110 | + for(String s : m.keySet()){ | |
| 3111 | + if("gsName,fgsName,key".contains(s)){ | |
| 3112 | + continue; | |
| 3113 | + } | |
| 3114 | + try { | |
| 3115 | + if(t.containsKey(s)){ | |
| 3116 | + t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString()))); | |
| 3117 | + } else { | |
| 3118 | + t.put(s, m.get(s).toString()); | |
| 3119 | + } | |
| 3120 | + } catch (Exception e) { | |
| 3121 | + // TODO: handle exception | |
| 3122 | + continue; | |
| 3123 | + } | |
| 3124 | + } | |
| 3125 | + } | |
| 3126 | + | |
| 3127 | + for(Map<String, Object> m : resList){ | |
| 3128 | + try { | |
| 3129 | + m.put("jhzlc", m.get("jhzlc")); | |
| 3130 | + m.put("jhlc", m.get("jhyylc")); | |
| 3131 | + m.put("jcclc", m.get("jhkslc")); | |
| 3132 | + m.put("sjzgl", m.get("sjzlc")); | |
| 3133 | + m.put("sjgl", m.get("sjyylc")); | |
| 3134 | + m.put("sjksgl", m.get("sjkslc")); | |
| 3135 | + m.put("ssbc", m.get("ssbc")); | |
| 3136 | + m.put("ssgl", m.get("sslc")); | |
| 3137 | + m.put("ssgl_lz", m.get("lzlc")); | |
| 3138 | + m.put("ssgl_dm", m.get("dmlc")); | |
| 3139 | + m.put("ssgl_gz", m.get("gzlc")); | |
| 3140 | + m.put("ssgl_jf", m.get("jflc")); | |
| 3141 | + m.put("ssgl_zs", m.get("zslc")); | |
| 3142 | + m.put("ssgl_qr", m.get("qrlc")); | |
| 3143 | + m.put("ssgl_qc", m.get("qclc")); | |
| 3144 | + m.put("ssgl_kx", m.get("kxlc")); | |
| 3145 | + m.put("ssgl_qh", m.get("qhlc")); | |
| 3146 | + m.put("ssgl_yw", m.get("ywlc")); | |
| 3147 | + m.put("ssgl_other", m.get("qtlc")); | |
| 3148 | + m.put("ljgl", m.get("ljlc")); | |
| 3149 | + m.put("ljks", m.get("ljkslc")); | |
| 3150 | + m.put("jhbc", m.get("jhbcq")); | |
| 3151 | + m.put("jhbc_m", m.get("jhbcz")); | |
| 3152 | + m.put("jhbc_a", m.get("jhbcw")); | |
| 3153 | + m.put("sjbc", m.get("sjbcq")); | |
| 3154 | + m.put("sjbc_m", m.get("sjbcz")); | |
| 3155 | + m.put("sjbc_a", m.get("sjbcw")); | |
| 3156 | + m.put("ljbc", m.get("ljbcq")); | |
| 3157 | + m.put("ljbc_m", m.get("ljbcz")); | |
| 3158 | + m.put("ljbc_a", m.get("ljbcw")); | |
| 3159 | + m.put("fzbc", m.get("fzbcq")); | |
| 3160 | + m.put("fzbc_m", m.get("fzbcz")); | |
| 3161 | + m.put("fzbc_a", m.get("fzbcw")); | |
| 3162 | + m.put("dtbc", m.get("dtbcq")); | |
| 3163 | + m.put("dtbc_m", m.get("dtbcz")); | |
| 3164 | + m.put("dtbc_a", m.get("dtbcw")); | |
| 3165 | + m.put("djg", m.get("djgq")); | |
| 3166 | + m.put("djg_m", m.get("djgz")); | |
| 3167 | + m.put("djg_a", m.get("djgw")); | |
| 3168 | + m.put("djg_time", m.get("djgsj")); | |
| 3169 | + m.put("ljzgl", new BigDecimal(m.get("ljgl").toString()).add(new BigDecimal(m.get("ljks").toString()))); | |
| 3170 | + } catch (Exception e) { | |
| 3171 | + // TODO: handle exception | |
| 3172 | + m.put("ljzgl", ""); | |
| 3173 | + continue; | |
| 3174 | + } | |
| 3175 | + } | |
| 3176 | + | |
| 3177 | + if (type != null && type.length() != 0 && type.equals("export")) { | |
| 3178 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 3179 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 3180 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 3181 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 3182 | + m.put("date", date); | |
| 3183 | + ReportUtils ee = new ReportUtils(); | |
| 3184 | + try { | |
| 3185 | + String dateTime = ""; | |
| 3186 | + if (date.equals(date2)) { | |
| 3187 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 3188 | + } else { | |
| 3189 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 3190 | + + "-" + sdfSimple.format(sdfMonth.parse(date2)); | |
| 3191 | + } | |
| 3192 | + listI.add(resList.iterator()); | |
| 3193 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 3194 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/dispatchDailySum.xls", | |
| 3195 | + path + "export/" + dateTime + "-调度日报汇总表.xls"); | |
| 3196 | + } catch (Exception e) { | |
| 3197 | + // TODO: handle exception | |
| 3198 | + //e.printStackTrace(); | |
| 3199 | + logger.info("", e); | |
| 3200 | + } | |
| 3201 | + } | |
| 3202 | + | |
| 3203 | + return resList; | |
| 3204 | + } | |
| 2951 | 3205 | |
| 2952 | 3206 | @Override |
| 2953 | 3207 | public List<Map<String, Object>> statisticsDailyTj(String gsdm, String fgsdm, String line, String date, String date2, |
| ... | ... | @@ -2957,7 +3211,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2957 | 3211 | List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>(); |
| 2958 | 3212 | List<Object[]> listInterval=new ArrayList<Object[]>(); |
| 2959 | 3213 | line = line.trim(); |
| 2960 | - if (line.equals("")) { | |
| 3214 | + if(gsdm.equals("") && fgsdm.equals("") && line.equals("")){ | |
| 3215 | + //查询所有公司 | |
| 3216 | + listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj3(date, date2); | |
| 3217 | + listInterval = calcIntervalRepository.countByDate(date, date2); | |
| 3218 | + } else if (line.equals("")) { | |
| 2961 | 3219 | //查询所有线路 |
| 2962 | 3220 | listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date, date2, gsdm, fgsdm); |
| 2963 | 3221 | listInterval = calcIntervalRepository.countByDateAndLine(gsdm, fgsdm, date, date2); |
| ... | ... | @@ -3012,7 +3270,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3012 | 3270 | List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); |
| 3013 | 3271 | for (int i = 0; i < list.size(); i++) { |
| 3014 | 3272 | if (i < list.size() - 1) { |
| 3015 | - if ((list.get(i+1).getFgsBm()+list.get(i + 1).getXlBm()).equals(list.get(i).getFgsBm()+list.get(i).getXlBm())) { | |
| 3273 | + if ((list.get(i+1).getGsBm()+"/"+list.get(i+1).getFgsBm()+"/"+list.get(i+1).getXlBm()).equals( | |
| 3274 | + list.get(i).getGsBm()+"/"+list.get(i).getFgsBm()+"/"+list.get(i).getXlBm())) { | |
| 3016 | 3275 | lists.add(list.get(i)); |
| 3017 | 3276 | } else { |
| 3018 | 3277 | lists.add(list.get(i)); |
| ... | ... | @@ -3025,7 +3284,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3025 | 3284 | lists = new ArrayList<ScheduleRealInfo>(); |
| 3026 | 3285 | } |
| 3027 | 3286 | } else { |
| 3028 | - if ((list.get(i).getFgsBm()+list.get(i).getXlBm()).equals(list.get(i - 1).getFgsBm()+list.get(i - 1).getXlBm())) { | |
| 3287 | + if ((list.get(i).getGsBm()+"/"+list.get(i).getFgsBm()+"/"+list.get(i).getXlBm()).equals( | |
| 3288 | + list.get(i-1).getGsBm()+"/"+list.get(i-1).getFgsBm()+"/"+list.get(i-1).getXlBm())) { | |
| 3029 | 3289 | lists.add(list.get(i)); |
| 3030 | 3290 | Map<String, Object> mm=new HashMap<String,Object>(); |
| 3031 | 3291 | if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){ |
| ... | ... | @@ -3045,15 +3305,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3045 | 3305 | } |
| 3046 | 3306 | } |
| 3047 | 3307 | } |
| 3048 | - /*if(!line.equals("")){ | |
| 3049 | - List<Line> l=lineRepository.findLineByCode(line); | |
| 3050 | - if(l.size()>0) | |
| 3051 | - lMap.get(0).put("fgsName", BasicData.businessFgsCodeNameMap.get(l.get(0).getBrancheCompany()+"_"+l.get(0).getCompany())); | |
| 3052 | - }*/ | |
| 3308 | + | |
| 3053 | 3309 | Collections.sort(lMap, new AccountXlbm()); |
| 3054 | 3310 | Map<String, Object> map = new HashMap<String, Object>(); |
| 3055 | 3311 | map.put("xlName", "合计"); |
| 3056 | 3312 | map.put("fgsName", ""); |
| 3313 | + map.put("gsName", ""); | |
| 3057 | 3314 | double jhyygl = culateService.culateJhgl(list);//计划营运公里 |
| 3058 | 3315 | double jhjcclc = culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里) |
| 3059 | 3316 | map.put("jhlc", jhyygl); |
| ... | ... | @@ -3145,6 +3402,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3145 | 3402 | map.put("djg_time", "0"); |
| 3146 | 3403 | } |
| 3147 | 3404 | lMap.add(map); |
| 3405 | + | |
| 3148 | 3406 | if (type != null && type.length() != 0 && type.equals("export")) { |
| 3149 | 3407 | SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), |
| 3150 | 3408 | sdfSimple = new SimpleDateFormat("yyyyMMdd"); |
| ... | ... | @@ -3170,8 +3428,71 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3170 | 3428 | logger.info("", e); |
| 3171 | 3429 | } |
| 3172 | 3430 | } |
| 3173 | - | |
| 3174 | - return lMap; | |
| 3431 | + | |
| 3432 | + if (type != null && type.length() != 0 && type.equals("exportAll")) { | |
| 3433 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 3434 | + Map<String, Map<String, Object>> tempMap = new HashMap<String, Map<String, Object>>(); | |
| 3435 | + List<Map<String, Object>> removeList = new ArrayList<Map<String, Object>>(); | |
| 3436 | + for(Map<String, Object> m : lMap){ | |
| 3437 | + if(m.get("gsName") != null && m.get("gsName").toString().trim().length() > 0 | |
| 3438 | + && m.get("gsName").toString().trim().contains("临港")){ | |
| 3439 | + removeList.add(m); | |
| 3440 | + } | |
| 3441 | + } | |
| 3442 | + for(Map<String, Object> m : removeList){ | |
| 3443 | + lMap.remove(m); | |
| 3444 | + } | |
| 3445 | + for(Map<String, Object> m : lMap){ | |
| 3446 | + if(m.get("gsName") != null && m.get("gsName").toString().trim().length() > 0){ | |
| 3447 | + String gsName = m.get("gsName").toString().trim(); | |
| 3448 | + Map<String, Object> temp = new HashMap<String, Object>(); | |
| 3449 | + if(tempMap.get(gsName) != null){ | |
| 3450 | + temp = tempMap.get(gsName); | |
| 3451 | + } else { | |
| 3452 | + temp.put("gsName", gsName); | |
| 3453 | + temp.put("fgsName", "小计"); | |
| 3454 | + temp.put("xlName", ""); | |
| 3455 | + tempList.add(temp); | |
| 3456 | + tempMap.put(gsName, temp); | |
| 3457 | + } | |
| 3458 | + for(String key : m.keySet()){ | |
| 3459 | + try { | |
| 3460 | + temp.put(key, new BigDecimal(m.get(key).toString()).add( | |
| 3461 | + new BigDecimal(temp.get(key)!=null?temp.get(key).toString():"0"))); | |
| 3462 | + } catch (Exception e) { | |
| 3463 | + // TODO: handle exception | |
| 3464 | + } | |
| 3465 | + } | |
| 3466 | + } | |
| 3467 | + } | |
| 3468 | + lMap.addAll(lMap.size()>0?lMap.size()-1:0, tempList); | |
| 3469 | + | |
| 3470 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 3471 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 3472 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 3473 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 3474 | + m.put("date", date + "至" + date2); | |
| 3475 | + ReportUtils ee = new ReportUtils(); | |
| 3476 | + try { | |
| 3477 | + String dateTime = ""; | |
| 3478 | + if (date.equals(date2)) { | |
| 3479 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 3480 | + } else { | |
| 3481 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 3482 | + + "-" + sdfSimple.format(sdfMonth.parse(date2)); | |
| 3483 | + } | |
| 3484 | + listI.add(lMap.iterator()); | |
| 3485 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 3486 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_4.xls", | |
| 3487 | + path + "export/" + dateTime + "-全部公司-统计日报.xls"); | |
| 3488 | + } catch (Exception e) { | |
| 3489 | + // TODO: handle exception | |
| 3490 | + //e.printStackTrace(); | |
| 3491 | + logger.info("", e); | |
| 3492 | + } | |
| 3493 | + } | |
| 3494 | + | |
| 3495 | + return lMap; | |
| 3175 | 3496 | } |
| 3176 | 3497 | |
| 3177 | 3498 | @Override | ... | ... |
src/main/java/com/bsth/service/report/ReportService.java
| ... | ... | @@ -49,6 +49,8 @@ public interface ReportService { |
| 49 | 49 | |
| 50 | 50 | List<Map<String, String>> userList(Map<String, Object> map); |
| 51 | 51 | |
| 52 | + List<Map<String, Object>> countMileageSum(Map<String, Object> map); | |
| 53 | + | |
| 52 | 54 | List<Map<String, Object>> countByList(Map<String, Object> map); |
| 53 | 55 | List<Map<String, Object>> countByList2(Map<String, Object> map); |
| 54 | 56 | ... | ... |
src/main/java/com/bsth/service/report/impl/CalcSheetServiceImpl.java
| ... | ... | @@ -124,6 +124,33 @@ public class CalcSheetServiceImpl extends BaseServiceImpl<CalcSheet, Integer> im |
| 124 | 124 | } |
| 125 | 125 | } |
| 126 | 126 | } |
| 127 | + | |
| 128 | + CalcSheet temp = new CalcSheet(); | |
| 129 | + temp.setGsname(""); | |
| 130 | + temp.setFgsname(""); | |
| 131 | + temp.setXlName("合计"); | |
| 132 | + for(CalcSheet s : list){ | |
| 133 | + temp.setJhszfcs(Long.valueOf(s.getJhszfcs()!=null?s.getJhszfcs():"0") | |
| 134 | + + Long.valueOf(temp.getJhszfcs()!=null?temp.getJhszfcs():"0") + ""); | |
| 135 | + temp.setSjszfczds(Long.valueOf(s.getSjszfczds()!=null?s.getSjszfczds():"0") | |
| 136 | + + Long.valueOf(temp.getSjszfczds()!=null?temp.getSjszfczds():"0") + ""); | |
| 137 | + temp.setSjszddzds(Long.valueOf(s.getSjszddzds()!=null?s.getSjszddzds():"0") | |
| 138 | + + Long.valueOf(temp.getSjszddzds()!=null?temp.getSjszddzds():"0") + ""); | |
| 139 | + } | |
| 140 | + Long jhfc = Long.valueOf(temp.getJhszfcs()!=null?temp.getJhszfcs():"0"); | |
| 141 | + Long zdfc = Long.valueOf(temp.getSjszfczds()!=null?temp.getSjszfczds():"0"); | |
| 142 | + Long zddd = Long.valueOf(temp.getSjszddzds()!=null?temp.getSjszddzds():"0"); | |
| 143 | + if(jhfc > 0l){ | |
| 144 | + double zdl = (zdfc*1.0)/(jhfc*1.0)*100; | |
| 145 | + temp.setSzfczdl(df.format(zdl)+"%"); | |
| 146 | + zdl = (zddd*1.0)/(jhfc*1.0)*100; | |
| 147 | + temp.setSzddzdl(df.format(zdl)+"%"); | |
| 148 | + }else{ | |
| 149 | + temp.setSzfczdl("0.0%"); | |
| 150 | + temp.setSzddzdl("0.0%"); | |
| 151 | + } | |
| 152 | + list.add(temp); | |
| 153 | + | |
| 127 | 154 | if(map.get("type").equals("export")){ |
| 128 | 155 | String lineName=""; |
| 129 | 156 | if(!line.equals("")){ |
| ... | ... | @@ -137,9 +164,9 @@ public class CalcSheetServiceImpl extends BaseServiceImpl<CalcSheet, Integer> im |
| 137 | 164 | for (int i = 0; i < list.size(); i++) { |
| 138 | 165 | CalcSheet c=list.get(i); |
| 139 | 166 | Map<String, Object> m=new HashMap<String,Object>(); |
| 140 | - m.put("gs", c.getGsname()); | |
| 141 | - m.put("fgs", c.getFgsname()); | |
| 142 | - m.put("line", c.getXlName()); | |
| 167 | + m.put("gs", c.getGsname()!=null?c.getGsname():""); | |
| 168 | + m.put("fgs", c.getFgsname()!=null?c.getFgsname():""); | |
| 169 | + m.put("line", c.getXlName()!=null?c.getXlName():""); | |
| 143 | 170 | m.put("bcs", c.getJhszfcs()); |
| 144 | 171 | m.put("zdbcs", c.getSjszfczds()); |
| 145 | 172 | m.put("zdlv", c.getSzfczdl()); |
| ... | ... | @@ -1021,21 +1048,30 @@ public class CalcSheetServiceImpl extends BaseServiceImpl<CalcSheet, Integer> im |
| 1021 | 1048 | String type=map.get("type").toString(); |
| 1022 | 1049 | final String dates=date; |
| 1023 | 1050 | String sql_=""; |
| 1024 | - if(line.equals("")){ | |
| 1025 | - sql_= " and gsdm ='"+gs+"' and fgsdm like '%"+fgs+"%'"; | |
| 1051 | + List<String> objList = new ArrayList<String>(); | |
| 1052 | + objList.add(startDate); | |
| 1053 | + objList.add(endDate); | |
| 1054 | + if("".equals(gs.trim()) && "".equals(fgs.trim()) && "".equals(line.trim())){ | |
| 1055 | + | |
| 1056 | + } else if(line.equals("")){ | |
| 1057 | + sql_= " and gsdm = ? and fgsdm like CONCAT('%',?,'%') "; | |
| 1058 | + objList.add(gs); | |
| 1059 | + objList.add(fgs); | |
| 1026 | 1060 | }else{ |
| 1027 | - sql_=" and xl='"+line+"'"; | |
| 1061 | + sql_=" and xl = ? "; | |
| 1062 | + objList.add(line); | |
| 1028 | 1063 | } |
| 1029 | 1064 | String sql="select t.*,y.warrant_car as qzpcs from (" |
| 1030 | 1065 | + " select gsdm,fgsdm,xl,xl_name,sum(jhcc) as jhcc,sum(sjcc) as sjcc," |
| 1031 | 1066 | + " sum(sjcczgf) as sjcczgf,sum(jhbcs) as jhbcs,sum(sjbcs) as sjbcs " |
| 1032 | - + " from bsth_c_calc_sheet where date >='"+startDate+"' and date <='"+endDate+"'" | |
| 1067 | + + " from bsth_c_calc_sheet where date >= ? and date <= ? " | |
| 1033 | 1068 | + sql_ |
| 1034 | 1069 | + " group by gsdm,fgsdm,xl,xl_name ) " |
| 1035 | 1070 | + " t LEFT JOIN bsth_c_line y " |
| 1036 | - + " on t.xl=y.line_code order by fgsdm,xl_name"; | |
| 1037 | - List<Map<String, Object>> lists=jdbcTemplate.query(sql, | |
| 1038 | - new RowMapper<Map<String, Object>>(){ | |
| 1071 | + + " on t.xl=y.line_code order by gsdm,fgsdm,xl_name"; | |
| 1072 | + List<Map<String, Object>> lists=jdbcTemplate.query(sql, | |
| 1073 | + objList.toArray(), | |
| 1074 | + new RowMapper<Map<String, Object>>(){ | |
| 1039 | 1075 | @Override |
| 1040 | 1076 | public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { |
| 1041 | 1077 | Map<String, Object> s=new HashMap<String,Object>(); |
| ... | ... | @@ -1124,7 +1160,7 @@ public class CalcSheetServiceImpl extends BaseServiceImpl<CalcSheet, Integer> im |
| 1124 | 1160 | Map<String, Object> tempMap=new HashMap<String,Object>(); |
| 1125 | 1161 | tempMap.put("rq", "分类汇总"); |
| 1126 | 1162 | tempMap.put("line_", "共" + list.size() + "条线路"); |
| 1127 | - tempMap.put("xlName", "共" +count + "条线路"); | |
| 1163 | + tempMap.put("xlName", "共" + count + "条线路"); | |
| 1128 | 1164 | tempMap.put("jhcc", jhcc); |
| 1129 | 1165 | tempMap.put("sjcc", sjcc); |
| 1130 | 1166 | tempMap.put("sjcczgf", sjcczgf); |
| ... | ... | @@ -1144,6 +1180,7 @@ public class CalcSheetServiceImpl extends BaseServiceImpl<CalcSheet, Integer> im |
| 1144 | 1180 | }else{ |
| 1145 | 1181 | tempMap.put("zxl", "0.00%"); |
| 1146 | 1182 | } |
| 1183 | + | |
| 1147 | 1184 | if (type.equals("export")) { |
| 1148 | 1185 | String lineName=map.get("lineName").toString(); |
| 1149 | 1186 | ReportUtils ee = new ReportUtils(); |
| ... | ... | @@ -1152,6 +1189,82 @@ public class CalcSheetServiceImpl extends BaseServiceImpl<CalcSheet, Integer> im |
| 1152 | 1189 | ee.excelReplace(listI, new Object[] { tempMap }, path + "mould/calcTurnoutrate.xls", path + "export/" |
| 1153 | 1190 | + dates + "-" + lineName + "-营运线路出车率统计表.xls"); |
| 1154 | 1191 | } |
| 1192 | + | |
| 1193 | + if (type.equals("exportAll")) { | |
| 1194 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 1195 | + Map<String, Map<String, Object>> tempKeyMap = new HashMap<String, Map<String, Object>>(); | |
| 1196 | + List<Map<String, Object>> removeList = new ArrayList<Map<String, Object>>(); | |
| 1197 | + for(Map<String, Object> m : list){ | |
| 1198 | + if(m.get("gsName") != null && m.get("gsName").toString().trim().length() > 0 | |
| 1199 | + && m.get("gsName").toString().trim().contains("临港")){ | |
| 1200 | + removeList.add(m); | |
| 1201 | + } | |
| 1202 | + } | |
| 1203 | + for(Map<String, Object> m : removeList){ | |
| 1204 | + list.remove(m); | |
| 1205 | + } | |
| 1206 | + for(Map<String, Object> m : list){ | |
| 1207 | + if(m.get("gsName")!=null && m.get("gsName").toString().trim().length() > 0){ | |
| 1208 | + Map<String, Object> temp = new HashMap<String, Object>(); | |
| 1209 | + String gsName = m.get("gsName").toString().trim(); | |
| 1210 | + if(tempKeyMap.containsKey(gsName)){ | |
| 1211 | + temp = tempKeyMap.get(gsName); | |
| 1212 | + temp.put("count", Long.valueOf(temp.get("count").toString()) + 1); | |
| 1213 | + temp.put("jhcc", Long.valueOf(m.get("jhcc")!=null?m.get("jhcc").toString():"0") | |
| 1214 | + + Long.valueOf(temp.get("jhcc")!=null?temp.get("jhcc").toString():"0")); | |
| 1215 | + temp.put("sjcc", Long.valueOf(m.get("sjcc")!=null?m.get("sjcc").toString():"0") | |
| 1216 | + + Long.valueOf(temp.get("sjcc")!=null?temp.get("sjcc").toString():"0")); | |
| 1217 | + temp.put("sjcczgf", Long.valueOf(m.get("sjcczgf")!=null?m.get("sjcczgf").toString():"0") | |
| 1218 | + + Long.valueOf(temp.get("sjcczgf")!=null?temp.get("sjcczgf").toString():"0")); | |
| 1219 | + temp.put("jhbc", Long.valueOf(m.get("jhbc")!=null?m.get("jhbc").toString():"0") | |
| 1220 | + + Long.valueOf(temp.get("jhbc")!=null?temp.get("jhbc").toString():"0")); | |
| 1221 | + temp.put("sjbc", Long.valueOf(m.get("sjbc")!=null?m.get("sjbc").toString():"0") | |
| 1222 | + + Long.valueOf(temp.get("sjbc")!=null?temp.get("sjbc").toString():"0")); | |
| 1223 | + temp.put("qzpcs", Long.valueOf(m.get("qzpcs")!=null?m.get("qzpcs").toString():"0") | |
| 1224 | + + Long.valueOf(temp.get("qzpcs")!=null?temp.get("qzpcs").toString():"0")); | |
| 1225 | + } else { | |
| 1226 | + temp.put("rq", ""); | |
| 1227 | + temp.put("gsName", gsName); | |
| 1228 | + temp.put("fgsName", "小计"); | |
| 1229 | + temp.put("count", 1); | |
| 1230 | + temp.put("jhcc", m.get("jhcc")!=null?m.get("jhcc").toString()+"":"0"); | |
| 1231 | + temp.put("sjcc", m.get("sjcc")!=null?m.get("sjcc").toString()+"":"0"); | |
| 1232 | + temp.put("sjcczgf", m.get("sjcczgf")!=null?m.get("sjcczgf").toString()+"":"0"); | |
| 1233 | + temp.put("jhbc", m.get("jhbc")!=null?m.get("jhbc").toString()+"":"0"); | |
| 1234 | + temp.put("sjbc", m.get("sjbc")!=null?m.get("sjbc").toString()+"":"0"); | |
| 1235 | + temp.put("qzpcs", m.get("qzpcs")!=null?m.get("qzpcs").toString()+"":"0"); | |
| 1236 | + temp.put("sm", ""); | |
| 1237 | + tempList.add(temp); | |
| 1238 | + tempKeyMap.put(gsName, temp); | |
| 1239 | + } | |
| 1240 | + } | |
| 1241 | + } | |
| 1242 | + | |
| 1243 | + for(Map<String, Object> m : tempList){ | |
| 1244 | + m.put("line_", "共" + m.get("count").toString() + "条线路"); | |
| 1245 | + m.put("xlName", "共" + m.get("count").toString() + "条线路"); | |
| 1246 | + if(m.get("jhcc")!=null && Long.valueOf(m.get("jhcc").toString()) > 0l){ | |
| 1247 | + m.put("ccl", df.format((Float.valueOf(m.get("sjcc").toString()) / Long.valueOf(m.get("jhcc").toString()))*100)+"%"); | |
| 1248 | + m.put("cclzgf", df.format((Float.valueOf(m.get("sjcczgf").toString()) / Long.valueOf(m.get("jhcc").toString()))*100)+"%"); | |
| 1249 | + }else{ | |
| 1250 | + m.put("ccl", "0.00%"); | |
| 1251 | + m.put("cclzgf", "0.00%"); | |
| 1252 | + } | |
| 1253 | + if(m.get("jhbc")!=null && Long.valueOf(m.get("jhbc").toString()) > 0l){ | |
| 1254 | + m.put("zxl", df.format((Float.valueOf(m.get("sjbc").toString()) / Long.valueOf(m.get("jhbc").toString()))*100)+"%"); | |
| 1255 | + }else{ | |
| 1256 | + m.put("zxl", "0.00%"); | |
| 1257 | + } | |
| 1258 | + list.add(m); | |
| 1259 | + } | |
| 1260 | + | |
| 1261 | + ReportUtils ee = new ReportUtils(); | |
| 1262 | + listI.add(list.iterator()); | |
| 1263 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1264 | + ee.excelReplace(listI, new Object[] { tempMap }, path + "mould/calcTurnoutrate.xls", path + "export/" | |
| 1265 | + + dates + "-全部公司-营运线路出车率统计表.xls"); | |
| 1266 | + } | |
| 1267 | + | |
| 1155 | 1268 | list.add(tempMap); |
| 1156 | 1269 | return list; |
| 1157 | 1270 | } | ... | ... |
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
| 1 | 1 | package com.bsth.service.report.impl; |
| 2 | 2 | import com.bsth.common.ResponseCode; |
| 3 | 3 | import com.bsth.data.BasicData; |
| 4 | -import com.bsth.entity.CarDevice; | |
| 5 | 4 | import com.bsth.entity.Line; |
| 6 | 5 | import com.bsth.entity.Personnel; |
| 7 | 6 | import com.bsth.entity.StationRoute; |
| 7 | +import com.bsth.entity.calc.CalcStatistics; | |
| 8 | 8 | import com.bsth.entity.excep.ArrivalInfo; |
| 9 | -import com.bsth.entity.mcy_forms.Daily; | |
| 10 | 9 | import com.bsth.entity.mcy_forms.Singledata; |
| 11 | 10 | import com.bsth.entity.oil.Dlb; |
| 12 | 11 | import com.bsth.entity.oil.Ylb; |
| ... | ... | @@ -17,6 +16,7 @@ import com.bsth.entity.sys.Interval; |
| 17 | 16 | import com.bsth.repository.LineRepository; |
| 18 | 17 | import com.bsth.repository.StationRouteRepository; |
| 19 | 18 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 19 | +import com.bsth.service.LineService; | |
| 20 | 20 | import com.bsth.service.calc.CalcWaybillService; |
| 21 | 21 | import com.bsth.service.report.CulateMileageService; |
| 22 | 22 | import com.bsth.service.report.ReportService; |
| ... | ... | @@ -26,10 +26,8 @@ import com.bsth.util.ComparableChild; |
| 26 | 26 | import com.bsth.util.ComparableJob; |
| 27 | 27 | import com.bsth.util.ReportUtils; |
| 28 | 28 | import com.bsth.util.db.DBUtils_MS; |
| 29 | -import com.google.protobuf.StringValue; | |
| 30 | 29 | |
| 31 | 30 | import org.apache.commons.lang.StringUtils; |
| 32 | -import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |
| 33 | 31 | import org.slf4j.Logger; |
| 34 | 32 | import org.slf4j.LoggerFactory; |
| 35 | 33 | import org.springframework.beans.factory.annotation.Autowired; |
| ... | ... | @@ -37,7 +35,7 @@ import org.springframework.jdbc.core.JdbcTemplate; |
| 37 | 35 | import org.springframework.jdbc.core.RowMapper; |
| 38 | 36 | import org.springframework.stereotype.Service; |
| 39 | 37 | |
| 40 | -import java.io.FileOutputStream; | |
| 38 | +import java.math.BigDecimal; | |
| 41 | 39 | import java.sql.Connection; |
| 42 | 40 | import java.sql.PreparedStatement; |
| 43 | 41 | import java.sql.ResultSet; |
| ... | ... | @@ -47,8 +45,6 @@ import java.text.ParseException; |
| 47 | 45 | import java.text.SimpleDateFormat; |
| 48 | 46 | import java.util.*; |
| 49 | 47 | |
| 50 | -import javax.persistence.criteria.CriteriaBuilder.In; | |
| 51 | - | |
| 52 | 48 | @Service |
| 53 | 49 | public class ReportServiceImpl implements ReportService{ |
| 54 | 50 | |
| ... | ... | @@ -72,6 +68,8 @@ public class ReportServiceImpl implements ReportService{ |
| 72 | 68 | @Autowired |
| 73 | 69 | CulateMileageService culateService; |
| 74 | 70 | @Autowired |
| 71 | + LineService lineService; | |
| 72 | + @Autowired | |
| 75 | 73 | LineRepository lineRepository; |
| 76 | 74 | @Autowired |
| 77 | 75 | StationRouteRepository stationRouteRepository; |
| ... | ... | @@ -2509,6 +2507,222 @@ public class ReportServiceImpl implements ReportService{ |
| 2509 | 2507 | List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd); |
| 2510 | 2508 | return listStation; |
| 2511 | 2509 | } |
| 2510 | + | |
| 2511 | + @Override | |
| 2512 | + public List<Map<String, Object>> countMileageSum(Map<String, Object> map) { | |
| 2513 | + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | |
| 2514 | + | |
| 2515 | + String date="", date2=""; | |
| 2516 | + if(map.get("date")!=null){ | |
| 2517 | + date=map.get("date").toString(); | |
| 2518 | + } | |
| 2519 | + if(map.get("date2")!=null){ | |
| 2520 | + date2=map.get("date2").toString(); | |
| 2521 | + } | |
| 2522 | + String nature="0"; | |
| 2523 | + if(map.get("nature")!=null){ | |
| 2524 | + nature=map.get("nature").toString(); | |
| 2525 | + } | |
| 2526 | + String type=""; | |
| 2527 | + if(map.get("type")!=null){ | |
| 2528 | + type=map.get("type").toString(); | |
| 2529 | + } | |
| 2530 | +// Map<String, Object> param = new HashMap<String, Object>(); | |
| 2531 | +// param.put("date", date); | |
| 2532 | +// param.put("date2", date2); | |
| 2533 | +// param.put("nature", nature); | |
| 2534 | +// param.put("type", "query"); | |
| 2535 | +// List<Map<String, Object>> list = countByList(param); | |
| 2536 | + List<Map<String, Object>> listAll = calcWaybillService.getLineMileage("", "", "", date, date2, "", "", "", "query"); | |
| 2537 | + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); | |
| 2538 | + Map<String, Boolean> lineMap=lineService.lineNature(); | |
| 2539 | + if(nature.equals("0")){ | |
| 2540 | + list=listAll; | |
| 2541 | + }else{ | |
| 2542 | + for (Map<String, Object> m : listAll) { | |
| 2543 | + if(m.get("xl") != null && m.get("xl").toString().trim().length() > 0){ | |
| 2544 | + if(nature.equals("1")){ | |
| 2545 | + if(lineMap.get(m.get("xl").toString())){ | |
| 2546 | + list.add(m); | |
| 2547 | + } | |
| 2548 | + }else{ | |
| 2549 | + if(!lineMap.get(m.get("xl").toString())){ | |
| 2550 | + list.add(m); | |
| 2551 | + } | |
| 2552 | + } | |
| 2553 | + } | |
| 2554 | + } | |
| 2555 | + } | |
| 2556 | + | |
| 2557 | + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>(); | |
| 2558 | + Map<String, Object> temp = new HashMap<String, Object>(); | |
| 2559 | + temp.put("gsName", "杨高");temp.put("fgsName", "杨高分");temp.put("key", "05_5"); | |
| 2560 | + resList.add(temp);keyMap.put("05_5", temp); | |
| 2561 | + temp = new HashMap<String, Object>(); | |
| 2562 | + temp.put("gsName", "杨高");temp.put("fgsName", "金桥分");temp.put("key", "05_2"); | |
| 2563 | + resList.add(temp);keyMap.put("05_2", temp); | |
| 2564 | + temp = new HashMap<String, Object>(); | |
| 2565 | + temp.put("gsName", "杨高");temp.put("fgsName", "川沙分");temp.put("key", "05_1"); | |
| 2566 | + resList.add(temp);keyMap.put("05_1", temp); | |
| 2567 | + temp = new HashMap<String, Object>(); | |
| 2568 | + temp.put("gsName", "杨高");temp.put("fgsName", "周浦分");temp.put("key", "05_6"); | |
| 2569 | + resList.add(temp);keyMap.put("05_6", temp); | |
| 2570 | + temp = new HashMap<String, Object>(); | |
| 2571 | + temp.put("gsName", "杨高");temp.put("fgsName", "小计");temp.put("key", "05_sum"); | |
| 2572 | + resList.add(temp);keyMap.put("05_sum", temp); | |
| 2573 | + | |
| 2574 | + temp = new HashMap<String, Object>(); | |
| 2575 | + temp.put("gsName", "上南");temp.put("fgsName", "一分");temp.put("key", "55_4"); | |
| 2576 | + resList.add(temp);keyMap.put("55_4", temp); | |
| 2577 | + temp = new HashMap<String, Object>(); | |
| 2578 | + temp.put("gsName", "上南");temp.put("fgsName", "二分");temp.put("key", "55_1"); | |
| 2579 | + resList.add(temp);keyMap.put("55_1", temp); | |
| 2580 | + temp = new HashMap<String, Object>(); | |
| 2581 | + temp.put("gsName", "上南");temp.put("fgsName", "三分");temp.put("key", "55_2"); | |
| 2582 | + resList.add(temp);keyMap.put("55_2", temp); | |
| 2583 | + temp = new HashMap<String, Object>(); | |
| 2584 | + temp.put("gsName", "上南");temp.put("fgsName", "六分");temp.put("key", "55_3"); | |
| 2585 | + resList.add(temp);keyMap.put("55_3", temp); | |
| 2586 | + temp = new HashMap<String, Object>(); | |
| 2587 | + temp.put("gsName", "上南");temp.put("fgsName", "小计");temp.put("key", "55_sum"); | |
| 2588 | + resList.add(temp);keyMap.put("55_sum", temp); | |
| 2589 | + | |
| 2590 | + temp = new HashMap<String, Object>(); | |
| 2591 | + temp.put("gsName", "金高");temp.put("fgsName", "一分");temp.put("key", "22_5"); | |
| 2592 | + resList.add(temp);keyMap.put("22_5", temp); | |
| 2593 | + temp = new HashMap<String, Object>(); | |
| 2594 | + temp.put("gsName", "金高");temp.put("fgsName", "二分");temp.put("key", "22_2"); | |
| 2595 | + resList.add(temp);keyMap.put("22_2", temp); | |
| 2596 | + temp = new HashMap<String, Object>(); | |
| 2597 | + temp.put("gsName", "金高");temp.put("fgsName", "三分");temp.put("key", "22_3"); | |
| 2598 | + resList.add(temp);keyMap.put("22_3", temp); | |
| 2599 | + temp = new HashMap<String, Object>(); | |
| 2600 | + temp.put("gsName", "金高");temp.put("fgsName", "四分");temp.put("key", "22_1"); | |
| 2601 | + resList.add(temp);keyMap.put("22_1", temp); | |
| 2602 | + temp = new HashMap<String, Object>(); | |
| 2603 | + temp.put("gsName", "金高");temp.put("fgsName", "小计");temp.put("key", "22_sum"); | |
| 2604 | + resList.add(temp);keyMap.put("22_sum", temp); | |
| 2605 | + | |
| 2606 | + temp = new HashMap<String, Object>(); | |
| 2607 | + temp.put("gsName", "南汇");temp.put("fgsName", "一分");temp.put("key", "26_1"); | |
| 2608 | + resList.add(temp);keyMap.put("26_1", temp); | |
| 2609 | + temp = new HashMap<String, Object>(); | |
| 2610 | + temp.put("gsName", "南汇");temp.put("fgsName", "二分");temp.put("key", "26_2"); | |
| 2611 | + resList.add(temp);keyMap.put("26_2", temp); | |
| 2612 | + temp = new HashMap<String, Object>(); | |
| 2613 | + temp.put("gsName", "南汇");temp.put("fgsName", "三分");temp.put("key", "26_3"); | |
| 2614 | + resList.add(temp);keyMap.put("26_3", temp); | |
| 2615 | + temp = new HashMap<String, Object>(); | |
| 2616 | + temp.put("gsName", "南汇");temp.put("fgsName", "六分");temp.put("key", "26_6"); | |
| 2617 | + resList.add(temp);keyMap.put("26_6", temp); | |
| 2618 | + temp = new HashMap<String, Object>(); | |
| 2619 | + temp.put("gsName", "南汇");temp.put("fgsName", "小计");temp.put("key", "26_sum"); | |
| 2620 | + resList.add(temp);keyMap.put("26_sum", temp); | |
| 2621 | + | |
| 2622 | + temp = new HashMap<String, Object>(); | |
| 2623 | + temp.put("gsName", "浦交");temp.put("fgsName", " ");temp.put("key", "88"); | |
| 2624 | + resList.add(temp);keyMap.put("88", temp); | |
| 2625 | + | |
| 2626 | + for(Map<String, Object> m : list){ | |
| 2627 | + m.put("gsBm", m.get("gsdm")); | |
| 2628 | + m.put("fgsBm", m.get("fgsdm")); | |
| 2629 | + if(m.get("gsBm") != null && m.get("fgsBm") != null | |
| 2630 | + && m.get("gsBm").toString().trim().length() > 0 | |
| 2631 | + && m.get("fgsBm").toString().trim().length() > 0){ | |
| 2632 | + String gsBm = m.get("gsBm").toString().trim(); | |
| 2633 | + String fgsBm = m.get("fgsBm").toString().trim(); | |
| 2634 | + String key = gsBm + "_" + fgsBm; | |
| 2635 | + if(keyMap.containsKey(key)){ | |
| 2636 | + Map<String, Object> t = keyMap.get(key); | |
| 2637 | + for(String s : m.keySet()){ | |
| 2638 | + if("gsName,fgsName,key".contains(s)){ | |
| 2639 | + continue; | |
| 2640 | + } | |
| 2641 | + try { | |
| 2642 | + if(t.containsKey(s)){ | |
| 2643 | + t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString()))); | |
| 2644 | + } else { | |
| 2645 | + t.put(s, m.get(s).toString()); | |
| 2646 | + } | |
| 2647 | + } catch (Exception e) { | |
| 2648 | + // TODO: handle exception | |
| 2649 | + continue; | |
| 2650 | + } | |
| 2651 | + } | |
| 2652 | + } | |
| 2653 | + } | |
| 2654 | + } | |
| 2655 | + | |
| 2656 | + for(Map<String, Object> m : resList){ | |
| 2657 | + String key = m.get("key").toString(); | |
| 2658 | + if(key.contains("_sum") || key.equals("88")){ | |
| 2659 | + continue; | |
| 2660 | + } | |
| 2661 | + | |
| 2662 | + Map<String, Object> t = keyMap.get(key.split("_")[0] + "_sum"); | |
| 2663 | + for(String s : m.keySet()){ | |
| 2664 | + if("gsName,fgsName,key".contains(s)){ | |
| 2665 | + continue; | |
| 2666 | + } | |
| 2667 | + try { | |
| 2668 | + if(t.containsKey(s)){ | |
| 2669 | + t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString()))); | |
| 2670 | + } else { | |
| 2671 | + t.put(s, m.get(s).toString()); | |
| 2672 | + } | |
| 2673 | + } catch (Exception e) { | |
| 2674 | + // TODO: handle exception | |
| 2675 | + continue; | |
| 2676 | + } | |
| 2677 | + } | |
| 2678 | + | |
| 2679 | + t = keyMap.get("88"); | |
| 2680 | + for(String s : m.keySet()){ | |
| 2681 | + if("gsName,fgsName,key".contains(s)){ | |
| 2682 | + continue; | |
| 2683 | + } | |
| 2684 | + try { | |
| 2685 | + if(t.containsKey(s)){ | |
| 2686 | + t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString()))); | |
| 2687 | + } else { | |
| 2688 | + t.put(s, m.get(s).toString()); | |
| 2689 | + } | |
| 2690 | + } catch (Exception e) { | |
| 2691 | + // TODO: handle exception | |
| 2692 | + continue; | |
| 2693 | + } | |
| 2694 | + } | |
| 2695 | + } | |
| 2696 | + | |
| 2697 | + if(type.equals("export")){ | |
| 2698 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 2699 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 2700 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 2701 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 2702 | + m.put("date", date); | |
| 2703 | + String xls="countMileageSum.xls"; | |
| 2704 | + ReportUtils ee = new ReportUtils(); | |
| 2705 | + try { | |
| 2706 | + String dateTime = ""; | |
| 2707 | + if(date.equals(date2)){ | |
| 2708 | + dateTime = sdfSimple.format(sdfMonth.parse(date)); | |
| 2709 | + } else { | |
| 2710 | + dateTime = sdfSimple.format(sdfMonth.parse(date)) | |
| 2711 | + +"-"+sdfSimple.format(sdfMonth.parse(date2)); | |
| 2712 | + } | |
| 2713 | + listI.add(resList.iterator()); | |
| 2714 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 2715 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls, | |
| 2716 | + path + "export/"+dateTime+"-审计公里汇总表.xls"); | |
| 2717 | + } catch (Exception e) { | |
| 2718 | + // TODO: handle exception | |
| 2719 | + e.printStackTrace(); | |
| 2720 | + } | |
| 2721 | + } | |
| 2722 | + | |
| 2723 | + return resList; | |
| 2724 | + } | |
| 2725 | + | |
| 2512 | 2726 | @Override |
| 2513 | 2727 | public List<Map<String, Object>> countByList(Map<String, Object> map) { |
| 2514 | 2728 | // TODO Auto-generated method stub |
| ... | ... | @@ -2538,6 +2752,10 @@ public class ReportServiceImpl implements ReportService{ |
| 2538 | 2752 | if(map.get("xlName")!=null){ |
| 2539 | 2753 | xlName=map.get("xlName").toString(); |
| 2540 | 2754 | } |
| 2755 | + String nature="0"; | |
| 2756 | + if(map.get("nature")!=null){ | |
| 2757 | + nature=map.get("nature").toString(); | |
| 2758 | + } | |
| 2541 | 2759 | String type=""; |
| 2542 | 2760 | if(map.get("type")!=null){ |
| 2543 | 2761 | type=map.get("type").toString(); |
| ... | ... | @@ -2545,7 +2763,9 @@ public class ReportServiceImpl implements ReportService{ |
| 2545 | 2763 | //所有班次信息 |
| 2546 | 2764 | List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); |
| 2547 | 2765 | line =line.trim(); |
| 2548 | - if(line.equals("")){ | |
| 2766 | + if(gsdm.equals("") && fgsdm.equals("") && line.equals("")){ | |
| 2767 | + list = scheduleRealInfoRepository.scheduleByDateAndLineTj3(date, date2); | |
| 2768 | + } else if(line.equals("")){ | |
| 2549 | 2769 | //查询所有线路 |
| 2550 | 2770 | list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date,date2,gsdm,fgsdm); |
| 2551 | 2771 | }else{ |
| ... | ... | @@ -2553,20 +2773,28 @@ public class ReportServiceImpl implements ReportService{ |
| 2553 | 2773 | list = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date,date2); |
| 2554 | 2774 | } |
| 2555 | 2775 | |
| 2776 | + Map<String, Boolean> lineMap = lineService.lineNature(); | |
| 2777 | + | |
| 2778 | + List<String> objList = new ArrayList<String>(); | |
| 2556 | 2779 | String sql="select r.xl_bm" |
| 2557 | 2780 | + " from bsth_c_s_sp_info_real r where" |
| 2558 | - + " r.schedule_date_str BETWEEN '"+date+"' and '"+date2+"'"; | |
| 2559 | - | |
| 2560 | - | |
| 2561 | - if(line.equals("")){ | |
| 2562 | - sql +="and r.gs_bm='"+gsdm+"' " | |
| 2563 | - + " and r.fgs_bm='"+fgsdm+"'"; | |
| 2781 | + + " r.schedule_date_str BETWEEN ? and ?"; | |
| 2782 | + objList.add(date); | |
| 2783 | + objList.add(date2); | |
| 2784 | + if("".equals(gsdm.trim()) && "".equals(fgsdm.trim()) && "".equals(line.trim())){ | |
| 2785 | + | |
| 2786 | + } else if(line.equals("")){ | |
| 2787 | + sql +=" and r.gs_bm=?" | |
| 2788 | + + " and r.fgs_bm like CONCAT('%',?,'%')"; | |
| 2789 | + objList.add(gsdm); | |
| 2790 | + objList.add(fgsdm); | |
| 2564 | 2791 | }else{ |
| 2565 | - sql += " and r.xl_bm = '"+line+"'"; | |
| 2792 | + sql += " and r.xl_bm = ?"; | |
| 2793 | + objList.add(line); | |
| 2566 | 2794 | } |
| 2567 | 2795 | sql += " group by r.xl_bm"; |
| 2568 | 2796 | |
| 2569 | - List<String> listLine=jdbcTemplate.query(sql, new RowMapper<String>() { | |
| 2797 | + List<String> listLine=jdbcTemplate.query(sql, objList.toArray(), new RowMapper<String>() { | |
| 2570 | 2798 | @Override |
| 2571 | 2799 | public String mapRow(ResultSet arg0, int arg1) throws SQLException { |
| 2572 | 2800 | String ve = arg0.getString("xl_bm"); |
| ... | ... | @@ -2576,6 +2804,18 @@ public class ReportServiceImpl implements ReportService{ |
| 2576 | 2804 | for (int i = 0; i < listLine.size(); i++) { |
| 2577 | 2805 | List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>(); |
| 2578 | 2806 | String lineStr=listLine.get(i); |
| 2807 | + if("0".equals(nature)){ // 全部 | |
| 2808 | + | |
| 2809 | + } else if("1".equals(nature)){ // 营运 | |
| 2810 | + if(!(lineMap.containsKey(lineStr) && lineMap.get(lineStr))){ | |
| 2811 | + continue; | |
| 2812 | + } | |
| 2813 | + } else { // 非营运 | |
| 2814 | + if(lineMap.containsKey(lineStr) && lineMap.get(lineStr)){ | |
| 2815 | + continue; | |
| 2816 | + } | |
| 2817 | + } | |
| 2818 | + | |
| 2579 | 2819 | for (int j = 0; j < list.size(); j++) { |
| 2580 | 2820 | ScheduleRealInfo s=list.get(j); |
| 2581 | 2821 | if(s.getXlBm().equals(lineStr)){ |
| ... | ... | @@ -2756,6 +2996,8 @@ public class ReportServiceImpl implements ReportService{ |
| 2756 | 2996 | map.put("fgs", ""); |
| 2757 | 2997 | }else{ |
| 2758 | 2998 | map.put("xlName", list.get(0).getXlName()); |
| 2999 | + map.put("gsBm", list.get(0).getGsBm()); | |
| 3000 | + map.put("fgsBm", list.get(0).getFgsBm()); | |
| 2759 | 3001 | map.put("gs", list.get(0).getGsName()); |
| 2760 | 3002 | map.put("fgs", list.get(0).getFgsName()); |
| 2761 | 3003 | map.put("jGh", list.get(0).getjGh()); | ... | ... |
src/main/java/com/bsth/service/schedule/EmployeeConfigInfoService.java
| ... | ... | @@ -30,8 +30,8 @@ public interface EmployeeConfigInfoService extends BService<EmployeeConfigInfo, |
| 30 | 30 | void validate_jsy_destroy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException; |
| 31 | 31 | // 验证售票员是否停用 |
| 32 | 32 | void validate_spy_destroy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException; |
| 33 | - // 获取线路人员配置停用信息描述 | |
| 34 | - List<String> validate_get_destroy_info(List<CompanyAuthority> companyAuthorityList); | |
| 33 | + // 获取人员停用信息(使用排班信息辅助判定) | |
| 34 | + List<String> validate_get_destory_info(); | |
| 35 | 35 | |
| 36 | 36 | void toggleCancel(Long id) throws ScheduleException; |
| 37 | 37 | Long getMaxDbbm(Integer xlId); | ... | ... |
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java
| ... | ... | @@ -34,6 +34,36 @@ public interface TTInfoDetailService extends BService<TTInfoDetail, Long> { |
| 34 | 34 | DataToolsFile exportDynamicTTinfo(TTinfoDetailDynamicData.DTInfos dtInfos, DataToolsFileType type) throws ScheduleException; |
| 35 | 35 | |
| 36 | 36 | /** |
| 37 | + * 导出时刻表预览视图信息。 | |
| 38 | + * @param ttInfoId 时刻表Id | |
| 39 | + * @return | |
| 40 | + * @throws ScheduleException | |
| 41 | + */ | |
| 42 | + DataToolsFile exportPvInfo(Long ttInfoId) throws ScheduleException; | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * 添加路牌(默认添加一个班次)。 | |
| 46 | + * @param ttInfoId 时刻表Id | |
| 47 | + * @param lpId 路牌Id | |
| 48 | + */ | |
| 49 | + void addLp(Long ttInfoId, Long lpId); | |
| 50 | + | |
| 51 | + /** | |
| 52 | + * 删除指定路牌的所有班次。 | |
| 53 | + * @param ttInfoId 时刻表Id | |
| 54 | + * @param lpId 路牌Id | |
| 55 | + */ | |
| 56 | + void removeBcByLp(Long ttInfoId, Long lpId); | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * 将路牌A的班次和路牌B的班次调换。 | |
| 60 | + * @param ttInfoId 时刻表Id | |
| 61 | + * @param lpAId 路牌AId | |
| 62 | + * @param lpBId 路牌BId | |
| 63 | + */ | |
| 64 | + void switchBcByLp(Long ttInfoId, Long lpAId, Long lpBId); | |
| 65 | + | |
| 66 | + /** | |
| 37 | 67 | * 获取时刻表最大发车顺序号 |
| 38 | 68 | * @param xlid 线路id |
| 39 | 69 | * @param ttinfoid 时刻表id | ... | ... |
src/main/java/com/bsth/service/schedule/impl/EmployeeConfigInfoServiceImpl.java
| ... | ... | @@ -4,6 +4,7 @@ import com.bsth.entity.Personnel; |
| 4 | 4 | import com.bsth.entity.schedule.EmployeeConfigInfo; |
| 5 | 5 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; |
| 6 | 6 | import com.bsth.entity.sys.CompanyAuthority; |
| 7 | +import com.bsth.entity.sys.Module; | |
| 7 | 8 | import com.bsth.repository.PersonnelRepository; |
| 8 | 9 | import com.bsth.service.schedule.EmployeeConfigInfoService; |
| 9 | 10 | import com.bsth.service.schedule.EmployeeService; |
| ... | ... | @@ -11,11 +12,15 @@ import com.bsth.service.schedule.ScheduleRule1FlatService; |
| 11 | 12 | import com.bsth.service.schedule.exception.ScheduleException; |
| 12 | 13 | import com.bsth.service.schedule.utils.DataToolsFile; |
| 13 | 14 | import com.bsth.service.schedule.utils.DataToolsService; |
| 15 | +import com.bsth.service.sys.ModuleService; | |
| 16 | +import com.bsth.util.DateUtils; | |
| 17 | +import org.apache.commons.lang3.time.DateFormatUtils; | |
| 14 | 18 | import org.springframework.beans.factory.annotation.Autowired; |
| 15 | 19 | import org.springframework.beans.factory.annotation.Qualifier; |
| 16 | 20 | import org.springframework.dao.DataAccessException; |
| 17 | 21 | import org.springframework.jdbc.core.JdbcTemplate; |
| 18 | 22 | import org.springframework.jdbc.core.ResultSetExtractor; |
| 23 | +import org.springframework.jdbc.core.RowMapper; | |
| 19 | 24 | import org.springframework.stereotype.Service; |
| 20 | 25 | import org.springframework.transaction.annotation.Transactional; |
| 21 | 26 | import org.springframework.util.CollectionUtils; |
| ... | ... | @@ -277,51 +282,67 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigIn |
| 277 | 282 | } |
| 278 | 283 | } |
| 279 | 284 | |
| 285 | + @Autowired | |
| 286 | + private ModuleService moduleService; | |
| 280 | 287 | @Transactional |
| 281 | 288 | @Override |
| 282 | - public List<String> validate_get_destroy_info(List<CompanyAuthority> companyAuthorityList) { | |
| 283 | - // 获取公司分公司权限代码 | |
| 284 | - List<String> gs_fgs_dms = new ArrayList<>(); | |
| 285 | - for (CompanyAuthority companyAuthority : companyAuthorityList) { | |
| 286 | - gs_fgs_dms.add(companyAuthority.getCompanyCode() + "_" + companyAuthority.getSubCompanyCode()); | |
| 287 | - } | |
| 288 | - | |
| 289 | - // 查询所有人员配置,不用in操作符,n+1查询慢,程序过滤 | |
| 290 | - Map<String, Object> params = new HashMap<>(); | |
| 291 | - List<EmployeeConfigInfo> employeeConfigInfoList_all = (List<EmployeeConfigInfo>) this.list(params); | |
| 292 | - List<EmployeeConfigInfo> employeeConfigInfoList = new ArrayList<>(); | |
| 293 | - for (EmployeeConfigInfo employeeConfigInfo : employeeConfigInfoList_all) { | |
| 294 | - if (gs_fgs_dms.contains(employeeConfigInfo.getXl().getCgsbm())) { | |
| 295 | - employeeConfigInfoList.add(employeeConfigInfo); | |
| 289 | + public List<String> validate_get_destory_info() { | |
| 290 | + // 1、查找当前用户是否有运营计划管理,没有的话不分析是否有停用人鱼信息 | |
| 291 | + List<Module> moduleList = this.moduleService.findByCurrentUser(); | |
| 292 | + boolean hasPlanModule = false; | |
| 293 | + for (Module module : moduleList) { | |
| 294 | + if ("运营计划管理".equals(module.getName())) { | |
| 295 | + hasPlanModule = true; | |
| 296 | + break; | |
| 296 | 297 | } |
| 297 | 298 | } |
| 299 | + if (!hasPlanModule) { | |
| 300 | + return null; | |
| 301 | + } | |
| 298 | 302 | |
| 299 | - // 停用信息 | |
| 300 | - List<String> destroy_infos = new ArrayList<>(); | |
| 301 | - String info_format = "线路[%s]中人员配置有停用人员,请处理!"; | |
| 302 | - String info = ""; | |
| 303 | - Integer xlId = null; | |
| 304 | - for (EmployeeConfigInfo employeeConfigInfo : employeeConfigInfoList) { | |
| 305 | - if (employeeConfigInfo.getJsy() != null && | |
| 306 | - employeeConfigInfo.getJsy().getDestroy() != null && | |
| 307 | - employeeConfigInfo.getJsy().getDestroy() == 1) { // 驾驶员判定是否停用 | |
| 308 | - info = String.format(info_format, employeeConfigInfo.getXl().getName()); | |
| 309 | - if (!destroy_infos.contains(info)) { | |
| 310 | - destroy_infos.add(info); | |
| 311 | - } | |
| 312 | - } | |
| 313 | - | |
| 314 | - if (employeeConfigInfo.getSpy() != null && | |
| 315 | - employeeConfigInfo.getSpy().getDestroy() != null && | |
| 316 | - employeeConfigInfo.getSpy().getDestroy() == 1) { | |
| 317 | - info = String.format(info_format, employeeConfigInfo.getXl().getName()); | |
| 318 | - if (!destroy_infos.contains(info)) { | |
| 319 | - destroy_infos.add(info); | |
| 320 | - } | |
| 303 | + // 2、计算从当前时间开始的排班计划中是否有停用人员 | |
| 304 | + String sql = | |
| 305 | + "select distinct " + | |
| 306 | + "plan.xl_name xlName " + | |
| 307 | + ", plan.schedule_date scheduleDate " + | |
| 308 | + "from bsth_c_s_sp_info plan " + | |
| 309 | + "left join bsth_c_personnel jsy on jsy.id = plan.j " + | |
| 310 | + "left join bsth_c_personnel spy on spy.id = plan.s " + | |
| 311 | + "where plan.schedule_date >= ? " + | |
| 312 | + "and (jsy.destroy = 1 || spy.destroy = 1) " + | |
| 313 | + "group by plan.xl_name, plan.schedule_date " + | |
| 314 | + "order by plan.xl_name, plan.schedule_date "; | |
| 315 | + | |
| 316 | +// String sql = | |
| 317 | +// "select distinct " + | |
| 318 | +// "pinfo.xl_name xlName " + | |
| 319 | +// ", pinfo.schedule_date scheduleDate " + | |
| 320 | +// "from " + | |
| 321 | +// "(" + | |
| 322 | +// "select plan.xl_name, plan.schedule_date " + | |
| 323 | +// "from bsth_c_s_sp_info plan " + | |
| 324 | +// "left join bsth_c_personnel jsy on plan.j = jsy.id " + | |
| 325 | +// "left join bsth_c_personnel spy on plan.s = spy.id " + | |
| 326 | +// "where schedule_date >= ? " + | |
| 327 | +// "and (jsy.destroy = 1 || spy.destroy = 1) " + | |
| 328 | +// "order by plan.xl_name asc, plan.schedule_date asc " + | |
| 329 | +// ") pinfo " + | |
| 330 | +// "group by pinfo.xl_name, pinfo.schedule_date "; | |
| 331 | + | |
| 332 | + | |
| 333 | + Date currentDate = new Date(DateUtils.getTimestamp()); | |
| 334 | + System.out.println(currentDate); | |
| 335 | + String info_format = "线路[%s][%s]排班中有人员已经停用,请及时处理!"; | |
| 336 | + List<String> infoList = this.jdbcTemplate.query(sql, new Object[] {currentDate}, new RowMapper<String>() { | |
| 337 | + @Override | |
| 338 | + public String mapRow(ResultSet resultSet, int i) throws SQLException { | |
| 339 | + String xlName = resultSet.getString("xlName"); | |
| 340 | + Date scheduleDate = new Date(resultSet.getDate("scheduleDate").getTime()); | |
| 341 | + return String.format(info_format, xlName, DateFormatUtils.format(scheduleDate, "yyyy年MM月dd日")); | |
| 321 | 342 | } |
| 322 | - } | |
| 343 | + }); | |
| 323 | 344 | |
| 324 | - return destroy_infos; | |
| 345 | + return infoList; | |
| 325 | 346 | } |
| 326 | 347 | |
| 327 | 348 | @Transactional | ... | ... |
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
| ... | ... | @@ -1518,18 +1518,18 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1518 | 1518 | List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); |
| 1519 | 1519 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 1520 | 1520 | |
| 1521 | - String sfyy = "", company = "", subCompany = ""; | |
| 1521 | + String sfyy = "", company = "", subCompany = "", line = ""; | |
| 1522 | 1522 | if(map.get("sfyy")!=null) |
| 1523 | - sfyy = map.get("sfyy").toString(); | |
| 1523 | + sfyy = map.get("sfyy").toString().trim(); | |
| 1524 | 1524 | if(map.get("company")!=null) |
| 1525 | - company = map.get("company").toString(); | |
| 1525 | + company = map.get("company").toString().trim(); | |
| 1526 | 1526 | if(map.get("subCompany")!=null) |
| 1527 | - subCompany = map.get("subCompany").toString(); | |
| 1528 | - String line = map.get("line").toString(); | |
| 1529 | -// String date = map.get("date").toString(); | |
| 1530 | - String startDate = map.get("startDate").toString(); | |
| 1531 | - String endDate = map.get("endDate").toString(); | |
| 1532 | - String type = map.get("type").toString(); | |
| 1527 | + subCompany = map.get("subCompany").toString().trim(); | |
| 1528 | + if(map.get("line")!=null) | |
| 1529 | + line = map.get("line").toString().trim(); | |
| 1530 | + String startDate = map.get("startDate").toString().trim(); | |
| 1531 | + String endDate = map.get("endDate").toString().trim(); | |
| 1532 | + String type = map.get("type").toString().trim(); | |
| 1533 | 1533 | |
| 1534 | 1534 | if(startDate.length() == 0) |
| 1535 | 1535 | startDate = sdf.format(new Date()); |
| ... | ... | @@ -1547,20 +1547,31 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1547 | 1547 | +split2[0]+"年"+split2[1]+"月"+split2[2]+"日"; |
| 1548 | 1548 | } |
| 1549 | 1549 | |
| 1550 | + List<String> objList = new ArrayList<String>(); | |
| 1551 | + objList.add(startDate); | |
| 1552 | + objList.add(endDate); | |
| 1553 | + | |
| 1550 | 1554 | try { |
| 1551 | - String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_bm, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name," | |
| 1552 | - + " a.fgs_bm, a.cc_service, a.remarks, a.adjust_exps, (select start_opt from bsth_c_line_config where id = " | |
| 1553 | - + " (select max(id) from bsth_c_line_config where line = (select id from bsth_c_line where line_code = a.xl_bm))) start_opt" | |
| 1554 | - + " from bsth_c_s_sp_info_real a where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'" | |
| 1555 | + String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_bm, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, " | |
| 1556 | + + " a.gs_name, a.fgs_name, a.gs_bm, a.fgs_bm, a.cc_service, a.remarks, a.adjust_exps, (select start_opt from bsth_c_line_config where id = " | |
| 1557 | + + " (select max(id) from bsth_c_line_config where line = (select id from bsth_c_line where line_code = a.xl_bm))) start_opt " | |
| 1558 | + + " from bsth_c_s_sp_info_real a where schedule_date_str >= ? and schedule_date_str <= ? " | |
| 1555 | 1559 | + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'"; |
| 1556 | - if(line.length() != 0) | |
| 1557 | - sql += " and xl_bm = '"+line+"'"; | |
| 1558 | - if(company.length() != 0) | |
| 1559 | - sql += " and gs_bm = '"+company+"'"; | |
| 1560 | - if(subCompany.length() != 0) | |
| 1561 | - sql += " and fgs_bm = '"+subCompany+"'"; | |
| 1560 | + if(line.length() != 0){ | |
| 1561 | + sql += " and xl_bm = ? "; | |
| 1562 | + objList.add(line); | |
| 1563 | + } | |
| 1564 | + if(company.length() != 0){ | |
| 1565 | + sql += " and gs_bm = ? "; | |
| 1566 | + objList.add(company); | |
| 1567 | + } | |
| 1568 | + if(subCompany.length() != 0){ | |
| 1569 | + sql += " and fgs_bm = ? "; | |
| 1570 | + objList.add(subCompany); | |
| 1571 | + } | |
| 1562 | 1572 | |
| 1563 | 1573 | list = jdbcTemplate.query(sql, |
| 1574 | + objList.toArray(), | |
| 1564 | 1575 | new RowMapper<ScheduleRealInfo>(){ |
| 1565 | 1576 | @Override |
| 1566 | 1577 | public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { |
| ... | ... | @@ -1579,6 +1590,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1579 | 1590 | schedule.setStatus(rs.getInt("status")); |
| 1580 | 1591 | schedule.setGsName(rs.getString("gs_name")); |
| 1581 | 1592 | schedule.setFgsName(rs.getString("fgs_name")); |
| 1593 | + schedule.setGsBm(rs.getString("gs_bm")); | |
| 1582 | 1594 | schedule.setFgsBm(rs.getString("fgs_bm")); |
| 1583 | 1595 | schedule.setCcService(rs.getBoolean("cc_service")); |
| 1584 | 1596 | schedule.setRemarks(rs.getString("remarks")!=null?rs.getString("remarks"):""); |
| ... | ... | @@ -1646,7 +1658,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1646 | 1658 | continue; |
| 1647 | 1659 | } |
| 1648 | 1660 | |
| 1649 | - String key = s.getXlName() + "/" + s.getXlBm() + "/" + s.getFgsBm(); | |
| 1661 | + String key = s.getXlName() + "/" + s.getXlBm() + "/" + s.getFgsBm() + "/" + s.getGsBm(); | |
| 1650 | 1662 | String date = s.getScheduleDateStr(); |
| 1651 | 1663 | if(!keyMap.containsKey(key)){ |
| 1652 | 1664 | keyMap.put(key, new HashMap<String, List<ScheduleRealInfo>>()); |
| ... | ... | @@ -1664,7 +1676,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1664 | 1676 | Map<Long, String> longMap = new HashMap<Long, String>(); |
| 1665 | 1677 | for(String key : keyMap.keySet()){ |
| 1666 | 1678 | String[] keys = key.split("/"); |
| 1667 | - Long l = Long.valueOf(keys[2]) * 10000000000l + Long.valueOf(keys[1]); | |
| 1679 | + Long l = Long.valueOf(keys[3] + keys[2]) * 10000000000l + Long.valueOf(keys[1]); | |
| 1668 | 1680 | longMap.put(l, key); |
| 1669 | 1681 | longList.add(l); |
| 1670 | 1682 | } |
| ... | ... | @@ -1890,11 +1902,12 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1890 | 1902 | tempMap.put("zdl", (jhbc<1?"0":nf.format((float) sjbc / jhbc * 100)) + "%"); |
| 1891 | 1903 | for(Map<String, Object> m : mapList){ |
| 1892 | 1904 | m.put("no", ++i); |
| 1893 | -// m.put("company", companyName); | |
| 1894 | -// m.put("subCompany", subCompanyName); | |
| 1895 | 1905 | } |
| 1906 | + tempMap.put("company", ""); | |
| 1907 | + tempMap.put("subCompany", ""); | |
| 1908 | + tempMap.put("line", ""); | |
| 1896 | 1909 | tempMap.put("map", mapList); |
| 1897 | - if(!type.equals("export")) | |
| 1910 | + if(!type.contains("export")) | |
| 1898 | 1911 | resList.add(tempMap); |
| 1899 | 1912 | } |
| 1900 | 1913 | |
| ... | ... | @@ -1957,190 +1970,59 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1957 | 1970 | // TODO: handle exception |
| 1958 | 1971 | e.printStackTrace(); |
| 1959 | 1972 | } |
| 1960 | - } | |
| 1961 | - | |
| 1962 | - return resList; | |
| 1963 | - } | |
| 1964 | - /*@Override | |
| 1965 | - public List<Map<String, Object>> commandState(Map<String, Object> map) { | |
| 1966 | - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | |
| 1967 | - List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); | |
| 1968 | - Map<String, List<Map<String, Object>>> keyMap = new HashMap<String, List<Map<String, Object>>>(); | |
| 1969 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
| 1970 | - | |
| 1971 | - String company = map.get("company").toString(); | |
| 1972 | - String subCompany = map.get("subCompany").toString(); | |
| 1973 | - String line = map.get("line").toString(); | |
| 1974 | - String date = map.get("date").toString(); | |
| 1975 | - String code = map.get("code").toString(); | |
| 1976 | - String type = map.get("type").toString(); | |
| 1977 | - | |
| 1978 | - if(date.length() == 0) | |
| 1979 | - date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | |
| 1980 | - | |
| 1981 | - try { | |
| 1982 | - | |
| 1983 | - String sql = | |
| 1984 | - "select r.id, r.schedule_date_str, r.xl_name, r.cl_zbh, r.j_gh, r.j_name, r.fcsj, d.timestamp, d.reply46, d.reply47, d.reply46time, d.reply47time, r.gs_name, r.fgs_name " + | |
| 1985 | - "FROM bsth_c_s_sp_info_real as r left join bsth_v_directive_60 as d on r.id = d.sch and d.is_dispatch = 1 where schedule_date_str = '"+date+"'"; | |
| 1986 | - if(line.length() != 0){ | |
| 1987 | - sql += " and xl_bm = '"+line+"'"; | |
| 1988 | - } | |
| 1989 | - if(code.length() != 0){ | |
| 1990 | - sql += " and cl_zbh = '"+code+"'"; | |
| 1991 | - } | |
| 1992 | - if(company.length() != 0){ | |
| 1993 | - sql += " and gs_bm = '"+company+"'"; | |
| 1994 | - } | |
| 1995 | - if(subCompany.length() != 0){ | |
| 1996 | - sql += " and fgs_bm = '"+subCompany+"'"; | |
| 1997 | - } | |
| 1998 | - sql += " union " + | |
| 1999 | - "select r.id, r.schedule_date_str, r.xl_name, r.cl_zbh, r.j_gh, r.j_name, r.fcsj, d.timestamp, d.reply46, d.reply47, d.reply46time, d.reply47time, r.gs_name, r.fgs_name " + | |
| 2000 | - "FROM bsth_c_s_sp_info_real as r right join bsth_v_directive_60 as d on r.id = d.sch where d.is_dispatch = 1 and schedule_date_str = '"+date+"'"; | |
| 2001 | - if(line.length() != 0){ | |
| 2002 | - sql += " and xl_bm = '"+line+"'"; | |
| 2003 | - } | |
| 2004 | - if(code.length() != 0){ | |
| 2005 | - sql += " and cl_zbh = '"+code+"'"; | |
| 2006 | - } | |
| 2007 | - if(company.length() != 0){ | |
| 2008 | - sql += " and gs_bm = '"+company+"'"; | |
| 1973 | + } else if(type.equals("exportAll")){ | |
| 1974 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 1975 | + Map<String, Map<String, Object>> tempKeyMap = new HashMap<String, Map<String, Object>>(); | |
| 1976 | + List<Map<String, Object>> removeList = new ArrayList<Map<String, Object>>(); | |
| 1977 | + for(Map<String, Object> m : resList){ | |
| 1978 | + if(m.get("gsName") != null && m.get("gsName").toString().trim().length() > 0 | |
| 1979 | + && m.get("gsName").toString().trim().contains("临港")){ | |
| 1980 | + removeList.add(m); | |
| 1981 | + } | |
| 2009 | 1982 | } |
| 2010 | - if(subCompany.length() != 0){ | |
| 2011 | - sql += " and fgs_bm = '"+subCompany+"'"; | |
| 1983 | + for(Map<String, Object> m : removeList){ | |
| 1984 | + resList.remove(m); | |
| 2012 | 1985 | } |
| 2013 | - sql += " order by xl_name, fcsj"; | |
| 2014 | - | |
| 2015 | - list = jdbcTemplate.query(sql, | |
| 2016 | - new RowMapper<Map<String, Object>>(){ | |
| 2017 | - @Override | |
| 2018 | - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 2019 | - Map<String, Object> map = new HashMap<String, Object>(); | |
| 2020 | - map.put("id", rs.getString("id")); | |
| 2021 | - map.put("date", rs.getString("schedule_date_str")); | |
| 2022 | - map.put("line", rs.getString("xl_name")); | |
| 2023 | - map.put("clZbh", rs.getString("cl_zbh")); | |
| 2024 | - map.put("jGh", rs.getString("j_gh")); | |
| 2025 | - map.put("jName", rs.getString("j_name")); | |
| 2026 | - map.put("fcsj", rs.getString("fcsj")); | |
| 2027 | - map.put("timestamp", rs.getString("timestamp")); | |
| 2028 | - map.put("reply46", rs.getString("reply46")); | |
| 2029 | - map.put("reply47", rs.getString("reply47")); | |
| 2030 | - map.put("reply46time", rs.getString("reply46time")); | |
| 2031 | - map.put("reply47time", rs.getString("reply47time")); | |
| 2032 | - map.put("company", rs.getObject("gs_name")); | |
| 2033 | - map.put("subCompany", rs.getObject("fgs_name")); | |
| 2034 | - return map; | |
| 1986 | + for(Map<String, Object> m : resList){ | |
| 1987 | + if(m.get("company")!=null && m.get("company").toString().trim().length() > 0){ | |
| 1988 | + Map<String, Object> temp = new HashMap<String, Object>(); | |
| 1989 | + String gsName = m.get("company").toString().trim(); | |
| 1990 | + if(tempKeyMap.containsKey(gsName)){ | |
| 1991 | + temp = tempKeyMap.get(gsName); | |
| 1992 | + temp.put("jhbc", Long.valueOf(m.get("jhbc")!=null?m.get("jhbc").toString():"0") | |
| 1993 | + + Long.valueOf(temp.get("jhbc")!=null?temp.get("jhbc").toString():"0")); | |
| 1994 | + temp.put("sjbc", Long.valueOf(m.get("sjbc")!=null?m.get("sjbc").toString():"0") | |
| 1995 | + + Long.valueOf(temp.get("sjbc")!=null?temp.get("sjbc").toString():"0")); | |
| 1996 | + } else { | |
| 1997 | + temp.put("date", ""); | |
| 1998 | + temp.put("company", gsName); | |
| 1999 | + temp.put("subCompany", "小计"); | |
| 2000 | + temp.put("line", ""); | |
| 2001 | + temp.put("jhbc", m.get("jhbc")!=null?m.get("jhbc").toString()+"":"0"); | |
| 2002 | + temp.put("sjbc", m.get("sjbc")!=null?m.get("sjbc").toString()+"":"0"); | |
| 2003 | + tempList.add(temp); | |
| 2004 | + tempKeyMap.put(gsName, temp); | |
| 2005 | + } | |
| 2035 | 2006 | } |
| 2036 | - }); | |
| 2037 | - | |
| 2038 | - } catch (Exception e) { | |
| 2039 | - // TODO Auto-generated catch block | |
| 2040 | - e.printStackTrace(); | |
| 2041 | - } | |
| 2042 | - | |
| 2043 | - List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | |
| 2044 | - List<String> keyList = new ArrayList<String>(); | |
| 2045 | - for(Map<String, Object> m : list){ | |
| 2046 | - String key = m.get("line") + "/" + m.get("clZbh") + "/" + m.get("jGh") + "/" + m.get("jName"); | |
| 2047 | - if(!keyList.contains(m.get("line").toString())){ | |
| 2048 | - keyList.add(m.get("line").toString()); | |
| 2049 | - } | |
| 2050 | - if(!keyMap.containsKey(key)) | |
| 2051 | - keyMap.put(key, new ArrayList<Map<String, Object>>()); | |
| 2052 | - keyMap.get(key).add(m); | |
| 2053 | - } | |
| 2054 | - String companyName = "", subCompanyName = ""; | |
| 2055 | - for(String key : keyMap.keySet()){ | |
| 2056 | - Map<String, Object> tempMap = new HashMap<String, Object>(); | |
| 2057 | - Set<String> tempSet = new HashSet<String>(); | |
| 2058 | - int sjf = 0; | |
| 2059 | - int wqr = 0; | |
| 2060 | - for(Map<String, Object> m : keyMap.get(key)){ | |
| 2061 | - if(m.containsKey("company") && m.get("company")!=null && m.get("company").toString().length()!=0 && companyName.length()==0) | |
| 2062 | - companyName = m.get("company").toString(); | |
| 2063 | - if(m.containsKey("subCompany") && m.get("subCompany")!=null && m.get("subCompany").toString().length()!=0 && subCompanyName.length()==0) | |
| 2064 | - subCompanyName = m.get("subCompany").toString(); | |
| 2065 | - tempSet.add(m.get("id").toString()); | |
| 2066 | - if(m.get("timestamp") != null){ | |
| 2067 | - sjf++; | |
| 2068 | - if(m.get("reply47").toString().equals("-1")) | |
| 2069 | - wqr++; | |
| 2070 | - m.put("time", sdf.format(new Date(Long.valueOf(m.get("timestamp").toString())))); | |
| 2071 | - } else | |
| 2072 | - m.put("time", "/"); | |
| 2073 | - | |
| 2074 | - if(m.get("reply46time") != null) | |
| 2075 | - m.put("time46", sdf.format(new Date(Long.valueOf(m.get("reply46time").toString())))); | |
| 2076 | - else | |
| 2077 | - m.put("time46", "/"); | |
| 2078 | - | |
| 2079 | - if(m.get("reply47time") != null) | |
| 2080 | - m.put("time47", sdf.format(new Date(Long.valueOf(m.get("reply47time").toString())))); | |
| 2081 | - else | |
| 2082 | - m.put("time47", "/"); | |
| 2083 | - | |
| 2084 | 2007 | } |
| 2085 | - tempMap.put("company", companyName); | |
| 2086 | - tempMap.put("subCompany", subCompanyName); | |
| 2087 | - String[] split = key.split("/"); | |
| 2088 | - tempMap.put("date", date); | |
| 2089 | - tempMap.put("line", split[0]); | |
| 2090 | - tempMap.put("clZbh", split[1]); | |
| 2091 | - tempMap.put("jsy", split[2] + "/" + split[3]); | |
| 2092 | - tempMap.put("jhf", tempSet.size()); | |
| 2093 | - tempMap.put("sjf", sjf); | |
| 2094 | - tempMap.put("wqr", wqr); | |
| 2095 | - tempMap.put("workList", keyMap.get(key)); | |
| 2096 | - tempList.add(tempMap); | |
| 2097 | - } | |
| 2098 | - | |
| 2099 | - for(String key : keyList){ | |
| 2008 | + | |
| 2100 | 2009 | for(Map<String, Object> m : tempList){ |
| 2101 | - if(key.equals(m.get("line").toString())){ | |
| 2102 | - resList.add(m); | |
| 2010 | + if(m.get("jhbc")!=null && Long.valueOf(m.get("jhbc").toString()) > 0l){ | |
| 2011 | + m.put("zdl", nf.format((float) Long.valueOf(m.get("sjbc").toString()) / Long.valueOf(m.get("jhbc").toString()) * 100) + "%"); | |
| 2012 | + }else{ | |
| 2013 | + m.put("zdl", "0.00%"); | |
| 2103 | 2014 | } |
| 2015 | + resList.add(m); | |
| 2104 | 2016 | } |
| 2105 | - } | |
| 2106 | - | |
| 2107 | - if(type.equals("export")){ | |
| 2108 | - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 2109 | - sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 2017 | + | |
| 2110 | 2018 | List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); |
| 2111 | 2019 | Map<String,Object> m = new HashMap<String, Object>(); |
| 2112 | 2020 | ReportUtils ee = new ReportUtils(); |
| 2113 | 2021 | try { |
| 2114 | 2022 | listI.add(resList.iterator()); |
| 2115 | 2023 | String path = this.getClass().getResource("/").getPath()+"static/pages/forms/"; |
| 2116 | - ee.excelReplace(listI, new Object[] { m }, path+"mould/commandState.xls", | |
| 2117 | - path+"export/指令状态分析" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); | |
| 2118 | - } catch (Exception e) { | |
| 2119 | - // TODO: handle exception | |
| 2120 | - e.printStackTrace(); | |
| 2121 | - } | |
| 2122 | - } | |
| 2123 | - | |
| 2124 | - if(type.equals("export1")){ | |
| 2125 | - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 2126 | - sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 2127 | - List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 2128 | - Map<String,Object> m = new HashMap<String, Object>(); | |
| 2129 | - ReportUtils ee = new ReportUtils(); | |
| 2130 | - String jsy = map.get("jsy").toString(); | |
| 2131 | - try { | |
| 2132 | - for(Map<String, Object> map1 : resList){ | |
| 2133 | - if(jsy.equals(map1.get("jsy").toString())){ | |
| 2134 | - List<Map<String, Object>> temp = (List<Map<String, Object>>)map1.get("workList"); | |
| 2135 | - listI.add(temp.iterator()); | |
| 2136 | - m.put("detail", "日期:" + map1.get("date") + " 公司:" + map1.get("company") | |
| 2137 | - + " 分公司:" + map1.get("subCompany") + " 线路:" + map1.get("line") | |
| 2138 | - + " 车辆:" + map1.get("clZbh") + " 人员:" + map1.get("jsy")); | |
| 2139 | - } | |
| 2140 | - } | |
| 2141 | - String path = this.getClass().getResource("/").getPath()+"static/pages/forms/"; | |
| 2142 | - ee.excelReplace(listI, new Object[] { m }, path+"mould/commandState1.xls", | |
| 2143 | - path+"export/指令状态明细" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); | |
| 2024 | + ee.excelReplace(listI, new Object[] { tempMap }, path+"mould/firstAndLastBus_sum.xls", | |
| 2025 | + path+"export/" + dateTime + "-全部公司-线路首末班准点率.xls"); | |
| 2144 | 2026 | } catch (Exception e) { |
| 2145 | 2027 | // TODO: handle exception |
| 2146 | 2028 | e.printStackTrace(); |
| ... | ... | @@ -2149,7 +2031,6 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 2149 | 2031 | |
| 2150 | 2032 | return resList; |
| 2151 | 2033 | } |
| 2152 | -*/ | |
| 2153 | 2034 | |
| 2154 | 2035 | @Override |
| 2155 | 2036 | public List<Map<String, Object>> commandState(Map<String, Object> map) { | ... | ... |
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
| ... | ... | @@ -3,8 +3,11 @@ package com.bsth.service.schedule.impl; |
| 3 | 3 | import com.alibaba.fastjson.JSONArray; |
| 4 | 4 | import com.alibaba.fastjson.JSONObject; |
| 5 | 5 | import com.bsth.common.ResponseCode; |
| 6 | -import com.bsth.entity.*; | |
| 6 | +import com.bsth.entity.CarPark; | |
| 7 | +import com.bsth.entity.Line; | |
| 8 | +import com.bsth.entity.LineInformation; | |
| 7 | 9 | import com.bsth.entity.schedule.GuideboardInfo; |
| 10 | +import com.bsth.entity.schedule.TTInfo; | |
| 8 | 11 | import com.bsth.entity.schedule.TTInfoDetail; |
| 9 | 12 | import com.bsth.repository.CarParkRepository; |
| 10 | 13 | import com.bsth.repository.LineRepository; |
| ... | ... | @@ -13,28 +16,30 @@ import com.bsth.repository.schedule.GuideboardInfoRepository; |
| 13 | 16 | import com.bsth.repository.schedule.TTInfoDetailRepository; |
| 14 | 17 | import com.bsth.repository.schedule.TTInfoRepository; |
| 15 | 18 | import com.bsth.repository.sys.SysUserRepository; |
| 19 | +import com.bsth.security.util.SecurityUtils; | |
| 16 | 20 | import com.bsth.service.CarParkService; |
| 17 | 21 | import com.bsth.service.LineInformationService; |
| 18 | 22 | import com.bsth.service.LineService; |
| 19 | 23 | import com.bsth.service.StationRouteService; |
| 20 | 24 | import com.bsth.service.schedule.GuideboardInfoService; |
| 21 | 25 | import com.bsth.service.schedule.TTInfoDetailService; |
| 26 | +import com.bsth.service.schedule.datatools.Excel2007PoiOperator; | |
| 27 | +import com.bsth.service.schedule.datatools.ExcelPoiOperator; | |
| 22 | 28 | import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; |
| 23 | 29 | import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData; |
| 24 | 30 | import com.bsth.service.schedule.exception.ScheduleException; |
| 25 | 31 | import com.bsth.service.schedule.timetable.ExcelData; |
| 26 | 32 | import com.bsth.service.schedule.timetable.ExcelFormatType; |
| 27 | -import com.bsth.service.schedule.utils.DataToolsFile; | |
| 28 | -import com.bsth.service.schedule.utils.DataToolsFileType; | |
| 29 | -import com.bsth.service.schedule.utils.DataToolsService; | |
| 30 | -import com.bsth.service.schedule.utils.PoiUtils; | |
| 33 | +import com.bsth.service.schedule.utils.*; | |
| 31 | 34 | import org.apache.commons.lang3.StringUtils; |
| 32 | -import org.apache.poi.ss.usermodel.Cell; | |
| 33 | -import org.apache.poi.ss.usermodel.Row; | |
| 34 | -import org.apache.poi.ss.usermodel.Sheet; | |
| 35 | -import org.apache.poi.ss.usermodel.Workbook; | |
| 35 | +import org.apache.commons.lang3.time.DateFormatUtils; | |
| 36 | +import org.apache.poi.ss.usermodel.*; | |
| 37 | +import org.apache.poi.ss.util.CellRangeAddress; | |
| 38 | +import org.apache.poi.xssf.usermodel.XSSFCell; | |
| 39 | +import org.joda.time.DateTime; | |
| 36 | 40 | import org.slf4j.Logger; |
| 37 | 41 | import org.slf4j.LoggerFactory; |
| 42 | +import org.springframework.beans.BeanUtils; | |
| 38 | 43 | import org.springframework.beans.factory.annotation.Autowired; |
| 39 | 44 | import org.springframework.beans.factory.annotation.Qualifier; |
| 40 | 45 | import org.springframework.jdbc.core.JdbcTemplate; |
| ... | ... | @@ -42,13 +47,10 @@ import org.springframework.stereotype.Service; |
| 42 | 47 | import org.springframework.transaction.annotation.Transactional; |
| 43 | 48 | import org.springframework.util.CollectionUtils; |
| 44 | 49 | |
| 50 | +import java.awt.Color; | |
| 45 | 51 | import java.io.File; |
| 46 | -import java.util.ArrayList; | |
| 47 | -import java.util.HashMap; | |
| 52 | +import java.util.*; | |
| 48 | 53 | import java.util.List; |
| 49 | -import java.util.Map; | |
| 50 | -import java.util.regex.Matcher; | |
| 51 | -import java.util.regex.Pattern; | |
| 52 | 54 | |
| 53 | 55 | /** |
| 54 | 56 | * Created by xu on 17/1/3. |
| ... | ... | @@ -149,6 +151,248 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 149 | 151 | return tTinfoDetailDynamicData.exportDynamicTTinfo(dtInfos, type); |
| 150 | 152 | } |
| 151 | 153 | |
| 154 | + @Autowired | |
| 155 | + private DataToolsProperties dataToolsProperties; | |
| 156 | + | |
| 157 | + @Transactional | |
| 158 | + @Override | |
| 159 | + public DataToolsFile exportPvInfo(Long ttInfoId) throws ScheduleException { | |
| 160 | + // 1、获取时刻表,时刻表明细数据 | |
| 161 | + TTInfo ttInfo = this.infoRepository.findOneExtend(ttInfoId); | |
| 162 | + List<TTInfoDetail> ttInfoDetailList = this.ttInfoDetailRepository.findByTtinfoId(ttInfoId); | |
| 163 | + LOGGER.info("----------------- 开始导出时刻表[{}]预览视图信息---------------", ttInfo.getName()); | |
| 164 | + | |
| 165 | + // 2、构造导出信息 | |
| 166 | + try { | |
| 167 | + // 使用excel2007格式(xlsx) | |
| 168 | + ExcelPoiOperator excelPoiOperator = new Excel2007PoiOperator(); | |
| 169 | + Workbook wb = excelPoiOperator.createWorkBook(); // 创建workbook | |
| 170 | + Sheet sheet = excelPoiOperator.createWorkBookSheet(wb, "预览信息"); // 创建sheet | |
| 171 | + | |
| 172 | + // 创建表头(从第2行开始,第1行需要合并单元格显示站点名字) | |
| 173 | + int[] headColNums = new int[] {0, 1, 2, 3, 4, 7, 8, 9, 10, 11}; | |
| 174 | + String[] headColLabels = new String[] {"序号", "路牌", "发车时间", "到达时间", "备注", "序号", "路牌", "发车时间", "到达时间", "备注"}; | |
| 175 | + int[] headColWidth = new int[] {10, 10, 20, 20, 35, 10, 10, 20, 20, 35}; | |
| 176 | + | |
| 177 | + Row headRow = excelPoiOperator.createSheetRow(sheet, 1); | |
| 178 | + headRow.setHeight((short) (35 * 20)); // 单位:1/20个点 | |
| 179 | + for (int i = 0; i < headColNums.length; i ++) { | |
| 180 | + excelPoiOperator.createCell( | |
| 181 | + wb, headRow, (short) headColNums[i], | |
| 182 | + headColLabels[i], XSSFCell.CELL_TYPE_STRING, | |
| 183 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | |
| 184 | + BorderStyle.THIN, new java.awt.Color(0x000000), | |
| 185 | + (short) 14, new java.awt.Color(0xffffff), "宋体", | |
| 186 | + new Color(0x857F7F), FillPatternType.SOLID_FOREGROUND); | |
| 187 | + sheet.setColumnWidth(headColNums[i], headColWidth[i] * 256); // 单位:1/256个字符宽度 | |
| 188 | + } | |
| 189 | + | |
| 190 | + // 获取上行线路并按照时间排序 | |
| 191 | + List<TTInfoDetail> upBcList = sortedByBcsjAsc(ttInfoDetailList, true); | |
| 192 | + List<TTInfoDetail> downBcList = sortedByBcsjAsc(ttInfoDetailList, false); | |
| 193 | + int rowDiff = upBcList.size() - downBcList.size(); | |
| 194 | + int rowSize; | |
| 195 | + if (rowDiff >= 0) { // 上行班次多 | |
| 196 | + rowSize = downBcList.size(); | |
| 197 | + } else { // 下行班次多 | |
| 198 | + rowSize = upBcList.size(); | |
| 199 | + } | |
| 200 | + for (int i = 0; i < rowSize; i++) { | |
| 201 | + Row bcRow = excelPoiOperator.createSheetRow(sheet, i + 2); | |
| 202 | + // 上行班次 | |
| 203 | + excelPoiOperator.createIntegerCell(wb, bcRow, (short) 0, i + 1); | |
| 204 | + String lpName = upBcList.get(i).getLp().getLpName(); | |
| 205 | + if (StringUtils.isNumeric(lpName)) { | |
| 206 | + excelPoiOperator.createIntegerCell(wb, bcRow, (short) 1, Integer.valueOf(lpName)); | |
| 207 | + } else { | |
| 208 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 1, lpName); | |
| 209 | + } | |
| 210 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 2, upBcList.get(i).getFcsj()); | |
| 211 | + Date ddsj_up = MyDateUtils.hhssTimePlusMinunits(upBcList.get(i).getFcsj(), upBcList.get(i).getBcsj(), 0); | |
| 212 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 3, DateFormatUtils.format(ddsj_up, "HH:mm")); | |
| 213 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 4, StringUtils.trimToEmpty(upBcList.get(i).getRemark())); | |
| 214 | + | |
| 215 | + // 下行班次 | |
| 216 | + excelPoiOperator.createIntegerCell(wb, bcRow, (short) 7, i + 1); | |
| 217 | + lpName = downBcList.get(i).getLp().getLpName(); | |
| 218 | + if (StringUtils.isNumeric(lpName)) { | |
| 219 | + excelPoiOperator.createIntegerCell(wb, bcRow, (short) 8, Integer.valueOf(lpName)); | |
| 220 | + } else { | |
| 221 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 8, lpName); | |
| 222 | + } | |
| 223 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 9, downBcList.get(i).getFcsj()); | |
| 224 | + Date ddsj_down = MyDateUtils.hhssTimePlusMinunits(downBcList.get(i).getFcsj(), downBcList.get(i).getBcsj(), 0); | |
| 225 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 10, DateFormatUtils.format(ddsj_down, "HH:mm")); | |
| 226 | + excelPoiOperator.createStringCell(wb, bcRow, (short) 11, StringUtils.trimToEmpty(downBcList.get(i).getRemark())); | |
| 227 | + } | |
| 228 | + | |
| 229 | + List<TTInfoDetail> rowDiffBcList; // 剩下的班次 | |
| 230 | + int rowDiffColIndexStart; | |
| 231 | + if (rowDiff >= 0) { // 上行班次多 | |
| 232 | + rowDiffBcList = upBcList; | |
| 233 | + rowDiffColIndexStart = 0; | |
| 234 | + } else { // 下行班次多 | |
| 235 | + rowDiffBcList = downBcList; | |
| 236 | + rowDiffColIndexStart = 7; | |
| 237 | + } | |
| 238 | + for (int i = rowSize; i < rowSize + Math.abs(rowDiff); i++) { | |
| 239 | + Row bcRow = excelPoiOperator.createSheetRow(sheet, i + 2); | |
| 240 | + excelPoiOperator.createIntegerCell(wb, bcRow, (short) (rowDiffColIndexStart + 0), i + 1); | |
| 241 | + String lpName = rowDiffBcList.get(i).getLp().getLpName(); | |
| 242 | + if (StringUtils.isNumeric(lpName)) { | |
| 243 | + excelPoiOperator.createIntegerCell(wb, bcRow, (short) (rowDiffColIndexStart + 1), Integer.valueOf(lpName)); | |
| 244 | + } else { | |
| 245 | + excelPoiOperator.createStringCell(wb, bcRow, (short) (rowDiffColIndexStart + 1), lpName); | |
| 246 | + } | |
| 247 | + excelPoiOperator.createStringCell(wb, bcRow, (short) (rowDiffColIndexStart + 2), rowDiffBcList.get(i).getFcsj()); | |
| 248 | + Date ddsj = MyDateUtils.hhssTimePlusMinunits(rowDiffBcList.get(i).getFcsj(), rowDiffBcList.get(i).getBcsj(), 0); | |
| 249 | + excelPoiOperator.createStringCell(wb, bcRow, (short) (rowDiffColIndexStart + 3), DateFormatUtils.format(ddsj, "HH:mm")); | |
| 250 | + excelPoiOperator.createStringCell(wb, bcRow, (short) (rowDiffColIndexStart + 4), StringUtils.trimToEmpty(rowDiffBcList.get(i).getRemark())); | |
| 251 | + | |
| 252 | + } | |
| 253 | + | |
| 254 | + // 创建第一行,合并列 | |
| 255 | + sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4)); | |
| 256 | + sheet.addMergedRegion(new CellRangeAddress(0, 0, 7, 11)); | |
| 257 | + Row firstRow = excelPoiOperator.createSheetRow(sheet, 0); | |
| 258 | + firstRow.setHeight((short) (50 * 20)); // 单位:1/20个点 | |
| 259 | + if (upBcList.size() > 0 && downBcList.size() > 0) { | |
| 260 | + String upBcLabel = ""; | |
| 261 | + for (TTInfoDetail ttInfoDetail : upBcList) { | |
| 262 | + if ("normal".equals(ttInfoDetail.getBcType())) { | |
| 263 | + upBcLabel = "上行站点:" + ttInfoDetail.getQdzName() + " >> " + ttInfoDetail.getZdzName(); | |
| 264 | + break; | |
| 265 | + } | |
| 266 | + } | |
| 267 | + String downBcLabel = ""; | |
| 268 | + for (TTInfoDetail ttInfoDetail : downBcList) { | |
| 269 | + if ("normal".equals(ttInfoDetail.getBcType())) { | |
| 270 | + downBcLabel = "下行站点:" + ttInfoDetail.getQdzName() + " >> " + ttInfoDetail.getZdzName(); | |
| 271 | + break; | |
| 272 | + } | |
| 273 | + } | |
| 274 | + | |
| 275 | + excelPoiOperator.createCell( | |
| 276 | + wb, firstRow, (short) 0, | |
| 277 | + upBcLabel, XSSFCell.CELL_TYPE_STRING, | |
| 278 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | |
| 279 | + BorderStyle.NONE, new java.awt.Color(0x000000), | |
| 280 | + (short) 20, new java.awt.Color(0xffffff), "宋体", | |
| 281 | + new Color(0x857F7F), FillPatternType.SOLID_FOREGROUND); | |
| 282 | + | |
| 283 | + excelPoiOperator.createCell( | |
| 284 | + wb, firstRow, (short) 7, | |
| 285 | + downBcLabel, XSSFCell.CELL_TYPE_STRING, | |
| 286 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | |
| 287 | + BorderStyle.NONE, new java.awt.Color(0x000000), | |
| 288 | + (short) 20, new java.awt.Color(0xffffff), "宋体", | |
| 289 | + new Color(0x857F7F), FillPatternType.SOLID_FOREGROUND); | |
| 290 | + } | |
| 291 | + | |
| 292 | + // 锁定第1第2行 | |
| 293 | + sheet.createFreezePane(0, 2); | |
| 294 | + | |
| 295 | + // wb内存写入文件 | |
| 296 | + String filepath = dataToolsProperties.getFileoutputDir() + | |
| 297 | + File.separator + | |
| 298 | + ttInfo.getName() + "预览信息-" + | |
| 299 | + new DateTime().toString("yyyyMMddHHmmss") + ".xlsx"; | |
| 300 | + File file = new File(filepath); | |
| 301 | + excelPoiOperator.writeExcel(file, wb); | |
| 302 | + | |
| 303 | + DataToolsFile dataToolsFile = new DataToolsFile(); | |
| 304 | + dataToolsFile.setFileType(DataToolsFileType.XLSX); | |
| 305 | + dataToolsFile.setFile(file); | |
| 306 | + | |
| 307 | + return dataToolsFile; | |
| 308 | + | |
| 309 | + } catch (Exception exp) { | |
| 310 | + LOGGER.error("----------------- 导出时刻表[{}]预览视图信息失败---------------", ttInfo.getName()); | |
| 311 | + throw new ScheduleException(exp); | |
| 312 | + } | |
| 313 | + } | |
| 314 | + private List<TTInfoDetail> sortedByBcsjAsc(List<TTInfoDetail> bcList, boolean isUp) { | |
| 315 | + List<TTInfoDetail> sortedList = new ArrayList<>(); | |
| 316 | + for (TTInfoDetail ttInfoDetail : bcList) { | |
| 317 | + if (isUp) { | |
| 318 | + if ("0".equals(ttInfoDetail.getXlDir())) { | |
| 319 | + sortedList.add(ttInfoDetail); | |
| 320 | + } | |
| 321 | + } else { | |
| 322 | + if ("1".equals(ttInfoDetail.getXlDir())) { | |
| 323 | + sortedList.add(ttInfoDetail); | |
| 324 | + } | |
| 325 | + } | |
| 326 | + } | |
| 327 | + Collections.sort(sortedList, new Comparator<TTInfoDetail>() { | |
| 328 | + @Override | |
| 329 | + public int compare(TTInfoDetail o1, TTInfoDetail o2) { | |
| 330 | + Date d1 = MyDateUtils.hhssTimePlusMinunits(o1.getFcsj(), 0, 0); | |
| 331 | + Date d2 = MyDateUtils.hhssTimePlusMinunits(o2.getFcsj(), 0, 0); | |
| 332 | + | |
| 333 | + return d1.compareTo(d2); | |
| 334 | + } | |
| 335 | + }); | |
| 336 | + | |
| 337 | + return sortedList; | |
| 338 | + } | |
| 339 | + | |
| 340 | + @Transactional | |
| 341 | + @Override | |
| 342 | + public void addLp(Long ttInfoId, Long lpId) { | |
| 343 | + List<TTInfoDetail> bcList = this.ttInfoDetailRepository.findBcdetails(ttInfoId, lpId); | |
| 344 | + if (!CollectionUtils.isEmpty(bcList)) { | |
| 345 | + throw new RuntimeException("路牌已经存在!"); | |
| 346 | + } | |
| 347 | + List<TTInfoDetail> allBcList = this.ttInfoDetailRepository.findByTtinfoId(ttInfoId); | |
| 348 | + if (CollectionUtils.isEmpty(allBcList)) { | |
| 349 | + throw new RuntimeException("时刻表没有班次(添加路牌至少需要一个班次)!"); | |
| 350 | + } | |
| 351 | + | |
| 352 | + Integer maxBcs = this.ttInfoDetailRepository.findMaxBcs(ttInfoId).intValue(); | |
| 353 | + GuideboardInfo lpInfo = this.guideboardInfoRepository.findById(lpId).get(); | |
| 354 | + // 将当前时刻表的第一个班次作为新增路牌的第一个班次,然后设置发车时间为00:00 | |
| 355 | + TTInfoDetail firstBc = allBcList.get(0); | |
| 356 | + TTInfoDetail newBc = new TTInfoDetail(); | |
| 357 | + BeanUtils.copyProperties(firstBc, newBc); | |
| 358 | + newBc.setId(null); | |
| 359 | + newBc.setLp(lpInfo); | |
| 360 | + newBc.setFcno(1); | |
| 361 | + newBc.setBcs(maxBcs + 1); | |
| 362 | + newBc.setFcsj("00:00"); | |
| 363 | + newBc.setCreateDate(new Date()); | |
| 364 | + newBc.setUpdateDate(new Date()); | |
| 365 | + newBc.setCreateBy(SecurityUtils.getCurrentUser()); | |
| 366 | + newBc.setUpdateBy(SecurityUtils.getCurrentUser()); | |
| 367 | + | |
| 368 | + this.ttInfoDetailRepository.save(newBc); | |
| 369 | + } | |
| 370 | + | |
| 371 | + @Transactional | |
| 372 | + @Override | |
| 373 | + public void removeBcByLp(Long ttInfoId, Long lpId) { | |
| 374 | + this.ttInfoDetailRepository.deleteByTtinfoIdAndLpidWithModify(ttInfoId, lpId); | |
| 375 | + } | |
| 376 | + | |
| 377 | + @Transactional | |
| 378 | + @Override | |
| 379 | + public void switchBcByLp(Long ttInfoId, Long lpAId, Long lpBId) { | |
| 380 | + List<TTInfoDetail> lpABcList = this.ttInfoDetailRepository.findBcdetails(ttInfoId, lpAId); | |
| 381 | + List<TTInfoDetail> lpBBcList = this.ttInfoDetailRepository.findBcdetails(ttInfoId, lpBId); | |
| 382 | + | |
| 383 | + if (!CollectionUtils.isEmpty(lpABcList) && !CollectionUtils.isEmpty(lpBBcList)) { | |
| 384 | + GuideboardInfo lpA = lpABcList.get(0).getLp(); | |
| 385 | + GuideboardInfo lpB = lpBBcList.get(0).getLp(); | |
| 386 | + | |
| 387 | + for (TTInfoDetail lpABc : lpABcList) { | |
| 388 | + lpABc.setLp(lpB); | |
| 389 | + } | |
| 390 | + for (TTInfoDetail lpBBc : lpBBcList) { | |
| 391 | + lpBBc.setLp(lpA); | |
| 392 | + } | |
| 393 | + } | |
| 394 | + } | |
| 395 | + | |
| 152 | 396 | @Override |
| 153 | 397 | public TTInfoDetailForEdit.EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException { |
| 154 | 398 | return ttInfoDetailForEdit.getEditInfo(xlid, ttid, maxfcno); |
| ... | ... | @@ -225,11 +469,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 225 | 469 | |
| 226 | 470 | /** |
| 227 | 471 | * @description (TODO) 时刻表明细模型数据保存. |
| 228 | - * | |
| 472 | + * | |
| 229 | 473 | * @param map |
| 230 | - * | |
| 474 | + * | |
| 231 | 475 | * @return : 返回保存操作后的状态. |
| 232 | - * | |
| 476 | + * | |
| 233 | 477 | * @exception 处理所有抛出来的异常. |
| 234 | 478 | * */ |
| 235 | 479 | @Transactional |
| ... | ... | @@ -241,7 +485,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 241 | 485 | //boolean b = map.get("istidc") ==null ? false : Boolean.parseBoolean(map.get("istidc").toString()); |
| 242 | 486 | Long ttinfoid = map.get("skb") ==null ? null : Long.parseLong(map.get("skb").toString()); |
| 243 | 487 | Integer xlid = map.get("xl") ==null ? null : Integer.parseInt(map.get("xl").toString()); |
| 244 | - if(xlid !=null && ttinfoid !=null) | |
| 488 | + if(xlid !=null && ttinfoid !=null) | |
| 245 | 489 | ttInfoDetailRepository.deltidc(xlid,ttinfoid); |
| 246 | 490 | if(d!=null) |
| 247 | 491 | ttInfoDetailRepository.saveAll(jsonArrayToListEntity(d));// 2、保存. |
| ... | ... | @@ -252,14 +496,14 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 252 | 496 | rs_m.put("status", ResponseCode.SUCCESS); |
| 253 | 497 | return rs_m; |
| 254 | 498 | } |
| 255 | - | |
| 499 | + | |
| 256 | 500 | /** |
| 257 | 501 | * @description : (TODO) json班次数据转list班次. |
| 258 | - * | |
| 502 | + * | |
| 259 | 503 | * @param jsonStr 班次json字符串] |
| 260 | - * | |
| 504 | + * | |
| 261 | 505 | * @return 返回一个list分装的班次数据. |
| 262 | - * | |
| 506 | + * | |
| 263 | 507 | * @status OK. |
| 264 | 508 | * */ |
| 265 | 509 | public List<TTInfoDetail> jsonArrayToListEntity(String jsonStr) throws Exception { |
| ... | ... | @@ -274,14 +518,14 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 274 | 518 | } |
| 275 | 519 | return listTd; |
| 276 | 520 | } |
| 277 | - | |
| 521 | + | |
| 278 | 522 | /** |
| 279 | 523 | * @description : (TODO) 班次map对象转实体对象. |
| 280 | - * | |
| 524 | + * | |
| 281 | 525 | * @param obj 班次map对象. |
| 282 | - * | |
| 526 | + * | |
| 283 | 527 | * @return 返回一个班次实体对象. |
| 284 | - * | |
| 528 | + * | |
| 285 | 529 | * @exception 异常暂先抛出去. |
| 286 | 530 | * */ |
| 287 | 531 | public TTInfoDetail objToEntity(JSONObject obj) throws Exception { |
| ... | ... | @@ -332,12 +576,12 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 332 | 576 | // 22、返回实体对象. |
| 333 | 577 | return td; |
| 334 | 578 | } |
| 335 | - | |
| 579 | + | |
| 336 | 580 | /** |
| 337 | 581 | * @description : (TODO) int转boolean类型. |
| 338 | - * | |
| 582 | + * | |
| 339 | 583 | * @param value--int类型的数值] |
| 340 | - * | |
| 584 | + * | |
| 341 | 585 | * @return : 返回一个布尔类型值. |
| 342 | 586 | * */ |
| 343 | 587 | public Boolean intToBit(int value) { |
| ... | ... | @@ -347,13 +591,13 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 347 | 591 | else if(value ==1) |
| 348 | 592 | tag = true; |
| 349 | 593 | return tag; |
| 350 | - } | |
| 351 | - | |
| 594 | + } | |
| 595 | + | |
| 352 | 596 | /** |
| 353 | 597 | * @description (TODO) 获取路牌. |
| 354 | - * | |
| 598 | + * | |
| 355 | 599 | * @param xl --线路,name--路牌名称,code--路牌编码,lpType--路牌类型] |
| 356 | - * | |
| 600 | + * | |
| 357 | 601 | * @return 返回路牌. |
| 358 | 602 | * */ |
| 359 | 603 | public GuideboardInfo getLp(Line xl,String name, int code, String lpType) throws Exception { |
| ... | ... | @@ -380,18 +624,18 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 380 | 624 | entity.setUpdateBy(null); |
| 381 | 625 | // 8、保存路牌. |
| 382 | 626 | guideboardInfoRepository.save(entity); |
| 383 | - } | |
| 627 | + } | |
| 384 | 628 | // 9、返回路牌. |
| 385 | 629 | return entity; |
| 386 | 630 | } |
| 387 | - | |
| 631 | + | |
| 388 | 632 | /** |
| 389 | 633 | * @description : (TODO) 线路方向转代码. |
| 390 | - * | |
| 634 | + * | |
| 391 | 635 | * @param str--方向字符串] |
| 392 | - * | |
| 636 | + * | |
| 393 | 637 | * @return 返回方向代码. |
| 394 | - * | |
| 638 | + * | |
| 395 | 639 | * @exception 异常暂先抛出. |
| 396 | 640 | * */ |
| 397 | 641 | public String dirToCod(String str) throws Exception { | ... | ... |
src/main/java/com/bsth/service/schedule/impl/plan/DroolsSchedulePlan.java
| ... | ... | @@ -326,6 +326,8 @@ public class DroolsSchedulePlan { |
| 326 | 326 | schedulePlan.setScheduleToTime(this.to); |
| 327 | 327 | schedulePlan.setCreateBy(this.schedulePlan.getCreateBy()); |
| 328 | 328 | schedulePlan.setUpdateBy(this.schedulePlan.getUpdateBy()); |
| 329 | + schedulePlan.setCreateDate(this.schedulePlan.getCreateDate()); | |
| 330 | + schedulePlan.setUpdateDate(this.schedulePlan.getUpdateDate()); | |
| 329 | 331 | |
| 330 | 332 | // 1-1、构造drools规则输入数据,输出数据 |
| 331 | 333 | PlanCalcuParam_input planCalcuParam_input = new PlanCalcuParam_input( | ... | ... |
src/main/java/com/bsth/service/schedule/utils/MyDateUtils.java
0 → 100644
| 1 | +package com.bsth.service.schedule.utils; | |
| 2 | + | |
| 3 | +import org.apache.commons.lang3.time.DateUtils; | |
| 4 | +import org.joda.time.DateTime; | |
| 5 | + | |
| 6 | +import java.util.Date; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * 日期处理工具类。 | |
| 10 | + */ | |
| 11 | +public class MyDateUtils { | |
| 12 | + | |
| 13 | + /** | |
| 14 | + * 将HH:mm格式的时间格式加上指定分钟后,生成新的日期返回。 | |
| 15 | + * @param hhssDate | |
| 16 | + * @param minutes | |
| 17 | + * @param day 是否跨天 | |
| 18 | + */ | |
| 19 | + public static Date hhssTimePlusMinunits(String hhssDate, Integer minutes, Integer day) { | |
| 20 | + try { | |
| 21 | + DateTime newDate = new DateTime(DateUtils.parseDate("1980-01-01 " + hhssDate, "yyyy-MM-dd HH:mm")); | |
| 22 | + return newDate.plusDays(day).plusMinutes(minutes).toDate(); | |
| 23 | + } catch (Exception exp) { | |
| 24 | + throw new RuntimeException(exp); | |
| 25 | + } | |
| 26 | + } | |
| 27 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/utils/MyHttpUtils.java
0 → 100644
| 1 | +package com.bsth.service.schedule.utils; | |
| 2 | + | |
| 3 | +import javax.servlet.http.HttpServletResponse; | |
| 4 | +import java.io.*; | |
| 5 | +import java.net.URLEncoder; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * 相关Http层的util工具类。 | |
| 9 | + */ | |
| 10 | +public class MyHttpUtils { | |
| 11 | + // 流输出文件 | |
| 12 | + public static void responseStreamFile(HttpServletResponse response, File file) throws IOException { | |
| 13 | + // 流输出导出文件 | |
| 14 | + response.setHeader("content-type", "application/octet-stream"); | |
| 15 | + String fileName = file.getName(); | |
| 16 | + if (MyStringUtils.isContainChinese(fileName)) { | |
| 17 | + response.setHeader("Content-Disposition", "attachment; filename*=" + URLEncoder.encode(fileName, "UTF-8")); | |
| 18 | + } else { | |
| 19 | + response.setHeader("Content-Disposition", "attachment; filename=" + fileName); | |
| 20 | + } | |
| 21 | + response.setContentType("application/octet-stream"); | |
| 22 | + | |
| 23 | + try ( | |
| 24 | + OutputStream os = response.getOutputStream(); | |
| 25 | + BufferedOutputStream bos = new BufferedOutputStream(os); | |
| 26 | + InputStream is = new FileInputStream(file); | |
| 27 | + BufferedInputStream bis = new BufferedInputStream(is) | |
| 28 | + ) { | |
| 29 | + int length; | |
| 30 | + byte[] temp = new byte[1024 * 10]; | |
| 31 | + while ((length = bis.read(temp)) != -1) { | |
| 32 | + bos.write(temp, 0, length); | |
| 33 | + } | |
| 34 | + bos.flush(); | |
| 35 | + } | |
| 36 | + } | |
| 37 | +} | ... | ... |
src/main/resources/application-dev.properties
| 1 | -server.port=9088 | |
| 2 | - | |
| 3 | -# dubbo服务化使用开关flag | |
| 4 | -dubbo.use=false | |
| 5 | - | |
| 6 | -#JPA | |
| 7 | -spring.jpa.hibernate.ddl-auto= update | |
| 8 | -spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl | |
| 9 | -spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy | |
| 10 | -spring.jpa.database= MYSQL | |
| 11 | -spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true | |
| 12 | -spring.jpa.show-sql= true | |
| 13 | - | |
| 14 | -#DATABASE | |
| 15 | -spring.datasource.driver-class-name= com.mysql.jdbc.Driver | |
| 16 | -spring.datasource.url= jdbc:mysql://127.0.0.1/control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 17 | -#spring.datasource.url= jdbc:mysql://192.168.168.222/control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 18 | -spring.datasource.username= root | |
| 19 | -spring.datasource.password= | |
| 20 | -#spring.datasource.url= jdbc:mysql://192.168.168.117/pd_control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 21 | -#spring.datasource.username= root | |
| 22 | -#spring.datasource.password= root | |
| 23 | -spring.datasource.type= com.zaxxer.hikari.HikariDataSource | |
| 24 | - | |
| 25 | -#DATASOURCE SETTING | |
| 26 | -spring.datasource.hikari.minimum-idle= 8 | |
| 27 | -spring.datasource.hikari.maximum-pool-size= 100 | |
| 28 | -#spring.datasource.hikari.auto-commit= true | |
| 29 | -spring.datasource.hikari.idle-timeout= 60000 | |
| 30 | -#spring.datasource.hikari.pool-name= HikariPool | |
| 31 | -spring.datasource.hikari.max-lifetime= 1800000 | |
| 32 | -spring.datasource.hikari.connection-timeout= 3000 | |
| 33 | -spring.datasource.hikari.connection-test-query= SELECT 1 | |
| 34 | -spring.datasource.hikari.validation-timeout= 3000 | |
| 35 | -spring.datasource.hikari.register-mbeans=true | |
| 36 | - | |
| 37 | -## gps client data | |
| 38 | -http.gps.real.cache.url= http://10.10.150.24:12580/realGps/all | |
| 39 | -## gateway real data | |
| 40 | -http.gps.real.url= http://114.80.178.12:18080/transport_server/rtgps/ | |
| 41 | -## gateway send directive | |
| 42 | -http.send.directive = http://192.168.168.201:9090/transport_server/message/ | |
| 43 | -## rfid data | |
| 44 | -http.rfid.url= http://114.80.178.12:29000/rfid | |
| 1 | +server.port=9088 | |
| 2 | + | |
| 3 | +# dubbo服务化使用开关flag | |
| 4 | +dubbo.use=false | |
| 5 | + | |
| 6 | +#JPA | |
| 7 | +spring.jpa.hibernate.ddl-auto= none | |
| 8 | +spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl | |
| 9 | +spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy | |
| 10 | +spring.jpa.database= MYSQL | |
| 11 | +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true | |
| 12 | +spring.jpa.show-sql= true | |
| 13 | + | |
| 14 | +#DATABASE | |
| 15 | +spring.datasource.driver-class-name= com.mysql.jdbc.Driver | |
| 16 | +#spring.datasource.url= jdbc:mysql://127.0.0.1/control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 17 | +##spring.datasource.url= jdbc:mysql://192.168.168.222/control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 18 | +#spring.datasource.username= root | |
| 19 | +#spring.datasource.password= | |
| 20 | +spring.datasource.url= jdbc:mysql://127.0.0.1/control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 21 | +spring.datasource.username= root | |
| 22 | +spring.datasource.password= root | |
| 23 | +#spring.datasource.url= jdbc:mysql://192.168.168.117/pd_control?useUnicode=true&characterEncoding=utf-8&useSSL=false | |
| 24 | +#spring.datasource.username= root | |
| 25 | +#spring.datasource.password= root | |
| 26 | +spring.datasource.type= com.zaxxer.hikari.HikariDataSource | |
| 27 | + | |
| 28 | +#DATASOURCE SETTING | |
| 29 | +spring.datasource.hikari.minimum-idle= 8 | |
| 30 | +spring.datasource.hikari.maximum-pool-size= 100 | |
| 31 | +#spring.datasource.hikari.auto-commit= true | |
| 32 | +spring.datasource.hikari.idle-timeout= 60000 | |
| 33 | +#spring.datasource.hikari.pool-name= HikariPool | |
| 34 | +spring.datasource.hikari.max-lifetime= 1800000 | |
| 35 | +spring.datasource.hikari.connection-timeout= 3000 | |
| 36 | +spring.datasource.hikari.connection-test-query= SELECT 1 | |
| 37 | +spring.datasource.hikari.validation-timeout= 3000 | |
| 38 | +spring.datasource.hikari.register-mbeans=true | |
| 39 | + | |
| 40 | +## gps client data | |
| 41 | +http.gps.real.cache.url= http://10.10.150.24:12580/realGps/all | |
| 42 | +## gateway real data | |
| 43 | +http.gps.real.url= http://114.80.178.12:18080/transport_server/rtgps/ | |
| 44 | +## gateway send directive | |
| 45 | +http.send.directive = http://192.168.168.201:9090/transport_server/message/ | |
| 46 | +## rfid data | |
| 47 | +http.rfid.url= http://114.80.178.12:29000/rfid | |
| 48 | +## first last generate | |
| 49 | +ms.fl.generate=true | |
| 45 | 50 | \ No newline at end of file | ... | ... |
src/main/resources/application-prod.properties
| ... | ... | @@ -47,3 +47,5 @@ http.report.url.05= http://116.228.197.222:8081/ygjwsystem_j2ee/clbx/clbx_dd.do |
| 47 | 47 | http.report.url.22= http://116.247.73.122:9098/jgjwsystem_j2ee/clbx/clbx_dd.do |
| 48 | 48 | http.report.url.26= http://116.236.141.34:8088/nhjwsystem_j2ee/clbx/clbx_dd.do |
| 49 | 49 | http.report.url.55= http://180.168.216.248:8088/snjwsystem_j2ee/clbx/clbx_dd.do |
| 50 | +## first last generate | |
| 51 | +ms.fl.generate=true | |
| 50 | 52 | \ No newline at end of file | ... | ... |
src/main/resources/application-test.properties
| ... | ... | @@ -38,3 +38,5 @@ http.gps.real.url= http://10.10.200.79:8080/transport_server/rtgps/ |
| 38 | 38 | #http.send.directive = http://10.10.200.79:8080/transport_server/message/ |
| 39 | 39 | ## rfid data |
| 40 | 40 | http.rfid.url= http://10.10.200.82:9000/rfid |
| 41 | +## first last generate | |
| 42 | +ms.fl.generate=false | |
| 41 | 43 | \ No newline at end of file | ... | ... |
src/main/resources/fatso/start.js
| ... | ... | @@ -16,7 +16,7 @@ var platform = process.platform; |
| 16 | 16 | var iswin = platform == 'win32'; |
| 17 | 17 | var sp = platform == 'win32' ? '\\' : '/'; |
| 18 | 18 | //不参与的目录 |
| 19 | -var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel'] | |
| 19 | +var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute'] | |
| 20 | 20 | , ep = new EventProxy() |
| 21 | 21 | , pName = 'bsth_control' |
| 22 | 22 | , path = process.cwd() | ... | ... |
src/main/resources/static/pages/electricity/list/list.html
| ... | ... | @@ -280,7 +280,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 280 | 280 | $("#checkDl").on('click', function () { |
| 281 | 281 | if ($("#rq").val() != "") { |
| 282 | 282 | var params=getParamsList(); |
| 283 | - $get('/ylb/checkDate',params,function(status){ | |
| 283 | + var par={}; | |
| 284 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 285 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 286 | + $get('/ylb/checkDate',par,function(status){ | |
| 284 | 287 | if(status=='2'){ |
| 285 | 288 | layer.msg('只能操作三天内数据.'); |
| 286 | 289 | }else{ |
| ... | ... | @@ -301,7 +304,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 301 | 304 | console.log("进场油量等于出场油量"); |
| 302 | 305 | if ($("#rq").val() != "") { |
| 303 | 306 | var params=getParamsList(); |
| 304 | - $get('/ylb/checkDate',params,function(status){ | |
| 307 | + var par={}; | |
| 308 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 309 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 310 | + $get('/ylb/checkDate',par,function(status){ | |
| 305 | 311 | if(status=='2'){ |
| 306 | 312 | layer.msg('只能操作三天内数据.'); |
| 307 | 313 | }else{ |
| ... | ... | @@ -321,7 +327,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 321 | 327 | //保存 |
| 322 | 328 | $("#saveButton").on('click',function(){ |
| 323 | 329 | var params_=getParamsList(); |
| 324 | - $get('/ylb/checkDate',params_,function(status){ | |
| 330 | + var par={}; | |
| 331 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 332 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 333 | + $get('/ylb/checkDate',par,function(status){ | |
| 325 | 334 | if(status=='2'){ |
| 326 | 335 | layer.msg('只能操作三天内数据.'); |
| 327 | 336 | }else{ |
| ... | ... | @@ -433,7 +442,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 433 | 442 | $("#obtain").on('click', function () { |
| 434 | 443 | if ($("#rq").val() != "") { |
| 435 | 444 | var params=getParamsList(); |
| 436 | - $get('/ylb/checkDate',params,function(status){ | |
| 445 | + var par={}; | |
| 446 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 447 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 448 | + $get('/ylb/checkDate',par,function(status){ | |
| 437 | 449 | if(status=='2'){ |
| 438 | 450 | layer.msg('只能操作三天内数据.'); |
| 439 | 451 | }else{ |
| ... | ... | @@ -598,7 +610,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 598 | 610 | function jsyUpdate(){ |
| 599 | 611 | var params=getParamsList(); |
| 600 | 612 | var id = $(this).data('id'); |
| 601 | - $get('/ylb/checkDate',params,function(status){ | |
| 613 | + var par={}; | |
| 614 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 615 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 616 | + $get('/ylb/checkDate',par,function(status){ | |
| 602 | 617 | if(status=='2'){ |
| 603 | 618 | layer.msg('只能操作三天内数据.'); |
| 604 | 619 | }else{ |
| ... | ... | @@ -742,7 +757,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 742 | 757 | //删除 |
| 743 | 758 | $('#removeButton').on('click', function () { |
| 744 | 759 | var params_=getParamsList(); |
| 745 | - $get('/ylb/checkDate',params_,function(status){ | |
| 760 | + var par={}; | |
| 761 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 762 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 763 | + $get('/ylb/checkDate',par,function(status){ | |
| 746 | 764 | if(status=='2'){ |
| 747 | 765 | layer.msg('只能操作三天内数据.'); |
| 748 | 766 | }else{ | ... | ... |
src/main/resources/static/pages/forms/calc/calcDetailMonthly.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 | - text-align: center; } | |
| 12 | - .table-bordered > thead > tr > th, | |
| 13 | - .table-bordered > thead > tr > td { | |
| 14 | - border-bottom-width: 2px; } | |
| 15 | - | |
| 16 | - .table > tbody + tbody { | |
| 17 | - border-top: 1px solid; } | |
| 18 | - | |
| 19 | - | |
| 20 | - #analy_body tr> td >span{ | |
| 21 | - word-break: keep-all;white-space:nowrap; | |
| 22 | - } | |
| 23 | - | |
| 24 | - #analy_body td{ | |
| 25 | - min-width: 100px; | |
| 26 | - max-width: 100px; | |
| 27 | - width: 100px; | |
| 28 | - } | |
| 29 | - | |
| 30 | - #analy_body{ | |
| 31 | - margin-top: 20px; | |
| 32 | - height: 620px; | |
| 33 | - width: 100% | |
| 34 | - } | |
| 35 | - | |
| 36 | - | |
| 37 | - .table_head::-webkit-scrollbar { | |
| 38 | - display:none | |
| 39 | - } | |
| 40 | - | |
| 41 | - .table_head{ | |
| 42 | - min-width: 906px; | |
| 43 | - width: 100%; | |
| 44 | - overflow: hidden; | |
| 45 | - } | |
| 46 | - | |
| 47 | - .table_body{ | |
| 48 | - width:101%; | |
| 49 | - height:580px; | |
| 50 | - overflow: auto; | |
| 51 | - margin-top: -20px; | |
| 52 | - } | |
| 53 | -</style> | |
| 54 | -<div class="page-head"> | |
| 55 | - <div class="page-title"> | |
| 56 | - <h1>路单线路明细月报表</h1> | |
| 57 | - </div> | |
| 58 | -</div> | |
| 59 | - | |
| 60 | -<!--<div class="row">--> | |
| 61 | -<div class=" row col-md-12 portlet light bordered" style="height:calc(100% - 38px)"> | |
| 62 | - <div class=""> | |
| 63 | - <form class="form-inline" > | |
| 64 | - <!--<div style="display: inline-block; margin-left: 33px;" id="gsdmDiv_daily"> | |
| 65 | - <span class="item-label" style="width: 80px;">  公司: </span> | |
| 66 | - <select class="form-control" name="company" id="gsdm" style="width: 180px;"></select> | |
| 67 | - </div>--> | |
| 68 | - <div style="display: inline-block; margin-left: 33px;" id="fgsdmDiv_daily"> | |
| 69 | - <span class="item-label" style="width: 80px;"> 分公司: </span> | |
| 70 | - <select class="form-control" name="fgsdm" id="fgsdm" style="width: 180px;"></select> | |
| 71 | - </div> | |
| 72 | - <!--<div style="display: inline-block;margin-left: 33px;"> | |
| 73 | - <span class="item-label" style="width: 80px;">  线路: </span> | |
| 74 | - <select class="form-control" name="line" id="line" style="width: 180px;"></select> | |
| 75 | - </div>--> | |
| 76 | - <div style="display: inline-block; margin-left: 33px;"> | |
| 77 | - <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 78 | - <select class="form-control" name="destroy" id="destroy" style="width: 180px;"> | |
| 79 | - <option value="0,1">全部线路</option> | |
| 80 | - <option value="0">营运线路</option> | |
| 81 | - <option value="1">非营运线路</option> | |
| 82 | - </select> | |
| 83 | - </div> | |
| 84 | - <div style="display: inline-block;margin-left: 33px;" class="date-picker"> | |
| 85 | - <span class="item-label" style="width: 80px;">  时间: </span> | |
| 86 | - <input class="form-control" type="text" id="startDate" style="width: 180px;" /> - | |
| 87 | - <input class="form-control" type="text" id="endDate" style="width: 180px;" /> | |
| 88 | - <!--<input class="form-control" type="text" id="startDate" style="width: 180px;" value="2020-10-01"/> - --> | |
| 89 | - <!--<input class="form-control" type="text" id="endDate" style="width: 180px;" value="2020-10-10"/>--> | |
| 90 | - </div> | |
| 91 | - <div style="margin-top: 2px"></div> | |
| 92 | - | |
| 93 | - <div style="display: inline-block;margin-left: 33px;"> | |
| 94 | - <span class="item-label" style="width: 80px;">统计对象: </span> | |
| 95 | - <select class="form-control" name="statisticalObj" id="statisticalObj" style="width: 180px;"> | |
| 96 | - <option value="cl">车辆</option> | |
| 97 | - <option value="jsy">驾驶员</option> | |
| 98 | - <option value="cwy">乘务员</option> | |
| 99 | - <option value="xl">线路</option> | |
| 100 | - </select> | |
| 101 | - </div> | |
| 102 | - | |
| 103 | - <div style="display: inline-block; margin-left: 33px;" > | |
| 104 | - <span class="item-label" style="width: 80px;">统计项目: </span> | |
| 105 | - <select class="form-control" name="statisticalItem" id="statisticalItem" style="width: 180px;"> | |
| 106 | - <option value="yh">油耗</option> | |
| 107 | - <option value="dh">电耗</option> | |
| 108 | - <option value="gl">公里</option> | |
| 109 | - <option value="bc">班次</option> | |
| 110 | - </select> | |
| 111 | - </div> | |
| 112 | - <div style="display: inline-block; margin-left: 33px;" > | |
| 113 | - <span class="item-label" style="width: 80px;">项目明细: </span> | |
| 114 | - <select class="form-control" name="itemDetails" id="itemDetails" style="width: 180px;"></select> | |
| 115 | - </div> | |
| 116 | - <div class="form-group" style="display: inline-block;margin-left: 62px;"> | |
| 117 | - <input class="btn btn-default" type="button" id="query" value="筛选"/> | |
| 118 | - <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 119 | - </div> | |
| 120 | - </form> | |
| 121 | - </div> | |
| 122 | - | |
| 123 | - <div id="analy_body"> | |
| 124 | - <div class="table_head" id="table_head"> | |
| 125 | - <table class="table table-bordered table-hover table-checkable " id="forms_head"> | |
| 126 | - <thead> | |
| 127 | - </thead> | |
| 128 | - </table> | |
| 129 | - </div> | |
| 130 | - <div class="table_body" id="table_body"> | |
| 131 | - <table class="table table-bordered table-hover table-checkable" id="forms_body"> | |
| 132 | - <tbody> | |
| 133 | - </tbody> | |
| 134 | - </table> | |
| 135 | - </div> | |
| 136 | - </div> | |
| 137 | -</div> | |
| 138 | -<script > | |
| 139 | - $(function(){ | |
| 140 | - $('#export').attr('disabled', "true"); | |
| 141 | - // 关闭左侧栏 | |
| 142 | - if (!$('body').hasClass('page-sidebar-closed')) | |
| 143 | - $('.menu-toggler.sidebar-toggler').click(); | |
| 144 | - | |
| 145 | - var table_body1 = document.getElementById("table_body"); | |
| 146 | - table_body1.onscroll = function(){ | |
| 147 | - var table_body1_left = this.scrollLeft; | |
| 148 | - document.getElementById("table_head").scrollLeft = table_body1_left; | |
| 149 | - }; | |
| 150 | - | |
| 151 | - var d = new Date(); | |
| 152 | - d.setTime(d.getTime() - 4*1000*60*60*24);//只能查4天以前的数据 | |
| 153 | - var year = d.getFullYear(); | |
| 154 | - var month = d.getMonth() + 1; | |
| 155 | - var day = d.getDate(); | |
| 156 | - if(month < 10) | |
| 157 | - month = "0" + month; | |
| 158 | - if(day < 10) | |
| 159 | - day = "0" + day; | |
| 160 | - //时间 | |
| 161 | - var dateTime=year + "-" + month + "-" + day; | |
| 162 | - $("#startDate").val(dateTime); | |
| 163 | - $("#endDate").val(dateTime); | |
| 164 | - | |
| 165 | - $("#endDate").datetimepicker({ | |
| 166 | - format : 'YYYY-MM-DD', | |
| 167 | - locale : 'zh-cn', | |
| 168 | - maxDate : dateTime | |
| 169 | - }); | |
| 170 | - $("#startDate").datetimepicker({ | |
| 171 | - format : 'YYYY-MM-DD', | |
| 172 | - locale : 'zh-cn', | |
| 173 | - maxDate : dateTime | |
| 174 | - }); | |
| 175 | - | |
| 176 | - var lineAll=""; | |
| 177 | - var datas = {}; //查询条件 | |
| 178 | - | |
| 179 | - /**用户分配的线路*/ | |
| 180 | - $.get('/realControAuthority/findByCurrentUser', function (userAuthor) { | |
| 181 | - lineAll = userAuthor.lineCodeStr.substring(0,userAuthor.lineCodeStr.length-1); | |
| 182 | - }); | |
| 183 | - | |
| 184 | - var tempData = {}; | |
| 185 | - | |
| 186 | - $.get('/user/companyData', function(obj) { | |
| 187 | - var option = ''; | |
| 188 | - var allC = ""; | |
| 189 | - for (var i = 0; i < obj.length; i++) { | |
| 190 | - if (obj[i].companyCode == "26") { | |
| 191 | - var children = obj[i].children; | |
| 192 | - for (var j = 0; j < children.length; j++) { | |
| 193 | - allC += children[j].code+","; | |
| 194 | - option += '<option value="' + children[j].code + '">' + children[j].name + '</option>'; | |
| 195 | - } | |
| 196 | - } | |
| 197 | - } | |
| 198 | - | |
| 199 | - var options = '<option value="'+allC.substring(0,allC.length-1)+'">所有分公司</option>'+option; | |
| 200 | - $('#fgsdm').html(options); | |
| 201 | - }); | |
| 202 | - | |
| 203 | - // 项目明细选项列 | |
| 204 | - // 触发默认选项 | |
| 205 | - updateItem(); | |
| 206 | - $("#statisticalItem").on("change",updateItem); | |
| 207 | - function updateItem() { | |
| 208 | - var item = $('#statisticalItem').val(); | |
| 209 | - var options = ''; | |
| 210 | - if(item == "yh"){ | |
| 211 | - options += '<option value="jzlAll">加注量[全部]</option>' + | |
| 212 | - '<option value="jzl0">加注量[0#]</option>'+ | |
| 213 | - '<option value="jzl-10">加注量[-10#]</option>'+ | |
| 214 | - '<option value="yhl">油耗量</option>'+ | |
| 215 | - '<option value="cccy">出场存油</option>'+ | |
| 216 | - '<option value="jccy">进场存油</option>'+ | |
| 217 | - '<option value="bglyh">百公里油耗</option>'; | |
| 218 | - } else if(item == "gl"){ | |
| 219 | - options += '<option value="zgl">总公里</option>' + | |
| 220 | - '<option value="jhgl">计划公里</option>'; | |
| 221 | - /*'<option value="jclm">进场路码</option>'+ | |
| 222 | - '<option value="cclm">出场路码</option>'*/ | |
| 223 | - } else if(item == "bc"){ | |
| 224 | - options += '<option value="sjbc">实际班次</option>' + | |
| 225 | - '<option value="jhbc">计划班次</option>'; | |
| 226 | - } else if(item == "dh"){ | |
| 227 | - options += '<option value="dh">耗电量</option>'; | |
| 228 | - options += '<option value="cdl">充电量</option>'; | |
| 229 | - options += '<option value="cccd">出场存电</option>'; | |
| 230 | - options += '<option value="jccd">进场存电</option>'; | |
| 231 | - options += '<option value="bgldh">百公里电耗</option>'; | |
| 232 | - } | |
| 233 | - $('#itemDetails').html(options); | |
| 234 | - } | |
| 235 | - | |
| 236 | - //线路名称 | |
| 237 | - var lineName = ''; | |
| 238 | - $("#query").on("click",function(){ | |
| 239 | - var gsdm = "26"; | |
| 240 | - var fgsdm = $("#fgsdm").val(); | |
| 241 | - var startDate = $("#startDate").val(); | |
| 242 | - var endDate = $("#endDate").val(); | |
| 243 | - var statisticalObj = $("#statisticalObj").val(); | |
| 244 | - //开始和结束时间 | |
| 245 | - var startTime = Date.parse(new Date(startDate)); | |
| 246 | - var endTime = Date.parse(new Date(endDate)); | |
| 247 | - | |
| 248 | - datas = {}; // 清空之前数据 | |
| 249 | - datas.gsdm = gsdm; | |
| 250 | - datas.fgsdm = fgsdm; | |
| 251 | - datas.lineCode = lineAll; | |
| 252 | - datas.timeType = "m"; | |
| 253 | - datas.startDate = startDate; | |
| 254 | - datas.endDate = endDate; | |
| 255 | - datas.destroy = $("#destroy").val(); | |
| 256 | - datas.statisticalObj = $("#statisticalObj").val(); | |
| 257 | - datas.itemDetails = $("#itemDetails").val(); | |
| 258 | - var itemDetails = datas.itemDetails, | |
| 259 | - type = "加注量[全部]"; | |
| 260 | - if(itemDetails=="jzl0"){ | |
| 261 | - type = "加注量[0#]" | |
| 262 | - } else if(itemDetails=="jzl-10"){ | |
| 263 | - type = "加注量[-10#]" | |
| 264 | - } else if(itemDetails=="yhl"){ | |
| 265 | - type = "油耗量" | |
| 266 | - } else if(itemDetails=="cccy"){ | |
| 267 | - type = "出场存油" | |
| 268 | - } else if(itemDetails=="jccy"){ | |
| 269 | - type = "进场存油" | |
| 270 | - } else if(itemDetails=="bglyh"){ | |
| 271 | - type = "百公里油耗" | |
| 272 | - } else if(itemDetails=="zgl"){ | |
| 273 | - type = "总公里" | |
| 274 | - } else if(itemDetails=="jhgl"){ | |
| 275 | - type = "计划公里" | |
| 276 | - } else if(itemDetails=="jclm"){ | |
| 277 | - type = "进场路码" | |
| 278 | - } else if(itemDetails=="cclm"){ | |
| 279 | - type = "出场路码" | |
| 280 | - } else if(itemDetails=="sjbc"){ | |
| 281 | - type = "实际班次" | |
| 282 | - } else if(itemDetails=="jhbc"){ | |
| 283 | - type = "计划班次" | |
| 284 | - } else if(itemDetails=="dh"){ | |
| 285 | - type = "耗电量" | |
| 286 | - } else if(itemDetails=="cdl"){ | |
| 287 | - type = "充电量" | |
| 288 | - } else if(itemDetails=="cccd"){ | |
| 289 | - type = "出场存电" | |
| 290 | - } else if(itemDetails=="jccd"){ | |
| 291 | - type = "进场存电" | |
| 292 | - } else if(itemDetails=="bgldh"){ | |
| 293 | - type = "百公里电耗" | |
| 294 | - } | |
| 295 | - datas.name = datas.startDate+"-"+datas.endDate+"-路单线路明细月报表("+type+")"; | |
| 296 | - if(startDate==null || startDate =="" ||endDate==null || endDate ==""){ | |
| 297 | - layer.msg('请选择时间段!'); | |
| 298 | - }else if(endTime<startTime){ | |
| 299 | - layer.msg('结束日期不能小于开始日期!'); | |
| 300 | - }else { | |
| 301 | - if (endDate.substring(0, 7) != startDate.substring(0, 7)) { | |
| 302 | - layer.msg("请查询同月份数据!"); | |
| 303 | - return; | |
| 304 | - } else { | |
| 305 | - var lodingI = layer.load(2); | |
| 306 | - $get('/calcWaybill/calcDetailMonthly', datas, function (rs) { | |
| 307 | - if (rs.length <=0) { | |
| 308 | - layer.close(lodingI); | |
| 309 | - layer.open({ | |
| 310 | - title: '提示' | |
| 311 | - , content: '没有您要查询的数据,请重新选择参数!' | |
| 312 | - }); | |
| 313 | - $("#export").attr('disabled',"true"); | |
| 314 | - return; | |
| 315 | - }else | |
| 316 | - $("#export").removeAttr("disabled"); | |
| 317 | - var htmlHead = "<tr><td colspan='"+rs[0].length+"'>"+datas.name+"</td></tr>", htmlBody = ""; | |
| 318 | - var rsLength = rs.length; | |
| 319 | - rs.forEach(function (o, i) { | |
| 320 | - var html = "<tr>" | |
| 321 | - o.forEach(function (td, j) { | |
| 322 | - var colspan; | |
| 323 | - if (i == rsLength - 1 && j == 0) { | |
| 324 | - colspan = (statisticalObj == "xl" ? "colspan='3'" : "colspan='5'"); | |
| 325 | - if(statisticalObj == "cl") | |
| 326 | - colspan = "colspan='6'"; | |
| 327 | - } | |
| 328 | - html += "<td " + colspan + ">" + td + "</td>" | |
| 329 | - }); | |
| 330 | - html += "</tr>" | |
| 331 | - if (i == 0) { | |
| 332 | - htmlHead += html; | |
| 333 | - } else | |
| 334 | - htmlBody += html; | |
| 335 | - }); | |
| 336 | - $('#forms_head thead').html(htmlHead); | |
| 337 | - $('#forms_body tbody').html(htmlBody); | |
| 338 | - layer.close(lodingI); | |
| 339 | - }); | |
| 340 | - } | |
| 341 | - } | |
| 342 | - }); | |
| 343 | - | |
| 344 | - $("#export").on("click",function(){ | |
| 345 | - $post("/report/calcDetailMonthlyE",datas,function(result){ | |
| 346 | - window.open("/downloadFile/download?fileName="+datas.name); | |
| 347 | - }); | |
| 348 | - }); | |
| 349 | - }); | |
| 350 | -</script> | |
| 351 | -<!--<script type="application/javascript" src="/pages/forms/calc/calcDetailMonthly.js"></script>--> | |
| 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 | + text-align: center; } | |
| 12 | + .table-bordered > thead > tr > th, | |
| 13 | + .table-bordered > thead > tr > td { | |
| 14 | + border-bottom-width: 2px; } | |
| 15 | + | |
| 16 | + .table > tbody + tbody { | |
| 17 | + border-top: 1px solid; } | |
| 18 | + | |
| 19 | + | |
| 20 | + #analy_body tr> td >span{ | |
| 21 | + word-break: keep-all;white-space:nowrap; | |
| 22 | + } | |
| 23 | + | |
| 24 | + #analy_body td{ | |
| 25 | + min-width: 100px; | |
| 26 | + max-width: 100px; | |
| 27 | + width: 100px; | |
| 28 | + } | |
| 29 | + | |
| 30 | + #analy_body{ | |
| 31 | + margin-top: 20px; | |
| 32 | + height: 620px; | |
| 33 | + width: 100% | |
| 34 | + } | |
| 35 | + | |
| 36 | + | |
| 37 | + .table_head::-webkit-scrollbar { | |
| 38 | + display:none | |
| 39 | + } | |
| 40 | + | |
| 41 | + .table_head{ | |
| 42 | + min-width: 906px; | |
| 43 | + width: 100%; | |
| 44 | + overflow: hidden; | |
| 45 | + } | |
| 46 | + | |
| 47 | + .table_body{ | |
| 48 | + width:101%; | |
| 49 | + height:580px; | |
| 50 | + overflow: auto; | |
| 51 | + margin-top: -20px; | |
| 52 | + } | |
| 53 | +</style> | |
| 54 | +<div class="page-head"> | |
| 55 | + <div class="page-title"> | |
| 56 | + <h1>路单线路明细月报表</h1> | |
| 57 | + </div> | |
| 58 | +</div> | |
| 59 | + | |
| 60 | +<!--<div class="row">--> | |
| 61 | +<div class=" row col-md-12 portlet light bordered" style="height:calc(100% - 38px)"> | |
| 62 | + <div class=""> | |
| 63 | + <form class="form-inline" > | |
| 64 | + <div style="display: inline-block; margin-left: 13px;" id="gsdmDiv_daily"> | |
| 65 | + <span class="item-label" style="width: 80px;">  公司: </span> | |
| 66 | + <select class="form-control" name="company" id="gsdm" style="width: 150px;"></select> | |
| 67 | + </div> | |
| 68 | + <div style="display: inline-block; margin-left: 13px;" id="fgsdmDiv_daily"> | |
| 69 | + <span class="item-label" style="width: 80px;"> 分公司: </span> | |
| 70 | + <select class="form-control" name="fgsdm" id="fgsdm" style="width: 150px;"></select> | |
| 71 | + </div> | |
| 72 | + <!--<div style="display: inline-block;margin-left: 33px;"> | |
| 73 | + <span class="item-label" style="width: 80px;">  线路: </span> | |
| 74 | + <select class="form-control" name="line" id="line" style="width: 180px;"></select> | |
| 75 | + </div>--> | |
| 76 | + <div style="display: inline-block;margin-left: 13px;" class="date-picker"> | |
| 77 | + <span class="item-label" style="width: 80px;">  时间: </span> | |
| 78 | + <input class="form-control" type="text" id="startDate" style="width: 150px;" /> - | |
| 79 | + <input class="form-control" type="text" id="endDate" style="width: 150px;" /> | |
| 80 | + <!--<input class="form-control" type="text" id="startDate" style="width: 180px;" value="2020-10-01"/> - --> | |
| 81 | + <!--<input class="form-control" type="text" id="endDate" style="width: 180px;" value="2020-10-10"/>--> | |
| 82 | + </div> | |
| 83 | + | |
| 84 | + <div style="margin-top: 2px"></div> | |
| 85 | + | |
| 86 | + <div style="display: inline-block; margin-left: 13px;"> | |
| 87 | + <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 88 | + <select class="form-control" name="destroy" id="destroy" style="width: 150px;"> | |
| 89 | + <option value="0,1">全部线路</option> | |
| 90 | + <option value="0">营运线路</option> | |
| 91 | + <option value="1">非营运线路</option> | |
| 92 | + </select> | |
| 93 | + </div> | |
| 94 | + <div style="display: inline-block;margin-left: 13px;"> | |
| 95 | + <span class="item-label" style="width: 80px;">统计对象: </span> | |
| 96 | + <select class="form-control" name="statisticalObj" id="statisticalObj" style="width: 150px;"> | |
| 97 | + <option value="cl">车辆</option> | |
| 98 | + <option value="jsy">驾驶员</option> | |
| 99 | + <option value="cwy">乘务员</option> | |
| 100 | + <option value="xl">线路</option> | |
| 101 | + </select> | |
| 102 | + </div> | |
| 103 | + | |
| 104 | + <div style="display: inline-block; margin-left: 13px;" > | |
| 105 | + <span class="item-label" style="width: 80px;">统计项目: </span> | |
| 106 | + <select class="form-control" name="statisticalItem" id="statisticalItem" style="width: 150px;"> | |
| 107 | + <option value="yh">油耗</option> | |
| 108 | + <option value="dh">电耗</option> | |
| 109 | + <option value="gl">公里</option> | |
| 110 | + <option value="bc">班次</option> | |
| 111 | + </select> | |
| 112 | + </div> | |
| 113 | + <div style="display: inline-block; margin-left: 13px;" > | |
| 114 | + <span class="item-label" style="width: 80px;">项目明细: </span> | |
| 115 | + <select class="form-control" name="itemDetails" id="itemDetails" style="width: 150px;"></select> | |
| 116 | + </div> | |
| 117 | + <div class="form-group" style="display: inline-block;margin-left: 22px;"> | |
| 118 | + <input class="btn btn-default" type="button" id="query" value="筛选"/> | |
| 119 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 120 | + </div> | |
| 121 | + </form> | |
| 122 | + </div> | |
| 123 | + | |
| 124 | + <div id="analy_body"> | |
| 125 | + <div class="table_head" id="table_head"> | |
| 126 | + <table class="table table-bordered table-hover table-checkable " id="forms_head"> | |
| 127 | + <thead> | |
| 128 | + </thead> | |
| 129 | + </table> | |
| 130 | + </div> | |
| 131 | + <div class="table_body" id="table_body"> | |
| 132 | + <table class="table table-bordered table-hover table-checkable" id="forms_body" style="background-color: white;"> | |
| 133 | + <tbody> | |
| 134 | + </tbody> | |
| 135 | + </table> | |
| 136 | + </div> | |
| 137 | + </div> | |
| 138 | +</div> | |
| 139 | +<script > | |
| 140 | + $(function(){ | |
| 141 | + $('#export').attr('disabled', "true"); | |
| 142 | + // 关闭左侧栏 | |
| 143 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 144 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 145 | + | |
| 146 | + var table_body1 = document.getElementById("table_body"); | |
| 147 | + table_body1.onscroll = function(){ | |
| 148 | + var table_body1_left = this.scrollLeft; | |
| 149 | + document.getElementById("table_head").scrollLeft = table_body1_left; | |
| 150 | + }; | |
| 151 | + | |
| 152 | + var d = new Date(); | |
| 153 | + d.setTime(d.getTime() - 4*1000*60*60*24);//只能查4天以前的数据 | |
| 154 | + var year = d.getFullYear(); | |
| 155 | + var month = d.getMonth() + 1; | |
| 156 | + var day = d.getDate(); | |
| 157 | + if(month < 10) | |
| 158 | + month = "0" + month; | |
| 159 | + if(day < 10) | |
| 160 | + day = "0" + day; | |
| 161 | + //时间 | |
| 162 | + var dateTime=year + "-" + month + "-" + day; | |
| 163 | + $("#startDate").val(dateTime); | |
| 164 | + $("#endDate").val(dateTime); | |
| 165 | + | |
| 166 | + $("#endDate").datetimepicker({ | |
| 167 | + format : 'YYYY-MM-DD', | |
| 168 | + locale : 'zh-cn', | |
| 169 | + maxDate : dateTime | |
| 170 | + }); | |
| 171 | + $("#startDate").datetimepicker({ | |
| 172 | + format : 'YYYY-MM-DD', | |
| 173 | + locale : 'zh-cn', | |
| 174 | + maxDate : dateTime | |
| 175 | + }); | |
| 176 | + | |
| 177 | + var lineAll=""; | |
| 178 | + var datas = {}; //查询条件 | |
| 179 | + | |
| 180 | + /**用户分配的线路*/ | |
| 181 | + $.get('/realControAuthority/findByCurrentUser', function (userAuthor) { | |
| 182 | + lineAll = userAuthor.lineCodeStr.substring(0,userAuthor.lineCodeStr.length-1); | |
| 183 | + }); | |
| 184 | + | |
| 185 | + var tempData = {}; | |
| 186 | + | |
| 187 | + $.get('/user/companyData', function(result){ | |
| 188 | + var obj = result; | |
| 189 | + var options = ''; | |
| 190 | + for(var i = 0; i < obj.length; i++){ | |
| 191 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 192 | + } | |
| 193 | + | |
| 194 | + if(obj.length ==0){ | |
| 195 | + $("#gsdmDiv_daily").css('display','none'); | |
| 196 | + }else if(obj.length ==1){ | |
| 197 | + $("#gsdmDiv_daily").css('display','none'); | |
| 198 | + if(obj[0].children.length == 1 || obj[0].children.length == 0){ | |
| 199 | + fage=false; | |
| 200 | + $('#gsdmDiv_daily').css('display','none'); | |
| 201 | + } | |
| 202 | + } | |
| 203 | + $('#gsdm').html(options); | |
| 204 | + updateCompany(); | |
| 205 | + }); | |
| 206 | + $("#gsdm").on("change",updateCompany); | |
| 207 | + | |
| 208 | + function updateCompany(){ | |
| 209 | + var company = $('#gsdm').val(); | |
| 210 | + $.get('/user/companyData', function(obj) { | |
| 211 | + var option = ''; | |
| 212 | + var allC = ""; | |
| 213 | + for (var i = 0; i < obj.length; i++) { | |
| 214 | + if (obj[i].companyCode == company) { | |
| 215 | + var children = obj[i].children; | |
| 216 | + for (var j = 0; j < children.length; j++) { | |
| 217 | + allC += children[j].code+","; | |
| 218 | + option += '<option value="' + children[j].code + '">' + children[j].name + '</option>'; | |
| 219 | + } | |
| 220 | + } | |
| 221 | + } | |
| 222 | + | |
| 223 | + var options = '<option value="'+allC.substring(0,allC.length-1)+'">所有分公司</option>'+option; | |
| 224 | + $('#fgsdm').html(options); | |
| 225 | + }); | |
| 226 | + } | |
| 227 | + | |
| 228 | + // 项目明细选项列 | |
| 229 | + // 触发默认选项 | |
| 230 | + updateItem(); | |
| 231 | + $("#statisticalItem").on("change",updateItem); | |
| 232 | + function updateItem() { | |
| 233 | + var item = $('#statisticalItem').val(); | |
| 234 | + var options = ''; | |
| 235 | + if(item == "yh"){ | |
| 236 | + options += '<option value="jzlAll">加注量[全部]</option>' + | |
| 237 | + '<option value="jzl0">加注量[0#]</option>'+ | |
| 238 | + '<option value="jzl-10">加注量[-10#]</option>'+ | |
| 239 | + '<option value="yhl">油耗量</option>'+ | |
| 240 | + '<option value="cccy">出场存油</option>'+ | |
| 241 | + '<option value="jccy">进场存油</option>'+ | |
| 242 | + '<option value="bglyh">百公里油耗</option>'; | |
| 243 | + } else if(item == "gl"){ | |
| 244 | + options += '<option value="zgl">总公里</option>' + | |
| 245 | + '<option value="jhgl">计划公里</option>'; | |
| 246 | + /*'<option value="jclm">进场路码</option>'+ | |
| 247 | + '<option value="cclm">出场路码</option>'*/ | |
| 248 | + } else if(item == "bc"){ | |
| 249 | + options += '<option value="sjbc">实际班次</option>' + | |
| 250 | + '<option value="jhbc">计划班次</option>'; | |
| 251 | + } else if(item == "dh"){ | |
| 252 | + options += '<option value="dh">耗电量</option>'; | |
| 253 | + options += '<option value="cdl">充电量</option>'; | |
| 254 | + options += '<option value="cccd">出场存电</option>'; | |
| 255 | + options += '<option value="jccd">进场存电</option>'; | |
| 256 | + options += '<option value="bgldh">百公里电耗</option>'; | |
| 257 | + } | |
| 258 | + $('#itemDetails').html(options); | |
| 259 | + } | |
| 260 | + | |
| 261 | + //线路名称 | |
| 262 | + var lineName = ''; | |
| 263 | + $("#query").on("click",function(){ | |
| 264 | + var gsdm = $("#gsdm").val(); | |
| 265 | + var fgsdm = $("#fgsdm").val(); | |
| 266 | + var startDate = $("#startDate").val(); | |
| 267 | + var endDate = $("#endDate").val(); | |
| 268 | + var statisticalObj = $("#statisticalObj").val(); | |
| 269 | + //开始和结束时间 | |
| 270 | + var startTime = Date.parse(new Date(startDate)); | |
| 271 | + var endTime = Date.parse(new Date(endDate)); | |
| 272 | + | |
| 273 | + datas = {}; // 清空之前数据 | |
| 274 | + datas.gsdm = gsdm; | |
| 275 | + datas.fgsdm = fgsdm; | |
| 276 | + datas.lineCode = lineAll; | |
| 277 | + datas.timeType = "m"; | |
| 278 | + datas.startDate = startDate; | |
| 279 | + datas.endDate = endDate; | |
| 280 | + datas.destroy = $("#destroy").val(); | |
| 281 | + datas.statisticalObj = $("#statisticalObj").val(); | |
| 282 | + datas.itemDetails = $("#itemDetails").val(); | |
| 283 | + var itemDetails = datas.itemDetails, | |
| 284 | + type = "加注量[全部]"; | |
| 285 | + if(itemDetails=="jzl0"){ | |
| 286 | + type = "加注量[0#]" | |
| 287 | + } else if(itemDetails=="jzl-10"){ | |
| 288 | + type = "加注量[-10#]" | |
| 289 | + } else if(itemDetails=="yhl"){ | |
| 290 | + type = "油耗量" | |
| 291 | + } else if(itemDetails=="cccy"){ | |
| 292 | + type = "出场存油" | |
| 293 | + } else if(itemDetails=="jccy"){ | |
| 294 | + type = "进场存油" | |
| 295 | + } else if(itemDetails=="bglyh"){ | |
| 296 | + type = "百公里油耗" | |
| 297 | + } else if(itemDetails=="zgl"){ | |
| 298 | + type = "总公里" | |
| 299 | + } else if(itemDetails=="jhgl"){ | |
| 300 | + type = "计划公里" | |
| 301 | + } else if(itemDetails=="jclm"){ | |
| 302 | + type = "进场路码" | |
| 303 | + } else if(itemDetails=="cclm"){ | |
| 304 | + type = "出场路码" | |
| 305 | + } else if(itemDetails=="sjbc"){ | |
| 306 | + type = "实际班次" | |
| 307 | + } else if(itemDetails=="jhbc"){ | |
| 308 | + type = "计划班次" | |
| 309 | + } else if(itemDetails=="dh"){ | |
| 310 | + type = "耗电量" | |
| 311 | + } else if(itemDetails=="cdl"){ | |
| 312 | + type = "充电量" | |
| 313 | + } else if(itemDetails=="cccd"){ | |
| 314 | + type = "出场存电" | |
| 315 | + } else if(itemDetails=="jccd"){ | |
| 316 | + type = "进场存电" | |
| 317 | + } else if(itemDetails=="bgldh"){ | |
| 318 | + type = "百公里电耗" | |
| 319 | + } | |
| 320 | + datas.name = datas.startDate+"-"+datas.endDate+"-路单线路明细月报表("+type+")"; | |
| 321 | + if(startDate==null || startDate =="" ||endDate==null || endDate ==""){ | |
| 322 | + layer.msg('请选择时间段!'); | |
| 323 | + }else if(endTime<startTime){ | |
| 324 | + layer.msg('结束日期不能小于开始日期!'); | |
| 325 | + }else { | |
| 326 | + if (endDate.substring(0, 7) != startDate.substring(0, 7)) { | |
| 327 | + layer.msg("请查询同月份数据!"); | |
| 328 | + return; | |
| 329 | + } else { | |
| 330 | + var lodingI = layer.load(2); | |
| 331 | + $get('/calcWaybill/calcDetailMonthly', datas, function (rs) { | |
| 332 | + if (rs.length <=0) { | |
| 333 | + layer.close(lodingI); | |
| 334 | + layer.open({ | |
| 335 | + title: '提示' | |
| 336 | + , content: '没有您要查询的数据,请重新选择参数!' | |
| 337 | + }); | |
| 338 | + $("#export").attr('disabled',"true"); | |
| 339 | + return; | |
| 340 | + }else | |
| 341 | + $("#export").removeAttr("disabled"); | |
| 342 | + var htmlHead = "<tr><td colspan='"+rs[0].length+"'>"+datas.name+"</td></tr>", htmlBody = ""; | |
| 343 | + var rsLength = rs.length; | |
| 344 | + rs.forEach(function (o, i) { | |
| 345 | + var html = "<tr>" | |
| 346 | + o.forEach(function (td, j) { | |
| 347 | + var colspan; | |
| 348 | + if (i == rsLength - 1 && j == 0) { | |
| 349 | + colspan = (statisticalObj == "xl" ? "colspan='3'" : "colspan='5'"); | |
| 350 | + if(statisticalObj == "cl") | |
| 351 | + colspan = "colspan='6'"; | |
| 352 | + } | |
| 353 | + html += "<td " + colspan + ">" + td + "</td>" | |
| 354 | + }); | |
| 355 | + html += "</tr>" | |
| 356 | + if (i == 0) { | |
| 357 | + htmlHead += html; | |
| 358 | + } else | |
| 359 | + htmlBody += html; | |
| 360 | + }); | |
| 361 | + $('#forms_head thead').html(htmlHead); | |
| 362 | + $('#forms_body tbody').html(htmlBody); | |
| 363 | + layer.close(lodingI); | |
| 364 | + }); | |
| 365 | + } | |
| 366 | + } | |
| 367 | + }); | |
| 368 | + | |
| 369 | + $("#export").on("click",function(){ | |
| 370 | + $post("/report/calcDetailMonthlyE",datas,function(result){ | |
| 371 | + window.open("/downloadFile/download?fileName="+datas.name); | |
| 372 | + }); | |
| 373 | + }); | |
| 374 | + }); | |
| 375 | +</script> | |
| 376 | +<!--<script type="application/javascript" src="/pages/forms/calc/calcDetailMonthly.js"></script>--> | ... | ... |
src/main/resources/static/pages/forms/calc/calcDetailYear.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 | - text-align: center; } | |
| 12 | - .table-bordered > thead > tr > th, | |
| 13 | - .table-bordered > thead > tr > td { | |
| 14 | - border-bottom-width: 2px; } | |
| 15 | - | |
| 16 | - .table > tbody + tbody { | |
| 17 | - border-top: 1px solid; } | |
| 18 | - | |
| 19 | - | |
| 20 | - #analy_body tr> td >span{ | |
| 21 | - word-break: keep-all;white-space:nowrap; | |
| 22 | - } | |
| 23 | - | |
| 24 | - #analy_body td{ | |
| 25 | - min-width: 100px; | |
| 26 | - max-width: 100px; | |
| 27 | - width: 100px; | |
| 28 | - } | |
| 29 | - | |
| 30 | - #analy_body{ | |
| 31 | - margin-top: 20px; | |
| 32 | - height: 620px; | |
| 33 | - width: 100% | |
| 34 | - } | |
| 35 | - | |
| 36 | - | |
| 37 | - .table_head::-webkit-scrollbar { | |
| 38 | - display:none | |
| 39 | - } | |
| 40 | - | |
| 41 | - .table_head{ | |
| 42 | - min-width: 906px; | |
| 43 | - width: 100%; | |
| 44 | - overflow: hidden; | |
| 45 | - } | |
| 46 | - | |
| 47 | - .table_body{ | |
| 48 | - width:101%; | |
| 49 | - height:580px; | |
| 50 | - overflow: auto; | |
| 51 | - margin-top: -20px; | |
| 52 | - } | |
| 53 | -</style> | |
| 54 | -<div class="page-head"> | |
| 55 | - <div class="page-title"> | |
| 56 | - <h1>路单线路明细年报表</h1> | |
| 57 | - </div> | |
| 58 | -</div> | |
| 59 | - | |
| 60 | -<!--<div class="row">--> | |
| 61 | -<div class=" row col-md-12 portlet light bordered" style="height:calc(100% - 38px)"> | |
| 62 | - <div class=""> | |
| 63 | - <form class="form-inline" > | |
| 64 | - <!--<div style="display: inline-block; margin-left: 33px;" id="gsdmDiv_daily"> | |
| 65 | - <span class="item-label" style="width: 80px;">  公司: </span> | |
| 66 | - <select class="form-control" name="company" id="gsdm" style="width: 180px;"></select> | |
| 67 | - </div>--> | |
| 68 | - <div style="display: inline-block; margin-left: 33px;" id="fgsdmDiv_daily"> | |
| 69 | - <span class="item-label" style="width: 80px;"> 分公司: </span> | |
| 70 | - <select class="form-control" name="fgsdm" id="fgsdm" style="width: 180px;"></select> | |
| 71 | - </div> | |
| 72 | - <!--<div style="display: inline-block;margin-left: 33px;"> | |
| 73 | - <span class="item-label" style="width: 80px;">  线路: </span> | |
| 74 | - <select class="form-control" name="line" id="line" style="width: 180px;"></select> | |
| 75 | - </div>--> | |
| 76 | - <div style="display: inline-block; margin-left: 33px;"> | |
| 77 | - <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 78 | - <select class="form-control" name="destroy" id="destroy" style="width: 180px;"> | |
| 79 | - <option value="0,1">全部线路</option> | |
| 80 | - <option value="0">营运线路</option> | |
| 81 | - <option value="1">非营运线路</option> | |
| 82 | - </select> | |
| 83 | - </div> | |
| 84 | - <div style="display: inline-block;margin-left: 33px;" class="date-picker"> | |
| 85 | - <span class="item-label" style="width: 80px;">  时间: </span> | |
| 86 | - <input class="form-control" type="text" id="startDate" style="width: 180px;" /> - | |
| 87 | - <input class="form-control" type="text" id="endDate" style="width: 180px;" /> | |
| 88 | - <!--<input class="form-control" type="text" id="startDate" style="width: 180px;" value="2020-10"/> - --> | |
| 89 | - <!--<input class="form-control" type="text" id="endDate" style="width: 180px;" value="2020-10"/>--> | |
| 90 | - </div> | |
| 91 | - | |
| 92 | - <div style="margin-top: 2px"></div> | |
| 93 | - | |
| 94 | - <div style="display: inline-block;margin-left: 33px;"> | |
| 95 | - <span class="item-label" style="width: 80px;">统计对象: </span> | |
| 96 | - <select class="form-control" name="statisticalObj" id="statisticalObj" style="width: 180px;"> | |
| 97 | - <option value="cl">车辆</option> | |
| 98 | - <option value="jsy">驾驶员</option> | |
| 99 | - <option value="cwy">乘务员</option> | |
| 100 | - <option value="xl">线路</option> | |
| 101 | - </select> | |
| 102 | - </div> | |
| 103 | - | |
| 104 | - <div style="display: inline-block; margin-left: 33px;" > | |
| 105 | - <span class="item-label" style="width: 80px;">统计项目: </span> | |
| 106 | - <select class="form-control" name="statisticalItem" id="statisticalItem" style="width: 180px;"> | |
| 107 | - <option value="yh">油耗</option> | |
| 108 | - <option value="dh">电耗</option> | |
| 109 | - <option value="gl">公里</option> | |
| 110 | - <option value="bc">班次</option> | |
| 111 | - </select> | |
| 112 | - </div> | |
| 113 | - <div style="display: inline-block; margin-left: 33px;" > | |
| 114 | - <span class="item-label" style="width: 80px;">项目明细: </span> | |
| 115 | - <select class="form-control" name="itemDetails" id="itemDetails" style="width: 180px;"></select> | |
| 116 | - </div> | |
| 117 | - <div class="form-group" style="display: inline-block;margin-left: 62px;"> | |
| 118 | - <input class="btn btn-default" type="button" id="query" value="筛选"/> | |
| 119 | - <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 120 | - </div> | |
| 121 | - </form> | |
| 122 | - </div> | |
| 123 | - | |
| 124 | - <div id="analy_body"> | |
| 125 | - <div class="table_head" id="table_head"> | |
| 126 | - <table class="table table-bordered table-hover table-checkable " id="forms_head"> | |
| 127 | - <thead> | |
| 128 | - </thead> | |
| 129 | - </table> | |
| 130 | - </div> | |
| 131 | - <div class="table_body" id="table_body"> | |
| 132 | - <table class="table table-bordered table-hover table-checkable" id="forms_body"> | |
| 133 | - <tbody> | |
| 134 | - </tbody> | |
| 135 | - </table> | |
| 136 | - </div> | |
| 137 | - </div> | |
| 138 | -</div> | |
| 139 | -<script > | |
| 140 | - $(function(){ | |
| 141 | - $('#export').attr('disabled', "true"); | |
| 142 | - // 关闭左侧栏 | |
| 143 | - if (!$('body').hasClass('page-sidebar-closed')) | |
| 144 | - $('.menu-toggler.sidebar-toggler').click(); | |
| 145 | - | |
| 146 | - var table_body1 = document.getElementById("table_body"); | |
| 147 | - table_body1.onscroll = function(){ | |
| 148 | - var table_body1_left = this.scrollLeft; | |
| 149 | - document.getElementById("table_head").scrollLeft = table_body1_left; | |
| 150 | - }; | |
| 151 | - | |
| 152 | - var d = new Date(); | |
| 153 | - var year = d.getFullYear(); | |
| 154 | - var month = d.getMonth() + 1; | |
| 155 | - if(month < 10) | |
| 156 | - month = "0" + month; | |
| 157 | - //时间 | |
| 158 | - var dateTime=year + "-" + month; | |
| 159 | - $("#startDate").val(dateTime); | |
| 160 | - $("#endDate").val(dateTime); | |
| 161 | - | |
| 162 | - $("#endDate").datetimepicker({ | |
| 163 | - format : 'YYYY-MM', | |
| 164 | - locale : 'zh-cn', | |
| 165 | - maxDate : dateTime | |
| 166 | - }); | |
| 167 | - $("#startDate").datetimepicker({ | |
| 168 | - format : 'YYYY-MM', | |
| 169 | - locale : 'zh-cn', | |
| 170 | - maxDate : dateTime | |
| 171 | - }); | |
| 172 | - | |
| 173 | - | |
| 174 | - var lineAll="",lineNoD="",lineD=""; | |
| 175 | - var datas = {}; //查询条件 | |
| 176 | - | |
| 177 | - | |
| 178 | - /**用户分配的线路*/ | |
| 179 | - $.get('/realControAuthority/findByCurrentUser', function (userAuthor) { | |
| 180 | - lineAll = userAuthor.lineCodeStr.substring(0,userAuthor.lineCodeStr.length-1); | |
| 181 | - /* $.get('/line/all', function (lines) { | |
| 182 | - $.each(lines,function () { | |
| 183 | - | |
| 184 | - }); | |
| 185 | - | |
| 186 | - });*/ | |
| 187 | - }); | |
| 188 | - | |
| 189 | - var tempData = {}; | |
| 190 | - | |
| 191 | - $.get('/user/companyData', function(obj) { | |
| 192 | - var option = ''; | |
| 193 | - var allC = ""; | |
| 194 | - for (var i = 0; i < obj.length; i++) { | |
| 195 | - if (obj[i].companyCode == "26") { | |
| 196 | - var children = obj[i].children; | |
| 197 | - for (var j = 0; j < children.length; j++) { | |
| 198 | - allC += children[j].code+","; | |
| 199 | - option += '<option value="' + children[j].code + '">' + children[j].name + '</option>'; | |
| 200 | - } | |
| 201 | - } | |
| 202 | - } | |
| 203 | - | |
| 204 | - var options = '<option value="'+allC.substring(0,allC.length-1)+'">所有分公司</option>'+option; | |
| 205 | - $('#fgsdm').html(options); | |
| 206 | - }); | |
| 207 | - | |
| 208 | - // 项目明细选项列 | |
| 209 | - // 触发默认选项 | |
| 210 | - updateItem(); | |
| 211 | - $("#statisticalItem").on("change",updateItem); | |
| 212 | - var item =""; | |
| 213 | - function updateItem() { | |
| 214 | - item = $('#statisticalItem').val(); | |
| 215 | - var options = ''; | |
| 216 | - if(item == "yh"){ | |
| 217 | - options += '<option value="jzlAll">加注量[全部]</option>' + | |
| 218 | - '<option value="jzl0">加注量[0#]</option>'+ | |
| 219 | - '<option value="jzl-10">加注量[-10#]</option>'+ | |
| 220 | - '<option value="yhl">油耗量</option>'+ | |
| 221 | - '<option value="cccy">出场存油</option>'+ | |
| 222 | - '<option value="jccy">进场存油</option>'+ | |
| 223 | - '<option value="bglyh">百公里油耗</option>'; | |
| 224 | - } else if(item == "gl"){ | |
| 225 | - options += '<option value="zgl">总公里</option>' + | |
| 226 | - '<option value="jhgl">计划公里</option>'; | |
| 227 | - /*'<option value="jclm">进场路码</option>'+ | |
| 228 | - '<option value="cclm">出场路码</option>'*/ | |
| 229 | - } else if(item == "bc"){ | |
| 230 | - options += '<option value="sjbc">实际班次</option>' + | |
| 231 | - '<option value="jhbc">计划班次</option>'; | |
| 232 | - } else if(item == "dh"){ | |
| 233 | - options += '<option value="dh">耗电量</option>'; | |
| 234 | - options += '<option value="cdl">充电量</option>'; | |
| 235 | - options += '<option value="cccd">出场存电</option>'; | |
| 236 | - options += '<option value="jccd">进场存电</option>'; | |
| 237 | - options += '<option value="bgldh">百公里电耗</option>'; | |
| 238 | - } | |
| 239 | - $('#itemDetails').html(options); | |
| 240 | - } | |
| 241 | - | |
| 242 | - //线路名称 | |
| 243 | - var lineName = ''; | |
| 244 | - $("#query").on("click",function(){ | |
| 245 | - var gsdm = "26"; | |
| 246 | - var fgsdm = $("#fgsdm").val(); | |
| 247 | - var startDate = $("#startDate").val(); | |
| 248 | - var endDate = $("#endDate").val(); | |
| 249 | - var statisticalObj = $("#statisticalObj").val(); | |
| 250 | - //开始和结束时间 | |
| 251 | - var startTime = Date.parse(new Date(startDate)); | |
| 252 | - var endTime = Date.parse(new Date(endDate)); | |
| 253 | - | |
| 254 | - datas = {}; // 清空之前数据 | |
| 255 | - datas.timeType = "y"; | |
| 256 | - datas.gsdm = gsdm; | |
| 257 | - datas.fgsdm = fgsdm; | |
| 258 | - datas.lineCode = lineAll; | |
| 259 | - datas.startDate = startDate; | |
| 260 | - datas.endDate = endDate; | |
| 261 | - datas.destroy = $("#destroy").val(); | |
| 262 | - datas.statisticalObj = $("#statisticalObj").val(); | |
| 263 | - datas.itemDetails = $("#itemDetails").val(); | |
| 264 | - datas.item = item; | |
| 265 | - | |
| 266 | - var itemDetails = datas.itemDetails, | |
| 267 | - type = "加注量[全部]"; | |
| 268 | - if(itemDetails=="jzl0"){ | |
| 269 | - type = "加注量[0#]" | |
| 270 | - } else if(itemDetails=="jzl-10"){ | |
| 271 | - type = "加注量[-10#]" | |
| 272 | - } else if(itemDetails=="yhl"){ | |
| 273 | - type = "油耗量" | |
| 274 | - } else if(itemDetails=="cccy"){ | |
| 275 | - type = "出场存油" | |
| 276 | - } else if(itemDetails=="jccy"){ | |
| 277 | - type = "进场存油" | |
| 278 | - } else if(itemDetails=="bglyh"){ | |
| 279 | - type = "百公里油耗" | |
| 280 | - } else if(itemDetails=="zgl"){ | |
| 281 | - type = "总公里" | |
| 282 | - } else if(itemDetails=="jhgl"){ | |
| 283 | - type = "计划公里" | |
| 284 | - } else if(itemDetails=="jclm"){ | |
| 285 | - type = "进场路码" | |
| 286 | - } else if(itemDetails=="cclm"){ | |
| 287 | - type = "出场路码" | |
| 288 | - } else if(itemDetails=="sjbc"){ | |
| 289 | - type = "实际班次" | |
| 290 | - } else if(itemDetails=="jhbc"){ | |
| 291 | - type = "计划班次" | |
| 292 | - } else if(itemDetails=="dh"){ | |
| 293 | - type = "耗电量" | |
| 294 | - } else if(itemDetails=="cdl"){ | |
| 295 | - type = "充电量" | |
| 296 | - } else if(itemDetails=="cccd"){ | |
| 297 | - type = "出场存电" | |
| 298 | - } else if(itemDetails=="jccd"){ | |
| 299 | - type = "进场存电" | |
| 300 | - } else if(itemDetails=="bgldh"){ | |
| 301 | - type = "百公里电耗" | |
| 302 | - } | |
| 303 | - datas.name = datas.startDate+"-"+datas.endDate+"-路单线路明细年报表("+type+")"; | |
| 304 | - if(startDate==null || startDate =="" ||endDate==null || endDate ==""){ | |
| 305 | - layer.msg('请选择时间段!'); | |
| 306 | - }else if(endTime<startTime){ | |
| 307 | - layer.msg('结束日期不能小于开始日期!'); | |
| 308 | - }else { | |
| 309 | - if (endDate.substring(0, 4) != startDate.substring(0, 4)) { | |
| 310 | - layer.msg("请查询同年份数据!"); | |
| 311 | - return; | |
| 312 | - } else { | |
| 313 | - var lodingI = layer.load(2); | |
| 314 | - $get('/calcWaybill/calcDetailMonthly', datas, function (rs) { | |
| 315 | - if (rs.length <=0) { | |
| 316 | - layer.close(lodingI); | |
| 317 | - layer.open({ | |
| 318 | - title: '提示' | |
| 319 | - , content: '没有您要查询的数据,请重新选择参数!' | |
| 320 | - }); | |
| 321 | - $("#export").attr('disabled',"true"); | |
| 322 | - return; | |
| 323 | - }else | |
| 324 | - $("#export").removeAttr("disabled"); | |
| 325 | - var htmlHead = "<tr><td colspan='"+rs[0].length+"'>"+datas.name+"</td></tr>", htmlBody = ""; | |
| 326 | - var rsLength = rs.length; | |
| 327 | - rs.forEach(function (o, i) { | |
| 328 | - var html = "<tr>" | |
| 329 | - o.forEach(function (td, j) { | |
| 330 | - var colspan; | |
| 331 | - if (i == rsLength - 1 && j == 0) { | |
| 332 | - colspan = (statisticalObj == "xl" ? "colspan='3'" : "colspan='5'"); | |
| 333 | - if(statisticalObj == "cl") | |
| 334 | - colspan = "colspan='6'"; | |
| 335 | - } | |
| 336 | - html += "<td " + colspan + ">" + td + "</td>" | |
| 337 | - }); | |
| 338 | - html += "</tr>" | |
| 339 | - if (i == 0) { | |
| 340 | - htmlHead += html; | |
| 341 | - } else | |
| 342 | - htmlBody += html; | |
| 343 | - }); | |
| 344 | - $('#forms_head thead').html(htmlHead); | |
| 345 | - $('#forms_body tbody').html(htmlBody); | |
| 346 | - layer.close(lodingI); | |
| 347 | - }); | |
| 348 | - } | |
| 349 | - } | |
| 350 | - }); | |
| 351 | - | |
| 352 | - $("#export").on("click",function(){ | |
| 353 | - $post("/report/calcDetailMonthlyE",datas,function(result){ | |
| 354 | - window.open("/downloadFile/download?fileName="+datas.name); | |
| 355 | - }); | |
| 356 | - }); | |
| 357 | - }); | |
| 358 | -</script> | |
| 359 | -<!--<script type="application/javascript" src="/pages/forms/calc/calcDetailMonthly.js"></script>--> | |
| 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 | + text-align: center; } | |
| 12 | + .table-bordered > thead > tr > th, | |
| 13 | + .table-bordered > thead > tr > td { | |
| 14 | + border-bottom-width: 2px; } | |
| 15 | + | |
| 16 | + .table > tbody + tbody { | |
| 17 | + border-top: 1px solid; } | |
| 18 | + | |
| 19 | + | |
| 20 | + #analy_body tr> td >span{ | |
| 21 | + word-break: keep-all;white-space:nowrap; | |
| 22 | + } | |
| 23 | + | |
| 24 | + #analy_body td{ | |
| 25 | + min-width: 100px; | |
| 26 | + max-width: 100px; | |
| 27 | + width: 100px; | |
| 28 | + } | |
| 29 | + | |
| 30 | + #analy_body{ | |
| 31 | + margin-top: 20px; | |
| 32 | + height: 620px; | |
| 33 | + width: 100% | |
| 34 | + } | |
| 35 | + | |
| 36 | + | |
| 37 | + .table_head::-webkit-scrollbar { | |
| 38 | + display:none | |
| 39 | + } | |
| 40 | + | |
| 41 | + .table_head{ | |
| 42 | + min-width: 906px; | |
| 43 | + width: 100%; | |
| 44 | + overflow: hidden; | |
| 45 | + } | |
| 46 | + | |
| 47 | + .table_body{ | |
| 48 | + width:101%; | |
| 49 | + height:580px; | |
| 50 | + overflow: auto; | |
| 51 | + margin-top: -20px; | |
| 52 | + } | |
| 53 | +</style> | |
| 54 | +<div class="page-head"> | |
| 55 | + <div class="page-title"> | |
| 56 | + <h1>路单线路明细年报表</h1> | |
| 57 | + </div> | |
| 58 | +</div> | |
| 59 | + | |
| 60 | +<!--<div class="row">--> | |
| 61 | +<div class=" row col-md-12 portlet light bordered" style="height:calc(100% - 38px)"> | |
| 62 | + <div class=""> | |
| 63 | + <form class="form-inline" > | |
| 64 | + <div style="display: inline-block; margin-left: 13px;" id="gsdmDiv_daily"> | |
| 65 | + <span class="item-label" style="width: 80px;">  公司: </span> | |
| 66 | + <select class="form-control" name="company" id="gsdm" style="width: 150px;"></select> | |
| 67 | + </div> | |
| 68 | + <div style="display: inline-block; margin-left: 13px;" id="fgsdmDiv_daily"> | |
| 69 | + <span class="item-label" style="width: 80px;"> 分公司: </span> | |
| 70 | + <select class="form-control" name="fgsdm" id="fgsdm" style="width: 150px;"></select> | |
| 71 | + </div> | |
| 72 | + <!--<div style="display: inline-block;margin-left: 33px;"> | |
| 73 | + <span class="item-label" style="width: 80px;">  线路: </span> | |
| 74 | + <select class="form-control" name="line" id="line" style="width: 180px;"></select> | |
| 75 | + </div>--> | |
| 76 | + <div style="display: inline-block;margin-left: 13px;" class="date-picker"> | |
| 77 | + <span class="item-label" style="width: 80px;">  时间: </span> | |
| 78 | + <input class="form-control" type="text" id="startDate" style="width: 150px;" /> - | |
| 79 | + <input class="form-control" type="text" id="endDate" style="width: 150px;" /> | |
| 80 | + <!--<input class="form-control" type="text" id="startDate" style="width: 180px;" value="2020-10-01"/> - --> | |
| 81 | + <!--<input class="form-control" type="text" id="endDate" style="width: 180px;" value="2020-10-10"/>--> | |
| 82 | + </div> | |
| 83 | + | |
| 84 | + <div style="margin-top: 2px"></div> | |
| 85 | + | |
| 86 | + <div style="display: inline-block; margin-left: 13px;"> | |
| 87 | + <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 88 | + <select class="form-control" name="destroy" id="destroy" style="width: 150px;"> | |
| 89 | + <option value="0,1">全部线路</option> | |
| 90 | + <option value="0">营运线路</option> | |
| 91 | + <option value="1">非营运线路</option> | |
| 92 | + </select> | |
| 93 | + </div> | |
| 94 | + <div style="display: inline-block;margin-left: 13px;"> | |
| 95 | + <span class="item-label" style="width: 80px;">统计对象: </span> | |
| 96 | + <select class="form-control" name="statisticalObj" id="statisticalObj" style="width: 150px;"> | |
| 97 | + <option value="cl">车辆</option> | |
| 98 | + <option value="jsy">驾驶员</option> | |
| 99 | + <option value="cwy">乘务员</option> | |
| 100 | + <option value="xl">线路</option> | |
| 101 | + </select> | |
| 102 | + </div> | |
| 103 | + | |
| 104 | + <div style="display: inline-block; margin-left: 13px;" > | |
| 105 | + <span class="item-label" style="width: 80px;">统计项目: </span> | |
| 106 | + <select class="form-control" name="statisticalItem" id="statisticalItem" style="width: 150px;"> | |
| 107 | + <option value="yh">油耗</option> | |
| 108 | + <option value="dh">电耗</option> | |
| 109 | + <option value="gl">公里</option> | |
| 110 | + <option value="bc">班次</option> | |
| 111 | + </select> | |
| 112 | + </div> | |
| 113 | + <div style="display: inline-block; margin-left: 13px;" > | |
| 114 | + <span class="item-label" style="width: 80px;">项目明细: </span> | |
| 115 | + <select class="form-control" name="itemDetails" id="itemDetails" style="width: 150px;"></select> | |
| 116 | + </div> | |
| 117 | + <div class="form-group" style="display: inline-block;margin-left: 22px;"> | |
| 118 | + <input class="btn btn-default" type="button" id="query" value="筛选"/> | |
| 119 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 120 | + </div> | |
| 121 | + </form> | |
| 122 | + </div> | |
| 123 | + | |
| 124 | + <div id="analy_body"> | |
| 125 | + <div class="table_head" id="table_head"> | |
| 126 | + <table class="table table-bordered table-hover table-checkable " id="forms_head"> | |
| 127 | + <thead> | |
| 128 | + </thead> | |
| 129 | + </table> | |
| 130 | + </div> | |
| 131 | + <div class="table_body" id="table_body"> | |
| 132 | + <table class="table table-bordered table-hover table-checkable" id="forms_body" style="background-color: white;"> | |
| 133 | + <tbody> | |
| 134 | + </tbody> | |
| 135 | + </table> | |
| 136 | + </div> | |
| 137 | + </div> | |
| 138 | +</div> | |
| 139 | +<script > | |
| 140 | + $(function(){ | |
| 141 | + $('#export').attr('disabled', "true"); | |
| 142 | + // 关闭左侧栏 | |
| 143 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 144 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 145 | + | |
| 146 | + var table_body1 = document.getElementById("table_body"); | |
| 147 | + table_body1.onscroll = function(){ | |
| 148 | + var table_body1_left = this.scrollLeft; | |
| 149 | + document.getElementById("table_head").scrollLeft = table_body1_left; | |
| 150 | + }; | |
| 151 | + | |
| 152 | + var d = new Date(); | |
| 153 | + var year = d.getFullYear(); | |
| 154 | + var month = d.getMonth() + 1; | |
| 155 | + if(month < 10) | |
| 156 | + month = "0" + month; | |
| 157 | + //时间 | |
| 158 | + var dateTime=year + "-" + month; | |
| 159 | + $("#startDate").val(dateTime); | |
| 160 | + $("#endDate").val(dateTime); | |
| 161 | + | |
| 162 | + $("#endDate").datetimepicker({ | |
| 163 | + format : 'YYYY-MM', | |
| 164 | + locale : 'zh-cn', | |
| 165 | + maxDate : dateTime | |
| 166 | + }); | |
| 167 | + $("#startDate").datetimepicker({ | |
| 168 | + format : 'YYYY-MM', | |
| 169 | + locale : 'zh-cn', | |
| 170 | + maxDate : dateTime | |
| 171 | + }); | |
| 172 | + | |
| 173 | + | |
| 174 | + var lineAll="",lineNoD="",lineD=""; | |
| 175 | + var datas = {}; //查询条件 | |
| 176 | + | |
| 177 | + | |
| 178 | + /**用户分配的线路*/ | |
| 179 | + $.get('/realControAuthority/findByCurrentUser', function (userAuthor) { | |
| 180 | + lineAll = userAuthor.lineCodeStr.substring(0,userAuthor.lineCodeStr.length-1); | |
| 181 | + /* $.get('/line/all', function (lines) { | |
| 182 | + $.each(lines,function () { | |
| 183 | + | |
| 184 | + }); | |
| 185 | + | |
| 186 | + });*/ | |
| 187 | + }); | |
| 188 | + | |
| 189 | + var tempData = {}; | |
| 190 | + | |
| 191 | + $.get('/user/companyData', function(result){ | |
| 192 | + var obj = result; | |
| 193 | + var options = ''; | |
| 194 | + for(var i = 0; i < obj.length; i++){ | |
| 195 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 196 | + } | |
| 197 | + | |
| 198 | + if(obj.length ==0){ | |
| 199 | + $("#gsdmDiv_daily").css('display','none'); | |
| 200 | + }else if(obj.length ==1){ | |
| 201 | + $("#gsdmDiv_daily").css('display','none'); | |
| 202 | + if(obj[0].children.length == 1 || obj[0].children.length == 0){ | |
| 203 | + fage=false; | |
| 204 | + $('#gsdmDiv_daily').css('display','none'); | |
| 205 | + } | |
| 206 | + } | |
| 207 | + $('#gsdm').html(options); | |
| 208 | + updateCompany(); | |
| 209 | + }); | |
| 210 | + $("#gsdm").on("change",updateCompany); | |
| 211 | + | |
| 212 | + function updateCompany(){ | |
| 213 | + var company = $('#gsdm').val(); | |
| 214 | + $.get('/user/companyData', function(obj) { | |
| 215 | + var option = ''; | |
| 216 | + var allC = ""; | |
| 217 | + for (var i = 0; i < obj.length; i++) { | |
| 218 | + if (obj[i].companyCode == company) { | |
| 219 | + var children = obj[i].children; | |
| 220 | + for (var j = 0; j < children.length; j++) { | |
| 221 | + allC += children[j].code+","; | |
| 222 | + option += '<option value="' + children[j].code + '">' + children[j].name + '</option>'; | |
| 223 | + } | |
| 224 | + } | |
| 225 | + } | |
| 226 | + | |
| 227 | + var options = '<option value="'+allC.substring(0,allC.length-1)+'">所有分公司</option>'+option; | |
| 228 | + $('#fgsdm').html(options); | |
| 229 | + }); | |
| 230 | + } | |
| 231 | + | |
| 232 | + // 项目明细选项列 | |
| 233 | + // 触发默认选项 | |
| 234 | + updateItem(); | |
| 235 | + $("#statisticalItem").on("change",updateItem); | |
| 236 | + var item =""; | |
| 237 | + function updateItem() { | |
| 238 | + item = $('#statisticalItem').val(); | |
| 239 | + var options = ''; | |
| 240 | + if(item == "yh"){ | |
| 241 | + options += '<option value="jzlAll">加注量[全部]</option>' + | |
| 242 | + '<option value="jzl0">加注量[0#]</option>'+ | |
| 243 | + '<option value="jzl-10">加注量[-10#]</option>'+ | |
| 244 | + '<option value="yhl">油耗量</option>'+ | |
| 245 | + '<option value="cccy">出场存油</option>'+ | |
| 246 | + '<option value="jccy">进场存油</option>'+ | |
| 247 | + '<option value="bglyh">百公里油耗</option>'; | |
| 248 | + } else if(item == "gl"){ | |
| 249 | + options += '<option value="zgl">总公里</option>' + | |
| 250 | + '<option value="jhgl">计划公里</option>'; | |
| 251 | + /*'<option value="jclm">进场路码</option>'+ | |
| 252 | + '<option value="cclm">出场路码</option>'*/ | |
| 253 | + } else if(item == "bc"){ | |
| 254 | + options += '<option value="sjbc">实际班次</option>' + | |
| 255 | + '<option value="jhbc">计划班次</option>'; | |
| 256 | + } else if(item == "dh"){ | |
| 257 | + options += '<option value="dh">耗电量</option>'; | |
| 258 | + options += '<option value="cdl">充电量</option>'; | |
| 259 | + options += '<option value="cccd">出场存电</option>'; | |
| 260 | + options += '<option value="jccd">进场存电</option>'; | |
| 261 | + options += '<option value="bgldh">百公里电耗</option>'; | |
| 262 | + } | |
| 263 | + $('#itemDetails').html(options); | |
| 264 | + } | |
| 265 | + | |
| 266 | + //线路名称 | |
| 267 | + var lineName = ''; | |
| 268 | + $("#query").on("click",function(){ | |
| 269 | + var gsdm = $("#gsdm").val(); | |
| 270 | + var fgsdm = $("#fgsdm").val(); | |
| 271 | + var startDate = $("#startDate").val(); | |
| 272 | + var endDate = $("#endDate").val(); | |
| 273 | + var statisticalObj = $("#statisticalObj").val(); | |
| 274 | + //开始和结束时间 | |
| 275 | + var startTime = Date.parse(new Date(startDate)); | |
| 276 | + var endTime = Date.parse(new Date(endDate)); | |
| 277 | + | |
| 278 | + datas = {}; // 清空之前数据 | |
| 279 | + datas.timeType = "y"; | |
| 280 | + datas.gsdm = gsdm; | |
| 281 | + datas.fgsdm = fgsdm; | |
| 282 | + datas.lineCode = lineAll; | |
| 283 | + datas.startDate = startDate; | |
| 284 | + datas.endDate = endDate; | |
| 285 | + datas.destroy = $("#destroy").val(); | |
| 286 | + datas.statisticalObj = $("#statisticalObj").val(); | |
| 287 | + datas.itemDetails = $("#itemDetails").val(); | |
| 288 | + datas.item = item; | |
| 289 | + | |
| 290 | + var itemDetails = datas.itemDetails, | |
| 291 | + type = "加注量[全部]"; | |
| 292 | + if(itemDetails=="jzl0"){ | |
| 293 | + type = "加注量[0#]" | |
| 294 | + } else if(itemDetails=="jzl-10"){ | |
| 295 | + type = "加注量[-10#]" | |
| 296 | + } else if(itemDetails=="yhl"){ | |
| 297 | + type = "油耗量" | |
| 298 | + } else if(itemDetails=="cccy"){ | |
| 299 | + type = "出场存油" | |
| 300 | + } else if(itemDetails=="jccy"){ | |
| 301 | + type = "进场存油" | |
| 302 | + } else if(itemDetails=="bglyh"){ | |
| 303 | + type = "百公里油耗" | |
| 304 | + } else if(itemDetails=="zgl"){ | |
| 305 | + type = "总公里" | |
| 306 | + } else if(itemDetails=="jhgl"){ | |
| 307 | + type = "计划公里" | |
| 308 | + } else if(itemDetails=="jclm"){ | |
| 309 | + type = "进场路码" | |
| 310 | + } else if(itemDetails=="cclm"){ | |
| 311 | + type = "出场路码" | |
| 312 | + } else if(itemDetails=="sjbc"){ | |
| 313 | + type = "实际班次" | |
| 314 | + } else if(itemDetails=="jhbc"){ | |
| 315 | + type = "计划班次" | |
| 316 | + } else if(itemDetails=="dh"){ | |
| 317 | + type = "耗电量" | |
| 318 | + } else if(itemDetails=="cdl"){ | |
| 319 | + type = "充电量" | |
| 320 | + } else if(itemDetails=="cccd"){ | |
| 321 | + type = "出场存电" | |
| 322 | + } else if(itemDetails=="jccd"){ | |
| 323 | + type = "进场存电" | |
| 324 | + } else if(itemDetails=="bgldh"){ | |
| 325 | + type = "百公里电耗" | |
| 326 | + } | |
| 327 | + datas.name = datas.startDate+"-"+datas.endDate+"-路单线路明细年报表("+type+")"; | |
| 328 | + if(startDate==null || startDate =="" ||endDate==null || endDate ==""){ | |
| 329 | + layer.msg('请选择时间段!'); | |
| 330 | + }else if(endTime<startTime){ | |
| 331 | + layer.msg('结束日期不能小于开始日期!'); | |
| 332 | + }else { | |
| 333 | + if (endDate.substring(0, 4) != startDate.substring(0, 4)) { | |
| 334 | + layer.msg("请查询同年份数据!"); | |
| 335 | + return; | |
| 336 | + } else { | |
| 337 | + var lodingI = layer.load(2); | |
| 338 | + $get('/calcWaybill/calcDetailMonthly', datas, function (rs) { | |
| 339 | + if (rs.length <=0) { | |
| 340 | + layer.close(lodingI); | |
| 341 | + layer.open({ | |
| 342 | + title: '提示' | |
| 343 | + , content: '没有您要查询的数据,请重新选择参数!' | |
| 344 | + }); | |
| 345 | + $("#export").attr('disabled',"true"); | |
| 346 | + return; | |
| 347 | + }else | |
| 348 | + $("#export").removeAttr("disabled"); | |
| 349 | + var htmlHead = "<tr><td colspan='"+rs[0].length+"'>"+datas.name+"</td></tr>", htmlBody = ""; | |
| 350 | + var rsLength = rs.length; | |
| 351 | + rs.forEach(function (o, i) { | |
| 352 | + var html = "<tr>" | |
| 353 | + o.forEach(function (td, j) { | |
| 354 | + var colspan; | |
| 355 | + if (i == rsLength - 1 && j == 0) { | |
| 356 | + colspan = (statisticalObj == "xl" ? "colspan='3'" : "colspan='5'"); | |
| 357 | + if(statisticalObj == "cl") | |
| 358 | + colspan = "colspan='6'"; | |
| 359 | + } | |
| 360 | + html += "<td " + colspan + ">" + td + "</td>" | |
| 361 | + }); | |
| 362 | + html += "</tr>" | |
| 363 | + if (i == 0) { | |
| 364 | + htmlHead += html; | |
| 365 | + } else | |
| 366 | + htmlBody += html; | |
| 367 | + }); | |
| 368 | + $('#forms_head thead').html(htmlHead); | |
| 369 | + $('#forms_body tbody').html(htmlBody); | |
| 370 | + layer.close(lodingI); | |
| 371 | + }); | |
| 372 | + } | |
| 373 | + } | |
| 374 | + }); | |
| 375 | + | |
| 376 | + $("#export").on("click",function(){ | |
| 377 | + $post("/report/calcDetailMonthlyE",datas,function(result){ | |
| 378 | + window.open("/downloadFile/download?fileName="+datas.name); | |
| 379 | + }); | |
| 380 | + }); | |
| 381 | + }); | |
| 382 | +</script> | |
| 383 | +<!--<script type="application/javascript" src="/pages/forms/calc/calcDetailMonthly.js"></script>--> | ... | ... |
src/main/resources/static/pages/forms/mould/countMileageSum.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/mould/dispatchDailySum.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/mould/statisticsDaily_4.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/statement/dispatchDailySum.html
0 → 100644
| 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 | + | |
| 18 | + #forms > thead > tr> td >span{ | |
| 19 | + width: 5px; | |
| 20 | + word-wrap: break-word; | |
| 21 | + letter-spacing: 20px; | |
| 22 | + } | |
| 23 | + | |
| 24 | + #forms > thead > tr> td >label{ | |
| 25 | + word-break: keep-all;white-space:nowrap; | |
| 26 | + } | |
| 27 | +</style> | |
| 28 | + | |
| 29 | +<div class="page-head"> | |
| 30 | + <div class="page-title"> | |
| 31 | + <h1>调度日报汇总表</h1> | |
| 32 | + </div> | |
| 33 | +</div> | |
| 34 | + | |
| 35 | +<!-- <div class="row"> --> | |
| 36 | + <div class="col-md-12 portlet light porttlet-fit bordered" style="height:calc(100% - 56px)"> | |
| 37 | +<!-- <div> --> | |
| 38 | + <div class="portlet-title"> | |
| 39 | + <form class="form-inline" action=""> | |
| 40 | + <div style="display: inline-block;"> | |
| 41 | + <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 42 | + <select | |
| 43 | + class="form-control" name="nature" id="nature" | |
| 44 | + style="width: 180px;"> | |
| 45 | + <option value="0">全部线路</option> | |
| 46 | + <option value="1" selected="selected">营运线路</option> | |
| 47 | + <option value="2">非营运线路</option> | |
| 48 | + </select> | |
| 49 | + </div> | |
| 50 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 51 | + <span class="item-label" style="width: 80px;">开始日期: </span> | |
| 52 | + <input class="form-control" type="text" id="date" style="width: 180px;"/> | |
| 53 | + </div> | |
| 54 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 55 | + <span class="item-label" style="width: 80px;">结束日期: </span> | |
| 56 | + <input class="form-control" type="text" id="date2" style="width: 180px;"/> | |
| 57 | + </div> | |
| 58 | + <div class="form-group"> | |
| 59 | + <input class="btn btn-default" type="button" id="query" value="查询"/> | |
| 60 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 61 | + </div> | |
| 62 | + </form> | |
| 63 | + </div> | |
| 64 | + <div class="portlet-body" id="tjrbBody" style="overflow:auto;height: calc(100% - 80px)"> | |
| 65 | + <div class="table-container" style="margin-top: 10px;min-width: 906px"> | |
| 66 | + <label>日期:<span id="rqxs"></span> 早高峰:6:31~8:30 晚高峰:16:01~18:00</label> | |
| 67 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | |
| 68 | + <thead> | |
| 69 | + <tr> | |
| 70 | + <th colspan="45"><label id="tjrq"></label> 调度日报汇总表</th> | |
| 71 | + </tr> | |
| 72 | + <tr> | |
| 73 | + <td rowspan="3"><span >公司</span></td> | |
| 74 | + <td rowspan="3"><span >分公司</span></td> | |
| 75 | + <td colspan="21">全日营运里程(公里)</td> | |
| 76 | + <td colspan="15">全日营运班次</td> | |
| 77 | + <td colspan="9">大间隔情况</td> | |
| 78 | + </tr> | |
| 79 | + <tr> | |
| 80 | + <td rowspan="2"><label>计划总<br/>公里</label></td> | |
| 81 | + <td rowspan="2"><label>计划营</label><label>运公里</label></td> | |
| 82 | + <td rowspan="2"><label>计划空</label><label>驶公里</label></td> | |
| 83 | + <td rowspan="2"><label>实际</label><label>总公里</label></td> | |
| 84 | + <td rowspan="2"><label>实际营</label><label>运公里</label></td> | |
| 85 | + <td rowspan="2"><label>实际空</label><label>驶公里</label></td> | |
| 86 | + <td rowspan="2"><span>少驶班次</span></td> | |
| 87 | + <td rowspan="2"><span>少驶公里</span></td> | |
| 88 | + <td colspan="11">少驶原因(公里)</td> | |
| 89 | + <td colspan="2">临加公里</td> | |
| 90 | + <td colspan="3">计划班次</td> | |
| 91 | + <td colspan="3">实际班次</td> | |
| 92 | + <td colspan="3">临加班次</td> | |
| 93 | + <td colspan="3">放站班次</td> | |
| 94 | + <td colspan="3">调头班次</td> | |
| 95 | + <td colspan="3">发生次数</td> | |
| 96 | + <td rowspan="2">最大间隔时间(分)</td> | |
| 97 | + <td rowspan="2">原因</td> | |
| 98 | + </tr> | |
| 99 | + <tr> | |
| 100 | + <td><span>路阻</span></td> | |
| 101 | + <td><span>吊慢</span></td> | |
| 102 | + <td><span>故障</span></td> | |
| 103 | + <td><span>纠纷</span></td> | |
| 104 | + <td><span>肇事</span></td> | |
| 105 | + <td><span>缺人</span></td> | |
| 106 | + <td><span>缺车</span></td> | |
| 107 | + <td><span>客稀</span></td> | |
| 108 | + <td><span>气候</span></td> | |
| 109 | + <td><span>援外</span></td> | |
| 110 | + <td><span>其他</span></td> | |
| 111 | + <td><span>营运</span></td> | |
| 112 | + <td><span>空驶</span></td> | |
| 113 | + <td><span>全日</span></td> | |
| 114 | + <td><span>早高峰</span></td> | |
| 115 | + <td><span>晚高峰</span></td> | |
| 116 | + <td><span>全日</span></td> | |
| 117 | + <td><span>早高峰</span></td> | |
| 118 | + <td><span>晚高峰</span></td> | |
| 119 | + <td><span>全日</span></td> | |
| 120 | + <td><span>早高峰</span></td> | |
| 121 | + <td><span>晚高峰</span></td> | |
| 122 | + <td><span>全日</span></td> | |
| 123 | + <td><span>早高峰</span></td> | |
| 124 | + <td><span>晚高峰</span></td> | |
| 125 | + <td><span>全日</span></td> | |
| 126 | + <td><span>早高峰</span></td> | |
| 127 | + <td><span>晚高峰</span></td> | |
| 128 | + <td><span>全日</span></td> | |
| 129 | + <td><span>早高峰</span></td> | |
| 130 | + <td><span>晚高峰</span></td> | |
| 131 | + </tr> | |
| 132 | + </thead> | |
| 133 | + <tbody class="dispatch_daily_sum"> | |
| 134 | + | |
| 135 | + </tbody> | |
| 136 | + </table> | |
| 137 | + </div> | |
| 138 | + </div> | |
| 139 | + </div> | |
| 140 | + | |
| 141 | +<script> | |
| 142 | + $(function(){ | |
| 143 | +// $('#export').attr('disabled', "true"); | |
| 144 | + | |
| 145 | + // 关闭左侧栏 | |
| 146 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 147 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 148 | + var d = new Date(); | |
| 149 | + var year = d.getFullYear(); | |
| 150 | + var month = d.getMonth() + 1; | |
| 151 | + var day = d.getDate(); | |
| 152 | + if(month < 10) | |
| 153 | + month = "0" + month; | |
| 154 | + if(day < 10) | |
| 155 | + day = "0" + day; | |
| 156 | + | |
| 157 | + var dateTime=year + "-" + month + "-" + day; | |
| 158 | + $("#date").val(dateTime); | |
| 159 | + $("#date2").val(dateTime); | |
| 160 | + $("#date").datetimepicker({ | |
| 161 | + format : 'YYYY-MM-DD', | |
| 162 | + locale : 'zh-cn', | |
| 163 | + maxDate : dateTime | |
| 164 | + }); | |
| 165 | + $("#date2").datetimepicker({ | |
| 166 | + format : 'YYYY-MM-DD', | |
| 167 | + locale : 'zh-cn', | |
| 168 | + maxDate : dateTime | |
| 169 | + }); | |
| 170 | + | |
| 171 | + var date = ""; | |
| 172 | + var date2 = ""; | |
| 173 | + var nature=""; | |
| 174 | + var time1=""; | |
| 175 | + var time2=""; | |
| 176 | + $("#query").on("click",function(){ | |
| 177 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 178 | + layer.msg("请选择日期!"); | |
| 179 | + return; | |
| 180 | + } | |
| 181 | + if($("#date2").val() == null || $("#date2").val().trim().length == 0){ | |
| 182 | + layer.msg("请选择日期!"); | |
| 183 | + return; | |
| 184 | + } | |
| 185 | + date = $("#date").val(); | |
| 186 | + date2 = $("#date2").val(); | |
| 187 | + nature=$("#nature").val(); | |
| 188 | +// time1 = Date.parse(new Date(date)); | |
| 189 | +// time2 = Date.parse(new Date(date2)); | |
| 190 | +// if(date==null || date =="" ||date2==null || date2 ==""){ | |
| 191 | +// layer.msg('请选择时间段.'); | |
| 192 | +// }else if(time2<time1){ | |
| 193 | +// layer.msg('结束日期不能小于开始日期.'); | |
| 194 | +// }else{ | |
| 195 | +// if((time2-time1)>2678400000){ | |
| 196 | +// layer.msg('查询超过一个月请点击【统计查询】.'); | |
| 197 | +// }else{ | |
| 198 | + $("#tjrq").html(date); | |
| 199 | + $("#rqxs").html(date); | |
| 200 | + var params = {}; | |
| 201 | + params['date'] = date; | |
| 202 | + params['date2'] = date2; | |
| 203 | + params['nature'] = nature; | |
| 204 | + params['type'] = "query"; | |
| 205 | + var i = layer.load(2); | |
| 206 | + $get('/realSchedule/dispatchDailySum',params,function(result){ | |
| 207 | + // 把数据填充到模版中 | |
| 208 | + var tbodyHtml = template('dispatch_daily_sum',{list:result}); | |
| 209 | + // 把渲染好的模版html文本追加到表格中 | |
| 210 | + $('#forms .dispatch_daily_sum').html(tbodyHtml); | |
| 211 | + layer.close(i); | |
| 212 | + | |
| 213 | + if(result.length == 0){ | |
| 214 | + $("#export").attr('disabled',"true"); | |
| 215 | + }else{ | |
| 216 | + $("#export").removeAttr("disabled"); | |
| 217 | + } | |
| 218 | + }); | |
| 219 | +// } | |
| 220 | +// } | |
| 221 | + }); | |
| 222 | + | |
| 223 | +// $("#tjrbBody").height($(window).height()-100); | |
| 224 | + $("#export").on("click",function(){ | |
| 225 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 226 | + layer.msg("请选择时间!"); | |
| 227 | + return; | |
| 228 | + } | |
| 229 | + date = $("#date").val(); | |
| 230 | + date2 = $("#date2").val(); | |
| 231 | + nature=$("#nature").val(); | |
| 232 | + var params = {}; | |
| 233 | + params['date'] = date; | |
| 234 | + params['date2'] = date2; | |
| 235 | + params['nature'] = nature; | |
| 236 | + params['type'] = "export"; | |
| 237 | +// if((time2-time1)>2678400000){ | |
| 238 | +// layer.msg('查询超过一个月请点击【统计查询】.'); | |
| 239 | +// }else{ | |
| 240 | + var i = layer.load(2); | |
| 241 | + $get('/realSchedule/dispatchDailySum',params,function(result){ | |
| 242 | + var dateTime = ""; | |
| 243 | + if(date == date2){ | |
| 244 | + dateTime = moment(date).format("YYYYMMDD"); | |
| 245 | + } else { | |
| 246 | + dateTime = moment(date).format("YYYYMMDD") | |
| 247 | + +"-"+moment(date2).format("YYYYMMDD"); | |
| 248 | + } | |
| 249 | + window.open("/downloadFile/download?fileName=" | |
| 250 | + +dateTime+"-调度日报汇总表"); | |
| 251 | + layer.close(i); | |
| 252 | + }); | |
| 253 | +// } | |
| 254 | + }); | |
| 255 | + | |
| 256 | + | |
| 257 | + }); | |
| 258 | +</script> | |
| 259 | +<script type="text/html" id="dispatch_daily_sum"> | |
| 260 | + {{each list as obj i}} | |
| 261 | + <tr style='{{if obj.zt==1}}color: red;{{/if}} | |
| 262 | + {{if obj.fgsName=='小计' || obj.gsName=='浦交'}}background-color: #b9d6fb;{{/if}}'> | |
| 263 | + <td>{{obj.gsName}}</td> | |
| 264 | + <td>{{obj.fgsName}}</td> | |
| 265 | + <td>{{obj.jhzlc}}</td> | |
| 266 | + <td>{{obj.jhlc}}</td> | |
| 267 | + <td>{{obj.jcclc}}</td> | |
| 268 | + <td>{{obj.sjzgl}}</td> | |
| 269 | + <td>{{obj.sjgl}}</td> | |
| 270 | + <td>{{obj.sjksgl}}</td> | |
| 271 | + <td>{{obj.ssbc}}</td> | |
| 272 | + <td>{{obj.ssgl}}</td> | |
| 273 | + <td>{{obj.ssgl_lz}}</td> | |
| 274 | + <td>{{obj.ssgl_dm}}</td> | |
| 275 | + <td>{{obj.ssgl_gz}}</td> | |
| 276 | + <td>{{obj.ssgl_jf}}</td> | |
| 277 | + <td>{{obj.ssgl_zs}}</td> | |
| 278 | + <td>{{obj.ssgl_qr}}</td> | |
| 279 | + <td>{{obj.ssgl_qc}}</td> | |
| 280 | + <td>{{obj.ssgl_kx}}</td> | |
| 281 | + <td>{{obj.ssgl_qh}}</td> | |
| 282 | + <td>{{obj.ssgl_yw}}</td> | |
| 283 | + <td>{{obj.ssgl_other}}</td> | |
| 284 | + <td>{{obj.ljgl}}</td> | |
| 285 | + <td>{{obj.ljks}}</td> | |
| 286 | + <td>{{obj.jhbc}}</td> | |
| 287 | + <td>{{obj.jhbc_m}}</td> | |
| 288 | + <td>{{obj.jhbc_a}}</td> | |
| 289 | + <td>{{obj.sjbc}}</td> | |
| 290 | + <td>{{obj.sjbc_m}}</td> | |
| 291 | + <td>{{obj.sjbc_a}}</td> | |
| 292 | + <td>{{obj.ljbc}}</td> | |
| 293 | + <td>{{obj.ljbc_m}}</td> | |
| 294 | + <td>{{obj.ljbc_a}}</td> | |
| 295 | + <td>{{obj.fzbc}}</td> | |
| 296 | + <td>{{obj.fzbc_m}}</td> | |
| 297 | + <td>{{obj.fzbc_a}}</td> | |
| 298 | + <td>{{obj.dtbc}}</td> | |
| 299 | + <td>{{obj.dtbc_m}}</td> | |
| 300 | + <td>{{obj.dtbc_a}}</td> | |
| 301 | + <td>{{obj.djg}}</td> | |
| 302 | + <td>{{obj.djg_m}}</td> | |
| 303 | + <td>{{obj.djg_a}}</td> | |
| 304 | + <td>{{obj.djg_time}}</td> | |
| 305 | + <td> </td> | |
| 306 | + </tr> | |
| 307 | + {{/each}} | |
| 308 | + {{if list.length == 0}} | |
| 309 | + <tr> | |
| 310 | + <td colspan="44"><h6 class="muted">没有找到相关数据</h6></td> | |
| 311 | + </tr> | |
| 312 | + {{/if}} | |
| 313 | +</script> | |
| 0 | 314 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/statement/firstAndLastBus_sum.html
| ... | ... | @@ -60,6 +60,7 @@ |
| 60 | 60 | <div class="form-group" style="margin-left: 10px;"> |
| 61 | 61 | <input class="btn btn-default" type="button" id="query" value="筛选"/> |
| 62 | 62 | <input class="btn btn-default" type="button" id="export" value="导出"/> |
| 63 | + <input class="btn btn-default" type="button" id="exportAll" value="导出全部公司" style="display: none;"/> | |
| 63 | 64 | </div> |
| 64 | 65 | </form> |
| 65 | 66 | </div> |
| ... | ... | @@ -418,6 +419,40 @@ |
| 418 | 419 | }); |
| 419 | 420 | |
| 420 | 421 | |
| 422 | + $.get('/user/getCurrentUser', function(result){ | |
| 423 | + var roleName = ""; | |
| 424 | + $(result.roles).each(function(i, e){ | |
| 425 | + roleName += e.roleName + "、"; | |
| 426 | + }); | |
| 427 | + if(roleName.indexOf("浦交") > -1 || roleName.indexOf("拓华") > -1){ | |
| 428 | + $("#exportAll").show(); | |
| 429 | + } | |
| 430 | + }); | |
| 431 | + $("#exportAll").on("click",function(){ | |
| 432 | + var params = {}; | |
| 433 | + sfyy = $("#sfyy").val(); | |
| 434 | + startDate = $("#startDate").val(); | |
| 435 | + endDate = $("#endDate").val(); | |
| 436 | + params['sfyy'] = sfyy; | |
| 437 | + params['startDate'] = startDate; | |
| 438 | + params['endDate'] = endDate; | |
| 439 | + params['type'] = "exportAll"; | |
| 440 | + var i = layer.load(2); | |
| 441 | + $get('/pcpc/firstAndLastBus_sum', params, function(result){ | |
| 442 | + var dateTime = ""; | |
| 443 | + if(startDate == endDate){ | |
| 444 | + dateTime = moment(startDate).format("YYYYMMDD"); | |
| 445 | + } else { | |
| 446 | + dateTime = moment(startDate).format("YYYYMMDD") | |
| 447 | + +"-"+moment(endDate).format("YYYYMMDD"); | |
| 448 | + } | |
| 449 | + window.open("/downloadFile/download?fileName=" | |
| 450 | + +dateTime+"-全部公司-线路首末班准点率"); | |
| 451 | + layer.close(i); | |
| 452 | + }); | |
| 453 | + }); | |
| 454 | + | |
| 455 | + | |
| 421 | 456 | }); |
| 422 | 457 | |
| 423 | 458 | </script> | ... | ... |
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 | - | |
| 18 | - #forms > thead > tr> td >span{ | |
| 19 | - width: 5px; | |
| 20 | - word-wrap: break-word; | |
| 21 | - letter-spacing: 20px; | |
| 22 | - } | |
| 23 | - | |
| 24 | - #forms > thead > tr> td >label{ | |
| 25 | - word-break: keep-all;white-space:nowrap; | |
| 26 | - } | |
| 27 | -</style> | |
| 28 | - | |
| 29 | -<div class="page-head"> | |
| 30 | - <div class="page-title"> | |
| 31 | - <h1>统计日报(按年、月、季度查询请点击<a href="statisticsDailyCalc2.html" target="_blank">【统计查询】</a>)</h1> | |
| 32 | - </div> | |
| 33 | -</div> | |
| 34 | - | |
| 35 | -<!-- <div class="row"> --> | |
| 36 | - <div class="col-md-12 portlet light porttlet-fit bordered" style="height:calc(100% - 56px)"> | |
| 37 | -<!-- <div> --> | |
| 38 | - <div class="portlet-title"> | |
| 39 | - <form class="form-inline" action=""> | |
| 40 | - <div style="display: inline-block;margin-left: 29px; " id="gsdmDiv"> | |
| 41 | - <span class="item-label" style="width: 80px;">公司: </span> | |
| 42 | - <select class="form-control" name="company" id="gsdm" style="width: 180px;"></select> | |
| 43 | - </div> | |
| 44 | - <div style="display: inline-block; margin-left: 29px;" id="fgsdmDiv"> | |
| 45 | - <span class="item-label" style="width: 80px;">分公司: </span> | |
| 46 | - <select class="form-control" name="subCompany" id="fgsdm" style="width: 180px;"></select> | |
| 47 | - </div> | |
| 48 | - <div style="display: inline-block;margin-left: 42px;"> | |
| 49 | - <span class="item-label" style="width: 80px;">线路: </span> | |
| 50 | - <select class="form-control" name="line" id="line" style="width: 180px;"></select> | |
| 51 | - </div> | |
| 52 | - <div style="margin-top: 3px"></div> | |
| 53 | - <div style="display: inline-block;"> | |
| 54 | - <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 55 | - <select | |
| 56 | - class="form-control" name="nature" id="nature" | |
| 57 | - style="width: 180px;"> | |
| 58 | - <option value="0">全部线路</option> | |
| 59 | - <option value="1" selected="selected">营运线路</option> | |
| 60 | - <option value="2">非营运线路</option> | |
| 61 | - </select> | |
| 62 | - </div> | |
| 63 | - <div style="display: inline-block;margin-left: 15px;"> | |
| 64 | - <span class="item-label" style="width: 80px;">开始时间: </span> | |
| 65 | - <input class="form-control" type="text" id="date" style="width: 180px;"/> | |
| 66 | - </div> | |
| 67 | - <div style="display: inline-block;margin-left: 15px;"> | |
| 68 | - <span class="item-label" style="width: 80px;">结束时间: </span> | |
| 69 | - <input class="form-control" type="text" id="date2" style="width: 180px;"/> | |
| 70 | - </div> | |
| 71 | - <div class="form-group"> | |
| 72 | - <input class="btn btn-default" type="button" id="query" value="查询"/> | |
| 73 | - <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 74 | - </div> | |
| 75 | - </form> | |
| 76 | - </div> | |
| 77 | - <div class="portlet-body" id="tjrbBody" style="overflow:auto;height: calc(100% - 80px)"> | |
| 78 | - <div class="table-container" style="margin-top: 10px;min-width: 906px"> | |
| 79 | - <label>早高峰:6:31~8:30 晚高峰:16:01~18:00</label> | |
| 80 | - <table class="table table-bordered table-hover table-checkable" id="forms"> | |
| 81 | - <thead> | |
| 82 | - <tr> | |
| 83 | - <th colspan="45"><label id="tjrq"></label> 线路统计日报</th> | |
| 84 | - </tr> | |
| 85 | - <tr> | |
| 86 | - <td rowspan="3"><span >分公司</span></td> | |
| 87 | - <td rowspan="3"><span >路线名</span></td> | |
| 88 | - <td colspan="21">全日营运里程(公里)(注:实际营运里程、实际空驶里程、实际总里程均已包含临加里程)</td> | |
| 89 | - <td colspan="15">全日营运班次</td> | |
| 90 | - <td colspan="9">大间隔情况</td> | |
| 91 | - </tr> | |
| 92 | - <tr> | |
| 93 | - <td rowspan="2"><label>计划总</label> | |
| 94 | - <label>公里 </label></td> | |
| 95 | - <td rowspan="2"><label>计划营</label><label>运公里</label></td> | |
| 96 | - <td rowspan="2"><label>计划空</label><label>驶公里</label></td> | |
| 97 | - <td rowspan="2"><label>实际</label><label>总公里</label></td> | |
| 98 | - <td rowspan="2"><label>实际营</label><label>运公里</label></td> | |
| 99 | - <td rowspan="2"><label>实际空</label><label>驶公里</label></td> | |
| 100 | - <td rowspan="2"><span>少驶公里</span></td> | |
| 101 | - <td rowspan="2"><span>少驶班次</span></td> | |
| 102 | - <td colspan="11">少驶原因(公里)</td> | |
| 103 | - <td colspan="2">临加公里</td> | |
| 104 | - <td colspan="3">计划班次</td> | |
| 105 | - <td colspan="3">实际班次</td> | |
| 106 | - <td colspan="3">临加班次</td> | |
| 107 | - <td colspan="3">放站班次</td> | |
| 108 | - <td colspan="3">调头班次</td> | |
| 109 | - <td colspan="3">发生次数</td> | |
| 110 | - <td rowspan="2">最大间隔时间(分)</td> | |
| 111 | - <td rowspan="2">原因</td> | |
| 112 | - </tr> | |
| 113 | - <tr> | |
| 114 | - <td><span >路阻</span></td> | |
| 115 | - <td><span>吊慢</span></td> | |
| 116 | - <td><span >故障</span></td> | |
| 117 | - <td><span >纠纷</span></td> | |
| 118 | - <td><span >肇事</span></td> | |
| 119 | - <td><span>缺人</span></td> | |
| 120 | - <td><span>缺车</span></td> | |
| 121 | - <td><span >客稀</span></td> | |
| 122 | - <td><span>气候</span></td> | |
| 123 | - <td><span>援外</span></td> | |
| 124 | - <td><span>其他</span></td> | |
| 125 | - <td><span>营运</span></td> | |
| 126 | - <td><span>空驶</span></td> | |
| 127 | - <td><span>全日</span></td> | |
| 128 | - <td><span>早高峰</span></td> | |
| 129 | - <td><span>晚高峰</span></td> | |
| 130 | - <td><span>全日</span></td> | |
| 131 | - <td><span>早高峰</span></td> | |
| 132 | - <td><span>晚高峰</span></td> | |
| 133 | - <td><span>全日</span></td> | |
| 134 | - <td><span>早高峰</span></td> | |
| 135 | - <td><span>晚高峰</span></td> | |
| 136 | - <td><span>全日</span></td> | |
| 137 | - <td><span>早高峰</span></td> | |
| 138 | - <td><span>晚高峰</span></td> | |
| 139 | - <td><span>全日</span></td> | |
| 140 | - <td><span>早高峰</span></td> | |
| 141 | - <td><span>晚高峰</span></td> | |
| 142 | - <td><span>全日</span></td> | |
| 143 | - <td><span>早高峰</span></td> | |
| 144 | - <td><span>晚高峰</span></td> | |
| 145 | - </tr> | |
| 146 | - </thead> | |
| 147 | - <tbody class="statisticsDaily"> | |
| 148 | - | |
| 149 | - </tbody> | |
| 150 | - </table> | |
| 151 | - </div> | |
| 152 | - </div> | |
| 153 | - </div> | |
| 154 | - | |
| 155 | -<script> | |
| 156 | - $(function(){ | |
| 157 | - $('#export').attr('disabled', "true"); | |
| 158 | - | |
| 159 | - // 关闭左侧栏 | |
| 160 | - if (!$('body').hasClass('page-sidebar-closed')) | |
| 161 | - $('.menu-toggler.sidebar-toggler').click(); | |
| 162 | - var d = new Date(); | |
| 163 | - var year = d.getFullYear(); | |
| 164 | - var month = d.getMonth() + 1; | |
| 165 | - var day = d.getDate(); | |
| 166 | - if(month < 10) | |
| 167 | - month = "0" + month; | |
| 168 | - if(day < 10) | |
| 169 | - day = "0" + day; | |
| 170 | - | |
| 171 | - var dateTime=year + "-" + month + "-" + day; | |
| 172 | - $("#date").val(dateTime); | |
| 173 | - $("#date2").val(dateTime); | |
| 174 | - $("#date").datetimepicker({ | |
| 175 | - format : 'YYYY-MM-DD', | |
| 176 | - locale : 'zh-cn', | |
| 177 | - maxDate : dateTime | |
| 178 | - }); | |
| 179 | - | |
| 180 | - $("#date2").datetimepicker({ | |
| 181 | - format : 'YYYY-MM-DD', | |
| 182 | - locale : 'zh-cn', | |
| 183 | - maxDate : dateTime | |
| 184 | - }); | |
| 185 | - | |
| 186 | - | |
| 187 | - var fage=true; | |
| 188 | - var obj = []; | |
| 189 | - var xlList; | |
| 190 | - $.get('/report/lineList',function(result){ | |
| 191 | - xlList=result; | |
| 192 | - $.get('/user/companyData', function(result){ | |
| 193 | - obj = result; | |
| 194 | - var options = ''; | |
| 195 | - for(var i = 0; i < obj.length; i++){ | |
| 196 | - options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 197 | - } | |
| 198 | - | |
| 199 | - if(obj.length ==0){ | |
| 200 | - $("#gsdmDiv").css('display','none'); | |
| 201 | - }else if(obj.length ==1){ | |
| 202 | - $("#gsdmDiv").css('display','none'); | |
| 203 | - if(obj[0].children.length == 1 || obj[0].children.length ==0){ | |
| 204 | - fage=false; | |
| 205 | - $('#fgsdmDiv').css('display','none'); | |
| 206 | - } | |
| 207 | - } | |
| 208 | - $('#gsdm').html(options); | |
| 209 | - updateCompany(); | |
| 210 | - }); | |
| 211 | - }) | |
| 212 | - $("#gsdm").on("change",updateCompany); | |
| 213 | - function updateCompany(){ | |
| 214 | - var company = $('#gsdm').val(); | |
| 215 | - var options = ''; | |
| 216 | - if(fage){ | |
| 217 | - options = '<option value="">请选择</option>'; | |
| 218 | - } | |
| 219 | - for(var i = 0; i < obj.length; i++){ | |
| 220 | - if(obj[i].companyCode == company){ | |
| 221 | - var children = obj[i].children; | |
| 222 | - for(var j = 0; j < children.length; j++){ | |
| 223 | - options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 224 | - } | |
| 225 | - } | |
| 226 | - } | |
| 227 | - $('#fgsdm').html(options); | |
| 228 | -// initXl(); | |
| 229 | - } | |
| 230 | - | |
| 231 | - var tempData = {}; | |
| 232 | - $.get('/report/lineList',function(xlList){ | |
| 233 | - var data = []; | |
| 234 | - data.push({id: " ", text: "全部线路"}); | |
| 235 | - $.get('/user/companyData', function(result){ | |
| 236 | - for(var i = 0; i < result.length; i++){ | |
| 237 | - var companyCode = result[i].companyCode; | |
| 238 | - var children = result[i].children; | |
| 239 | - for(var j = 0; j < children.length; j++){ | |
| 240 | - var code = children[j].code; | |
| 241 | - for(var k=0;k < xlList.length;k++ ){ | |
| 242 | - if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 243 | - data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 244 | - tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 245 | - } | |
| 246 | - } | |
| 247 | - } | |
| 248 | - } | |
| 249 | - initPinYinSelect2('#line',data,''); | |
| 250 | - | |
| 251 | - }); | |
| 252 | - }); | |
| 253 | - | |
| 254 | - $("#line").on("change", function(){ | |
| 255 | - if($("#line").val() == " "){ | |
| 256 | - $("#gsdm").attr("disabled", false); | |
| 257 | - $("#fgsdm").attr("disabled", false); | |
| 258 | - } else { | |
| 259 | - var temp = (tempData[$("#line").val()] ? tempData[$("#line").val()] : " : ").split(":"); | |
| 260 | - $("#gsdm").val(temp[0]); | |
| 261 | - updateCompany(); | |
| 262 | - $("#nature").val(0); | |
| 263 | - $("#fgsdm").val(temp[1]); | |
| 264 | - $("#gsdm").attr("disabled", true); | |
| 265 | - $("#fgsdm").attr("disabled", true); | |
| 266 | - } | |
| 267 | - }); | |
| 268 | - | |
| 269 | - | |
| 270 | - var line =""; | |
| 271 | - var xlName =""; | |
| 272 | - var date = ""; | |
| 273 | - var date2 =""; | |
| 274 | - var gsdm=""; | |
| 275 | - var fgsdm=""; | |
| 276 | - var nature=""; | |
| 277 | - var time1=""; | |
| 278 | - var time2=""; | |
| 279 | - $("#query").on("click",function(){ | |
| 280 | - if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 281 | - layer.msg("请选择时间范围!"); | |
| 282 | - return; | |
| 283 | - } | |
| 284 | - if($("#date2").val() == null || $("#date2").val().trim().length == 0){ | |
| 285 | - layer.msg("请选择时间范围!"); | |
| 286 | - return; | |
| 287 | - } | |
| 288 | -// $("#tjrbBody").height($(window).height()-100); | |
| 289 | - line = $("#line").val(); | |
| 290 | - date = $("#date").val(); | |
| 291 | - date2 =$("#date2").val(); | |
| 292 | - gsdm =$("#gsdm").val(); | |
| 293 | - fgsdm=$("#fgsdm").val(); | |
| 294 | - nature=$("#nature").val(); | |
| 295 | - xlName = $("#select2-line-container").html(); | |
| 296 | - if(xlName == "全部线路") | |
| 297 | - xlName = $('#fgsdm option:selected').text(); | |
| 298 | - if(xlName == "请选择") | |
| 299 | - xlName = $('#gsdm option:selected').text(); | |
| 300 | - if(line=="请选择"){ | |
| 301 | - line=""; | |
| 302 | - } | |
| 303 | - time1 = Date.parse(new Date(date)); | |
| 304 | - time2 = Date.parse(new Date(date2)); | |
| 305 | - if(date==null || date =="" ||date2==null || date2 ==""){ | |
| 306 | - layer.msg('请选择时间段.'); | |
| 307 | - }else if(time2<time1){ | |
| 308 | - layer.msg('结束日期不能小于开始日期.'); | |
| 309 | - }else{ | |
| 310 | - if((time2-time1)>2678400000){ | |
| 311 | - layer.msg('查询超过一个月请点击【统计查询】.'); | |
| 312 | - }else{ | |
| 313 | - $("#tjrq").html(date+"至"+date2); | |
| 314 | - var params = {}; | |
| 315 | - params['gsdm'] = gsdm; | |
| 316 | - params['fgsdm'] =fgsdm ; | |
| 317 | - params['line'] = line; | |
| 318 | - params['date'] = date; | |
| 319 | - params['date2'] = date2; | |
| 320 | - params['xlName'] = xlName; | |
| 321 | - params['nature'] = nature; | |
| 322 | - params['type'] = "query"; | |
| 323 | - var i = layer.load(2); | |
| 324 | - $get('/realSchedule/statisticsDailyTj',params,function(result){ | |
| 325 | - // 把数据填充到模版中 | |
| 326 | - var tbodyHtml = template('statisticsDaily',{list:result}); | |
| 327 | - // 把渲染好的模版html文本追加到表格中 | |
| 328 | - $('#forms .statisticsDaily').html(tbodyHtml); | |
| 329 | - layer.close(i); | |
| 330 | - | |
| 331 | - if(result.length == 0) | |
| 332 | - $("#export").attr('disabled',"true"); | |
| 333 | - else | |
| 334 | - $("#export").removeAttr("disabled"); | |
| 335 | - }); | |
| 336 | - } | |
| 337 | - | |
| 338 | - } | |
| 339 | - | |
| 340 | - }); | |
| 341 | -// $("#tjrbBody").height($(window).height()-100); | |
| 342 | - $("#export").on("click",function(){ | |
| 343 | - var params = {}; | |
| 344 | - params['gsdm'] = gsdm; | |
| 345 | - params['fgsdm'] =fgsdm; | |
| 346 | - params['line'] = line; | |
| 347 | - date = $("#date").val(); | |
| 348 | - date2 =$("#date2").val(); | |
| 349 | - params['date'] = date; | |
| 350 | - params['date2'] = date2; | |
| 351 | - params['xlName'] = xlName; | |
| 352 | - params['nature'] = nature; | |
| 353 | - params['type'] = "export"; | |
| 354 | - if((time2-time1)>2678400000){ | |
| 355 | - layer.msg('查询超过一个月请点击【统计查询】.'); | |
| 356 | - }else{ | |
| 357 | - var i = layer.load(2); | |
| 358 | - $get('/realSchedule/statisticsDailyTj',params,function(result){ | |
| 359 | - var dateTime = ""; | |
| 360 | - if(date == date2){ | |
| 361 | - dateTime = moment(date).format("YYYYMMDD"); | |
| 362 | - } else { | |
| 363 | - dateTime = moment(date).format("YYYYMMDD") | |
| 364 | - +"-"+moment(date2).format("YYYYMMDD"); | |
| 365 | - } | |
| 366 | - window.open("/downloadFile/download?fileName=" | |
| 367 | - +dateTime+"-"+xlName+"-统计日报"); | |
| 368 | - layer.close(i); | |
| 369 | - }); | |
| 370 | - } | |
| 371 | - }); | |
| 372 | - | |
| 373 | - }); | |
| 374 | -</script> | |
| 375 | -<script type="text/html" id="statisticsDaily"> | |
| 376 | - {{each list as obj i}} | |
| 377 | - <tr {{if obj.zt==1}}style='color: red'{{/if}}> | |
| 378 | - <td>{{obj.fgsName}}</td> | |
| 379 | - <td>{{obj.xlName}}</td> | |
| 380 | - <td>{{obj.jhzlc}}</td> | |
| 381 | - <td>{{obj.jhlc}}</td> | |
| 382 | - <td>{{obj.jcclc}}</td> | |
| 383 | - <td>{{obj.sjzgl}}</td> | |
| 384 | - <td>{{obj.sjgl}}</td> | |
| 385 | - <td>{{obj.sjksgl}}</td> | |
| 386 | - <td>{{obj.ssgl}}</td> | |
| 387 | - <td>{{obj.ssbc}}</td> | |
| 388 | - <td>{{obj.ssgl_lz}}</td> | |
| 389 | - <td>{{obj.ssgl_dm}}</td> | |
| 390 | - <td>{{obj.ssgl_gz}}</td> | |
| 391 | - <td>{{obj.ssgl_jf}}</td> | |
| 392 | - <td>{{obj.ssgl_zs}}</td> | |
| 393 | - <td>{{obj.ssgl_qr}}</td> | |
| 394 | - <td>{{obj.ssgl_qc}}</td> | |
| 395 | - <td>{{obj.ssgl_kx}}</td> | |
| 396 | - <td>{{obj.ssgl_qh}}</td> | |
| 397 | - <td>{{obj.ssgl_yw}}</td> | |
| 398 | - <td>{{obj.ssgl_other}}</td> | |
| 399 | - <td>{{obj.ljgl}}</td> | |
| 400 | - <td>{{obj.ljks}}</td> | |
| 401 | - <td>{{obj.jhbc}}</td> | |
| 402 | - <td>{{obj.jhbc_m}}</td> | |
| 403 | - <td>{{obj.jhbc_a}}</td> | |
| 404 | - <td>{{obj.sjbc}}</td> | |
| 405 | - <td>{{obj.sjbc_m}}</td> | |
| 406 | - <td>{{obj.sjbc_a}}</td> | |
| 407 | - <td>{{obj.ljbc}}</td> | |
| 408 | - <td>{{obj.ljbc_m}}</td> | |
| 409 | - <td>{{obj.ljbc_a}}</td> | |
| 410 | - <td>{{obj.fzbc}}</td> | |
| 411 | - <td>{{obj.fzbc_m}}</td> | |
| 412 | - <td>{{obj.fzbc_a}}</td> | |
| 413 | - <td>{{obj.dtbc}}</td> | |
| 414 | - <td>{{obj.dtbc_m}}</td> | |
| 415 | - <td>{{obj.dtbc_a}}</td> | |
| 416 | - <td>{{obj.djg}}</td> | |
| 417 | - <td>{{obj.djg_m}}</td> | |
| 418 | - <td>{{obj.djg_a}}</td> | |
| 419 | - <td>{{obj.djg_time}}</td> | |
| 420 | - <td> </td> | |
| 421 | - </tr> | |
| 422 | - {{/each}} | |
| 423 | - {{if list.length == 0}} | |
| 424 | - <tr> | |
| 425 | - <td colspan="44"><h6 class="muted">没有找到相关数据</h6></td> | |
| 426 | - </tr> | |
| 427 | - {{/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 | + | |
| 18 | + #forms > thead > tr> td >span{ | |
| 19 | + width: 5px; | |
| 20 | + word-wrap: break-word; | |
| 21 | + letter-spacing: 20px; | |
| 22 | + } | |
| 23 | + | |
| 24 | + #forms > thead > tr> td >label{ | |
| 25 | + word-break: keep-all;white-space:nowrap; | |
| 26 | + } | |
| 27 | +</style> | |
| 28 | + | |
| 29 | +<div class="page-head"> | |
| 30 | + <div class="page-title"> | |
| 31 | + <h1>统计日报(按年、月、季度查询请点击<a href="statisticsDailyCalc2.html" target="_blank">【统计查询】</a>)</h1> | |
| 32 | + </div> | |
| 33 | +</div> | |
| 34 | + | |
| 35 | +<!-- <div class="row"> --> | |
| 36 | + <div class="col-md-12 portlet light porttlet-fit bordered" style="height:calc(100% - 56px)"> | |
| 37 | +<!-- <div> --> | |
| 38 | + <div class="portlet-title"> | |
| 39 | + <form class="form-inline" action=""> | |
| 40 | + <div style="display: inline-block;margin-left: 29px; " id="gsdmDiv"> | |
| 41 | + <span class="item-label" style="width: 80px;">公司: </span> | |
| 42 | + <select class="form-control" name="company" id="gsdm" style="width: 180px;"></select> | |
| 43 | + </div> | |
| 44 | + <div style="display: inline-block; margin-left: 29px;" id="fgsdmDiv"> | |
| 45 | + <span class="item-label" style="width: 80px;">分公司: </span> | |
| 46 | + <select class="form-control" name="subCompany" id="fgsdm" style="width: 180px;"></select> | |
| 47 | + </div> | |
| 48 | + <div style="display: inline-block;margin-left: 42px;"> | |
| 49 | + <span class="item-label" style="width: 80px;">线路: </span> | |
| 50 | + <select class="form-control" name="line" id="line" style="width: 180px;"></select> | |
| 51 | + </div> | |
| 52 | + <div style="margin-top: 3px"></div> | |
| 53 | + <div style="display: inline-block;"> | |
| 54 | + <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 55 | + <select | |
| 56 | + class="form-control" name="nature" id="nature" | |
| 57 | + style="width: 180px;"> | |
| 58 | + <option value="0">全部线路</option> | |
| 59 | + <option value="1" selected="selected">营运线路</option> | |
| 60 | + <option value="2">非营运线路</option> | |
| 61 | + </select> | |
| 62 | + </div> | |
| 63 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 64 | + <span class="item-label" style="width: 80px;">开始时间: </span> | |
| 65 | + <input class="form-control" type="text" id="date" style="width: 180px;"/> | |
| 66 | + </div> | |
| 67 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 68 | + <span class="item-label" style="width: 80px;">结束时间: </span> | |
| 69 | + <input class="form-control" type="text" id="date2" style="width: 180px;"/> | |
| 70 | + </div> | |
| 71 | + <div class="form-group"> | |
| 72 | + <input class="btn btn-default" type="button" id="query" value="查询"/> | |
| 73 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 74 | + <input class="btn btn-default" type="button" id="exportAll" value="导出全部公司" style="display: none;"/> | |
| 75 | + </div> | |
| 76 | + </form> | |
| 77 | + </div> | |
| 78 | + <div class="portlet-body" id="tjrbBody" style="overflow:auto;height: calc(100% - 80px)"> | |
| 79 | + <div class="table-container" style="margin-top: 10px;min-width: 906px"> | |
| 80 | + <label>早高峰:6:31~8:30 晚高峰:16:01~18:00</label> | |
| 81 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | |
| 82 | + <thead> | |
| 83 | + <tr> | |
| 84 | + <th colspan="45"><label id="tjrq"></label> 线路统计日报</th> | |
| 85 | + </tr> | |
| 86 | + <tr> | |
| 87 | + <td rowspan="3"><span >分公司</span></td> | |
| 88 | + <td rowspan="3"><span >路线名</span></td> | |
| 89 | + <td colspan="21">全日营运里程(公里)(注:实际营运里程、实际空驶里程、实际总里程均已包含临加里程)</td> | |
| 90 | + <td colspan="15">全日营运班次</td> | |
| 91 | + <td colspan="9">大间隔情况</td> | |
| 92 | + </tr> | |
| 93 | + <tr> | |
| 94 | + <td rowspan="2"><label>计划总</label> | |
| 95 | + <label>公里 </label></td> | |
| 96 | + <td rowspan="2"><label>计划营</label><label>运公里</label></td> | |
| 97 | + <td rowspan="2"><label>计划空</label><label>驶公里</label></td> | |
| 98 | + <td rowspan="2"><label>实际</label><label>总公里</label></td> | |
| 99 | + <td rowspan="2"><label>实际营</label><label>运公里</label></td> | |
| 100 | + <td rowspan="2"><label>实际空</label><label>驶公里</label></td> | |
| 101 | + <td rowspan="2"><span>少驶公里</span></td> | |
| 102 | + <td rowspan="2"><span>少驶班次</span></td> | |
| 103 | + <td colspan="11">少驶原因(公里)</td> | |
| 104 | + <td colspan="2">临加公里</td> | |
| 105 | + <td colspan="3">计划班次</td> | |
| 106 | + <td colspan="3">实际班次</td> | |
| 107 | + <td colspan="3">临加班次</td> | |
| 108 | + <td colspan="3">放站班次</td> | |
| 109 | + <td colspan="3">调头班次</td> | |
| 110 | + <td colspan="3">发生次数</td> | |
| 111 | + <td rowspan="2">最大间隔时间(分)</td> | |
| 112 | + <td rowspan="2">原因</td> | |
| 113 | + </tr> | |
| 114 | + <tr> | |
| 115 | + <td><span >路阻</span></td> | |
| 116 | + <td><span>吊慢</span></td> | |
| 117 | + <td><span >故障</span></td> | |
| 118 | + <td><span >纠纷</span></td> | |
| 119 | + <td><span >肇事</span></td> | |
| 120 | + <td><span>缺人</span></td> | |
| 121 | + <td><span>缺车</span></td> | |
| 122 | + <td><span >客稀</span></td> | |
| 123 | + <td><span>气候</span></td> | |
| 124 | + <td><span>援外</span></td> | |
| 125 | + <td><span>其他</span></td> | |
| 126 | + <td><span>营运</span></td> | |
| 127 | + <td><span>空驶</span></td> | |
| 128 | + <td><span>全日</span></td> | |
| 129 | + <td><span>早高峰</span></td> | |
| 130 | + <td><span>晚高峰</span></td> | |
| 131 | + <td><span>全日</span></td> | |
| 132 | + <td><span>早高峰</span></td> | |
| 133 | + <td><span>晚高峰</span></td> | |
| 134 | + <td><span>全日</span></td> | |
| 135 | + <td><span>早高峰</span></td> | |
| 136 | + <td><span>晚高峰</span></td> | |
| 137 | + <td><span>全日</span></td> | |
| 138 | + <td><span>早高峰</span></td> | |
| 139 | + <td><span>晚高峰</span></td> | |
| 140 | + <td><span>全日</span></td> | |
| 141 | + <td><span>早高峰</span></td> | |
| 142 | + <td><span>晚高峰</span></td> | |
| 143 | + <td><span>全日</span></td> | |
| 144 | + <td><span>早高峰</span></td> | |
| 145 | + <td><span>晚高峰</span></td> | |
| 146 | + </tr> | |
| 147 | + </thead> | |
| 148 | + <tbody class="statisticsDaily"> | |
| 149 | + | |
| 150 | + </tbody> | |
| 151 | + </table> | |
| 152 | + </div> | |
| 153 | + </div> | |
| 154 | + </div> | |
| 155 | + | |
| 156 | +<script> | |
| 157 | + $(function(){ | |
| 158 | + $('#export').attr('disabled', "true"); | |
| 159 | + | |
| 160 | + // 关闭左侧栏 | |
| 161 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 162 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 163 | + var d = new Date(); | |
| 164 | + var year = d.getFullYear(); | |
| 165 | + var month = d.getMonth() + 1; | |
| 166 | + var day = d.getDate(); | |
| 167 | + if(month < 10) | |
| 168 | + month = "0" + month; | |
| 169 | + if(day < 10) | |
| 170 | + day = "0" + day; | |
| 171 | + | |
| 172 | + var dateTime=year + "-" + month + "-" + day; | |
| 173 | + $("#date").val(dateTime); | |
| 174 | + $("#date2").val(dateTime); | |
| 175 | + $("#date").datetimepicker({ | |
| 176 | + format : 'YYYY-MM-DD', | |
| 177 | + locale : 'zh-cn', | |
| 178 | + maxDate : dateTime | |
| 179 | + }); | |
| 180 | + | |
| 181 | + $("#date2").datetimepicker({ | |
| 182 | + format : 'YYYY-MM-DD', | |
| 183 | + locale : 'zh-cn', | |
| 184 | + maxDate : dateTime | |
| 185 | + }); | |
| 186 | + | |
| 187 | + | |
| 188 | + var fage=true; | |
| 189 | + var obj = []; | |
| 190 | + var xlList; | |
| 191 | + $.get('/report/lineList',function(result){ | |
| 192 | + xlList=result; | |
| 193 | + $.get('/user/companyData', function(result){ | |
| 194 | + obj = result; | |
| 195 | + var options = ''; | |
| 196 | + for(var i = 0; i < obj.length; i++){ | |
| 197 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 198 | + } | |
| 199 | + | |
| 200 | + if(obj.length ==0){ | |
| 201 | + $("#gsdmDiv").css('display','none'); | |
| 202 | + }else if(obj.length ==1){ | |
| 203 | + $("#gsdmDiv").css('display','none'); | |
| 204 | + if(obj[0].children.length == 1 || obj[0].children.length ==0){ | |
| 205 | + fage=false; | |
| 206 | + $('#fgsdmDiv').css('display','none'); | |
| 207 | + } | |
| 208 | + } | |
| 209 | + $('#gsdm').html(options); | |
| 210 | + updateCompany(); | |
| 211 | + }); | |
| 212 | + }) | |
| 213 | + $("#gsdm").on("change",updateCompany); | |
| 214 | + function updateCompany(){ | |
| 215 | + var company = $('#gsdm').val(); | |
| 216 | + var options = ''; | |
| 217 | + if(fage){ | |
| 218 | + options = '<option value="">请选择</option>'; | |
| 219 | + } | |
| 220 | + for(var i = 0; i < obj.length; i++){ | |
| 221 | + if(obj[i].companyCode == company){ | |
| 222 | + var children = obj[i].children; | |
| 223 | + for(var j = 0; j < children.length; j++){ | |
| 224 | + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 225 | + } | |
| 226 | + } | |
| 227 | + } | |
| 228 | + $('#fgsdm').html(options); | |
| 229 | +// initXl(); | |
| 230 | + } | |
| 231 | + | |
| 232 | + var tempData = {}; | |
| 233 | + $.get('/report/lineList',function(xlList){ | |
| 234 | + var data = []; | |
| 235 | + data.push({id: " ", text: "全部线路"}); | |
| 236 | + $.get('/user/companyData', function(result){ | |
| 237 | + for(var i = 0; i < result.length; i++){ | |
| 238 | + var companyCode = result[i].companyCode; | |
| 239 | + var children = result[i].children; | |
| 240 | + for(var j = 0; j < children.length; j++){ | |
| 241 | + var code = children[j].code; | |
| 242 | + for(var k=0;k < xlList.length;k++ ){ | |
| 243 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 244 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 245 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 246 | + } | |
| 247 | + } | |
| 248 | + } | |
| 249 | + } | |
| 250 | + initPinYinSelect2('#line',data,''); | |
| 251 | + | |
| 252 | + }); | |
| 253 | + }); | |
| 254 | + | |
| 255 | + $("#line").on("change", function(){ | |
| 256 | + if($("#line").val() == " "){ | |
| 257 | + $("#gsdm").attr("disabled", false); | |
| 258 | + $("#fgsdm").attr("disabled", false); | |
| 259 | + } else { | |
| 260 | + var temp = (tempData[$("#line").val()] ? tempData[$("#line").val()] : " : ").split(":"); | |
| 261 | + $("#gsdm").val(temp[0]); | |
| 262 | + updateCompany(); | |
| 263 | + $("#nature").val(0); | |
| 264 | + $("#fgsdm").val(temp[1]); | |
| 265 | + $("#gsdm").attr("disabled", true); | |
| 266 | + $("#fgsdm").attr("disabled", true); | |
| 267 | + } | |
| 268 | + }); | |
| 269 | + | |
| 270 | + | |
| 271 | + var line =""; | |
| 272 | + var xlName =""; | |
| 273 | + var date = ""; | |
| 274 | + var date2 =""; | |
| 275 | + var gsdm=""; | |
| 276 | + var fgsdm=""; | |
| 277 | + var nature=""; | |
| 278 | + var time1=""; | |
| 279 | + var time2=""; | |
| 280 | + $("#query").on("click",function(){ | |
| 281 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 282 | + layer.msg("请选择时间范围!"); | |
| 283 | + return; | |
| 284 | + } | |
| 285 | + if($("#date2").val() == null || $("#date2").val().trim().length == 0){ | |
| 286 | + layer.msg("请选择时间范围!"); | |
| 287 | + return; | |
| 288 | + } | |
| 289 | +// $("#tjrbBody").height($(window).height()-100); | |
| 290 | + line = $("#line").val(); | |
| 291 | + date = $("#date").val(); | |
| 292 | + date2 =$("#date2").val(); | |
| 293 | + gsdm =$("#gsdm").val(); | |
| 294 | + fgsdm=$("#fgsdm").val(); | |
| 295 | + nature=$("#nature").val(); | |
| 296 | + xlName = $("#select2-line-container").html(); | |
| 297 | + if(xlName == "全部线路") | |
| 298 | + xlName = $('#fgsdm option:selected').text(); | |
| 299 | + if(xlName == "请选择") | |
| 300 | + xlName = $('#gsdm option:selected').text(); | |
| 301 | + if(line=="请选择"){ | |
| 302 | + line=""; | |
| 303 | + } | |
| 304 | + time1 = Date.parse(new Date(date)); | |
| 305 | + time2 = Date.parse(new Date(date2)); | |
| 306 | + if(date==null || date =="" ||date2==null || date2 ==""){ | |
| 307 | + layer.msg('请选择时间段.'); | |
| 308 | + }else if(time2<time1){ | |
| 309 | + layer.msg('结束日期不能小于开始日期.'); | |
| 310 | + }else{ | |
| 311 | + if((time2-time1)>2678400000){ | |
| 312 | + layer.msg('查询超过一个月请点击【统计查询】.'); | |
| 313 | + }else{ | |
| 314 | + $("#tjrq").html(date+"至"+date2); | |
| 315 | + var params = {}; | |
| 316 | + params['gsdm'] = gsdm; | |
| 317 | + params['fgsdm'] =fgsdm ; | |
| 318 | + params['line'] = line; | |
| 319 | + params['date'] = date; | |
| 320 | + params['date2'] = date2; | |
| 321 | + params['xlName'] = xlName; | |
| 322 | + params['nature'] = nature; | |
| 323 | + params['type'] = "query"; | |
| 324 | + var i = layer.load(2); | |
| 325 | + $get('/realSchedule/statisticsDailyTj',params,function(result){ | |
| 326 | + // 把数据填充到模版中 | |
| 327 | + var tbodyHtml = template('statisticsDaily',{list:result}); | |
| 328 | + // 把渲染好的模版html文本追加到表格中 | |
| 329 | + $('#forms .statisticsDaily').html(tbodyHtml); | |
| 330 | + layer.close(i); | |
| 331 | + | |
| 332 | + if(result.length == 0){ | |
| 333 | + $("#export").attr('disabled',"true"); | |
| 334 | + }else{ | |
| 335 | + $("#export").removeAttr("disabled"); | |
| 336 | + } | |
| 337 | + }); | |
| 338 | + } | |
| 339 | + | |
| 340 | + } | |
| 341 | + | |
| 342 | + }); | |
| 343 | +// $("#tjrbBody").height($(window).height()-100); | |
| 344 | + $("#export").on("click",function(){ | |
| 345 | + var params = {}; | |
| 346 | + params['gsdm'] = gsdm; | |
| 347 | + params['fgsdm'] =fgsdm; | |
| 348 | + params['line'] = line; | |
| 349 | + date = $("#date").val(); | |
| 350 | + date2 =$("#date2").val(); | |
| 351 | + params['date'] = date; | |
| 352 | + params['date2'] = date2; | |
| 353 | + params['xlName'] = xlName; | |
| 354 | + params['nature'] = nature; | |
| 355 | + params['type'] = "export"; | |
| 356 | + if((time2-time1)>2678400000){ | |
| 357 | + layer.msg('查询超过一个月请点击【统计查询】.'); | |
| 358 | + }else{ | |
| 359 | + var i = layer.load(2); | |
| 360 | + $get('/realSchedule/statisticsDailyTj',params,function(result){ | |
| 361 | + var dateTime = ""; | |
| 362 | + if(date == date2){ | |
| 363 | + dateTime = moment(date).format("YYYYMMDD"); | |
| 364 | + } else { | |
| 365 | + dateTime = moment(date).format("YYYYMMDD") | |
| 366 | + +"-"+moment(date2).format("YYYYMMDD"); | |
| 367 | + } | |
| 368 | + window.open("/downloadFile/download?fileName=" | |
| 369 | + +dateTime+"-"+xlName+"-统计日报"); | |
| 370 | + layer.close(i); | |
| 371 | + }); | |
| 372 | + } | |
| 373 | + }); | |
| 374 | + | |
| 375 | + | |
| 376 | + $.get('/user/getCurrentUser', function(result){ | |
| 377 | + var roleName = ""; | |
| 378 | + $(result.roles).each(function(i, e){ | |
| 379 | + roleName += e.roleName + "、"; | |
| 380 | + }); | |
| 381 | + if(roleName.indexOf("浦交") > -1 || roleName.indexOf("拓华") > -1){ | |
| 382 | + $("#exportAll").show(); | |
| 383 | + } | |
| 384 | + }); | |
| 385 | + $("#exportAll").on("click",function(){ | |
| 386 | + var params = {}; | |
| 387 | + date = $("#date").val(); | |
| 388 | + date2 = $("#date2").val(); | |
| 389 | + nature = $("#nature").val(); | |
| 390 | + params['date'] = date; | |
| 391 | + params['date2'] = date2; | |
| 392 | + params['nature'] = nature; | |
| 393 | + params['type'] = "exportAll"; | |
| 394 | + if((time2-time1)>2678400000){ | |
| 395 | + layer.msg('查询超过一个月请点击【统计查询】.'); | |
| 396 | + }else{ | |
| 397 | + var i = layer.load(2); | |
| 398 | + $get('/realSchedule/statisticsDailyTj',params,function(result){ | |
| 399 | + var dateTime = ""; | |
| 400 | + if(date == date2){ | |
| 401 | + dateTime = moment(date).format("YYYYMMDD"); | |
| 402 | + } else { | |
| 403 | + dateTime = moment(date).format("YYYYMMDD") | |
| 404 | + +"-"+moment(date2).format("YYYYMMDD"); | |
| 405 | + } | |
| 406 | + window.open("/downloadFile/download?fileName=" | |
| 407 | + +dateTime+"-全部公司-统计日报"); | |
| 408 | + layer.close(i); | |
| 409 | + }); | |
| 410 | + } | |
| 411 | + }); | |
| 412 | + | |
| 413 | + }); | |
| 414 | +</script> | |
| 415 | +<script type="text/html" id="statisticsDaily"> | |
| 416 | + {{each list as obj i}} | |
| 417 | + <tr {{if obj.zt==1}}style='color: red'{{/if}}> | |
| 418 | + <td>{{obj.fgsName}}</td> | |
| 419 | + <td>{{obj.xlName}}</td> | |
| 420 | + <td>{{obj.jhzlc}}</td> | |
| 421 | + <td>{{obj.jhlc}}</td> | |
| 422 | + <td>{{obj.jcclc}}</td> | |
| 423 | + <td>{{obj.sjzgl}}</td> | |
| 424 | + <td>{{obj.sjgl}}</td> | |
| 425 | + <td>{{obj.sjksgl}}</td> | |
| 426 | + <td>{{obj.ssgl}}</td> | |
| 427 | + <td>{{obj.ssbc}}</td> | |
| 428 | + <td>{{obj.ssgl_lz}}</td> | |
| 429 | + <td>{{obj.ssgl_dm}}</td> | |
| 430 | + <td>{{obj.ssgl_gz}}</td> | |
| 431 | + <td>{{obj.ssgl_jf}}</td> | |
| 432 | + <td>{{obj.ssgl_zs}}</td> | |
| 433 | + <td>{{obj.ssgl_qr}}</td> | |
| 434 | + <td>{{obj.ssgl_qc}}</td> | |
| 435 | + <td>{{obj.ssgl_kx}}</td> | |
| 436 | + <td>{{obj.ssgl_qh}}</td> | |
| 437 | + <td>{{obj.ssgl_yw}}</td> | |
| 438 | + <td>{{obj.ssgl_other}}</td> | |
| 439 | + <td>{{obj.ljgl}}</td> | |
| 440 | + <td>{{obj.ljks}}</td> | |
| 441 | + <td>{{obj.jhbc}}</td> | |
| 442 | + <td>{{obj.jhbc_m}}</td> | |
| 443 | + <td>{{obj.jhbc_a}}</td> | |
| 444 | + <td>{{obj.sjbc}}</td> | |
| 445 | + <td>{{obj.sjbc_m}}</td> | |
| 446 | + <td>{{obj.sjbc_a}}</td> | |
| 447 | + <td>{{obj.ljbc}}</td> | |
| 448 | + <td>{{obj.ljbc_m}}</td> | |
| 449 | + <td>{{obj.ljbc_a}}</td> | |
| 450 | + <td>{{obj.fzbc}}</td> | |
| 451 | + <td>{{obj.fzbc_m}}</td> | |
| 452 | + <td>{{obj.fzbc_a}}</td> | |
| 453 | + <td>{{obj.dtbc}}</td> | |
| 454 | + <td>{{obj.dtbc_m}}</td> | |
| 455 | + <td>{{obj.dtbc_a}}</td> | |
| 456 | + <td>{{obj.djg}}</td> | |
| 457 | + <td>{{obj.djg_m}}</td> | |
| 458 | + <td>{{obj.djg_a}}</td> | |
| 459 | + <td>{{obj.djg_time}}</td> | |
| 460 | + <td> </td> | |
| 461 | + </tr> | |
| 462 | + {{/each}} | |
| 463 | + {{if list.length == 0}} | |
| 464 | + <tr> | |
| 465 | + <td colspan="44"><h6 class="muted">没有找到相关数据</h6></td> | |
| 466 | + </tr> | |
| 467 | + {{/if}} | |
| 428 | 468 | </script> |
| 429 | 469 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/statement/statisticsDailyCalc2.html
| ... | ... | @@ -71,6 +71,7 @@ |
| 71 | 71 | <div class="form-group"> |
| 72 | 72 | <input class="btn btn-default" type="button" id="query" value="查询"/> |
| 73 | 73 | <input class="btn btn-default" type="button" id="export" value="导出"/> |
| 74 | + <input class="btn btn-default" type="button" id="exportAll" value="导出全部公司" style="display: none;"/> | |
| 74 | 75 | </div> |
| 75 | 76 | </form> |
| 76 | 77 | </div> |
| ... | ... | @@ -353,6 +354,41 @@ |
| 353 | 354 | layer.close(i); |
| 354 | 355 | }); |
| 355 | 356 | }); |
| 357 | + | |
| 358 | + | |
| 359 | + $.get('/user/getCurrentUser', function(result){ | |
| 360 | + var roleName = ""; | |
| 361 | + $(result.roles).each(function(i, e){ | |
| 362 | + roleName += e.roleName + "、"; | |
| 363 | + }); | |
| 364 | + if(roleName.indexOf("浦交") > -1 || roleName.indexOf("拓华") > -1){ | |
| 365 | + $("#exportAll").show(); | |
| 366 | + } | |
| 367 | + }); | |
| 368 | + $("#exportAll").on("click",function(){ | |
| 369 | + var params = {}; | |
| 370 | + date = $("#date").val(); | |
| 371 | + date2 = $("#date2").val(); | |
| 372 | + nature = $("#nature").val(); | |
| 373 | + params['date'] = date; | |
| 374 | + params['date2'] = date2; | |
| 375 | + params['nature'] = nature; | |
| 376 | + params['type'] = "exportAll"; | |
| 377 | + var i = layer.load(2); | |
| 378 | +// $get('/realSchedule/statisticsDailyTj',params,function(result){ | |
| 379 | + $get('/calcWaybill/calcStatisticsDaily',params,function(result){ | |
| 380 | + var dateTime = ""; | |
| 381 | + if(date == date2){ | |
| 382 | + dateTime = moment(date).format("YYYYMMDD"); | |
| 383 | + } else { | |
| 384 | + dateTime = moment(date).format("YYYYMMDD") | |
| 385 | + +"-"+moment(date2).format("YYYYMMDD"); | |
| 386 | + } | |
| 387 | + window.open("/downloadFile/download?fileName=" | |
| 388 | + +dateTime+"-全部公司-统计日报"); | |
| 389 | + layer.close(i); | |
| 390 | + }); | |
| 391 | + }); | |
| 356 | 392 | |
| 357 | 393 | }); |
| 358 | 394 | </script> | ... | ... |
src/main/resources/static/pages/home.html
| ... | ... | @@ -83,15 +83,24 @@ |
| 83 | 83 | success: function(rs) { |
| 84 | 84 | if (rs && rs.status === "SUCCESS") { |
| 85 | 85 | if (rs.data && rs.data.length && rs.data.length > 0) { |
| 86 | - var text = ""; | |
| 86 | + var htmlText = ""; | |
| 87 | + var wrapData = []; | |
| 87 | 88 | if (rs.data.length > 8) { |
| 88 | - text = "部分停用信息如下:</br>" + rs.data.slice(0, 8).join("</br>"); | |
| 89 | + htmlText = "<span style='font-weight: bold; font-style: italic; '>部分停用信息如下:</span></br>"; | |
| 90 | + wrapData = rs.data.slice(0, 8); | |
| 89 | 91 | } else { |
| 90 | - text = "所有停用信息如下:</br>" + rs.data.join("</br>"); | |
| 92 | + htmlText = "<span style='font-weight: bold; font-style: italic; '>所有停用信息如下:</span></br>"; | |
| 93 | + wrapData = rs.data; | |
| 91 | 94 | } |
| 95 | + $.each(wrapData, function(index, value) { | |
| 96 | + wrapData[index] = "<span style='font-size: 14px;'>" + value + "</span>"; | |
| 97 | + }); | |
| 98 | + | |
| 99 | + htmlText += wrapData.join("</br>"); | |
| 100 | + | |
| 92 | 101 | swal({ |
| 93 | - title: "人员配置停用信息", | |
| 94 | - text: text, | |
| 102 | + title: "排班人员停用信息", | |
| 103 | + text: htmlText, | |
| 95 | 104 | html: true, |
| 96 | 105 | type: "warning", |
| 97 | 106 | showCancelButton: true, | ... | ... |
src/main/resources/static/pages/mforms/turnoutrates/calcTurnoutrate.html
| ... | ... | @@ -50,7 +50,7 @@ |
| 50 | 50 | <select class="form-control" name="line" id="line" style="width: 140px;"></select> |
| 51 | 51 | </div> |
| 52 | 52 | <div style="margin-top: 10px"></div> |
| 53 | - <div style="display: inline-block;"> | |
| 53 | + <div style="display: inline-block;margin-left: 3px;"> | |
| 54 | 54 | <span class="item-label" style="width: 80px;">线路性质: </span> <select |
| 55 | 55 | class="form-control" name="nature" id="nature" |
| 56 | 56 | style="width: 140px;"> |
| ... | ... | @@ -59,17 +59,18 @@ |
| 59 | 59 | <option value="2">非营运线路</option> |
| 60 | 60 | </select> |
| 61 | 61 | </div> |
| 62 | - <div style="display: inline-block;margin-left: 15px;"> | |
| 62 | + <div style="display: inline-block;margin-left: 11px;"> | |
| 63 | 63 | <span class="item-label" style="width: 80px;">开始时间: </span> |
| 64 | 64 | <input class="form-control" type="text" id="startDate" style="width: 140px;"/> |
| 65 | 65 | </div> |
| 66 | - <div style="display: inline-block;margin-left: 15px;"> | |
| 66 | + <div style="display: inline-block;margin-left: 16px;"> | |
| 67 | 67 | <span class="item-label" style="width: 80px;">结束时间: </span> |
| 68 | 68 | <input class="form-control" type="text" id="endDate" style="width: 140px;"/> |
| 69 | 69 | </div> |
| 70 | 70 | <div class="form-group"> |
| 71 | 71 | <input class="btn btn-default" type="button" id="query" value="筛选"/> |
| 72 | 72 | <input class="btn btn-default" type="button" id="export" value="导出"/> |
| 73 | + <input class="btn btn-default" type="button" id="exportAll" value="导出全部公司" style="display: none;"/> | |
| 73 | 74 | </div> |
| 74 | 75 | </form> |
| 75 | 76 | </div> |
| ... | ... | @@ -294,6 +295,39 @@ |
| 294 | 295 | layer.close(i); |
| 295 | 296 | }); |
| 296 | 297 | }); |
| 298 | + | |
| 299 | + | |
| 300 | + $.get('/user/getCurrentUser', function(result){ | |
| 301 | + var roleName = ""; | |
| 302 | + $(result.roles).each(function(i, e){ | |
| 303 | + roleName += e.roleName + "、"; | |
| 304 | + }); | |
| 305 | + if(roleName.indexOf("浦交") > -1 || roleName.indexOf("拓华") > -1){ | |
| 306 | + $("#exportAll").show(); | |
| 307 | + } | |
| 308 | + }); | |
| 309 | + $("#exportAll").on("click",function(){ | |
| 310 | + var params = {}; | |
| 311 | + startDate=$("#startDate").val(); | |
| 312 | + endDate=$("#endDate").val(); | |
| 313 | + params['startDate'] = startDate; | |
| 314 | + params['endDate'] = endDate; | |
| 315 | + params['nature'] = $("#nature").val(); | |
| 316 | + params['type'] = "exportAll"; | |
| 317 | + var i = layer.load(2); | |
| 318 | + $get('/calcSheet/calcTurnoutrate',params,function(result){ | |
| 319 | + var dateTime = ""; | |
| 320 | + if(startDate == endDate){ | |
| 321 | + dateTime = startDate; | |
| 322 | + } else { | |
| 323 | + dateTime = startDate+"-"+endDate; | |
| 324 | + } | |
| 325 | + window.open("/downloadFile/download?fileName=" | |
| 326 | + +dateTime+"-全部公司-营运线路出车率统计表"); | |
| 327 | + layer.close(i); | |
| 328 | + }); | |
| 329 | + }); | |
| 330 | + | |
| 297 | 331 | }); |
| 298 | 332 | </script> |
| 299 | 333 | <script type="text/html" id="calcTurnoutrate"> | ... | ... |
src/main/resources/static/pages/oil/list_ph.html
| ... | ... | @@ -358,7 +358,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 358 | 358 | //console.log("核对加注量"); |
| 359 | 359 | if ($("#rq").val() != "") { |
| 360 | 360 | var params=getParamsList(); |
| 361 | - $get('/ylb/checkDate',params,function(status){ | |
| 361 | + var par={}; | |
| 362 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 363 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 364 | + $get('/ylb/checkDate',par,function(status){ | |
| 362 | 365 | if(status=='2'){ |
| 363 | 366 | layer.msg('只能操作三天内数据.'); |
| 364 | 367 | }else{ |
| ... | ... | @@ -380,7 +383,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 380 | 383 | // console.log("进场油量等于出场油量"); |
| 381 | 384 | if ($("#rq").val() != "") { |
| 382 | 385 | var params=getParamsList(); |
| 383 | - $get('/ylb/checkDate',params,function(status){ | |
| 386 | + var par={}; | |
| 387 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 388 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 389 | + $get('/ylb/checkDate',par,function(status){ | |
| 384 | 390 | if(status=='2'){ |
| 385 | 391 | layer.msg('只能操作三天内数据.'); |
| 386 | 392 | }else{ |
| ... | ... | @@ -400,7 +406,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 400 | 406 | $(".saveButton").on('click',function(){ |
| 401 | 407 | |
| 402 | 408 | var params_=getParamsList(); |
| 403 | - $get('/ylb/checkDate',params_,function(status){ | |
| 409 | + var par={}; | |
| 410 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 411 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 412 | + $get('/ylb/checkDate',par,function(status){ | |
| 404 | 413 | if(status=='2'){ |
| 405 | 414 | layer.msg('只能操作三天内数据.'); |
| 406 | 415 | }else{ |
| ... | ... | @@ -464,7 +473,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 464 | 473 | $(".sortButton").on('click', function () { |
| 465 | 474 | if ($("#rq").val() != "") { |
| 466 | 475 | var params_=getParamsList(); |
| 467 | - $get('/ylb/checkDate',params_,function(status){ | |
| 476 | + var par={}; | |
| 477 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 478 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 479 | + $get('/ylb/checkDate',par,function(status){ | |
| 468 | 480 | if(status=='2'){ |
| 469 | 481 | layer.msg('只能操作三天内数据.'); |
| 470 | 482 | }else{ |
| ... | ... | @@ -632,7 +644,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 632 | 644 | //console.log("获取加存"); |
| 633 | 645 | if ($("#rq").val() != "") { |
| 634 | 646 | var params=getParamsList(); |
| 635 | - $get('/ylb/checkDate',params,function(status){ | |
| 647 | + var par={}; | |
| 648 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 649 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 650 | + $get('/ylb/checkDate',par,function(status){ | |
| 636 | 651 | if(status=='2'){ |
| 637 | 652 | layer.msg('只能操作三天内数据.'); |
| 638 | 653 | }else{ |
| ... | ... | @@ -788,7 +803,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 788 | 803 | |
| 789 | 804 | function jsyUpdate(){ |
| 790 | 805 | var params=getParamsList(); |
| 791 | - $get('/ylb/checkDate',params,function(status){ | |
| 806 | + var par={}; | |
| 807 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 808 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 809 | + $get('/ylb/checkDate',par,function(status){ | |
| 792 | 810 | var id = $(this).data('id'); |
| 793 | 811 | if(status=='2'){ |
| 794 | 812 | layer.msg('只能操作三天内数据.'); |
| ... | ... | @@ -926,7 +944,10 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 926 | 944 | //删除 |
| 927 | 945 | $('.removeButton').on('click', function () { |
| 928 | 946 | var params_=getParamsList(); |
| 929 | - $get('/ylb/checkDate',params_,function(status){ | |
| 947 | + var par={}; | |
| 948 | + par["rq"] = moment($("#rq").val()).subtract(2, 'days').format("YYYY-MM-DD"); | |
| 949 | + par["ssgsdm_like"] = $("#ylbListGsdmId").val(); | |
| 950 | + $get('/ylb/checkDate',par,function(status){ | |
| 930 | 951 | if(status=='2'){ |
| 931 | 952 | layer.msg('只能操作三天内数据.'); |
| 932 | 953 | }else{ | ... | ... |
src/main/resources/static/pages/report/countMileage/countLine/countMileageSum.html
0 → 100644
| 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 | + | |
| 18 | + #forms > thead > tr> td >span{ | |
| 19 | + width: 5px; | |
| 20 | + word-wrap: break-word; | |
| 21 | + letter-spacing: 20px; | |
| 22 | + } | |
| 23 | + | |
| 24 | + #forms > thead > tr> td >label{ | |
| 25 | + word-break: keep-all;white-space:nowrap; | |
| 26 | + } | |
| 27 | +</style> | |
| 28 | + | |
| 29 | +<div class="page-head"> | |
| 30 | + <div class="page-title"> | |
| 31 | + <h1>审计公里汇总表</h1> | |
| 32 | + </div> | |
| 33 | +</div> | |
| 34 | + | |
| 35 | +<div class="row"> | |
| 36 | + <div class="col-md-12"> | |
| 37 | + <div class="portlet light porttlet-fit bordered"> | |
| 38 | + <div class="portlet-title"> | |
| 39 | + <form class="form-inline" action=""> | |
| 40 | + <div style="display: inline-block;"> | |
| 41 | + <span class="item-label" style="width: 80px;">线路性质: </span> | |
| 42 | + <select | |
| 43 | + class="form-control" name="nature" id="nature" | |
| 44 | + style="width: 180px;"> | |
| 45 | + <option value="0">全部线路</option> | |
| 46 | + <option value="1" selected="selected">营运线路</option> | |
| 47 | + <option value="2">非营运线路</option> | |
| 48 | + </select> | |
| 49 | + </div> | |
| 50 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 51 | + <span class="item-label" style="width: 80px;">开始日期: </span> | |
| 52 | + <input class="form-control" type="text" id="date" style="width: 180px;"/> | |
| 53 | + </div> | |
| 54 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 55 | + <span class="item-label" style="width: 80px;">结束日期: </span> | |
| 56 | + <input class="form-control" type="text" id="date2" style="width: 180px;"/> | |
| 57 | + </div> | |
| 58 | + <div class="form-group"> | |
| 59 | + <input class="btn btn-default" type="button" id="query" value="查询"/> | |
| 60 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 61 | + </div> | |
| 62 | + </form> | |
| 63 | + </div> | |
| 64 | + <div class="portlet-body"> | |
| 65 | + <div class="table-container" id="countLine" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 66 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | |
| 67 | + <thead> | |
| 68 | + <tr> | |
| 69 | + <th colspan="30"><label id="datetodate"></label> 审计公里汇总表</th> | |
| 70 | + </tr> | |
| 71 | + <tr> | |
| 72 | + <td rowspan="2"><span>公司</span></td> | |
| 73 | + <td rowspan="2"><span>分公司</span></td> | |
| 74 | + <td rowspan="2"><label>计划</label><label>总公里</label></td> | |
| 75 | + <td rowspan="2"><label>计划营</label><label>运公里</label></td> | |
| 76 | + <td rowspan="2"><label>计划空</label><label>驶公里</label></td> | |
| 77 | + <td rowspan="2"><label>实际</label><label>总公里</label></td> | |
| 78 | + <td colspan="2"><label>实际营</label><label>运公里</label></td> | |
| 79 | + <td colspan="6"><label>实际空</label><label>驶公里</label></td> | |
| 80 | + <td rowspan="2"><label>少驶营</label><label>运里程</label></td> | |
| 81 | + <td colspan="11">少驶原因(公里)</td> | |
| 82 | + <td colspan="3">临加公里</td> | |
| 83 | + </tr> | |
| 84 | + <tr> | |
| 85 | + <td><label>计划内</label><label>营运</label><label>里程</label></td> | |
| 86 | + <td><label>临时性</label><label>多样化</label><label>调度营</label><label>运里程</label></td> | |
| 87 | + <td><label>计划内</label><label>进出场</label><label>空驶</label></td> | |
| 88 | + <td><label>计划外</label><label>进出场</label><label>空驶</label></td> | |
| 89 | + <td><label>故障</label><label>进出场</label><label>空驶</label></td> | |
| 90 | + <td><label>肇事</label><label>进出场</label><label>空驶</label></td> | |
| 91 | + <td><label>纠纷</label><label>进出场</label><label>空驶</label></td> | |
| 92 | + <td><label>空放 </label><label>空驶</label></td> | |
| 93 | + <td><span>路阻</span></td> | |
| 94 | + <td><span>吊慢</span></td> | |
| 95 | + <td><span>故障</span></td> | |
| 96 | + <td><span>纠纷</span></td> | |
| 97 | + <td><span>肇事</span></td> | |
| 98 | + <td><span>缺人</span></td> | |
| 99 | + <td><span>缺车</span></td> | |
| 100 | + <td><span>客稀</span></td> | |
| 101 | + <td><span>气候</span></td> | |
| 102 | + <td><span>援外</span></td> | |
| 103 | + <td><span>其他</span></td> | |
| 104 | + <td><label>临加营</label><label>运公里</label></td> | |
| 105 | + <td><label>临加进出</label><label>场空驶</label></td> | |
| 106 | + <td><label>临加</label><label>空放</label><label>空驶</label></td> | |
| 107 | + </tr> | |
| 108 | + | |
| 109 | + </thead> | |
| 110 | + <tbody class="count_mileage_sum"> | |
| 111 | + | |
| 112 | + </tbody> | |
| 113 | + </table> | |
| 114 | + </div> | |
| 115 | + </div> | |
| 116 | + </div> | |
| 117 | + </div> | |
| 118 | +</div> | |
| 119 | + | |
| 120 | +<script> | |
| 121 | + $(function(){ | |
| 122 | +// $('#export').attr('disabled', "true"); | |
| 123 | + | |
| 124 | + // 关闭左侧栏 | |
| 125 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 126 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 127 | + | |
| 128 | + $("#date").datetimepicker({ | |
| 129 | + format : 'YYYY-MM-DD', | |
| 130 | + locale : 'zh-cn' | |
| 131 | + }); | |
| 132 | + $("#date2").datetimepicker({ | |
| 133 | + format : 'YYYY-MM-DD', | |
| 134 | + locale : 'zh-cn' | |
| 135 | + }); | |
| 136 | + | |
| 137 | + var d = new Date(); | |
| 138 | + var year = d.getFullYear(); | |
| 139 | + var month = d.getMonth() + 1; | |
| 140 | + var day = d.getDate(); | |
| 141 | + if(month < 10) | |
| 142 | + month = "0" + month; | |
| 143 | + if(day < 10) | |
| 144 | + day = "0" + day; | |
| 145 | + $("#date").val(year + "-" + month + "-" + day); | |
| 146 | + $("#date2").val(year + "-" + month + "-" + day); | |
| 147 | + | |
| 148 | + var date = ""; | |
| 149 | + var date2 = ""; | |
| 150 | + var nature = ""; | |
| 151 | + $("#query").on("click",function(){ | |
| 152 | + $("#countLine").height($(window).height()-280); | |
| 153 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 154 | + layer.msg("请选择日期!"); | |
| 155 | + return; | |
| 156 | + } | |
| 157 | + if($("#date2").val() == null || $("#date2").val().trim().length == 0){ | |
| 158 | + layer.msg("请选择日期!"); | |
| 159 | + return; | |
| 160 | + } | |
| 161 | + date = $("#date").val(); | |
| 162 | + date2 = $("#date2").val(); | |
| 163 | +// if(date==null || date =="" ||date2==null || date2 ==""){ | |
| 164 | +// layer.msg('请选择时间段.'); | |
| 165 | +// }else{ | |
| 166 | + nature = $("#nature").val(); | |
| 167 | + var params = {}; | |
| 168 | + params['date'] = date; | |
| 169 | + params['date2'] = date2; | |
| 170 | + params['nature'] = nature; | |
| 171 | + params['type'] = "query"; | |
| 172 | + var i = layer.load(2); | |
| 173 | + $get('/report/countMileageSum',params,function(result){ | |
| 174 | + layer.close(i); | |
| 175 | + $("#datetodate").html(date); | |
| 176 | + // 把数据填充到模版中 | |
| 177 | + var tbodyHtml = template('count_mileage_sum',{list:result}); | |
| 178 | + // 把渲染好的模版html文本追加到表格中 | |
| 179 | + $('#forms .count_mileage_sum').html(tbodyHtml); | |
| 180 | + | |
| 181 | + if(result.length == 0) | |
| 182 | + $("#export").attr('disabled',"true"); | |
| 183 | + else | |
| 184 | + $("#export").removeAttr("disabled"); | |
| 185 | + }); | |
| 186 | +// } | |
| 187 | + | |
| 188 | + }); | |
| 189 | + | |
| 190 | + $("#countLine").height($(window).height()-280); | |
| 191 | + $("#export").on("click",function(){ | |
| 192 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 193 | + layer.msg("请选择日期!"); | |
| 194 | + return; | |
| 195 | + }if($("#date2").val() == null || $("#date2").val().trim().length == 0){ | |
| 196 | + layer.msg("请选择日期!"); | |
| 197 | + return; | |
| 198 | + } | |
| 199 | + date = $("#date").val(); | |
| 200 | + date2 = $("#date2").val(); | |
| 201 | + nature = $("#nature").val(); | |
| 202 | + var params = {}; | |
| 203 | + params['date'] = date; | |
| 204 | + params['date2'] = date2; | |
| 205 | + params['nature'] = nature; | |
| 206 | + params['type'] = "export"; | |
| 207 | + params['by']='sj'; | |
| 208 | + var i = layer.load(2); | |
| 209 | + $get('/report/countMileageSum',params,function(result){ | |
| 210 | + var dateTime = ""; | |
| 211 | + if(date == date2){ | |
| 212 | + dateTime = moment(date).format("YYYYMMDD"); | |
| 213 | + } else { | |
| 214 | + dateTime = moment(date).format("YYYYMMDD") | |
| 215 | + +"-"+moment(date2).format("YYYYMMDD"); | |
| 216 | + } | |
| 217 | + window.open("/downloadFile/download?fileName=" | |
| 218 | + +dateTime+"-审计公里汇总表"); | |
| 219 | + layer.close(i); | |
| 220 | + }); | |
| 221 | + }); | |
| 222 | + }); | |
| 223 | +</script> | |
| 224 | +<script type="text/html" id="count_mileage_sum"> | |
| 225 | + {{each list as obj i}} | |
| 226 | + <tr style='{{if obj.fgsName=='小计' || obj.gsName=='浦交'}}background-color: #b9d6fb;{{/if}}'> | |
| 227 | + <td>{{obj.gsName}}</td> | |
| 228 | + <td>{{obj.fgsName}}</td> | |
| 229 | + <td>{{obj.jhzlc}}</td> | |
| 230 | + <td>{{obj.jhlc}}</td> | |
| 231 | + <td>{{obj.jcclc}}</td> | |
| 232 | + <td>{{obj.sjzgl}}</td> | |
| 233 | + <td>{{obj.jhnlc}}</td> | |
| 234 | + <td>{{obj.jhwlc}}</td> | |
| 235 | + <td>{{obj.jhnjcclc}}</td> | |
| 236 | + <td>{{obj.jhwjcclc_z}}</td> | |
| 237 | + <td>{{obj.zrwjcclc}}</td> | |
| 238 | + <td>{{obj.zrwjcclc1}}</td> | |
| 239 | + <td>{{obj.zrwjcclc2}}</td> | |
| 240 | + <td>{{obj.kfks}}</td> | |
| 241 | + <td>{{obj.lbss}}</td> | |
| 242 | + <td>{{obj.ssgl_lz}}</td> | |
| 243 | + <td>{{obj.ssgl_dm}}</td> | |
| 244 | + <td>{{obj.ssgl_gz}}</td> | |
| 245 | + <td>{{obj.ssgl_jf}}</td> | |
| 246 | + <td>{{obj.ssgl_zs}}</td> | |
| 247 | + <td>{{obj.ssgl_qr}}</td> | |
| 248 | + <td>{{obj.ssgl_qc}}</td> | |
| 249 | + <td>{{obj.ssgl_kx}}</td> | |
| 250 | + <td>{{obj.ssgl_qh}}</td> | |
| 251 | + <td>{{obj.ssgl_yw}}</td> | |
| 252 | + <td>{{obj.ssgl_other}}</td> | |
| 253 | + <td>{{obj.ljyy}}</td> | |
| 254 | + <td>{{obj.ljjcc}}</td> | |
| 255 | + <td>{{obj.ljkfks}}</td> | |
| 256 | + </tr> | |
| 257 | + {{/each}} | |
| 258 | + {{if list.length == 0}} | |
| 259 | + <tr> | |
| 260 | + <td colspan="30"><h6 class="muted">没有找到相关数据</h6></td> | |
| 261 | + </tr> | |
| 262 | + {{/if}} | |
| 263 | +</script> | |
| 0 | 264 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/report/sheet/calcSheetList.html
| ... | ... | @@ -373,8 +373,10 @@ |
| 373 | 373 | <td>{{obj.sjszddzds}}</td> |
| 374 | 374 | <td>{{obj.szddzdl}}</td> |
| 375 | 375 | <td> |
| 376 | - <button type="button" class="btn btn-sm blue btn-calcSheetList" | |
| 377 | - data-id="{{obj.xl}}">查看</button> | |
| 376 | + {{if obj.xl && obj.xl > 0}} | |
| 377 | + <button type="button" class="btn btn-sm blue btn-calcSheetList" | |
| 378 | + data-id="{{obj.xl}}">查看</button> | |
| 379 | + {{/if}} | |
| 378 | 380 | </td> |
| 379 | 381 | </tr> |
| 380 | 382 | {{/each}} |
| ... | ... | @@ -411,7 +413,7 @@ |
| 411 | 413 | {{/each}} |
| 412 | 414 | {{if list.length == 0}} |
| 413 | 415 | <tr> |
| 414 | - <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> | |
| 416 | + <td colspan="9"><h6 class="muted">没有找到相关数据</h6></td> | |
| 415 | 417 | </tr> |
| 416 | 418 | {{/if}} |
| 417 | 419 | </script> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
| ... | ... | @@ -967,6 +967,87 @@ angular.module('ScheduleApp').factory( |
| 967 | 967 | } |
| 968 | 968 | } |
| 969 | 969 | ), |
| 970 | + | |
| 971 | + pvInfoExport: $resource( | |
| 972 | + '/tidc/exportPvInfo/:id', | |
| 973 | + {id: '@id'}, | |
| 974 | + { | |
| 975 | + do: { | |
| 976 | + method: 'GET', | |
| 977 | + responseType: "arraybuffer", | |
| 978 | + transformResponse: function(data, headers, status){ | |
| 979 | + if (status != 200) { | |
| 980 | + return data; | |
| 981 | + } | |
| 982 | + | |
| 983 | + // console.log(headers("Content-Disposition")); | |
| 984 | + // 获取文件名,后台根据是否还有中文名字,返回filename=ascii编码的文件名 或 filename*=unicode编码的文件名 | |
| 985 | + var fileName = headers("Content-Disposition").split(";")[1].split("filename=")[1]; | |
| 986 | + var fileNameUnicode = headers("Content-Disposition").split("filename*=")[1]; | |
| 987 | + if (fileNameUnicode) {//当存在 filename* 时,取filename* 并进行解码(为了解决中文乱码问题) | |
| 988 | + fileName = decodeURIComponent(fileNameUnicode); | |
| 989 | + } | |
| 990 | + | |
| 991 | + return {fileData : data, fileName: fileName}; | |
| 992 | + } | |
| 993 | + } | |
| 994 | + } | |
| 995 | + ), | |
| 996 | + | |
| 997 | + addLp: $resource( | |
| 998 | + '/tidc/addLp/:ttInfoId/:lpId', | |
| 999 | + {}, | |
| 1000 | + { | |
| 1001 | + do: { | |
| 1002 | + method: 'GET', | |
| 1003 | + transformResponse: function(rs) { | |
| 1004 | + var dst = angular.fromJson(rs); | |
| 1005 | + if (dst.status == 'SUCCESS') { | |
| 1006 | + return {msg: dst.data}; | |
| 1007 | + } else { | |
| 1008 | + return {error: dst.msg}; // 业务错误留给控制器处理 | |
| 1009 | + } | |
| 1010 | + } | |
| 1011 | + } | |
| 1012 | + } | |
| 1013 | + ), | |
| 1014 | + | |
| 1015 | + removeLp: $resource( | |
| 1016 | + '/tidc/removeLp/:ttInfoId/:lpId', | |
| 1017 | + {}, | |
| 1018 | + { | |
| 1019 | + do: { | |
| 1020 | + method: 'GET', | |
| 1021 | + transformResponse: function(rs) { | |
| 1022 | + var dst = angular.fromJson(rs); | |
| 1023 | + if (dst.status == 'SUCCESS') { | |
| 1024 | + return {msg: dst.data}; | |
| 1025 | + } else { | |
| 1026 | + return {error: dst.msg}; // 业务错误留给控制器处理 | |
| 1027 | + } | |
| 1028 | + } | |
| 1029 | + } | |
| 1030 | + } | |
| 1031 | + ), | |
| 1032 | + | |
| 1033 | + switchLp: $resource( | |
| 1034 | + '/tidc/switchLp/:ttInfoId/:lpAId/:lpBId', | |
| 1035 | + {}, | |
| 1036 | + { | |
| 1037 | + do: { | |
| 1038 | + method: 'GET', | |
| 1039 | + transformResponse: function(rs) { | |
| 1040 | + var dst = angular.fromJson(rs); | |
| 1041 | + if (dst.status == 'SUCCESS') { | |
| 1042 | + return {msg: dst.data}; | |
| 1043 | + } else { | |
| 1044 | + return {error: dst.msg}; // 业务错误留给控制器处理 | |
| 1045 | + } | |
| 1046 | + } | |
| 1047 | + } | |
| 1048 | + } | |
| 1049 | + ), | |
| 1050 | + | |
| 970 | 1051 | edit: $resource( |
| 971 | 1052 | '/tidc/edit/:xlid/:ttid', |
| 972 | 1053 | {}, |
| ... | ... | @@ -1017,7 +1098,8 @@ angular.module('ScheduleApp').factory( |
| 1017 | 1098 | } |
| 1018 | 1099 | |
| 1019 | 1100 | ] |
| 1020 | -); | |
| 1101 | +); | |
| 1102 | + | |
| 1021 | 1103 | // 时刻表日志管理service |
| 1022 | 1104 | angular.module('ScheduleApp').factory( |
| 1023 | 1105 | 'TimetableLogManageService_g', | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-ui-route-state.js
| ... | ... | @@ -1357,13 +1357,70 @@ ScheduleApp.config([ |
| 1357 | 1357 | }] |
| 1358 | 1358 | } |
| 1359 | 1359 | }) |
| 1360 | - | |
| 1360 | + .state("ttInfoDetailManage_detail_edit_addLp", { // 时刻表 添加路牌 | |
| 1361 | + url: '/ttInfoDetailManage_detail_edit_addLp/:xlid/:ttid/:xlname/:ttname/:lineversion', | |
| 1362 | + views: { | |
| 1363 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-addLp.html'} | |
| 1364 | + }, | |
| 1365 | + resolve: { | |
| 1366 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 1367 | + return $ocLazyLoad.load({ | |
| 1368 | + name: 'ttInfoDetailManage_detail_edit_addLp', | |
| 1369 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 1370 | + files: [ | |
| 1371 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | |
| 1372 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | |
| 1373 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js" | |
| 1374 | + ] | |
| 1375 | + }); | |
| 1376 | + }] | |
| 1377 | + } | |
| 1378 | + }) | |
| 1379 | + .state("ttInfoDetailManage_detail_edit_removeLp", { // 时刻表 删除路牌 | |
| 1380 | + url: '/ttInfoDetailManage_detail_edit_removeLp/:xlid/:ttid/:xlname/:ttname/:lineversion', | |
| 1381 | + views: { | |
| 1382 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-removeLp.html'} | |
| 1383 | + }, | |
| 1384 | + resolve: { | |
| 1385 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 1386 | + return $ocLazyLoad.load({ | |
| 1387 | + name: 'ttInfoDetailManage_detail_edit_removeLp', | |
| 1388 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 1389 | + files: [ | |
| 1390 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | |
| 1391 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | |
| 1392 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js" | |
| 1393 | + ] | |
| 1394 | + }); | |
| 1395 | + }] | |
| 1396 | + } | |
| 1397 | + }) | |
| 1398 | + .state("ttInfoDetailManage_detail_edit_switchLp", { // 时刻表 调换路牌 | |
| 1399 | + url: '/ttInfoDetailManage_detail_edit_switchLp/:xlid/:ttid/:xlname/:ttname/:lineversion', | |
| 1400 | + views: { | |
| 1401 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-switchLp.html'} | |
| 1402 | + }, | |
| 1403 | + resolve: { | |
| 1404 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 1405 | + return $ocLazyLoad.load({ | |
| 1406 | + name: 'ttInfoDetailManage_detail_edit_switchLp', | |
| 1407 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 1408 | + files: [ | |
| 1409 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | |
| 1410 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | |
| 1411 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js" | |
| 1412 | + ] | |
| 1413 | + }); | |
| 1414 | + }] | |
| 1415 | + } | |
| 1416 | + }) | |
| 1361 | 1417 | |
| 1362 | 1418 | |
| 1363 | 1419 | ; |
| 1364 | 1420 | |
| 1365 | 1421 | } |
| 1366 | -]); | |
| 1422 | +]); | |
| 1423 | + | |
| 1367 | 1424 | // ui route 配置 |
| 1368 | 1425 | |
| 1369 | 1426 | /** 时刻表管理配置route */ | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/list.html
| ... | ... | @@ -11,7 +11,8 @@ |
| 11 | 11 | <th style="width: 15%;">驾驶员</th> |
| 12 | 12 | <th >售票员工号</th> |
| 13 | 13 | <th >售票员</th> |
| 14 | - <th style="width: 80px;">状态</th> | |
| 14 | + <th style="width: 80px;">状态1</th> | |
| 15 | + <th style="width: 80px;">状态2</th> | |
| 15 | 16 | <th style="width: 21%">操作</th> |
| 16 | 17 | </tr> |
| 17 | 18 | <tr role="row" class="filter"> |
| ... | ... | @@ -51,6 +52,11 @@ |
| 51 | 52 | </label> |
| 52 | 53 | </td> |
| 53 | 54 | <td> |
| 55 | + <label class="checkbox-inline"> | |
| 56 | + <input type="checkbox" ng-model="ctrl.personIsDestroyCheck"/>已停用 | |
| 57 | + </label> | |
| 58 | + </td> | |
| 59 | + <td> | |
| 54 | 60 | <div class="btn-group"> |
| 55 | 61 | <button class="btn btn-sm green btn-outline filter-submit margin-bottom" style="margin-right: 0;" |
| 56 | 62 | ng-click="ctrl.doPage()"> |
| ... | ... | @@ -111,6 +117,10 @@ |
| 111 | 117 | <span class="glyphicon glyphicon-remove" ng-if="info.isCancel == '1'"></span> |
| 112 | 118 | </td> |
| 113 | 119 | <td> |
| 120 | + <span class="glyphicon glyphicon-ok" ng-if="info.ryDestroyStatus == 0"></span> | |
| 121 | + <span class="glyphicon glyphicon-remove" ng-if="info.ryDestroyStatus > 0"></span> | |
| 122 | + </td> | |
| 123 | + <td> | |
| 114 | 124 | <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> |
| 115 | 125 | <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> |
| 116 | 126 | <a ui-sref="employeeConfig_detail({id: info.id})" class="btn btn-info btn-sm"> 详细 </a> |
| ... | ... | @@ -147,4 +157,4 @@ |
| 147 | 157 | </div> |
| 148 | 158 | </div> |
| 149 | 159 | |
| 150 | -</div> | |
| 151 | 160 | \ No newline at end of file |
| 161 | +</div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/module.js
| ... | ... | @@ -236,7 +236,17 @@ angular.module('ScheduleApp').controller( |
| 236 | 236 | self.searchCondition = function() { |
| 237 | 237 | return service.getSearchCondition(); |
| 238 | 238 | }; |
| 239 | + self.personIsDestroyCheck = false; // 人员停用选择框 | |
| 239 | 240 | self.doPage = function() { |
| 241 | + // 人员停用判定(目前只判定驾驶员) | |
| 242 | + delete self.searchCondition()['ryDestroyStatus_gt']; | |
| 243 | + delete self.searchCondition()['ryDestroyStatus_eq']; | |
| 244 | + if (self.personIsDestroyCheck) { | |
| 245 | + self.searchCondition()['ryDestroyStatus_gt'] = 0; // 选中时,true替换成1 | |
| 246 | + } else { | |
| 247 | + self.searchCondition()['ryDestroyStatus_eq'] = 0; | |
| 248 | + } | |
| 249 | + | |
| 240 | 250 | var page = EmpConfig.list(self.searchCondition(), function() { |
| 241 | 251 | service.getPage(page); |
| 242 | 252 | }); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/edit.html
| ... | ... | @@ -152,6 +152,39 @@ |
| 152 | 152 | </div> |
| 153 | 153 | |
| 154 | 154 | <div class="form-group has-success has-feedback"> |
| 155 | + <label class="col-md-2 control-label">计划里程*:</label> | |
| 156 | + <div class="col-md-3"> | |
| 157 | + <input type="text" class="form-control" name="jhlc" | |
| 158 | + ng-model="ctrl.schedulePlanInfoForSave.jhlc" required ng-pattern="ctrl.float_regex" | |
| 159 | + /> | |
| 160 | + </div> | |
| 161 | + <!-- 隐藏块,显示验证信息 --> | |
| 162 | + <div class="alert alert-danger well-sm" ng-show="myForm.jhlc.$error.required"> | |
| 163 | + 计划里程必须填写 | |
| 164 | + </div> | |
| 165 | + <div class="alert alert-danger well-sm" ng-show="myForm.jhlc.$error.pattern"> | |
| 166 | + 输入数字 | |
| 167 | + </div> | |
| 168 | + | |
| 169 | + </div> | |
| 170 | + <div class="form-group has-success has-feedback"> | |
| 171 | + <label class="col-md-2 control-label">班次历时*:</label> | |
| 172 | + <div class="col-md-3"> | |
| 173 | + <input type="text" class="form-control" name="bcsj" | |
| 174 | + ng-model="ctrl.schedulePlanInfoForSave.bcsj" required ng-pattern="ctrl.number_regex" | |
| 175 | + /> | |
| 176 | + </div> | |
| 177 | + <!-- 隐藏块,显示验证信息 --> | |
| 178 | + <div class="alert alert-danger well-sm" ng-show="myForm.bcsj.$error.required"> | |
| 179 | + 班次时间必须填写 | |
| 180 | + </div> | |
| 181 | + <div class="alert alert-danger well-sm" ng-show="myForm.bcsj.$error.pattern"> | |
| 182 | + 输入整数 | |
| 183 | + </div> | |
| 184 | + | |
| 185 | + </div> | |
| 186 | + | |
| 187 | + <div class="form-group has-success has-feedback"> | |
| 155 | 188 | <label class="col-md-2 control-label">车辆*:</label> |
| 156 | 189 | <div class="col-md-4"> |
| 157 | 190 | <sa-Select5 name="cl" | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/module.js
| ... | ... | @@ -230,6 +230,11 @@ angular.module("ScheduleApp").controller( |
| 230 | 230 | $state.go("schedulePlanInfoManage", $stateParams); |
| 231 | 231 | }; |
| 232 | 232 | |
| 233 | + // 整数 | |
| 234 | + self.number_regex = /^-?\d+$/; | |
| 235 | + // 小数 | |
| 236 | + self.float_regex = /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/; | |
| 237 | + | |
| 233 | 238 | // 线路版本描述 |
| 234 | 239 | self.title_tip = "版本加载中..."; |
| 235 | 240 | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-addLp.html
0 → 100644
| 1 | +<div ng-controller="TimeTableDetailManageFormCtrl_addLp as ctrl"> | |
| 2 | + <div class="page-head"> | |
| 3 | + <div class="page-title"> | |
| 4 | + <h1>时刻表管理</h1> | |
| 5 | + </div> | |
| 6 | + </div> | |
| 7 | + | |
| 8 | + <ul class="page-breadcrumb breadcrumb"> | |
| 9 | + <li> | |
| 10 | + <a href="/pages/home.html" data-pjax>首页</a> | |
| 11 | + <i class="fa fa-circle"></i> | |
| 12 | + </li> | |
| 13 | + <li> | |
| 14 | + <span class="active">运营计划管理</span> | |
| 15 | + <i class="fa fa-circle"></i> | |
| 16 | + </li> | |
| 17 | + <li> | |
| 18 | + <a ui-sref="ttInfoManage">时刻表管理</a> | |
| 19 | + <i class="fa fa-circle"></i> | |
| 20 | + </li> | |
| 21 | + <li> | |
| 22 | + <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid: ctrl.ttid, xlname: ctrl.xlname, ttname: ctrl.ttname, lineversion: ctrl.lineversion})"><span ng-bind="ctrl.title1"></span></a> | |
| 23 | + <i class="fa fa-circle"></i> | |
| 24 | + </li> | |
| 25 | + <li> | |
| 26 | + <span class="active">添加路牌</span> | |
| 27 | + </li> | |
| 28 | + </ul> | |
| 29 | + | |
| 30 | + <div class="portlet light bordered"> | |
| 31 | + <div class="portlet-title"> | |
| 32 | + <div class="caption"> | |
| 33 | + <div> | |
| 34 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 35 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title1"></span> | |
| 36 | + </div> | |
| 37 | + <div style="padding-top: 10px;"> | |
| 38 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 39 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title_tip"></span> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + | |
| 44 | + <div class="portlet-body form"> | |
| 45 | + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm"> | |
| 46 | + <div class="form-body"> | |
| 47 | + | |
| 48 | + <div class="form-group"> | |
| 49 | + <label class="col-md-2 control-label">路牌:</label> | |
| 50 | + <div class="col-md-3"> | |
| 51 | + <sa-Select5 name="lp" | |
| 52 | + model="ctrl.formInfo" | |
| 53 | + cmaps="{'lpId' : 'id'}" | |
| 54 | + dcname="lpId" | |
| 55 | + icname="id" | |
| 56 | + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.xlid, 'type': 'all'}, atype:'lpInfo2' } | json }}" | |
| 57 | + iterobjname="item" | |
| 58 | + iterobjexp="item.lpName" | |
| 59 | + searchph="输入路牌名字" | |
| 60 | + searchexp="this.lpName" | |
| 61 | + required | |
| 62 | + > | |
| 63 | + </sa-Select5> | |
| 64 | + </div> | |
| 65 | + <!-- 隐藏块,显示验证信息 --> | |
| 66 | + <div class="alert alert-danger well-sm" ng-show="myForm.lp.$error.required"> | |
| 67 | + 请选择路牌 | |
| 68 | + </div> | |
| 69 | + </div> | |
| 70 | + | |
| 71 | + </div> | |
| 72 | + | |
| 73 | + <div class="form-actions"> | |
| 74 | + <div class="row"> | |
| 75 | + <div class="col-md-offset-3 col-md-4"> | |
| 76 | + <button type="submit" class="btn green" | |
| 77 | + ng-disabled="!myForm.$valid"><i class="fa fa-check"></i> 提交</button> | |
| 78 | + <a type="button" class="btn default" | |
| 79 | + ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname, lineversion : ctrl.lineversion})" ><i class="fa fa-times"></i> 取消</a> | |
| 80 | + </div> | |
| 81 | + </div> | |
| 82 | + </div> | |
| 83 | + </form> | |
| 84 | + | |
| 85 | + </div> | |
| 86 | + | |
| 87 | + </div> | |
| 88 | + | |
| 89 | +</div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-detail2.html
| 1 | 1 | <div ng-controller="TimeTableDetailManageFormCtrl_old2 as ctrl"> |
| 2 | 2 | <div class="page-head"> |
| 3 | 3 | <div class="page-title"> |
| 4 | - <h1>修改班次信息</h1> | |
| 4 | + <h1>时刻表管理</h1> | |
| 5 | 5 | </div> |
| 6 | 6 | </div> |
| 7 | 7 | |
| ... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 | <i class="fa fa-circle"></i> |
| 24 | 24 | </li> |
| 25 | 25 | <li> |
| 26 | - <span class="active">修改班次信息</span> | |
| 26 | + <span class="active">批量修改</span> | |
| 27 | 27 | </li> |
| 28 | 28 | </ul> |
| 29 | 29 | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-mulselect.html
| 1 | 1 | <div ng-controller="TimeTableDetailManageFormCtrl_mulselect as ctrl"> |
| 2 | 2 | <div class="page-head"> |
| 3 | 3 | <div class="page-title"> |
| 4 | - <h1>修改班次信息</h1> | |
| 4 | + <h1>时刻表管理</h1> | |
| 5 | 5 | </div> |
| 6 | 6 | </div> |
| 7 | 7 | |
| ... | ... | @@ -19,19 +19,25 @@ |
| 19 | 19 | <i class="fa fa-circle"></i> |
| 20 | 20 | </li> |
| 21 | 21 | <li> |
| 22 | - <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname})"><span ng-bind="ctrl.title1"></span></a> | |
| 22 | + <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname, lineversion: ctrl.lineversion})"><span ng-bind="ctrl.title1"></span></a> | |
| 23 | 23 | <i class="fa fa-circle"></i> |
| 24 | 24 | </li> |
| 25 | 25 | <li> |
| 26 | - <span class="active">修改班次信息</span> | |
| 26 | + <span class="active">批量选择</span> | |
| 27 | 27 | </li> |
| 28 | 28 | </ul> |
| 29 | 29 | |
| 30 | 30 | <div class="portlet light bordered"> |
| 31 | 31 | <div class="portlet-title"> |
| 32 | 32 | <div class="caption"> |
| 33 | - <i class="icon-equalizer font-red-sunglo"></i> <span | |
| 34 | - class="caption-subject font-red-sunglo bold uppercase" >批量选择</span> | |
| 33 | + <div> | |
| 34 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 35 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title1"></span> | |
| 36 | + </div> | |
| 37 | + <div style="padding-top: 10px;"> | |
| 38 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 39 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title_tip"></span> | |
| 40 | + </div> | |
| 35 | 41 | </div> |
| 36 | 42 | </div> |
| 37 | 43 | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-removeLp.html
0 → 100644
| 1 | +<div ng-controller="TimeTableDetailManageFormCtrl_removeLp as ctrl"> | |
| 2 | + <div class="page-head"> | |
| 3 | + <div class="page-title"> | |
| 4 | + <h1>时刻表管理</h1> | |
| 5 | + </div> | |
| 6 | + </div> | |
| 7 | + | |
| 8 | + <ul class="page-breadcrumb breadcrumb"> | |
| 9 | + <li> | |
| 10 | + <a href="/pages/home.html" data-pjax>首页</a> | |
| 11 | + <i class="fa fa-circle"></i> | |
| 12 | + </li> | |
| 13 | + <li> | |
| 14 | + <span class="active">运营计划管理</span> | |
| 15 | + <i class="fa fa-circle"></i> | |
| 16 | + </li> | |
| 17 | + <li> | |
| 18 | + <a ui-sref="ttInfoManage">时刻表管理</a> | |
| 19 | + <i class="fa fa-circle"></i> | |
| 20 | + </li> | |
| 21 | + <li> | |
| 22 | + <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid: ctrl.ttid, xlname: ctrl.xlname, ttname: ctrl.ttname, lineversion: ctrl.lineversion})"><span ng-bind="ctrl.title1"></span></a> | |
| 23 | + <i class="fa fa-circle"></i> | |
| 24 | + </li> | |
| 25 | + <li> | |
| 26 | + <span class="active">删除路牌</span> | |
| 27 | + </li> | |
| 28 | + </ul> | |
| 29 | + | |
| 30 | + <div class="portlet light bordered"> | |
| 31 | + <div class="portlet-title"> | |
| 32 | + <div class="caption"> | |
| 33 | + <div> | |
| 34 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 35 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title1"></span> | |
| 36 | + </div> | |
| 37 | + <div style="padding-top: 10px;"> | |
| 38 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 39 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title_tip"></span> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + | |
| 44 | + <div class="portlet-body form"> | |
| 45 | + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm"> | |
| 46 | + <div class="form-body"> | |
| 47 | + | |
| 48 | + <div class="form-group"> | |
| 49 | + <label class="col-md-2 control-label">路牌:</label> | |
| 50 | + <div class="col-md-3"> | |
| 51 | + <sa-Select5 name="lp" | |
| 52 | + model="ctrl.formInfo" | |
| 53 | + cmaps="{'lpId' : 'id'}" | |
| 54 | + dcname="lpId" | |
| 55 | + icname="id" | |
| 56 | + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.xlid, 'type': 'all'}, atype:'lpInfo2' } | json }}" | |
| 57 | + iterobjname="item" | |
| 58 | + iterobjexp="item.lpName" | |
| 59 | + searchph="输入路牌名字" | |
| 60 | + searchexp="this.lpName" | |
| 61 | + required | |
| 62 | + > | |
| 63 | + </sa-Select5> | |
| 64 | + </div> | |
| 65 | + <!-- 隐藏块,显示验证信息 --> | |
| 66 | + <div class="alert alert-danger well-sm" ng-show="myForm.lp.$error.required"> | |
| 67 | + 请选择路牌 | |
| 68 | + </div> | |
| 69 | + </div> | |
| 70 | + | |
| 71 | + </div> | |
| 72 | + | |
| 73 | + <div class="form-actions"> | |
| 74 | + <div class="row"> | |
| 75 | + <div class="col-md-offset-3 col-md-4"> | |
| 76 | + <button type="submit" class="btn green" | |
| 77 | + ng-disabled="!myForm.$valid"><i class="fa fa-check"></i> 提交</button> | |
| 78 | + <a type="button" class="btn default" | |
| 79 | + ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname, lineversion : ctrl.lineversion})" ><i class="fa fa-times"></i> 取消</a> | |
| 80 | + </div> | |
| 81 | + </div> | |
| 82 | + </div> | |
| 83 | + </form> | |
| 84 | + | |
| 85 | + </div> | |
| 86 | + | |
| 87 | + </div> | |
| 88 | + | |
| 89 | +</div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-switchLp.html
0 → 100644
| 1 | +<div ng-controller="TimeTableDetailManageFormCtrl_switchLp as ctrl"> | |
| 2 | + <div class="page-head"> | |
| 3 | + <div class="page-title"> | |
| 4 | + <h1>时刻表管理</h1> | |
| 5 | + </div> | |
| 6 | + </div> | |
| 7 | + | |
| 8 | + <ul class="page-breadcrumb breadcrumb"> | |
| 9 | + <li> | |
| 10 | + <a href="/pages/home.html" data-pjax>首页</a> | |
| 11 | + <i class="fa fa-circle"></i> | |
| 12 | + </li> | |
| 13 | + <li> | |
| 14 | + <span class="active">运营计划管理</span> | |
| 15 | + <i class="fa fa-circle"></i> | |
| 16 | + </li> | |
| 17 | + <li> | |
| 18 | + <a ui-sref="ttInfoManage">时刻表管理</a> | |
| 19 | + <i class="fa fa-circle"></i> | |
| 20 | + </li> | |
| 21 | + <li> | |
| 22 | + <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid: ctrl.ttid, xlname: ctrl.xlname, ttname: ctrl.ttname, lineversion: ctrl.lineversion})"><span ng-bind="ctrl.title1"></span></a> | |
| 23 | + <i class="fa fa-circle"></i> | |
| 24 | + </li> | |
| 25 | + <li> | |
| 26 | + <span class="active">调换路牌</span> | |
| 27 | + </li> | |
| 28 | + </ul> | |
| 29 | + | |
| 30 | + <div class="portlet light bordered"> | |
| 31 | + <div class="portlet-title"> | |
| 32 | + <div class="caption"> | |
| 33 | + <div> | |
| 34 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 35 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title1"></span> | |
| 36 | + </div> | |
| 37 | + <div style="padding-top: 10px;"> | |
| 38 | + <i class="icon-equalizer font-red-sunglo"></i> | |
| 39 | + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title_tip"></span> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + | |
| 44 | + <div class="portlet-body form"> | |
| 45 | + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm"> | |
| 46 | + <div class="form-body"> | |
| 47 | + | |
| 48 | + <div class="form-group"> | |
| 49 | + <label class="col-md-2 control-label">路牌A:</label> | |
| 50 | + <div class="col-md-3"> | |
| 51 | + <sa-Select5 name="lpA" | |
| 52 | + model="ctrl.formInfo" | |
| 53 | + cmaps="{'lpAId' : 'id'}" | |
| 54 | + dcname="lpAId" | |
| 55 | + icname="id" | |
| 56 | + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.xlid, 'type': 'all'}, atype:'lpInfo2' } | json }}" | |
| 57 | + iterobjname="item" | |
| 58 | + iterobjexp="item.lpName" | |
| 59 | + searchph="输入路牌名字" | |
| 60 | + searchexp="this.lpName" | |
| 61 | + required | |
| 62 | + > | |
| 63 | + </sa-Select5> | |
| 64 | + </div> | |
| 65 | + <!-- 隐藏块,显示验证信息 --> | |
| 66 | + <div class="alert alert-danger well-sm" ng-show="myForm.lpA.$error.required"> | |
| 67 | + 请选择路牌A | |
| 68 | + </div> | |
| 69 | + </div> | |
| 70 | + | |
| 71 | + <div class="form-group"> | |
| 72 | + <label class="col-md-2 control-label">路牌B:</label> | |
| 73 | + <div class="col-md-3"> | |
| 74 | + <sa-Select5 name="lpB" | |
| 75 | + model="ctrl.formInfo" | |
| 76 | + cmaps="{'lpBId' : 'id'}" | |
| 77 | + dcname="lpBId" | |
| 78 | + icname="id" | |
| 79 | + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.xlid, 'type': 'all'}, atype:'lpInfo2' } | json }}" | |
| 80 | + iterobjname="item" | |
| 81 | + iterobjexp="item.lpName" | |
| 82 | + searchph="输入路牌名字" | |
| 83 | + searchexp="this.lpName" | |
| 84 | + required | |
| 85 | + > | |
| 86 | + </sa-Select5> | |
| 87 | + </div> | |
| 88 | + <!-- 隐藏块,显示验证信息 --> | |
| 89 | + <div class="alert alert-danger well-sm" ng-show="myForm.lpB.$error.required"> | |
| 90 | + 请选择路牌B | |
| 91 | + </div> | |
| 92 | + </div> | |
| 93 | + | |
| 94 | + </div> | |
| 95 | + | |
| 96 | + <div class="form-actions"> | |
| 97 | + <div class="row"> | |
| 98 | + <div class="col-md-offset-3 col-md-4"> | |
| 99 | + <button type="submit" class="btn green" | |
| 100 | + ng-disabled="!myForm.$valid"><i class="fa fa-check"></i> 提交</button> | |
| 101 | + <a type="button" class="btn default" | |
| 102 | + ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname, lineversion : ctrl.lineversion})" ><i class="fa fa-times"></i> 取消</a> | |
| 103 | + </div> | |
| 104 | + </div> | |
| 105 | + </div> | |
| 106 | + </form> | |
| 107 | + | |
| 108 | + </div> | |
| 109 | + | |
| 110 | + </div> | |
| 111 | + | |
| 112 | +</div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit3.html
| ... | ... | @@ -121,11 +121,35 @@ |
| 121 | 121 | 取消选择 |
| 122 | 122 | </a> |
| 123 | 123 | <a href="javascript:" style="padding-right: 5px;" |
| 124 | + ng-click="ctrl.toAddLp()" | |
| 125 | + ng-show="ctrl.currentView.btn7"> | |
| 126 | + <i class="fa fa-th-list" aria-hidden="true"></i> | |
| 127 | + 增加路牌 | |
| 128 | + </a> | |
| 129 | + <a href="javascript:" style="padding-right: 5px;" | |
| 130 | + ng-click="ctrl.toRemoveLp()" | |
| 131 | + ng-show="ctrl.currentView.btn8"> | |
| 132 | + <i class="fa fa-th-list" aria-hidden="true"></i> | |
| 133 | + 删除路牌 | |
| 134 | + </a> | |
| 135 | + <a href="javascript:" style="padding-right: 5px;" | |
| 136 | + ng-click="ctrl.toSwitchLp()" | |
| 137 | + ng-show="ctrl.currentView.btn9"> | |
| 138 | + <i class="fa fa-th-list" aria-hidden="true"></i> | |
| 139 | + 调换路牌 | |
| 140 | + </a> | |
| 141 | + <a href="javascript:" style="padding-right: 5px;" | |
| 124 | 142 | ng-click="ctrl.refresh()" |
| 125 | 143 | ng-show="ctrl.currentView.btn5"> |
| 126 | 144 | <i class="fa fa-refresh"></i> |
| 127 | 145 | 刷新数据 |
| 128 | 146 | </a> |
| 147 | + <a href="javascript:" style="padding-right: 5px;" | |
| 148 | + ng-click="ctrl.exportPvInfo()" | |
| 149 | + ng-show="ctrl.currentView.btn6"> | |
| 150 | + <i class="fa fa-file-excel-o" aria-hidden="true"></i> | |
| 151 | + 导出 | |
| 152 | + </a> | |
| 129 | 153 | </div> |
| 130 | 154 | |
| 131 | 155 | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/route.js
| ... | ... | @@ -157,10 +157,66 @@ ScheduleApp.config([ |
| 157 | 157 | }] |
| 158 | 158 | } |
| 159 | 159 | }) |
| 160 | - | |
| 160 | + .state("ttInfoDetailManage_detail_edit_addLp", { // 时刻表 添加路牌 | |
| 161 | + url: '/ttInfoDetailManage_detail_edit_addLp/:xlid/:ttid/:xlname/:ttname/:lineversion', | |
| 162 | + views: { | |
| 163 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-addLp.html'} | |
| 164 | + }, | |
| 165 | + resolve: { | |
| 166 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 167 | + return $ocLazyLoad.load({ | |
| 168 | + name: 'ttInfoDetailManage_detail_edit_addLp', | |
| 169 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 170 | + files: [ | |
| 171 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | |
| 172 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | |
| 173 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js" | |
| 174 | + ] | |
| 175 | + }); | |
| 176 | + }] | |
| 177 | + } | |
| 178 | + }) | |
| 179 | + .state("ttInfoDetailManage_detail_edit_removeLp", { // 时刻表 删除路牌 | |
| 180 | + url: '/ttInfoDetailManage_detail_edit_removeLp/:xlid/:ttid/:xlname/:ttname/:lineversion', | |
| 181 | + views: { | |
| 182 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-removeLp.html'} | |
| 183 | + }, | |
| 184 | + resolve: { | |
| 185 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 186 | + return $ocLazyLoad.load({ | |
| 187 | + name: 'ttInfoDetailManage_detail_edit_removeLp', | |
| 188 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 189 | + files: [ | |
| 190 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | |
| 191 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | |
| 192 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js" | |
| 193 | + ] | |
| 194 | + }); | |
| 195 | + }] | |
| 196 | + } | |
| 197 | + }) | |
| 198 | + .state("ttInfoDetailManage_detail_edit_switchLp", { // 时刻表 调换路牌 | |
| 199 | + url: '/ttInfoDetailManage_detail_edit_switchLp/:xlid/:ttid/:xlname/:ttname/:lineversion', | |
| 200 | + views: { | |
| 201 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-switchLp.html'} | |
| 202 | + }, | |
| 203 | + resolve: { | |
| 204 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 205 | + return $ocLazyLoad.load({ | |
| 206 | + name: 'ttInfoDetailManage_detail_edit_switchLp', | |
| 207 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 208 | + files: [ | |
| 209 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | |
| 210 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | |
| 211 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js" | |
| 212 | + ] | |
| 213 | + }); | |
| 214 | + }] | |
| 215 | + } | |
| 216 | + }) | |
| 161 | 217 | |
| 162 | 218 | |
| 163 | 219 | ; |
| 164 | 220 | |
| 165 | 221 | } |
| 166 | -]); | |
| 167 | 222 | \ No newline at end of file |
| 223 | +]); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js
| ... | ... | @@ -60,6 +60,20 @@ angular.module('ScheduleApp').factory( |
| 60 | 60 | ); |
| 61 | 61 | }, |
| 62 | 62 | |
| 63 | + pvInfoExportPromise: function(ttInfoId) { | |
| 64 | + return service.pvInfoExport.do({id: ttInfoId}).$promise; | |
| 65 | + }, | |
| 66 | + | |
| 67 | + addLpPromise: function(ttInfoId, lpId) { | |
| 68 | + return service.addLp.do({ttInfoId: ttInfoId, lpId: lpId}).$promise; | |
| 69 | + }, | |
| 70 | + removeLpPromise: function(ttInfoId, lpId) { | |
| 71 | + return service.removeLp.do({ttInfoId: ttInfoId, lpId: lpId}).$promise; | |
| 72 | + }, | |
| 73 | + switchLpPromise: function(ttInfoId, lpAId, lpBId) { | |
| 74 | + return service.switchLp.do({ttInfoId: ttInfoId, lpAId: lpAId, lpBId: lpBId}).$promise; | |
| 75 | + }, | |
| 76 | + | |
| 63 | 77 | /** |
| 64 | 78 | * 获取编辑用的时刻表明细数据。 |
| 65 | 79 | * @param xlid 线路id |
| ... | ... | @@ -357,7 +371,8 @@ angular.module('ScheduleApp').controller( |
| 357 | 371 | '$state', |
| 358 | 372 | '$scope', |
| 359 | 373 | '$window', |
| 360 | - function(service, $stateParams, $uibModal, $state, $scope, $window) { | |
| 374 | + 'FileDownload_g', | |
| 375 | + function(service, $stateParams, $uibModal, $state, $scope, $window, fileDownload) { | |
| 361 | 376 | var self = this; |
| 362 | 377 | self.xlid = $stateParams.xlid; // 获取传过来的线路id |
| 363 | 378 | self.ttid = $stateParams.ttid; // 获取传过来的时刻表id |
| ... | ... | @@ -439,12 +454,16 @@ angular.module('ScheduleApp').controller( |
| 439 | 454 | btn2 : true, |
| 440 | 455 | btn3 : true, |
| 441 | 456 | btn4 : true, |
| 442 | - btn5 : true | |
| 457 | + btn5 : true, | |
| 458 | + btn7 : true, | |
| 459 | + btn8 : true, | |
| 460 | + btn9 : true | |
| 443 | 461 | }, |
| 444 | 462 | "preView" : { |
| 445 | 463 | viewId : 2, |
| 446 | 464 | switchBtnMsg : "切换编辑视图", |
| 447 | - btn5 : true | |
| 465 | + btn5 : true, | |
| 466 | + btn6 : true | |
| 448 | 467 | } |
| 449 | 468 | }; |
| 450 | 469 | self.currentView = self.viewInfos["editView"]; // 默认编辑视图 |
| ... | ... | @@ -639,6 +658,50 @@ angular.module('ScheduleApp').controller( |
| 639 | 658 | } |
| 640 | 659 | }; |
| 641 | 660 | |
| 661 | + // 导出pv预览视图数据 | |
| 662 | + self.exportPvInfo = function() { | |
| 663 | + var promise = service.pvInfoExportPromise(self.ttid); | |
| 664 | + promise.then( | |
| 665 | + function(result) { | |
| 666 | + fileDownload.downloadFile(result.fileData, "application/octet-stream", result.fileName); | |
| 667 | + }, | |
| 668 | + function(result) { | |
| 669 | + console.log("导出预览视图信息失败:" + result); | |
| 670 | + } | |
| 671 | + ); | |
| 672 | + }; | |
| 673 | + | |
| 674 | + // 增加路牌(跳转页面) | |
| 675 | + self.toAddLp = function() { | |
| 676 | + $state.go("ttInfoDetailManage_detail_edit_addLp", { | |
| 677 | + xlid: self.xlid, | |
| 678 | + ttid: self.ttid, | |
| 679 | + xlname: self.xlname, | |
| 680 | + ttname: self.ttname, | |
| 681 | + lineversion: self.lineversion | |
| 682 | + }); | |
| 683 | + }; | |
| 684 | + // 删除路牌(跳转页面) | |
| 685 | + self.toRemoveLp = function() { | |
| 686 | + $state.go("ttInfoDetailManage_detail_edit_removeLp", { | |
| 687 | + xlid: self.xlid, | |
| 688 | + ttid: self.ttid, | |
| 689 | + xlname: self.xlname, | |
| 690 | + ttname: self.ttname, | |
| 691 | + lineversion: self.lineversion | |
| 692 | + }); | |
| 693 | + }; | |
| 694 | + // 调换路牌(跳转页面) | |
| 695 | + self.toSwitchLp = function() { | |
| 696 | + $state.go("ttInfoDetailManage_detail_edit_switchLp", { | |
| 697 | + xlid: self.xlid, | |
| 698 | + ttid: self.ttid, | |
| 699 | + xlname: self.xlname, | |
| 700 | + ttname: self.ttname, | |
| 701 | + lineversion: self.lineversion | |
| 702 | + }); | |
| 703 | + }; | |
| 704 | + | |
| 642 | 705 | } |
| 643 | 706 | |
| 644 | 707 | ] |
| ... | ... | @@ -994,7 +1057,13 @@ angular.module('ScheduleApp').controller( |
| 994 | 1057 | self.ttname = $stateParams.ttname; // 获取传过来的时刻表名字 |
| 995 | 1058 | self.lineversion = $stateParams.lineversion; // 线路版本 |
| 996 | 1059 | |
| 997 | - self.title1 = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息"; | |
| 1060 | + self.title1 = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息 批量条件选择班次"; | |
| 1061 | + self.title_tip = "版本加载中..."; | |
| 1062 | + service.versiondesc(self.xlid, self.lineversion).then( | |
| 1063 | + function(result) { | |
| 1064 | + self.title_tip = "线路版本(" + result.desc + ")"; | |
| 1065 | + } | |
| 1066 | + ); | |
| 998 | 1067 | |
| 999 | 1068 | self.xldir = 2; // 线路上下行 |
| 1000 | 1069 | self.starttime = undefined; // 开始时间 |
| ... | ... | @@ -1051,3 +1120,156 @@ angular.module('ScheduleApp').controller( |
| 1051 | 1120 | ] |
| 1052 | 1121 | ); |
| 1053 | 1122 | |
| 1123 | +// edit-addLp.html 添加路牌页面 | |
| 1124 | +angular.module('ScheduleApp').controller( | |
| 1125 | + 'TimeTableDetailManageFormCtrl_addLp', | |
| 1126 | + [ | |
| 1127 | + 'TimeTableDetailManageService_old', | |
| 1128 | + '$stateParams', | |
| 1129 | + '$state', | |
| 1130 | + function(service, $stateParams, $state) { | |
| 1131 | + var self = this; | |
| 1132 | + | |
| 1133 | + // 获取传过来的id,有的话就是修改,获取一遍数据 | |
| 1134 | + self.xlid = $stateParams.xlid; // 获取传过来的线路id | |
| 1135 | + self.ttid = $stateParams.ttid; // 获取传过来的时刻表id | |
| 1136 | + self.xlname = $stateParams.xlname; // 获取传过来的线路名字 | |
| 1137 | + self.ttname = $stateParams.ttname; // 获取传过来的时刻表名字 | |
| 1138 | + self.lineversion = $stateParams.lineversion; // 线路版本 | |
| 1139 | + | |
| 1140 | + self.title1 = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息 添加路牌"; | |
| 1141 | + self.title_tip = "版本加载中..."; | |
| 1142 | + service.versiondesc(self.xlid, self.lineversion).then( | |
| 1143 | + function(result) { | |
| 1144 | + self.title_tip = "线路版本(" + result.desc + ")"; | |
| 1145 | + } | |
| 1146 | + ); | |
| 1147 | + | |
| 1148 | + // form数据 | |
| 1149 | + self.formInfo = {}; | |
| 1150 | + // from提交 | |
| 1151 | + self.submit = function() { | |
| 1152 | + service.addLpPromise(self.ttid, self.formInfo.lpId).then( | |
| 1153 | + function(rst) { | |
| 1154 | + if (rst.error) { | |
| 1155 | + alert(rst.error); | |
| 1156 | + } else { | |
| 1157 | + service.refreshEditInfo(self.xlid, self.ttid); | |
| 1158 | + $state.go("ttInfoDetailManage_edit3", { | |
| 1159 | + xlid: self.xlid, | |
| 1160 | + ttid: self.ttid, | |
| 1161 | + xlname: self.xlname, | |
| 1162 | + ttname: self.ttname, | |
| 1163 | + lineversion: self.lineversion | |
| 1164 | + }); | |
| 1165 | + } | |
| 1166 | + } | |
| 1167 | + ); | |
| 1168 | + }; | |
| 1169 | + | |
| 1170 | + } | |
| 1171 | + ] | |
| 1172 | +); | |
| 1173 | + | |
| 1174 | +// edit-removeLp.html 删除路牌页面 | |
| 1175 | +angular.module('ScheduleApp').controller( | |
| 1176 | + 'TimeTableDetailManageFormCtrl_removeLp', | |
| 1177 | + [ | |
| 1178 | + 'TimeTableDetailManageService_old', | |
| 1179 | + '$stateParams', | |
| 1180 | + '$state', | |
| 1181 | + function(service, $stateParams, $state) { | |
| 1182 | + var self = this; | |
| 1183 | + | |
| 1184 | + // 获取传过来的id,有的话就是修改,获取一遍数据 | |
| 1185 | + self.xlid = $stateParams.xlid; // 获取传过来的线路id | |
| 1186 | + self.ttid = $stateParams.ttid; // 获取传过来的时刻表id | |
| 1187 | + self.xlname = $stateParams.xlname; // 获取传过来的线路名字 | |
| 1188 | + self.ttname = $stateParams.ttname; // 获取传过来的时刻表名字 | |
| 1189 | + self.lineversion = $stateParams.lineversion; // 线路版本 | |
| 1190 | + | |
| 1191 | + self.title1 = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息 删除路牌"; | |
| 1192 | + self.title_tip = "版本加载中..."; | |
| 1193 | + service.versiondesc(self.xlid, self.lineversion).then( | |
| 1194 | + function(result) { | |
| 1195 | + self.title_tip = "线路版本(" + result.desc + ")"; | |
| 1196 | + } | |
| 1197 | + ); | |
| 1198 | + | |
| 1199 | + // form数据 | |
| 1200 | + self.formInfo = {}; | |
| 1201 | + // from提交 | |
| 1202 | + self.submit = function() { | |
| 1203 | + service.removeLpPromise(self.ttid, self.formInfo.lpId).then( | |
| 1204 | + function(rst) { | |
| 1205 | + if (rst.error) { | |
| 1206 | + alert(rst.error); | |
| 1207 | + } else { | |
| 1208 | + service.refreshEditInfo(self.xlid, self.ttid); | |
| 1209 | + $state.go("ttInfoDetailManage_edit3", { | |
| 1210 | + xlid: self.xlid, | |
| 1211 | + ttid: self.ttid, | |
| 1212 | + xlname: self.xlname, | |
| 1213 | + ttname: self.ttname, | |
| 1214 | + lineversion: self.lineversion | |
| 1215 | + }); | |
| 1216 | + } | |
| 1217 | + } | |
| 1218 | + ); | |
| 1219 | + }; | |
| 1220 | + | |
| 1221 | + } | |
| 1222 | + ] | |
| 1223 | +); | |
| 1224 | + | |
| 1225 | +// edit-switchLp.html 调换路牌页面 | |
| 1226 | +angular.module('ScheduleApp').controller( | |
| 1227 | + 'TimeTableDetailManageFormCtrl_switchLp', | |
| 1228 | + [ | |
| 1229 | + 'TimeTableDetailManageService_old', | |
| 1230 | + '$stateParams', | |
| 1231 | + '$state', | |
| 1232 | + function(service, $stateParams, $state) { | |
| 1233 | + var self = this; | |
| 1234 | + | |
| 1235 | + // 获取传过来的id,有的话就是修改,获取一遍数据 | |
| 1236 | + self.xlid = $stateParams.xlid; // 获取传过来的线路id | |
| 1237 | + self.ttid = $stateParams.ttid; // 获取传过来的时刻表id | |
| 1238 | + self.xlname = $stateParams.xlname; // 获取传过来的线路名字 | |
| 1239 | + self.ttname = $stateParams.ttname; // 获取传过来的时刻表名字 | |
| 1240 | + self.lineversion = $stateParams.lineversion; // 线路版本 | |
| 1241 | + | |
| 1242 | + self.title1 = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息 路牌A和路牌B的班次互换"; | |
| 1243 | + self.title_tip = "版本加载中..."; | |
| 1244 | + service.versiondesc(self.xlid, self.lineversion).then( | |
| 1245 | + function(result) { | |
| 1246 | + self.title_tip = "线路版本(" + result.desc + ")"; | |
| 1247 | + } | |
| 1248 | + ); | |
| 1249 | + | |
| 1250 | + // form数据 | |
| 1251 | + self.formInfo = {}; | |
| 1252 | + // from提交 | |
| 1253 | + self.submit = function() { | |
| 1254 | + service.switchLpPromise(self.ttid, self.formInfo.lpAId, self.formInfo.lpBId).then( | |
| 1255 | + function(rst) { | |
| 1256 | + if (rst.error) { | |
| 1257 | + alert(rst.error); | |
| 1258 | + } else { | |
| 1259 | + service.refreshEditInfo(self.xlid, self.ttid); | |
| 1260 | + $state.go("ttInfoDetailManage_edit3", { | |
| 1261 | + xlid: self.xlid, | |
| 1262 | + ttid: self.ttid, | |
| 1263 | + xlname: self.xlname, | |
| 1264 | + ttname: self.ttname, | |
| 1265 | + lineversion: self.lineversion | |
| 1266 | + }); | |
| 1267 | + } | |
| 1268 | + } | |
| 1269 | + ); | |
| 1270 | + | |
| 1271 | + }; | |
| 1272 | + | |
| 1273 | + } | |
| 1274 | + ] | |
| 1275 | +); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/service.js
| ... | ... | @@ -207,6 +207,87 @@ angular.module('ScheduleApp').factory( |
| 207 | 207 | } |
| 208 | 208 | } |
| 209 | 209 | ), |
| 210 | + | |
| 211 | + pvInfoExport: $resource( | |
| 212 | + '/tidc/exportPvInfo/:id', | |
| 213 | + {id: '@id'}, | |
| 214 | + { | |
| 215 | + do: { | |
| 216 | + method: 'GET', | |
| 217 | + responseType: "arraybuffer", | |
| 218 | + transformResponse: function(data, headers, status){ | |
| 219 | + if (status != 200) { | |
| 220 | + return data; | |
| 221 | + } | |
| 222 | + | |
| 223 | + // console.log(headers("Content-Disposition")); | |
| 224 | + // 获取文件名,后台根据是否还有中文名字,返回filename=ascii编码的文件名 或 filename*=unicode编码的文件名 | |
| 225 | + var fileName = headers("Content-Disposition").split(";")[1].split("filename=")[1]; | |
| 226 | + var fileNameUnicode = headers("Content-Disposition").split("filename*=")[1]; | |
| 227 | + if (fileNameUnicode) {//当存在 filename* 时,取filename* 并进行解码(为了解决中文乱码问题) | |
| 228 | + fileName = decodeURIComponent(fileNameUnicode); | |
| 229 | + } | |
| 230 | + | |
| 231 | + return {fileData : data, fileName: fileName}; | |
| 232 | + } | |
| 233 | + } | |
| 234 | + } | |
| 235 | + ), | |
| 236 | + | |
| 237 | + addLp: $resource( | |
| 238 | + '/tidc/addLp/:ttInfoId/:lpId', | |
| 239 | + {}, | |
| 240 | + { | |
| 241 | + do: { | |
| 242 | + method: 'GET', | |
| 243 | + transformResponse: function(rs) { | |
| 244 | + var dst = angular.fromJson(rs); | |
| 245 | + if (dst.status == 'SUCCESS') { | |
| 246 | + return {msg: dst.data}; | |
| 247 | + } else { | |
| 248 | + return {error: dst.msg}; // 业务错误留给控制器处理 | |
| 249 | + } | |
| 250 | + } | |
| 251 | + } | |
| 252 | + } | |
| 253 | + ), | |
| 254 | + | |
| 255 | + removeLp: $resource( | |
| 256 | + '/tidc/removeLp/:ttInfoId/:lpId', | |
| 257 | + {}, | |
| 258 | + { | |
| 259 | + do: { | |
| 260 | + method: 'GET', | |
| 261 | + transformResponse: function(rs) { | |
| 262 | + var dst = angular.fromJson(rs); | |
| 263 | + if (dst.status == 'SUCCESS') { | |
| 264 | + return {msg: dst.data}; | |
| 265 | + } else { | |
| 266 | + return {error: dst.msg}; // 业务错误留给控制器处理 | |
| 267 | + } | |
| 268 | + } | |
| 269 | + } | |
| 270 | + } | |
| 271 | + ), | |
| 272 | + | |
| 273 | + switchLp: $resource( | |
| 274 | + '/tidc/switchLp/:ttInfoId/:lpAId/:lpBId', | |
| 275 | + {}, | |
| 276 | + { | |
| 277 | + do: { | |
| 278 | + method: 'GET', | |
| 279 | + transformResponse: function(rs) { | |
| 280 | + var dst = angular.fromJson(rs); | |
| 281 | + if (dst.status == 'SUCCESS') { | |
| 282 | + return {msg: dst.data}; | |
| 283 | + } else { | |
| 284 | + return {error: dst.msg}; // 业务错误留给控制器处理 | |
| 285 | + } | |
| 286 | + } | |
| 287 | + } | |
| 288 | + } | |
| 289 | + ), | |
| 290 | + | |
| 210 | 291 | edit: $resource( |
| 211 | 292 | '/tidc/edit/:xlid/:ttid', |
| 212 | 293 | {}, |
| ... | ... | @@ -257,4 +338,4 @@ angular.module('ScheduleApp').factory( |
| 257 | 338 | } |
| 258 | 339 | |
| 259 | 340 | ] |
| 260 | -); | |
| 261 | 341 | \ No newline at end of file |
| 342 | +); | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/car_info_all.html
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/jhlb.html
| ... | ... | @@ -106,7 +106,7 @@ |
| 106 | 106 | |
| 107 | 107 | <script> |
| 108 | 108 | (function() { |
| 109 | - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '路救', '其他']; | |
| 109 | + var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '路救故障', '其他']; | |
| 110 | 110 | var modal = '#schedule-jhlb-modal', |
| 111 | 111 | sch; |
| 112 | 112 | $(modal).on('init', function(e, data) { | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch_v2/add_normal.html
0 → 100644
| 1 | +<!-- 临加班次form --> | |
| 2 | +<script id="add_normal_sch-form-temp" type="text/html"> | |
| 3 | + <form class="uk-form uk-form-horizontal add-sch-form"> | |
| 4 | + <div class="uk-grid"> | |
| 5 | + <div class="uk-width-1-2"> | |
| 6 | + <div class="uk-form-row"> | |
| 7 | + <label class="uk-form-label">班次类型</label> | |
| 8 | + <div class="uk-form-controls"> | |
| 9 | + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}" | |
| 10 | + data-group=ScheduleType></select> | |
| 11 | + </div> | |
| 12 | + </div> | |
| 13 | + </div> | |
| 14 | + <div class="uk-width-1-2"> | |
| 15 | + <div class="uk-form-row"> | |
| 16 | + <label class="uk-form-label">上下行</label> | |
| 17 | + <div class="uk-form-controls"> | |
| 18 | + <select name="xlDir"> | |
| 19 | + <option value="0">上行</option> | |
| 20 | + <option value="1">下行</option> | |
| 21 | + </select> | |
| 22 | + </div> | |
| 23 | + </div> | |
| 24 | + </div> | |
| 25 | + </div> | |
| 26 | + <div class="uk-grid"> | |
| 27 | + <div class="uk-width-1-2"> | |
| 28 | + <div class="uk-form-row"> | |
| 29 | + <label class="uk-form-label">起点站</label> | |
| 30 | + <div class="uk-form-controls"> | |
| 31 | + <select name="qdzCode"> | |
| 32 | + </select> | |
| 33 | + </div> | |
| 34 | + </div> | |
| 35 | + </div> | |
| 36 | + <div class="uk-width-1-2"> | |
| 37 | + <div class="uk-form-row"> | |
| 38 | + <label class="uk-form-label">终点站</label> | |
| 39 | + <div class="uk-form-controls"> | |
| 40 | + <select name="zdzCode"> | |
| 41 | + </select> | |
| 42 | + </div> | |
| 43 | + </div> | |
| 44 | + </div> | |
| 45 | + </div> | |
| 46 | + <div class="uk-grid"> | |
| 47 | + <div class="uk-width-1-2"> | |
| 48 | + <div class="uk-form-row"> | |
| 49 | + <label class="uk-form-label">开始时间</label> | |
| 50 | + <div class="uk-form-controls"> | |
| 51 | + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required> | |
| 52 | + </div> | |
| 53 | + </div> | |
| 54 | + </div> | |
| 55 | + <div class="uk-width-1-2"> | |
| 56 | + <div class="uk-form-row"> | |
| 57 | + <label class="uk-form-label">结束时间</label> | |
| 58 | + <div class="uk-form-controls"> | |
| 59 | + <input type="time" name="zdsj" required> | |
| 60 | + </div> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | + </div> | |
| 64 | + <div class="uk-grid"> | |
| 65 | + <div class="uk-width-1-2"> | |
| 66 | + <div class="uk-form-row"> | |
| 67 | + <label class="uk-form-label">车辆</label> | |
| 68 | + <div class="uk-form-controls"> | |
| 69 | + <div class="uk-autocomplete uk-form car-autocom"> | |
| 70 | + <input type="text" value="{{clZbh}}" name="clZbh" required> | |
| 71 | + </div> | |
| 72 | + </div> | |
| 73 | + </div> | |
| 74 | + </div> | |
| 75 | + <div class="uk-width-1-2"> | |
| 76 | + <div class="uk-form-row"> | |
| 77 | + <label class="uk-form-label">里程</label> | |
| 78 | + <div class="uk-form-controls"> | |
| 79 | + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false" | |
| 80 | + required> | |
| 81 | + </div> | |
| 82 | + </div> | |
| 83 | + </div> | |
| 84 | + </div> | |
| 85 | + <div class="uk-grid"> | |
| 86 | + <div class="uk-width-1-2"> | |
| 87 | + <div class="uk-form-row"> | |
| 88 | + <label class="uk-form-label">驾驶员</label> | |
| 89 | + <div class="uk-form-controls"> | |
| 90 | + <div class="uk-autocomplete uk-form jsy-autocom"> | |
| 91 | + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> | |
| 92 | + </div> | |
| 93 | + </div> | |
| 94 | + </div> | |
| 95 | + </div> | |
| 96 | + <div class="uk-width-1-2"> | |
| 97 | + <div class="uk-form-row"> | |
| 98 | + <label class="uk-form-label">售票员</label> | |
| 99 | + <div class="uk-form-controls"> | |
| 100 | + <div class="uk-autocomplete uk-form spy-autocom"> | |
| 101 | + <input type="text" name="spy" value="{{sGh}}/{{sName}}"> | |
| 102 | + </div> | |
| 103 | + </div> | |
| 104 | + </div> | |
| 105 | + </div> | |
| 106 | + </div> | |
| 107 | + <div class="uk-grid"> | |
| 108 | + <div class="uk-width-1-2"> | |
| 109 | + <div class="uk-form-row"> | |
| 110 | + <label class="uk-form-label">路牌</label> | |
| 111 | + <div class="uk-form-controls"> | |
| 112 | + <input type="text" value="{{lpName}}" name="lpName" required> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | + </div> | |
| 116 | + </div> | |
| 117 | + <div class="uk-grid"> | |
| 118 | + <div class="uk-width-1-1"> | |
| 119 | + <div class="uk-form-row"> | |
| 120 | + <label class="uk-form-label">备注</label> | |
| 121 | + <div class="uk-form-controls"> | |
| 122 | + <div class="uk-autocomplete uk-form remarks-autocom"> | |
| 123 | + <input type="text" name="remarks"> | |
| 124 | + </div> | |
| 125 | + </div> | |
| 126 | + </div> | |
| 127 | + </div> | |
| 128 | + </div> | |
| 129 | + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> | |
| 130 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 131 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存 | |
| 132 | + </button> | |
| 133 | + </div> | |
| 134 | + </form> | |
| 135 | +</script> | |
| 136 | +<script> | |
| 137 | + (function () { | |
| 138 | + var wrap = '#schedule-addsch-modal .normalCont', sch, nf, submitFun; | |
| 139 | + | |
| 140 | + $(wrap).on('init', function (e, data) { | |
| 141 | + e.stopPropagation(); | |
| 142 | + sch = data.sch; | |
| 143 | + submitFun = data.submitFun; | |
| 144 | + | |
| 145 | + nf = addForm(); | |
| 146 | + //提交 | |
| 147 | + nf.on('success.form.fv', function (e) { | |
| 148 | + e.preventDefault(); | |
| 149 | + | |
| 150 | + disabled_submit_btn(nf); | |
| 151 | + var data = nf.serializeJSON(); | |
| 152 | + submitFun(data, function (rs) { | |
| 153 | + //前端数据更新 | |
| 154 | + gb_schedule_table.insertSchedule(rs.t, rs.ts); | |
| 155 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t}); | |
| 156 | + try { | |
| 157 | + if(rs.t.bcType=='in' || rs.t.bcType=='out') | |
| 158 | + gb_data_basic.reload_stat_park_data(); | |
| 159 | + }catch (e){ | |
| 160 | + console.log(e);} | |
| 161 | + UIkit.modal('#schedule-addsch-modal').hide(); | |
| 162 | + //更新路牌公里统计面板 | |
| 163 | + gb_schedule_table.showLpMileageTipBySch(rs.t); | |
| 164 | + }, function () { | |
| 165 | + enable_submit_btn(nf); | |
| 166 | + }); | |
| 167 | + }); | |
| 168 | + }); | |
| 169 | + | |
| 170 | + function addForm() { | |
| 171 | + var htmlStr = template('add_normal_sch-form-temp', sch); | |
| 172 | + var f = $(htmlStr); | |
| 173 | + $(wrap).append(f); | |
| 174 | + //字典转换 | |
| 175 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 176 | + //validation | |
| 177 | + f.formValidation({framework: 'uikit', locale: 'zh_CN'}); | |
| 178 | + //autocomp | |
| 179 | + f.trigger('init-autoCom'); | |
| 180 | + | |
| 181 | + $f('bcType', f).trigger('change'); | |
| 182 | + return f; | |
| 183 | + } | |
| 184 | + | |
| 185 | + function $f(name, f) { | |
| 186 | + return $('[name=' + name + ']', f); | |
| 187 | + } | |
| 188 | + })(); | |
| 189 | +</script> | |
| 0 | 190 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch_v2/add_park_to_park.html
0 → 100644
| 1 | +<!-- 临加场到场班次form --> | |
| 2 | +<script id="add_park_to_park_sch-form-temp" type="text/html"> | |
| 3 | + <form class="uk-form uk-form-horizontal"> | |
| 4 | + <div class="uk-grid"> | |
| 5 | + <div class="uk-width-1-2"> | |
| 6 | + <div class="uk-form-row"> | |
| 7 | + <label class="uk-form-label">班次类型</label> | |
| 8 | + <div class="uk-form-controls"> | |
| 9 | + <select class="form-control" name="bcType"> | |
| 10 | + <option value="in">进场</option> | |
| 11 | + </select> | |
| 12 | + </div> | |
| 13 | + </div> | |
| 14 | + </div> | |
| 15 | + <div class="uk-width-1-2"> | |
| 16 | + <div class="uk-form-row"> | |
| 17 | + <label class="uk-form-label">上下行</label> | |
| 18 | + <div class="uk-form-controls"> | |
| 19 | + <select name="xlDir"> | |
| 20 | + <option value="0">上行</option> | |
| 21 | + <option value="1">下行</option> | |
| 22 | + </select> | |
| 23 | + </div> | |
| 24 | + </div> | |
| 25 | + </div> | |
| 26 | + </div> | |
| 27 | + <div class="uk-grid"> | |
| 28 | + <div class="uk-width-1-2"> | |
| 29 | + <div class="uk-form-row"> | |
| 30 | + <label class="uk-form-label">起点站</label> | |
| 31 | + <div class="uk-form-controls"> | |
| 32 | + <select name="qdzCode"> | |
| 33 | + </select> | |
| 34 | + </div> | |
| 35 | + </div> | |
| 36 | + </div> | |
| 37 | + <div class="uk-width-1-2"> | |
| 38 | + <div class="uk-form-row"> | |
| 39 | + <label class="uk-form-label">终点站</label> | |
| 40 | + <div class="uk-form-controls"> | |
| 41 | + <select name="zdzCode"> | |
| 42 | + </select> | |
| 43 | + </div> | |
| 44 | + </div> | |
| 45 | + </div> | |
| 46 | + </div> | |
| 47 | + <div class="uk-grid"> | |
| 48 | + <div class="uk-width-1-2"> | |
| 49 | + <div class="uk-form-row"> | |
| 50 | + <label class="uk-form-label">开始时间</label> | |
| 51 | + <div class="uk-form-controls"> | |
| 52 | + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required> | |
| 53 | + </div> | |
| 54 | + </div> | |
| 55 | + </div> | |
| 56 | + <div class="uk-width-1-2"> | |
| 57 | + <div class="uk-form-row"> | |
| 58 | + <label class="uk-form-label">结束时间</label> | |
| 59 | + <div class="uk-form-controls"> | |
| 60 | + <input type="time" name="zdsj" required> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | + </div> | |
| 64 | + </div> | |
| 65 | + <div class="uk-grid"> | |
| 66 | + <div class="uk-width-1-2"> | |
| 67 | + <div class="uk-form-row"> | |
| 68 | + <label class="uk-form-label">车辆</label> | |
| 69 | + <div class="uk-form-controls"> | |
| 70 | + <div class="uk-autocomplete uk-form car-autocom"> | |
| 71 | + <input type="text" value="{{clZbh}}" name="clZbh" required> | |
| 72 | + </div> | |
| 73 | + </div> | |
| 74 | + </div> | |
| 75 | + </div> | |
| 76 | + <div class="uk-width-1-2"> | |
| 77 | + <div class="uk-form-row"> | |
| 78 | + <label class="uk-form-label">里程</label> | |
| 79 | + <div class="uk-form-controls"> | |
| 80 | + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false" | |
| 81 | + required> | |
| 82 | + </div> | |
| 83 | + </div> | |
| 84 | + </div> | |
| 85 | + </div> | |
| 86 | + <div class="uk-grid"> | |
| 87 | + <div class="uk-width-1-2"> | |
| 88 | + <div class="uk-form-row"> | |
| 89 | + <label class="uk-form-label">驾驶员</label> | |
| 90 | + <div class="uk-form-controls"> | |
| 91 | + <div class="uk-autocomplete uk-form jsy-autocom"> | |
| 92 | + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> | |
| 93 | + </div> | |
| 94 | + </div> | |
| 95 | + </div> | |
| 96 | + </div> | |
| 97 | + <div class="uk-width-1-2"> | |
| 98 | + <div class="uk-form-row"> | |
| 99 | + <label class="uk-form-label">售票员</label> | |
| 100 | + <div class="uk-form-controls"> | |
| 101 | + <div class="uk-autocomplete uk-form spy-autocom"> | |
| 102 | + <input type="text" name="spy" value="{{sGh}}/{{sName}}"> | |
| 103 | + </div> | |
| 104 | + </div> | |
| 105 | + </div> | |
| 106 | + </div> | |
| 107 | + </div> | |
| 108 | + <div class="uk-grid"> | |
| 109 | + <div class="uk-width-1-2"> | |
| 110 | + <div class="uk-form-row"> | |
| 111 | + <label class="uk-form-label">路牌</label> | |
| 112 | + <div class="uk-form-controls"> | |
| 113 | + <input type="text" value="{{lpName}}" name="lpName" required> | |
| 114 | + </div> | |
| 115 | + </div> | |
| 116 | + </div> | |
| 117 | + </div> | |
| 118 | + <div class="uk-grid"> | |
| 119 | + <div class="uk-width-1-1"> | |
| 120 | + <div class="uk-form-row"> | |
| 121 | + <label class="uk-form-label">备注</label> | |
| 122 | + <div class="uk-form-controls"> | |
| 123 | + <div class="uk-autocomplete uk-form remarks-autocom"> | |
| 124 | + <input type="text" name="remarks"> | |
| 125 | + </div> | |
| 126 | + </div> | |
| 127 | + </div> | |
| 128 | + </div> | |
| 129 | + </div> | |
| 130 | + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> | |
| 131 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 132 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存 | |
| 133 | + </button> | |
| 134 | + </div> | |
| 135 | + </form> | |
| 136 | +</script> | |
| 137 | + | |
| 138 | +<script> | |
| 139 | + (function () { | |
| 140 | + var wrap = '#schedule-addsch-modal .parkToParkCont', sch, nf, submitFun,parks,carsArray; | |
| 141 | + | |
| 142 | + $(wrap).on('init', function (e, data) { | |
| 143 | + e.stopPropagation(); | |
| 144 | + sch = data.sch; | |
| 145 | + submitFun = data.submitFun; | |
| 146 | + parks = data.parks; | |
| 147 | + carsArray = data.carsArray; | |
| 148 | + | |
| 149 | + nf = addForm(); | |
| 150 | + //提交 | |
| 151 | + nf.on('success.form.fv', function (e) { | |
| 152 | + e.preventDefault(); | |
| 153 | + | |
| 154 | + disabled_submit_btn(nf); | |
| 155 | + var data = nf.serializeJSON(); | |
| 156 | + submitFun(data, function (rs) { | |
| 157 | + //前端数据更新 | |
| 158 | + gb_schedule_table.insertSchedule(rs.t, rs.ts); | |
| 159 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t}); | |
| 160 | + try { | |
| 161 | + if(rs.t.bcType=='in' || rs.t.bcType=='out') | |
| 162 | + gb_data_basic.reload_stat_park_data(); | |
| 163 | + }catch (e){ | |
| 164 | + console.log(e);} | |
| 165 | + UIkit.modal('#schedule-addsch-modal').hide(); | |
| 166 | + //更新路牌公里统计面板 | |
| 167 | + gb_schedule_table.showLpMileageTipBySch(rs.t); | |
| 168 | + }, function () { | |
| 169 | + enable_submit_btn(nf); | |
| 170 | + }); | |
| 171 | + }); | |
| 172 | + $f('zdzCode',nf).trigger('change'); | |
| 173 | + }); | |
| 174 | + | |
| 175 | + function addForm() { | |
| 176 | + var htmlStr = template('add_park_to_park_sch-form-temp', sch); | |
| 177 | + var f = $(htmlStr); | |
| 178 | + $(wrap).append(f); | |
| 179 | + //字典转换 | |
| 180 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 181 | + //validation | |
| 182 | + f.formValidation({framework: 'uikit', locale: 'zh_CN'}); | |
| 183 | + //autocomp | |
| 184 | + initAutoComp(f); | |
| 185 | + | |
| 186 | + //起终点都是停车场 | |
| 187 | + var park_opts; | |
| 188 | + for(var i=0,p;p=parks[i++];) | |
| 189 | + park_opts += '<option value="' + p.code + '">' + p.name + '</option>'; | |
| 190 | + $f('qdzCode', f).html(park_opts); | |
| 191 | + $f('zdzCode', f).html(park_opts); | |
| 192 | + | |
| 193 | + if(sch.bcType=='in'){ | |
| 194 | + $f('qdzCode', f).val(sch.zdzCode); | |
| 195 | + //选中的也是场到场班次 | |
| 196 | + if(gb_data_basic.getCarparkByCode(sch.qdzCode) != null){ | |
| 197 | + //默认做返程 | |
| 198 | + $f('zdzCode', f).val(sch.qdzCode); | |
| 199 | + $f('remarks', f).val(sch.remarks); | |
| 200 | + $f('jhlc', f).val(sch.jhlc); | |
| 201 | + //时间 | |
| 202 | + var zdsj = moment(sch.zdsj, 'HH:mm').add('minutes', sch.bcsj).format('HH:mm'); | |
| 203 | + $f('zdsj', f).val(zdsj); | |
| 204 | + } | |
| 205 | + } | |
| 206 | + return f; | |
| 207 | + } | |
| 208 | + | |
| 209 | + function $f(name, f) { | |
| 210 | + return $('[name=' + name + ']', f); | |
| 211 | + } | |
| 212 | + | |
| 213 | + function initAutoComp(f) { | |
| 214 | + //车辆 | |
| 215 | + if(carsArray) | |
| 216 | + gb_common.carAutocomplete($('.car-autocom', f), carsArray); | |
| 217 | + //驾驶员 | |
| 218 | + gb_common.personAutocomplete($('.jsy-autocom', f)); | |
| 219 | + //售票员 | |
| 220 | + gb_common.personAutocomplete($('.spy-autocom', f)); | |
| 221 | + //备注补全 | |
| 222 | + gb_common.remarksAutocomplete($('.remarks-autocom', f)); | |
| 223 | + } | |
| 224 | + | |
| 225 | + })(); | |
| 226 | +</script> | |
| 0 | 227 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch_v2/add_two_way.html
0 → 100644
| 1 | +<!-- 线路上往返临加班次 --> | |
| 2 | +<script id="add_toAndFro_sch-form-temp" type="text/html"> | |
| 3 | + <form class="uk-form uk-form-horizontal add-sch-form one_form"> | |
| 4 | + <div class="uk-grid"> | |
| 5 | + <div class="uk-width-1-2"> | |
| 6 | + <div class="uk-form-row"> | |
| 7 | + <label class="uk-form-label">班次类型</label> | |
| 8 | + <div class="uk-form-controls"> | |
| 9 | + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}" | |
| 10 | + data-group=ScheduleType></select> | |
| 11 | + </div> | |
| 12 | + </div> | |
| 13 | + </div> | |
| 14 | + <div class="uk-width-1-2"> | |
| 15 | + <div class="uk-form-row"> | |
| 16 | + <label class="uk-form-label">上下行</label> | |
| 17 | + <div class="uk-form-controls"> | |
| 18 | + <select name="xlDir"> | |
| 19 | + <option value="0">上行</option> | |
| 20 | + <option value="1">下行</option> | |
| 21 | + </select> | |
| 22 | + </div> | |
| 23 | + </div> | |
| 24 | + </div> | |
| 25 | + </div> | |
| 26 | + <div class="uk-grid"> | |
| 27 | + <div class="uk-width-1-2"> | |
| 28 | + <div class="uk-form-row"> | |
| 29 | + <label class="uk-form-label">起点站</label> | |
| 30 | + <div class="uk-form-controls"> | |
| 31 | + <select name="qdzCode" > | |
| 32 | + </select> | |
| 33 | + </div> | |
| 34 | + </div> | |
| 35 | + </div> | |
| 36 | + <div class="uk-width-1-2"> | |
| 37 | + <div class="uk-form-row"> | |
| 38 | + <label class="uk-form-label">终点站</label> | |
| 39 | + <div class="uk-form-controls"> | |
| 40 | + <select name="zdzCode" > | |
| 41 | + </select> | |
| 42 | + </div> | |
| 43 | + </div> | |
| 44 | + </div> | |
| 45 | + </div> | |
| 46 | + <div class="uk-grid"> | |
| 47 | + <div class="uk-width-1-2"> | |
| 48 | + <div class="uk-form-row"> | |
| 49 | + <label class="uk-form-label">开始时间</label> | |
| 50 | + <div class="uk-form-controls"> | |
| 51 | + <input type="time" value="{{zdsj}}" name="fcsj" required> | |
| 52 | + </div> | |
| 53 | + </div> | |
| 54 | + </div> | |
| 55 | + <div class="uk-width-1-2"> | |
| 56 | + <div class="uk-form-row"> | |
| 57 | + <label class="uk-form-label">结束时间</label> | |
| 58 | + <div class="uk-form-controls"> | |
| 59 | + <input type="time" name="zdsj" required> | |
| 60 | + </div> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | + </div> | |
| 64 | + <div class="uk-grid"> | |
| 65 | + <div class="uk-width-1-2"> | |
| 66 | + <div class="uk-form-row"> | |
| 67 | + <label class="uk-form-label">车辆</label> | |
| 68 | + <div class="uk-form-controls"> | |
| 69 | + <div class="uk-autocomplete uk-form car-autocom"> | |
| 70 | + <input type="text" value="{{clZbh}}" name="clZbh" required> | |
| 71 | + </div> | |
| 72 | + </div> | |
| 73 | + </div> | |
| 74 | + </div> | |
| 75 | + <div class="uk-width-1-2"> | |
| 76 | + <div class="uk-form-row"> | |
| 77 | + <label class="uk-form-label">里程</label> | |
| 78 | + <div class="uk-form-controls"> | |
| 79 | + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false" | |
| 80 | + required> | |
| 81 | + </div> | |
| 82 | + </div> | |
| 83 | + </div> | |
| 84 | + </div> | |
| 85 | + <div class="uk-grid"> | |
| 86 | + <div class="uk-width-1-2"> | |
| 87 | + <div class="uk-form-row"> | |
| 88 | + <label class="uk-form-label">驾驶员</label> | |
| 89 | + <div class="uk-form-controls"> | |
| 90 | + <div class="uk-autocomplete uk-form jsy-autocom"> | |
| 91 | + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> | |
| 92 | + </div> | |
| 93 | + </div> | |
| 94 | + </div> | |
| 95 | + </div> | |
| 96 | + <div class="uk-width-1-2"> | |
| 97 | + <div class="uk-form-row"> | |
| 98 | + <label class="uk-form-label">售票员</label> | |
| 99 | + <div class="uk-form-controls"> | |
| 100 | + <div class="uk-autocomplete uk-form spy-autocom"> | |
| 101 | + <input type="text" name="spy" value="{{sGh}}/{{sName}}"> | |
| 102 | + </div> | |
| 103 | + </div> | |
| 104 | + </div> | |
| 105 | + </div> | |
| 106 | + </div> | |
| 107 | + <div class="uk-grid"> | |
| 108 | + <div class="uk-width-1-2"> | |
| 109 | + <div class="uk-form-row"> | |
| 110 | + <label class="uk-form-label">路牌</label> | |
| 111 | + <div class="uk-form-controls"> | |
| 112 | + <input type="text" value="{{lpName}}" name="lpName" required> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | + </div> | |
| 116 | + </div> | |
| 117 | + <div class="uk-grid"> | |
| 118 | + <div class="uk-width-1-1"> | |
| 119 | + <div class="uk-form-row"> | |
| 120 | + <label class="uk-form-label">备注</label> | |
| 121 | + <div class="uk-form-controls"> | |
| 122 | + <div class="uk-autocomplete uk-form remarks-autocom"> | |
| 123 | + <input type="text" name="remarks"> | |
| 124 | + </div> | |
| 125 | + </div> | |
| 126 | + </div> | |
| 127 | + </div> | |
| 128 | + </div> | |
| 129 | + </form> | |
| 130 | + <hr style="margin-top: 35px;"> | |
| 131 | + <form class="uk-form uk-form-horizontal add-sch-form two_form"> | |
| 132 | + <div class="uk-grid"> | |
| 133 | + <div class="uk-width-1-2"> | |
| 134 | + <div class="uk-form-row"> | |
| 135 | + <label class="uk-form-label">班次类型</label> | |
| 136 | + <div class="uk-form-controls"> | |
| 137 | + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}" | |
| 138 | + data-group=ScheduleType></select> | |
| 139 | + </div> | |
| 140 | + </div> | |
| 141 | + </div> | |
| 142 | + <div class="uk-width-1-2"> | |
| 143 | + <div class="uk-form-row"> | |
| 144 | + <label class="uk-form-label">上下行</label> | |
| 145 | + <div class="uk-form-controls"> | |
| 146 | + <select name="xlDir"> | |
| 147 | + <option value="0">上行</option> | |
| 148 | + <option value="1">下行</option> | |
| 149 | + </select> | |
| 150 | + </div> | |
| 151 | + </div> | |
| 152 | + </div> | |
| 153 | + </div> | |
| 154 | + <div class="uk-grid"> | |
| 155 | + <div class="uk-width-1-2"> | |
| 156 | + <div class="uk-form-row"> | |
| 157 | + <label class="uk-form-label">起点站</label> | |
| 158 | + <div class="uk-form-controls"> | |
| 159 | + <select name="qdzCode" > | |
| 160 | + </select> | |
| 161 | + </div> | |
| 162 | + </div> | |
| 163 | + </div> | |
| 164 | + <div class="uk-width-1-2"> | |
| 165 | + <div class="uk-form-row"> | |
| 166 | + <label class="uk-form-label">终点站</label> | |
| 167 | + <div class="uk-form-controls"> | |
| 168 | + <select name="zdzCode" > | |
| 169 | + </select> | |
| 170 | + </div> | |
| 171 | + </div> | |
| 172 | + </div> | |
| 173 | + </div> | |
| 174 | + <div class="uk-grid"> | |
| 175 | + <div class="uk-width-1-2"> | |
| 176 | + <div class="uk-form-row"> | |
| 177 | + <label class="uk-form-label">开始时间</label> | |
| 178 | + <div class="uk-form-controls"> | |
| 179 | + <input type="time" value="{{zdsj}}" name="fcsj" required> | |
| 180 | + </div> | |
| 181 | + </div> | |
| 182 | + </div> | |
| 183 | + <div class="uk-width-1-2"> | |
| 184 | + <div class="uk-form-row"> | |
| 185 | + <label class="uk-form-label">结束时间</label> | |
| 186 | + <div class="uk-form-controls"> | |
| 187 | + <input type="time" name="zdsj" required> | |
| 188 | + </div> | |
| 189 | + </div> | |
| 190 | + </div> | |
| 191 | + </div> | |
| 192 | + <div class="uk-grid"> | |
| 193 | + <div class="uk-width-1-2"> | |
| 194 | + <div class="uk-form-row"> | |
| 195 | + <label class="uk-form-label">车辆</label> | |
| 196 | + <div class="uk-form-controls"> | |
| 197 | + <div class="uk-autocomplete uk-form car-autocom"> | |
| 198 | + <input type="text" value="{{clZbh}}" name="clZbh" required> | |
| 199 | + </div> | |
| 200 | + </div> | |
| 201 | + </div> | |
| 202 | + </div> | |
| 203 | + <div class="uk-width-1-2"> | |
| 204 | + <div class="uk-form-row"> | |
| 205 | + <label class="uk-form-label">里程</label> | |
| 206 | + <div class="uk-form-controls"> | |
| 207 | + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false" | |
| 208 | + required> | |
| 209 | + </div> | |
| 210 | + </div> | |
| 211 | + </div> | |
| 212 | + </div> | |
| 213 | + <div class="uk-grid"> | |
| 214 | + <div class="uk-width-1-2"> | |
| 215 | + <div class="uk-form-row"> | |
| 216 | + <label class="uk-form-label">驾驶员</label> | |
| 217 | + <div class="uk-form-controls"> | |
| 218 | + <div class="uk-autocomplete uk-form jsy-autocom"> | |
| 219 | + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> | |
| 220 | + </div> | |
| 221 | + </div> | |
| 222 | + </div> | |
| 223 | + </div> | |
| 224 | + <div class="uk-width-1-2"> | |
| 225 | + <div class="uk-form-row"> | |
| 226 | + <label class="uk-form-label">售票员</label> | |
| 227 | + <div class="uk-form-controls"> | |
| 228 | + <div class="uk-autocomplete uk-form spy-autocom"> | |
| 229 | + <input type="text" name="spy" value="{{sGh}}/{{sName}}"> | |
| 230 | + </div> | |
| 231 | + </div> | |
| 232 | + </div> | |
| 233 | + </div> | |
| 234 | + </div> | |
| 235 | + <div class="uk-grid"> | |
| 236 | + <div class="uk-width-1-2"> | |
| 237 | + <div class="uk-form-row"> | |
| 238 | + <label class="uk-form-label">路牌</label> | |
| 239 | + <div class="uk-form-controls"> | |
| 240 | + <input type="text" value="{{lpName}}" name="lpName" required> | |
| 241 | + </div> | |
| 242 | + </div> | |
| 243 | + </div> | |
| 244 | + </div> | |
| 245 | + <div class="uk-grid"> | |
| 246 | + <div class="uk-width-1-1"> | |
| 247 | + <div class="uk-form-row"> | |
| 248 | + <label class="uk-form-label">备注</label> | |
| 249 | + <div class="uk-form-controls"> | |
| 250 | + <div class="uk-autocomplete uk-form remarks-autocom"> | |
| 251 | + <input type="text" name="remarks"> | |
| 252 | + </div> | |
| 253 | + </div> | |
| 254 | + </div> | |
| 255 | + </div> | |
| 256 | + </div> | |
| 257 | + </form> | |
| 258 | + | |
| 259 | + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> | |
| 260 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 261 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 262 | + </div> | |
| 263 | +</script> | |
| 264 | + | |
| 265 | +<script> | |
| 266 | + (function () { | |
| 267 | + var wrap = '#schedule-addsch-modal .toAndFroCont', sch, f1, f2, submitFun, stationRoutes; | |
| 268 | + | |
| 269 | + $(wrap).on('init', function (e, data) { | |
| 270 | + e.stopPropagation(); | |
| 271 | + sch = data.sch; | |
| 272 | + submitFun = data.submitFun; | |
| 273 | + stationRoutes = data.stationRoutes; | |
| 274 | + | |
| 275 | + var htmlStr = template('add_toAndFro_sch-form-temp', sch); | |
| 276 | + $(wrap).append(htmlStr); | |
| 277 | + //字典转换 | |
| 278 | + dictionaryUtils.transformDom($('.nt-dictionary', wrap)); | |
| 279 | + //validation | |
| 280 | + $('.add-sch-form', wrap).formValidation({framework: 'uikit', locale: 'zh_CN'}).trigger('init-autoCom'); | |
| 281 | + $('.add-sch-form [name=bcType]', wrap).trigger('change'); | |
| 282 | + | |
| 283 | + f1 = $('.add-sch-form.one_form', wrap); | |
| 284 | + f2 = $('.add-sch-form.two_form', wrap); | |
| 285 | + | |
| 286 | + //默认1备注同步到2 | |
| 287 | + $f('remarks', f1).on('input', function () { | |
| 288 | + $f('remarks', f2).val($(this).val()); | |
| 289 | + }); | |
| 290 | + //默认1备注同步到2 | |
| 291 | + $('.remarks-autocom', f1).on('selectitem.uk.autocomplete', function (e, data, acobject) { | |
| 292 | + $f('remarks', f2).val(data.value); | |
| 293 | + }); | |
| 294 | + | |
| 295 | + //人车级联 | |
| 296 | + $f('clZbh',f1).on('input change', function () { | |
| 297 | + $f('clZbh', f2).val($(this).val()); | |
| 298 | + }); | |
| 299 | + $f('jsy',f1).on('input change', function () { | |
| 300 | + $f('jsy', f2).val($(this).val()); | |
| 301 | + }); | |
| 302 | + $f('spy',f1).on('input change', function () { | |
| 303 | + $f('spy', f2).val($(this).val()); | |
| 304 | + }); | |
| 305 | + $f('lpName',f1).on('input change', function () { | |
| 306 | + $f('lpName', f2).val($(this).val()); | |
| 307 | + }); | |
| 308 | + //表单同步 | |
| 309 | + $(f1).on('ct_callback', synchroFormData).trigger('ct_callback'); | |
| 310 | + //修改1结束时间 | |
| 311 | + $f('zdsj',f1).on('input', synchroFormData); | |
| 312 | + | |
| 313 | + //表单校验提交相关 | |
| 314 | + var dataArray; | |
| 315 | + var fs = $('.add-sch-form', wrap); | |
| 316 | + fs.on('success.form.fv', function (e) { | |
| 317 | + e.preventDefault(); | |
| 318 | + dataArray.push($(this).serializeJSON()); | |
| 319 | + $(this).data('valid', true); | |
| 320 | + if (allValidSuccess()) { | |
| 321 | + //开始post | |
| 322 | + var i = 0; | |
| 323 | + var inArr = []; | |
| 324 | + var upArr = []; | |
| 325 | + (function () { | |
| 326 | + var f = arguments.callee; | |
| 327 | + if (i >= dataArray.length) { | |
| 328 | + //前端数据更新 | |
| 329 | + var last = inArr.pop(); | |
| 330 | + gb_schedule_table.insertSchedule(last, upArr); | |
| 331 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: last}); | |
| 332 | + | |
| 333 | + try { | |
| 334 | + if(last.bcType=='in' || last.bcType=='out') | |
| 335 | + gb_data_basic.reload_stat_park_data(); | |
| 336 | + }catch (e){ | |
| 337 | + console.log(e);} | |
| 338 | + UIkit.modal('#schedule-addsch-modal').hide(); | |
| 339 | + //更新路牌公里统计面板 | |
| 340 | + gb_schedule_table.showLpMileageTipBySch(last); | |
| 341 | + return; | |
| 342 | + } | |
| 343 | + submitFun(dataArray[i], function (rs) { | |
| 344 | + inArr.push(rs.t); | |
| 345 | + upArr = upArr.concat(rs.ts); | |
| 346 | + upArr.push(rs.t); | |
| 347 | + i++; | |
| 348 | + f(); | |
| 349 | + }, function () { | |
| 350 | + $('[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 351 | + }); | |
| 352 | + })(); | |
| 353 | + } | |
| 354 | + }); | |
| 355 | + //提交 | |
| 356 | + $('[type=submit]', wrap).on('click', function () { | |
| 357 | + $(this).addClass('disabled').attr('disabled', 'disabled'); | |
| 358 | + dataArray = []; | |
| 359 | + fs.data('valid', false); | |
| 360 | + fs.formValidation('validate'); | |
| 361 | + }); | |
| 362 | + }); | |
| 363 | + | |
| 364 | + function $f(name, f) { | |
| 365 | + return $('[name=' + name + ']', f); | |
| 366 | + } | |
| 367 | + | |
| 368 | + function allValidSuccess() { | |
| 369 | + var flag = true; | |
| 370 | + $('form.add-sch-form:visible', wrap).each(function (i, f) { | |
| 371 | + if (!$(f).data('valid')) { | |
| 372 | + flag = false; | |
| 373 | + return false; | |
| 374 | + } | |
| 375 | + }); | |
| 376 | + return flag; | |
| 377 | + } | |
| 378 | + | |
| 379 | + /** | |
| 380 | + * 同步2个表单的数据 | |
| 381 | + */ | |
| 382 | + var bcTypes = {'normal': 'normal', 'region': 'region', 'out': 'in', 'in': 'out'}; | |
| 383 | + var synchroFormData = function () { | |
| 384 | + //同步班次类型 | |
| 385 | + var type = $f('bcType', f1).val(); | |
| 386 | + if (bcTypes[type]) | |
| 387 | + $f('bcType', f2).val(bcTypes[type]).trigger('change'); | |
| 388 | + var updown = $f('xlDir', f1).val(); | |
| 389 | + | |
| 390 | + //1 结束时间 = 2 开始时间 | |
| 391 | + $f('fcsj', f2).val($f('zdsj', f1).val()); | |
| 392 | + if (type != 'out' && type != 'in') { | |
| 393 | + //走向 | |
| 394 | + $f('xlDir', f2).val(updown == 0 ? 1 : 0).trigger('change'); | |
| 395 | + | |
| 396 | + //第一个表单终点 = 第二个起点 | |
| 397 | + var oneZdName = $('[name=zdzCode] option:selected', f1).text(); | |
| 398 | + $f('qdzCode', f2).val(searchParallelStation(oneZdName, updown == 0 ? 1 : 0)); | |
| 399 | + //第一个表单起点 = 第二个终点 | |
| 400 | + var oneQdName = $('[name=qdzCode] option:selected', f1).text(); | |
| 401 | + $f('zdzCode', f2).val(searchParallelStation(oneQdName, updown == 0 ? 1 : 0)).trigger('change'); | |
| 402 | + } | |
| 403 | + else { | |
| 404 | + //进出场走向相同 | |
| 405 | + $f('xlDir', f2).val(updown).trigger('change'); | |
| 406 | + //第一个表单终点 = 第二个起点 | |
| 407 | + $f('qdzCode', f2).val($f('zdzCode', f1).val()); | |
| 408 | + //第一个表单起点 = 第二个终点 | |
| 409 | + $f('zdzCode', f2).val($f('qdzCode', f1).val()).trigger('change'); | |
| 410 | + } | |
| 411 | + | |
| 412 | + }; | |
| 413 | + | |
| 414 | + | |
| 415 | + //返回另一个走向对应的站点 | |
| 416 | + function searchParallelStation(stationName, updown) { | |
| 417 | + var routes = stationRoutes[updown] | |
| 418 | + , len = routes.length; | |
| 419 | + | |
| 420 | + for (var i = 0; i < len; i++) { | |
| 421 | + if (routes[i].stationName == stationName) | |
| 422 | + return routes[i].stationCode; | |
| 423 | + } | |
| 424 | + } | |
| 425 | + })(); | |
| 426 | +</script> | |
| 0 | 427 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch_v2/main.html
0 → 100644
| 1 | +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal"> | |
| 2 | + <div class="uk-modal-dialog" style="width: 800px;"> | |
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | + <div class="uk-modal-header"> | |
| 5 | + <h2>新增临加班次</h2></div> | |
| 6 | + | |
| 7 | + <div class="uk-grid"> | |
| 8 | + <div class="uk-width-1-4"> | |
| 9 | + <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg"> | |
| 10 | + <li data-handle="normal"><a>1、临加班次</a></li> | |
| 11 | + <li data-handle="toAndFro"><a>2、往返</a></li> | |
| 12 | + <li data-handle="parkToPark"><a>3、场到场</a></li> | |
| 13 | + </ul> | |
| 14 | + </div> | |
| 15 | + <div class="uk-width-3-4"> | |
| 16 | + <ul id="tempScheduleContent" class="uk-switcher"> | |
| 17 | + <li class="normalCont"></li> | |
| 18 | + <li class="toAndFroCont"></li> | |
| 19 | + <li class="parkToParkCont"></li> | |
| 20 | + </ul> | |
| 21 | + </div> | |
| 22 | + </div> | |
| 23 | + </div> | |
| 24 | + | |
| 25 | + <script> | |
| 26 | + (function () { | |
| 27 | + var modal = '#schedule-addsch-modal', | |
| 28 | + sch, stationRoutes, parks, information, carsArray, st_park_data; | |
| 29 | + | |
| 30 | + $(modal).on('init', function (e, data) { | |
| 31 | + e.stopPropagation(); | |
| 32 | + sch = data.sch; | |
| 33 | + //站到场数据 | |
| 34 | + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm]; | |
| 35 | + //站点路由 | |
| 36 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 37 | + return a.stationRouteCode - b.stationRouteCode; | |
| 38 | + }), 'directions'); | |
| 39 | + //停车场 | |
| 40 | + parks = gb_data_basic.simpleParksArray(); | |
| 41 | + //线路标准 | |
| 42 | + information = gb_data_basic.getLineInformation(sch.xlBm); | |
| 43 | + //停车场排序,常用的放前面 | |
| 44 | + parks = sort_parks(parks, information, st_park_data); | |
| 45 | + //车辆信息 | |
| 46 | + carsArray = gb_data_basic.carsArray(); | |
| 47 | + | |
| 48 | + var st_doms = gb_schedule_context_menu.get_add_sch_doms_v2(); | |
| 49 | + //normal | |
| 50 | + $('.normalCont', modal).html(st_doms.normal_dom) | |
| 51 | + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form}); | |
| 52 | + | |
| 53 | + //to and fro | |
| 54 | + $('.toAndFroCont', modal).html(st_doms.two_way_dom) | |
| 55 | + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, stationRoutes: stationRoutes}); | |
| 56 | + | |
| 57 | + //park to park | |
| 58 | + $('.parkToParkCont', modal).html(st_doms.park_to_park_dom) | |
| 59 | + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, parks: parks, carsArray: carsArray}); | |
| 60 | + }); | |
| 61 | + | |
| 62 | + //init-autoCom | |
| 63 | + $(modal).on('init-autoCom', '.add-sch-form', function () { | |
| 64 | + //车辆 | |
| 65 | + if(carsArray) | |
| 66 | + gb_common.carAutocomplete($('.car-autocom', this), carsArray); | |
| 67 | + //驾驶员 | |
| 68 | + gb_common.personAutocomplete($('.jsy-autocom', this)); | |
| 69 | + //售票员 | |
| 70 | + gb_common.personAutocomplete($('.spy-autocom', this)); | |
| 71 | + //备注补全 | |
| 72 | + gb_common.remarksAutocomplete($('.remarks-autocom', this)); | |
| 73 | + }); | |
| 74 | + | |
| 75 | + //班次类型 和 上下行 切换事件 | |
| 76 | + $(modal).on('change', '.add-sch-form [name=bcType],.add-sch-form [name=xlDir]', reCalcInputs_type); | |
| 77 | + //起终点站改变事件 | |
| 78 | + $(modal).on('change', '[name=qdzCode],[name=zdzCode]', reCalcInputs_station); | |
| 79 | + //开始时间和公里改变 | |
| 80 | + $(modal).on('input', '.add-sch-form [name=fcsj],.add-sch-form [name=jhlc]', reCalcEndTime); | |
| 81 | + | |
| 82 | + | |
| 83 | + function reCalcInputs_type() { | |
| 84 | + var f = $(this).parents('.add-sch-form'); | |
| 85 | + var bcType_e = $('[name=bcType]', f) | |
| 86 | + , xlDir_e = $('[name=xlDir]', f); | |
| 87 | + | |
| 88 | + var routes = stationRoutes[xlDir_e.val()] | |
| 89 | + , lastCode = routes[routes.length - 1].stationCode | |
| 90 | + , opts = '', park_opts = ''; | |
| 91 | + //station options | |
| 92 | + $.each(routes, function () { | |
| 93 | + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | |
| 94 | + }); | |
| 95 | + //park options | |
| 96 | + for(var i=0,p;p=parks[i++];) | |
| 97 | + park_opts += '<option value="' + p.code + '">' + p.name + '</option>'; | |
| 98 | + | |
| 99 | + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f); | |
| 100 | + //var time, mileage; | |
| 101 | + switch (bcType_e.val()) { | |
| 102 | + case 'out': | |
| 103 | + qdz.html(park_opts).val(information.carPark); | |
| 104 | + zdz.html(opts); | |
| 105 | + break; | |
| 106 | + case 'in': | |
| 107 | + qdz.html(opts); | |
| 108 | + zdz.html(park_opts).val(information.carPark); | |
| 109 | + break; | |
| 110 | + default: | |
| 111 | + qdz.html(opts); | |
| 112 | + zdz.html(opts).val(lastCode); | |
| 113 | + } | |
| 114 | + | |
| 115 | + zdz.trigger('change'); | |
| 116 | + f.trigger('ct_callback'); | |
| 117 | + } | |
| 118 | + | |
| 119 | + function reCalcInputs_station() { | |
| 120 | + var f = $(this).parents('form'), | |
| 121 | + bcType = $('[name=bcType]', f).val(), | |
| 122 | + qdzCode = $('[name=qdzCode]', f).val(), | |
| 123 | + zdzCode =$('[name=zdzCode]', f).val(), | |
| 124 | + startDate = $('[name=fcsj]', f).val(), | |
| 125 | + upDown = $('[name=xlDir]', f).val(), mileage, time; | |
| 126 | + | |
| 127 | + //从站到场里获取数据 | |
| 128 | + var stp = search_st_park(f); | |
| 129 | + if(stp){ | |
| 130 | + mileage=bcType=='in'?stp['mileage1']:stp['mileage2']; | |
| 131 | + time=bcType=='in'?stp['time1']:stp['time2']; | |
| 132 | + } | |
| 133 | + else{ | |
| 134 | + switch (upDown + '_' + bcType) { | |
| 135 | + case '0_out'://上行出场 | |
| 136 | + mileage = information.upOutMileage; | |
| 137 | + time = information.upOutTimer; | |
| 138 | + break; | |
| 139 | + case '1_out'://下行出场 | |
| 140 | + mileage = information.downOutMileage; | |
| 141 | + time = information.downOutTimer; | |
| 142 | + break; | |
| 143 | + case '0_in'://上行进场 | |
| 144 | + mileage = information.upInMileage; | |
| 145 | + time = information.upInTimer; | |
| 146 | + break; | |
| 147 | + case '1_in'://下行进场 | |
| 148 | + mileage = information.downInMileage; | |
| 149 | + time = information.downInTimer; | |
| 150 | + break; | |
| 151 | + default: | |
| 152 | + | |
| 153 | + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime, | |
| 154 | + qc_mileage=upDown==0?information.upMileage:information.downMileage, _type; | |
| 155 | + if(is_normal_sch(f)){ | |
| 156 | + _type='normal'; | |
| 157 | + mileage=qc_mileage; | |
| 158 | + } | |
| 159 | + else{ | |
| 160 | + _type='region'; | |
| 161 | + mileage = calcMileage(stationRoutes[upDown], qdzCode, zdzCode); | |
| 162 | + } | |
| 163 | + | |
| 164 | + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage); | |
| 165 | + if(bcType!='ldks' && bcType!='major' && bcType!='venting') | |
| 166 | + $('[name=bcType]', f).val(_type); | |
| 167 | + } | |
| 168 | + } | |
| 169 | + | |
| 170 | + $('[name=jhlc]', f).val(mileage); | |
| 171 | + var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 172 | + $f('zdsj', f).val(et.format('HH:mm')); | |
| 173 | + f.trigger('ct_callback'); | |
| 174 | + } | |
| 175 | + | |
| 176 | + | |
| 177 | + function reCalcEndTime() { | |
| 178 | + var f = $(this).parents('.add-sch-form') | |
| 179 | + , startDate = $f('fcsj', f).val()//开始时间 | |
| 180 | + , mileage = $f('jhlc', f).val()//公里 | |
| 181 | + , type2 = $f('bcType', f).val(),//班次类型 | |
| 182 | + upDown = $('[name=xlDir]', f).val(); | |
| 183 | + if (!startDate || !mileage) | |
| 184 | + return; | |
| 185 | + | |
| 186 | + var time; | |
| 187 | + //从站到场里获取数据 | |
| 188 | + var stp = search_st_park(f); | |
| 189 | + if(stp){ | |
| 190 | + time=type2=='in'?stp['time1']:stp['time2']; | |
| 191 | + } | |
| 192 | + else{ | |
| 193 | + if (type2 == 'in') | |
| 194 | + time = upDown == 0 ? information.upInTimer : information.downInTimer; | |
| 195 | + else if (type2 == 'out') | |
| 196 | + time = upDown == 0 ? information.upOutTimer : information.downOutTimer; | |
| 197 | + else{ | |
| 198 | + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime, | |
| 199 | + qc_mileage=upDown==0?information.upMileage:information.downMileage; | |
| 200 | + | |
| 201 | + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage); | |
| 202 | + } | |
| 203 | + } | |
| 204 | + | |
| 205 | + var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 206 | + $f('zdsj', f).val(et.format('HH:mm')); | |
| 207 | + f.trigger('ct_callback'); | |
| 208 | + } | |
| 209 | + | |
| 210 | + function is_normal_sch(f) { | |
| 211 | + var qdzCode = $('[name=qdzCode]', f).val(), | |
| 212 | + zdzCode =$('[name=zdzCode]', f).val(), | |
| 213 | + upDown = $('[name=xlDir]', f).val(), | |
| 214 | + rts = stationRoutes[upDown]; | |
| 215 | + | |
| 216 | + if(rts[0].stationCode == qdzCode | |
| 217 | + && rts[rts.length - 1].stationCode == zdzCode) | |
| 218 | + return true; | |
| 219 | + else | |
| 220 | + return false; | |
| 221 | + } | |
| 222 | + | |
| 223 | + function isInOut(bcType) { | |
| 224 | + return bcType=='in' || bcType=='out'; | |
| 225 | + } | |
| 226 | + | |
| 227 | + /** | |
| 228 | + * 计算线路上站点间公里 | |
| 229 | + */ | |
| 230 | + function calcMileage(rts, s, e) { | |
| 231 | + var mileage = 0, flag, code; | |
| 232 | + $.each(rts, function () { | |
| 233 | + code = this['stationCode']; | |
| 234 | + if (flag) | |
| 235 | + mileage = gb_common.accAdd(mileage, this.distances); | |
| 236 | + if (code == s) | |
| 237 | + flag = true; | |
| 238 | + if (code == e) | |
| 239 | + return false; | |
| 240 | + }); | |
| 241 | + return mileage; | |
| 242 | + } | |
| 243 | + | |
| 244 | + function search_st_park(f) { | |
| 245 | + if(!st_park_data) | |
| 246 | + return; | |
| 247 | + var stp; | |
| 248 | + var qdSelect=$f('qdzCode', f)[0],zdSelect=$f('zdzCode', f)[0]; | |
| 249 | + | |
| 250 | + if(qdSelect.options.selectedIndex < 0) | |
| 251 | + return; | |
| 252 | + var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text, | |
| 253 | + zdzName=zdSelect.options[zdSelect.options.selectedIndex].text, | |
| 254 | + type2 = $f('bcType', f).val(); | |
| 255 | + | |
| 256 | + if(!isInOut(type2)) | |
| 257 | + return; | |
| 258 | + | |
| 259 | + $.each(st_park_data, function () { | |
| 260 | + if((type2=='in' && this.stationName==qdzName && this.parkName==zdzName) | |
| 261 | + || (type2=='out' && this.stationName==zdzName && this.parkName==qdzName)){ | |
| 262 | + stp = this; | |
| 263 | + return false; | |
| 264 | + } | |
| 265 | + }); | |
| 266 | + | |
| 267 | + return stp; | |
| 268 | + } | |
| 269 | + | |
| 270 | + /** | |
| 271 | + * 停车场排序 | |
| 272 | + * @param parks 停车场 code 2 name | |
| 273 | + * @param information 线路标准 | |
| 274 | + * @param st_park_data 站到场 | |
| 275 | + */ | |
| 276 | + function sort_parks(parks, information, st_park_data) { | |
| 277 | + var array = [], names=[]; | |
| 278 | + for(var code in parks){ | |
| 279 | + array.push({code: code, name: parks[code]}); | |
| 280 | + } | |
| 281 | + | |
| 282 | + if(st_park_data && st_park_data.length > 0){ | |
| 283 | + $.each(st_park_data, function () { | |
| 284 | + names.push(this.parkName); | |
| 285 | + }); | |
| 286 | + } | |
| 287 | + | |
| 288 | + //debugger | |
| 289 | + array.sort(function (a, b) { | |
| 290 | + if(a.code==information.carPark) | |
| 291 | + return -1; | |
| 292 | + if(b.code==information.carPark) | |
| 293 | + return 1; | |
| 294 | + | |
| 295 | + var ai = names.indexOf(a.name), | |
| 296 | + bi = names.indexOf(b.name); | |
| 297 | + | |
| 298 | + if(ai!=-1 && bi==-1) | |
| 299 | + return -1; | |
| 300 | + else if(ai==-1 && bi!=-1) | |
| 301 | + return 1; | |
| 302 | + else | |
| 303 | + return $.trim(a.name).localeCompare($.trim(b.name), 'zh-CN'); | |
| 304 | + }); | |
| 305 | + return array; | |
| 306 | + } | |
| 307 | + | |
| 308 | + function $f(name, f) { | |
| 309 | + return $('[name=' + name + ']', f); | |
| 310 | + } | |
| 311 | + | |
| 312 | + /** | |
| 313 | + * 提交表单 | |
| 314 | + */ | |
| 315 | + function submit_temp_schedule_form(data, cb, err) { | |
| 316 | + data.xlBm = sch.xlBm; | |
| 317 | + data.xlName = sch.xlName; | |
| 318 | + //拆分驾驶员工号和姓名 | |
| 319 | + data.jGh = data.jsy.split('/')[0]; | |
| 320 | + data.jName = data.jsy.split('/')[1]; | |
| 321 | + delete data.jsy; | |
| 322 | + //拆分售票员工号和姓名 | |
| 323 | + if (data.spy != '') { | |
| 324 | + data.sGh = data.spy.split('/')[0]; | |
| 325 | + data.sName = data.spy.split('/')[1]; | |
| 326 | + delete data.spy; | |
| 327 | + } | |
| 328 | + | |
| 329 | + //公司信息 | |
| 330 | + var line = gb_data_basic.findLineByCodes([data.xlBm]); | |
| 331 | + if(line && line.length > 0){ | |
| 332 | + line = line[0]; | |
| 333 | + data.xlName = line.name; | |
| 334 | + data.gsBm = line.company; | |
| 335 | + data.fgsBm = line.brancheCompany; | |
| 336 | + } | |
| 337 | + | |
| 338 | + gb_common.$post('/realSchedule', data, function (rs) { | |
| 339 | + notify_succ('新增临加班次成功'); | |
| 340 | + cb && cb(rs); | |
| 341 | + }, err); | |
| 342 | + } | |
| 343 | + })(); | |
| 344 | + </script> | |
| 345 | +</div> | |
| 0 | 346 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
| ... | ... | @@ -23,7 +23,7 @@ var gb_schedule_context_menu = (function () { |
| 23 | 23 | st_doms.range_2_normal_dom=dom; |
| 24 | 24 | }); |
| 25 | 25 | //提前缓存临加的片段页面 |
| 26 | - var add_sch_doms={}; | |
| 26 | + var add_sch_doms={}, add_sch_doms_v2 = {}; | |
| 27 | 27 | $.get(folder + '/temp_sch/add_normal.html', function (dom) { |
| 28 | 28 | add_sch_doms.normal_dom=dom; |
| 29 | 29 | }); |
| ... | ... | @@ -33,6 +33,15 @@ var gb_schedule_context_menu = (function () { |
| 33 | 33 | $.get(folder + '/temp_sch/add_park_to_park.html', function (dom) { |
| 34 | 34 | add_sch_doms.park_to_park_dom=dom; |
| 35 | 35 | }); |
| 36 | + $.get(folder + '/temp_sch_v2/add_normal.html', function (dom) { | |
| 37 | + add_sch_doms_v2.normal_dom=dom; | |
| 38 | + }); | |
| 39 | + $.get(folder + '/temp_sch_v2/add_two_way.html', function (dom) { | |
| 40 | + add_sch_doms_v2.two_way_dom=dom; | |
| 41 | + }); | |
| 42 | + $.get(folder + '/temp_sch_v2/add_park_to_park.html', function (dom) { | |
| 43 | + add_sch_doms_v2.park_to_park_dom=dom; | |
| 44 | + }); | |
| 36 | 45 | |
| 37 | 46 | |
| 38 | 47 | var callbackHandler = { |
| ... | ... | @@ -42,6 +51,9 @@ var gb_schedule_context_menu = (function () { |
| 42 | 51 | get_add_sch_doms: function () { |
| 43 | 52 | return add_sch_doms; |
| 44 | 53 | }, |
| 54 | + get_add_sch_doms_v2: function () { | |
| 55 | + return add_sch_doms_v2; | |
| 56 | + }, | |
| 45 | 57 | dftz: function (sch) { |
| 46 | 58 | if(sch.status > 0){ |
| 47 | 59 | notify_err((sch.status==1?'已发出':'已执行') + '的班次不能修改待发'); |
| ... | ... | @@ -277,6 +289,11 @@ var gb_schedule_context_menu = (function () { |
| 277 | 289 | sch: sch |
| 278 | 290 | }, modal_opts); |
| 279 | 291 | }, |
| 292 | + add_temp_sch_v2: function (sch) { | |
| 293 | + open_modal(folder + '/temp_sch_v2/main.html', { | |
| 294 | + sch: sch | |
| 295 | + }, modal_opts); | |
| 296 | + }, | |
| 280 | 297 | add_sub_task: function (sch) { |
| 281 | 298 | if ($('#add-sub-task-main-modal').length>0) { |
| 282 | 299 | layer.msg('已存在正在添加的子任务.'); |
| ... | ... | @@ -359,6 +376,20 @@ var gb_schedule_context_menu = (function () { |
| 359 | 376 | } |
| 360 | 377 | }); |
| 361 | 378 | |
| 379 | + $.contextMenu({ | |
| 380 | + selector: '.line_schedule .schedule-wrap .card-panel', | |
| 381 | + className: 'schedule-ct-menu', | |
| 382 | + callback: function (key, options) { | |
| 383 | + var $tbody = options.$trigger.parent(), lineCode = $tbody.parents('li.line_schedule').data('id'); | |
| 384 | + | |
| 385 | + callbackHandler[key] && callbackHandler[key]({ xlBm : lineCode }); | |
| 386 | + }, | |
| 387 | + items: { | |
| 388 | + 'add_temp_sch_v2': { | |
| 389 | + name: '新增临加班次' | |
| 390 | + } | |
| 391 | + } | |
| 392 | + }); | |
| 362 | 393 | |
| 363 | 394 | $.contextMenu({ |
| 364 | 395 | selector: '.line_schedule .ct_table_body dl.drag-active', | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| ... | ... | @@ -109,7 +109,7 @@ var gb_schedule_table = (function () { |
| 109 | 109 | }); |
| 110 | 110 | |
| 111 | 111 | }; |
| 112 | - | |
| 112 | + | |
| 113 | 113 | var renderCarRemark = function () { |
| 114 | 114 | try{ |
| 115 | 115 | var $activeTab = $('.north-tabs>ul>li.tab-line.uk-active');//.data('code'); |
| ... | ... | @@ -190,7 +190,7 @@ var gb_schedule_table = (function () { |
| 190 | 190 | sch.status=4; |
| 191 | 191 | } |
| 192 | 192 | } |
| 193 | - | |
| 193 | + | |
| 194 | 194 | |
| 195 | 195 | |
| 196 | 196 | function arrayIsNull(array) { |
| ... | ... | @@ -205,6 +205,9 @@ var gb_schedule_table = (function () { |
| 205 | 205 | var insertSchedule = function (sch, upArr) { |
| 206 | 206 | var xls = {}; |
| 207 | 207 | xls[sch.xlBm] = 1; |
| 208 | + if (!line2Schedule[sch.xlBm]) { | |
| 209 | + line2Schedule[sch.xlBm] = {}; | |
| 210 | + } | |
| 208 | 211 | line2Schedule[sch.xlBm][sch.id] = sch; |
| 209 | 212 | //update |
| 210 | 213 | if (isArray(upArr)) { | ... | ... |