Commit bfe404d97e4add1042c77ec3cefc9ea94d65697a

Authored by 潘钊
2 parents 9117db35 26bb522b

Merge branch 'minhang' into pudong

Showing 27 changed files with 1742 additions and 282 deletions
src/main/java/com/bsth/controller/realcontrol/OilStationSocietyController.java 0 → 100644
  1 +package com.bsth.controller.realcontrol;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.realcontrol.OilStationSociety;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +
  8 +/**
  9 + * Created by panzhao on 2017/3/16.
  10 + */
  11 +@RestController
  12 +@RequestMapping("/oilStation")
  13 +public class OilStationSocietyController extends BaseController<OilStationSociety, String>{
  14 +}
... ...
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -279,13 +279,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
279 279 return scheduleRealInfoService.queryUserInfoPx(line, date,state,type);
280 280 }
281 281  
282   - @RequestMapping(value = "/exportWaybill")
  282 + @RequestMapping(value = "/exportWaybill",method = RequestMethod.GET)
283 283 public List<ScheduleRealInfo> exportWaybill(@RequestParam String jName, @RequestParam String clZbh,
284 284 @RequestParam String lpName,@RequestParam String date,@RequestParam String line) {
285 285 return scheduleRealInfoService.exportWaybill(jName, clZbh, lpName,date,line);
286 286 }
287 287  
288   - @RequestMapping(value = "/exportWaybillQp")
  288 + @RequestMapping(value = "/exportWaybillQp",method = RequestMethod.GET)
289 289 public List<ScheduleRealInfo> exportWaybillQp(@RequestParam String clZbh
290 290 ,@RequestParam String date,@RequestParam String line) {
291 291 return scheduleRealInfoService.exportWaybillQp( clZbh, date,line);
... ... @@ -308,13 +308,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
308 308 return scheduleRealInfoService.findLine(line);
309 309 }
310 310  
311   - @RequestMapping(value="/findKMBC")
  311 + @RequestMapping(value="/findKMBC",method = RequestMethod.GET)
312 312 public Map<String,Object> findKMBC(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName
313 313 ,@RequestParam String date,@RequestParam String line){
314 314 return scheduleRealInfoService.findKMBC(jName, clZbh,lpName,date,line);
315 315 }
316 316  
317   - @RequestMapping(value="/findKMBCQp")
  317 + @RequestMapping(value="/findKMBCQp",method = RequestMethod.GET)
318 318 public Map<String,Object> findKMBCQp(@RequestParam String clZbh
319 319 ,@RequestParam String date,@RequestParam String line){
320 320 return scheduleRealInfoService.findKMBCQp(clZbh,date,line);
... ... @@ -344,13 +344,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
344 344 * @param lpName 路牌
345 345 * @return
346 346 */
347   - @RequestMapping(value="/queryListWaybill")
  347 + @RequestMapping(value="/queryListWaybill",method = RequestMethod.GET)
348 348 public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName
349 349 ,@RequestParam String date,@RequestParam String line){
350 350 return scheduleRealInfoService.queryListWaybill(jName, clZbh,lpName,date,line);
351 351 }
352 352  
353   - @RequestMapping(value="/queryListWaybillQp")
  353 + @RequestMapping(value="/queryListWaybillQp",method = RequestMethod.GET)
354 354 public List<ScheduleRealInfo> queryListWaybillQp(@RequestParam String clZbh,
355 355 @RequestParam String date,@RequestParam String line){
356 356 return scheduleRealInfoService.queryListWaybillQp(clZbh,date,line);
... ... @@ -362,6 +362,12 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
362 362 return scheduleRealInfoService.statisticsDaily(line, date, xlName, type);
363 363 }
364 364  
  365 + @RequestMapping(value="/statisticsDailyTj")
  366 + public List<Map<String,Object>> statisticsDailyTj(@RequestParam String line, @RequestParam String date,
  367 + @RequestParam String date2,@RequestParam String xlName, @RequestParam String type){
  368 + return scheduleRealInfoService.statisticsDailyTj(line, date,date2, xlName, type);
  369 + }
  370 +
365 371 @RequestMapping(value="/MapById",method = RequestMethod.GET)
366 372 public Map<String, Object> MapById(@RequestParam("id") Long id){
367 373 return scheduleRealInfoService.MapById(id);
... ... @@ -457,7 +463,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
457 463 return scheduleRealInfoService.scheduleDailyExport(map);
458 464 }
459 465  
460   - @RequestMapping(value = "exportWaybillMore", method = RequestMethod.POST)
  466 + @RequestMapping(value = "exportWaybillMore", method = RequestMethod.GET)
461 467 public Map<String, Object> exportWaybillMore(@RequestParam Map<String, Object> map){
462 468 return scheduleRealInfoService.exportWaybillMore(map);
463 469 }
... ...
src/main/java/com/bsth/controller/realcontrol/ServiceDataInterface.java
1   -package com.bsth.controller.realcontrol;
2   -
3   -import com.bsth.data.schedule.DayOfSchedule;
4   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
5   -import org.apache.commons.lang3.StringUtils;
6   -import org.springframework.beans.factory.annotation.Autowired;
7   -import org.springframework.web.bind.annotation.RequestMapping;
8   -import org.springframework.web.bind.annotation.RequestParam;
9   -import org.springframework.web.bind.annotation.RestController;
10   -
11   -import java.util.ArrayList;
12   -import java.util.List;
13   -
14   -/**
15   - * 对外的营运数据接口,主要输出当日的数据
16   - * Created by panzhao on 2017/3/15.
17   - */
18   -@RestController
19   -@RequestMapping("/companyService")
20   -public class ServiceDataInterface {
21   -
22   - private final static String SECRE_KEY = "dVPHJkWUt5FhMT7jrM2dLV7QvlHAmZFd42rs1P0usBx8A7HZki";
23   -
24   - @Autowired
25   - DayOfSchedule dayOfSchedule;
26   -
27   - @RequestMapping("/getCurrentDayPlan")
28   - public List<ScheduleRealInfo> getCurrentDayPlan(
29   - @RequestParam String companyId,
30   - @RequestParam String workId,
31   - @RequestParam String secretKey) {
32   -
33   - if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
34   - return null;
35   -
36   - List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>();
37   - for (ScheduleRealInfo sch : all) {
38   - if (sch.getGsBm() != null
39   - && sch.getGsBm().equals(companyId)
40   - && sch.getjGh().equals(workId)) {
41   - rs.add(sch);
42   - }
43   - }
44   - return rs;
45   - }
46   -
47   - @RequestMapping("/returnCCInfo")
48   - public List<ScheduleRealInfo> returnCCInfo(@RequestParam String companyId, @RequestParam String secretKey){
49   - if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
50   - return null;
51   -
52   -
53   - List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>();
54   - for (ScheduleRealInfo sch : all) {
55   -
56   - if (sch.getBcType().equals("out")
57   - && sch.getGsBm() != null
58   - && sch.getGsBm().equals(companyId)) {
59   - rs.add(sch);
60   - }
61   - }
62   - return rs;
63   - }
64   -
65   - @RequestMapping("/returnJCInfo")
66   - public List<ScheduleRealInfo> returnJCInfo(@RequestParam String companyId, @RequestParam String secretKey){
67   - if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
68   - return null;
69   -
70   -
71   - List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>();
72   - for (ScheduleRealInfo sch : all) {
73   - if (sch.getBcType().equals("in")
74   - && sch.getGsBm() != null
75   - && sch.getGsBm().equals(companyId)) {
76   - rs.add(sch);
77   - }
78   - }
79   - return rs;
80   - }
81   -}
  1 +package com.bsth.controller.realcontrol;
  2 +
  3 +import com.bsth.data.schedule.DayOfSchedule;
  4 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  5 +import org.apache.commons.lang3.StringUtils;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.RequestMapping;
  8 +import org.springframework.web.bind.annotation.RequestParam;
  9 +import org.springframework.web.bind.annotation.RestController;
  10 +
  11 +import java.util.ArrayList;
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * 对外的营运数据接口,主要输出当日的数据
  16 + * Created by panzhao on 2017/3/15.
  17 + */
  18 +@RestController
  19 +@RequestMapping("/companyService")
  20 +public class ServiceDataInterface {
  21 +
  22 + private final static String SECRE_KEY = "dVPHJkWUt5FhMT7jrM2dLV7QvlHAmZFd42rs1P0usBx8A7HZki";
  23 +
  24 + @Autowired
  25 + DayOfSchedule dayOfSchedule;
  26 +
  27 + @RequestMapping("/getCurrentDayPlan")
  28 + public List<ScheduleRealInfo> getCurrentDayPlan(
  29 + @RequestParam String companyId,
  30 + @RequestParam String workId,
  31 + @RequestParam String secretKey) {
  32 +
  33 + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
  34 + return null;
  35 +
  36 + List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>();
  37 + for (ScheduleRealInfo sch : all) {
  38 + if (sch.getGsBm() != null
  39 + && sch.getGsBm().equals(companyId)
  40 + && sch.getjGh().equals(workId)) {
  41 + rs.add(sch);
  42 + }
  43 + }
  44 + return rs;
  45 + }
  46 +
  47 + @RequestMapping("/returnCCInfo")
  48 + public List<ScheduleRealInfo> returnCCInfo(@RequestParam String companyId, @RequestParam String secretKey){
  49 + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
  50 + return null;
  51 +
  52 +
  53 + List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>();
  54 + for (ScheduleRealInfo sch : all) {
  55 +
  56 + if (sch.getBcType().equals("out")
  57 + && sch.getGsBm() != null
  58 + && sch.getGsBm().equals(companyId)) {
  59 + rs.add(sch);
  60 + }
  61 + }
  62 + return rs;
  63 + }
  64 +
  65 + @RequestMapping("/returnJCInfo")
  66 + public List<ScheduleRealInfo> returnJCInfo(@RequestParam String companyId, @RequestParam String secretKey){
  67 + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
  68 + return null;
  69 +
  70 +
  71 + List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>();
  72 + for (ScheduleRealInfo sch : all) {
  73 + if (sch.getBcType().equals("in")
  74 + && sch.getGsBm() != null
  75 + && sch.getGsBm().equals(companyId)) {
  76 + rs.add(sch);
  77 + }
  78 + }
  79 + return rs;
  80 + }
  81 +}
... ...
src/main/java/com/bsth/controller/realcontrol/dto/LpData.java
... ... @@ -22,7 +22,7 @@ public class LpData {
22 22 this.zdzName = sch.getZdzName();
23 23 }
24 24  
25   - public void appendTo(ScheduleRealInfo sch, int type, boolean changeRealTime) {
  25 + public void appendTo(ScheduleRealInfo sch, int type) {
26 26  
27 27 if (type == 0) {
28 28 //只换人
... ... @@ -33,11 +33,11 @@ public class LpData {
33 33 } else if (type == 1) {
34 34 //只换车
35 35 sch.setClZbh(this.nbbm);
36   -
37   - //换实际时间
  36 + changeRealTime(sch);
  37 + /*//换实际时间
38 38 if(changeRealTime){
39 39 changeRealTime(sch);
40   - }
  40 + }*/
41 41  
42 42 } else if (type == 2) {
43 43 //换人并换车
... ... @@ -48,9 +48,9 @@ public class LpData {
48 48 sch.setClZbh(this.nbbm);
49 49  
50 50 //换实际时间
51   - if(changeRealTime){
  51 + //if(changeRealTime){
52 52 changeRealTime(sch);
53   - }
  53 + //}
54 54 }
55 55 }
56 56  
... ...
src/main/java/com/bsth/entity/realcontrol/OilStationSociety.java 0 → 100644
  1 +package com.bsth.entity.realcontrol;
  2 +
  3 +import javax.persistence.Entity;
  4 +import javax.persistence.Id;
  5 +import javax.persistence.Table;
  6 +
  7 +/**
  8 + * 社会加油站
  9 + * Created by panzhao on 2017/3/16.
  10 + */
  11 +@Entity
  12 +@Table(name = "bsth_c_oil_station")
  13 +public class OilStationSociety {
  14 +
  15 + @Id
  16 + private String lineCode;
  17 +
  18 + /**
  19 + * 加油站名称
  20 + */
  21 + private String stationName;
  22 +
  23 + /**
  24 + * 上行进场距离
  25 + */
  26 + private Double upInMile;
  27 + /**
  28 + * 上行出场距离
  29 + */
  30 + private Double upOutMile;
  31 +
  32 + /**
  33 + * 下行进场距离
  34 + */
  35 + private Double downInMile;
  36 + /**
  37 + * 下行出场距离
  38 + */
  39 + private Double downOutMile;
  40 +
  41 +
  42 + /**
  43 + * 上行进场时间 分钟
  44 + */
  45 + private int upInTime;
  46 + /**
  47 + * 上行出场时间 分钟
  48 + */
  49 + private int upOutTime;
  50 +
  51 + /**
  52 + * 下行进场时间 分钟
  53 + */
  54 + private int downInTime;
  55 + /**
  56 + * 下行出场时间 分钟
  57 + */
  58 + private int downOutTime;
  59 +
  60 +
  61 + public String getLineCode() {
  62 + return lineCode;
  63 + }
  64 +
  65 + public void setLineCode(String lineCode) {
  66 + this.lineCode = lineCode;
  67 + }
  68 +
  69 + public String getStationName() {
  70 + return stationName;
  71 + }
  72 +
  73 + public void setStationName(String stationName) {
  74 + this.stationName = stationName;
  75 + }
  76 +
  77 + public Double getUpInMile() {
  78 + return upInMile;
  79 + }
  80 +
  81 + public void setUpInMile(Double upInMile) {
  82 + this.upInMile = upInMile;
  83 + }
  84 +
  85 + public Double getUpOutMile() {
  86 + return upOutMile;
  87 + }
  88 +
  89 + public void setUpOutMile(Double upOutMile) {
  90 + this.upOutMile = upOutMile;
  91 + }
  92 +
  93 + public Double getDownInMile() {
  94 + return downInMile;
  95 + }
  96 +
  97 + public void setDownInMile(Double downInMile) {
  98 + this.downInMile = downInMile;
  99 + }
  100 +
  101 + public Double getDownOutMile() {
  102 + return downOutMile;
  103 + }
  104 +
  105 + public void setDownOutMile(Double downOutMile) {
  106 + this.downOutMile = downOutMile;
  107 + }
  108 +
  109 + public int getUpInTime() {
  110 + return upInTime;
  111 + }
  112 +
  113 + public void setUpInTime(int upInTime) {
  114 + this.upInTime = upInTime;
  115 + }
  116 +
  117 + public int getUpOutTime() {
  118 + return upOutTime;
  119 + }
  120 +
  121 + public void setUpOutTime(int upOutTime) {
  122 + this.upOutTime = upOutTime;
  123 + }
  124 +
  125 + public int getDownInTime() {
  126 + return downInTime;
  127 + }
  128 +
  129 + public void setDownInTime(int downInTime) {
  130 + this.downInTime = downInTime;
  131 + }
  132 +
  133 + public int getDownOutTime() {
  134 + return downOutTime;
  135 + }
  136 +
  137 + public void setDownOutTime(int downOutTime) {
  138 + this.downOutTime = downOutTime;
  139 + }
  140 +}
... ...
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
... ... @@ -626,6 +626,11 @@ public class ScheduleRealInfo {
626 626 }
627 627 }
628 628  
  629 + @Override
  630 + public int hashCode() {
  631 + return ("schedule_" + this.id).hashCode();
  632 + }
  633 +
629 634 public String getQdzArrDateJH() {
630 635 return qdzArrDatejh;
631 636 }
... ... @@ -760,6 +765,7 @@ public class ScheduleRealInfo {
760 765 }
761 766  
762 767 public void destroy(){
  768 + this.jhlc = 0.0;
763 769 this.status = -1;
764 770 }
765 771  
... ...
src/main/java/com/bsth/repository/realcontrol/OilStationSocietyRepository.java 0 → 100644
  1 +package com.bsth.repository.realcontrol;
  2 +
  3 +import com.bsth.entity.realcontrol.OilStationSociety;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by panzhao on 2017/3/16.
  9 + */
  10 +@Repository
  11 +public interface OilStationSocietyRepository extends BaseRepository<OilStationSociety, String>{
  12 +}
... ...
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
... ... @@ -127,6 +127,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
127 127 @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m') = ?2 and s.bcType not in ('in','out') order by s.xlBm")
128 128 List<ScheduleRealInfo> scheduleByDateAndLine3(String line,String date);
129 129  
  130 + //按照时间段统计
  131 + @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') between ?2 and ?3 and s.bcType not in ('in','out') order by s.xlBm")
  132 + List<ScheduleRealInfo> scheduleByDateAndLineTj(String line,String date,String date2);
  133 +
130 134 @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh) from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.gsBm like %?3% and s.fgsBm like %?4% GROUP BY xlBm,clZbh,jGh,scheduleDate,jGh ORDER BY xlBm,clZbh")
131 135 List<Map<String,Object>> yesterdayDataList(String line,String date,String gsbm,String fgsbm);
132 136  
... ...
src/main/java/com/bsth/service/realcontrol/OilStationSocietyService.java 0 → 100644
  1 +package com.bsth.service.realcontrol;
  2 +
  3 +import com.bsth.entity.realcontrol.OilStationSociety;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by panzhao on 2017/3/16.
  8 + */
  9 +public interface OilStationSocietyService extends BaseService<OilStationSociety, String> {
  10 +}
... ...
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
... ... @@ -112,6 +112,8 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
112 112  
113 113 List<Map<String,Object>> statisticsDaily(String line, String date, String xlName, String type);
114 114  
  115 + List<Map<String,Object>> statisticsDailyTj(String line, String date,String date2, String xlName, String type);
  116 +
115 117 //List<Object> scheduleDaily(String line,String date);
116 118  
117 119 int countByLineCodeAndDate(String xlBm, String schDate);
... ... @@ -156,7 +158,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
156 158  
157 159 Map<String,Object> lpChangeMulti(String leftIdx, String rightIdx, int type);
158 160  
159   - void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type, boolean changeRealTime);
  161 + void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type);
160 162  
161 163 Map<String,Object> revokeRealArrive(Long id);
162 164 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
... ... @@ -9,6 +9,7 @@ import com.bsth.repository.realcontrol.ChildTaskPlanRepository;
9 9 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
10 10 import com.bsth.service.impl.BaseServiceImpl;
11 11 import com.bsth.service.realcontrol.ChildTaskPlanService;
  12 +import org.apache.commons.lang3.StringUtils;
12 13 import org.springframework.beans.factory.annotation.Autowired;
13 14 import org.springframework.jdbc.core.JdbcTemplate;
14 15 import org.springframework.stereotype.Service;
... ... @@ -45,8 +46,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
45 46 //保存起终点名称
46 47 String prefix = sch.getXlBm() + "_" + sch.getXlDir() + "_";
47 48  
48   - t.setStartStationName(BasicData.getStationNameByCode(t.getStartStation(), prefix));
49   - t.setEndStationName(BasicData.getStationNameByCode(t.getEndStation(), prefix));
  49 + if(StringUtils.isEmpty(t.getStartStationName()))
  50 + t.setStartStationName(BasicData.getStationNameByCode(t.getStartStation(), prefix));
  51 +
  52 + if(StringUtils.isEmpty(t.getEndStationName()))
  53 + t.setEndStationName(BasicData.getStationNameByCode(t.getEndStation(), prefix));
50 54 //先持久化子任务
51 55 rs = super.save(t);
52 56 //再关联主任务
... ...
src/main/java/com/bsth/service/realcontrol/impl/OilStationSocietyServiceImpl.java 0 → 100644
  1 +package com.bsth.service.realcontrol.impl;
  2 +
  3 +import com.bsth.entity.realcontrol.OilStationSociety;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import com.bsth.service.realcontrol.OilStationSocietyService;
  6 +import org.springframework.stereotype.Service;
  7 +
  8 +/**
  9 + * Created by panzhao on 2017/3/16.
  10 + */
  11 +@Service
  12 +public class OilStationSocietyServiceImpl extends BaseServiceImpl<OilStationSociety, String> implements OilStationSocietyService {
  13 +}
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -854,6 +854,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
854 854 } else {
855 855 sch.setStatus(0);
856 856 sch.setRemarks("");//清空备注
  857 + sch.setJhlc(sch.getJhlcOrig());
857 858 rs.put("status", ResponseCode.SUCCESS);
858 859 rs.put("t", sch);
859 860  
... ... @@ -1058,9 +1059,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1058 1059  
1059 1060 //修改班次里程
1060 1061 String jhlc = map.get("jhlc");
1061   - if (StringUtils.isNotEmpty(jhlc)
1062   - /*&& Double.parseDouble(jhlc) != sch.getJhlc()*/) {
1063   - sch.setJhlc(Double.parseDouble(jhlc));
  1062 + if (StringUtils.isNotEmpty(jhlc)) {
  1063 + if(Double.parseDouble(jhlc) == 0)
  1064 + destroy(sch.getId() + "", "", map.get("adjustExps").toString());
  1065 + else
  1066 + sch.setJhlc(Double.parseDouble(jhlc));
1064 1067 }
1065 1068 }
1066 1069  
... ... @@ -1313,14 +1316,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1313 1316 } else {
1314 1317 if (!(scheduleRealInfo.getBcType().equals("in")
1315 1318 || scheduleRealInfo.getBcType().equals("out"))) {
1316   - jhbc++;
1317   - jhlc += tempJhlc;
  1319 + jhbc++;
  1320 + jhlc += tempJhlc;
  1321 + if (scheduleRealInfo.getStatus() == -1) {
  1322 + remMileage += tempJhlc;
  1323 + cjbc++;
  1324 + }
1318 1325 }
1319 1326  
1320   - if (scheduleRealInfo.getStatus() == -1) {
1321   - remMileage += tempJhlc;
1322   - cjbc++;
1323   - }
1324 1327 }
1325 1328 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
1326 1329 //计算营运里程,空驶里程
... ... @@ -1429,14 +1432,651 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1429 1432 e.printStackTrace();
1430 1433 }
1431 1434 }
1432   -
1433   - return listMap;
1434   - }
1435   -
1436   - @Override
1437   - public List<ScheduleRealInfo> correctForm(String line, String startDate,
1438   - String endDate, String lpName, String code, String type) {
1439   - List<ScheduleRealInfo> list = scheduleRealInfoRepository.correctForm(line, startDate, endDate, lpName, code);
  1435 +
  1436 + return listMap;
  1437 + }
  1438 +
  1439 + @Override
  1440 + public List<ScheduleRealInfo> correctForm(String line, String startDate,
  1441 + String endDate, String lpName, String code, String type) {
  1442 + List<ScheduleRealInfo> list = scheduleRealInfoRepository.correctForm(line, startDate, endDate, lpName, code);
  1443 +
  1444 + if (type != null && type.length() != 0 && type.equals("export")) {
  1445 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  1446 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  1447 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  1448 + Map<String, Object> m = new HashMap<String, Object>();
  1449 + ReportUtils ee = new ReportUtils();
  1450 + m.put("dates", startDate + " 至 " + endDate);
  1451 + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
  1452 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1453 + for (ScheduleRealInfo schedule : list) {
  1454 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1455 + tempMap.put("xlName", schedule.getXlName() != null ? schedule.getXlName() : "");
  1456 + tempMap.put("lpName", schedule.getLpName() != null ? schedule.getLpName() : "");
  1457 + tempMap.put("clZbh", schedule.getClZbh() != null ? schedule.getClZbh() : "");
  1458 + tempMap.put("jName", schedule.getjName() != null ? schedule.getjName() : "");
  1459 + tempMap.put("sName", schedule.getsName() != null ? schedule.getsName() : "");
  1460 + tempMap.put("fcsj", schedule.getFcsj() != null ? schedule.getFcsj() : "");
  1461 + tempMap.put("fcsjActual", schedule.getFcsjActual() != null ? schedule.getFcsjActual() : "");
  1462 + tempMap.put("zdsj", schedule.getZdsj() != null ? schedule.getZdsj() : "");
  1463 + tempMap.put("zdsjActual", schedule.getZdsjActual() != null ? schedule.getZdsjActual() : "");
  1464 + if (schedule.getUpdateBy() != null) {
  1465 + if (schedule.getUpdateBy().getName() != null)
  1466 + tempMap.put("userName", schedule.getUpdateBy().getName());
  1467 + else
  1468 + tempMap.put("userName", "");
  1469 + } else {
  1470 + tempMap.put("userName", "");
  1471 + }
  1472 + if (schedule.getUpdateDate() != null) {
  1473 + tempMap.put("updateDate", sdf.format(schedule.getUpdateDate()));
  1474 + } else {
  1475 + tempMap.put("updateDate", "");
  1476 + }
  1477 + tempMap.put("remarks", schedule.getRemarks() != null ? schedule.getRemarks() : "");
  1478 + tempList.add(tempMap);
  1479 + }
  1480 + try {
  1481 + listI.add(tempList.iterator());
  1482 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  1483 + ee.excelReplace(listI, new Object[]{m}, path + "mould/correctForm.xls",
  1484 + path + "export/修正报表" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
  1485 + } catch (Exception e) {
  1486 + // TODO: handle exception
  1487 + e.printStackTrace();
  1488 + }
  1489 + Map<String, Object> map = tempList.get(tempList.size() - 1);
  1490 + System.out.println("tempMap:" + map);
  1491 + }
  1492 +
  1493 + return list;
  1494 + }
  1495 +
  1496 + @Override
  1497 + public List<ScheduleRealInfo> queryListWaybill(String jName, String clZbh,
  1498 + String lpName, String date, String line) {
  1499 + List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();
  1500 + List<ScheduleRealInfo> list = null;
  1501 + list = scheduleRealInfoRepository.queryListWaybill(jName, clZbh, lpName, date, line);
  1502 + for (int i = 0; i < list.size(); i++) {
  1503 + ScheduleRealInfo s = list.get(i);
  1504 + s.setAdjustExps(i + 1 + "");
  1505 + String remarks = "";
  1506 + if (s.getRemarks() != null) {
  1507 + remarks += s.getRemarks();
  1508 + }
  1509 +
  1510 + Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
  1511 + if (!childTaskPlans.isEmpty()) {
  1512 + s.setFcsjActual("");
  1513 + s.setZdsjActual("");
  1514 + s.setJhlc(0.0);
  1515 + }
  1516 +
  1517 + if (s.isDestroy()) {
  1518 + s.setFcsjActual("");
  1519 + s.setZdsjActual("");
  1520 + s.setJhlc(0.0);
  1521 + remarks += "(烂班)";
  1522 + s.setRemarks(remarks);
  1523 + }
  1524 + listSchedule.add(s);
  1525 + //计算营运里程,空驶里程
  1526 + if (!childTaskPlans.isEmpty()) {
  1527 + String sqlPc = "select * from bsth_c_s_child_task where schedule=" + s.getId() + " order by start_date ";
  1528 + List<ScheduleRealInfo> lists = jdbcTemplate.query(sqlPc,
  1529 + new RowMapper<ScheduleRealInfo>() {
  1530 + @Override
  1531 + public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
  1532 + ScheduleRealInfo t = new ScheduleRealInfo();
  1533 + if (rs.getInt("destroy") == 0) {
  1534 + t.setFcsjActual(rs.getString("start_date"));
  1535 + t.setZdsjActual(rs.getString("end_date"));
  1536 + t.setJhlc(rs.getDouble("mileage"));
  1537 + } else {
  1538 + t.setFcsjActual("");
  1539 + t.setZdsjActual("");
  1540 + t.setJhlc(0.0);
  1541 + }
  1542 + t.setQdzName(rs.getString("start_station_name"));
  1543 + t.setZdzName(rs.getString("end_station_name"));
  1544 + t.setRemarks(rs.getString("remarks"));
  1545 + t.setAdjustExps("子");
  1546 + return t;
  1547 + }
  1548 + });
  1549 + for (int j = 0; j < lists.size(); j++) {
  1550 + ScheduleRealInfo t = lists.get(j);
  1551 + listSchedule.add(t);
  1552 + }
  1553 + }
  1554 + }
  1555 +
  1556 + return listSchedule;
  1557 + }
  1558 +
  1559 + @Override
  1560 + public Map<String, Object> removeChildTask(Long taskId) {
  1561 + Map<String, Object> rs = new HashMap<>();
  1562 + ChildTaskPlan chTask = cTaskPlanRepository.findOne(taskId);
  1563 +
  1564 + ScheduleRealInfo sch = dayOfSchedule.get(chTask.getSchedule().getId());
  1565 + try {
  1566 +
  1567 + sch.getcTasks().remove(chTask);
  1568 + scheduleRealInfoRepository.save(sch);
  1569 + rs.put("status", ResponseCode.SUCCESS);
  1570 + } catch (Exception e) {
  1571 + logger.error("", e);
  1572 + rs.put("status", ResponseCode.ERROR);
  1573 + }
  1574 + return rs;
  1575 + }
  1576 +
  1577 + @Override
  1578 + public List<Map<String, Object>> statisticsDaily(String line, String date,
  1579 + String xlName, String type) {
  1580 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  1581 + if (date.length() == 10)
  1582 + list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
  1583 + else if (date.length() == 7)
  1584 + list = scheduleRealInfoRepository.scheduleByDateAndLine3(line, date);
  1585 +
  1586 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  1587 + DecimalFormat format = new DecimalFormat("0.00");
  1588 + double jhlc = 0, tempJhlc = 0, childMileage = 0;
  1589 + float sjgl = 0f, ssgl = 0f, ssgl_lz = 0f, ssgl_dm = 0f, ssgl_gz = 0f, ssgl_jf = 0f, ssgl_zs = 0f, ssgl_qr = 0f, ssgl_qc = 0f, ssgl_kx = 0f, ssgl_qh = 0f, ssgl_yw = 0f, ssgl_other = 0f, ljgl = 0f;
  1590 + //班次
  1591 + int ssbc = 0, ssbc_lz = 0, ssbc_dm = 0, ssbc_gz = 0, ssbc_jf = 0, ssbc_zs = 0, ssbc_qr = 0, ssbc_qc = 0, ssbc_kx = 0, ssbc_qh = 0, ssbc_yw = 0, ssbc_other = 0;
  1592 + int sj_0 = 6 * 60 + 31, sj_1 = 8 * 60 + 30, sj_2 = 16 * 60 + 1, sj_3 = 18 * 60;
  1593 + int jhbc = 0, jhbc_m = 0, jhbc_a = 0;
  1594 + int sjbc = 0, sjbc_m = 0, sjbc_a = 0;
  1595 + int ljbc = 0, ljbc_m = 0, ljbc_a = 0;
  1596 + int fzbc = 0, fzbc_m = 0, fzbc_a = 0;
  1597 + int dtbc = 0, dtbc_m = 0, dtbc_a = 0;
  1598 + int djg = 0, djg_m = 0, djg_a = 0, djg_time = 0;
  1599 +
  1600 + double jhlcZ = 0, tempJhlcZ = 0, childMileageZ = 0;
  1601 + float sjglZ = 0f, ssglZ = 0f, ssgl_lzZ = 0f, ssgl_dmZ = 0f,
  1602 + ssgl_gzZ = 0f, ssgl_jfZ = 0f, ssgl_zsZ = 0f, ssgl_qrZ = 0f, ssgl_qcZ = 0f,
  1603 + ssgl_kxZ = 0f, ssgl_qhZ = 0f, ssgl_ywZ = 0f, ssgl_otherZ = 0f, ljglZ = 0f;
  1604 + //班次
  1605 + int ssbcZ = 0, ssbc_lzZ = 0, ssbc_dmZ = 0, ssbc_gzZ = 0, ssbc_jfZ = 0, ssbc_zsZ = 0, ssbc_qrZ = 0, ssbc_qcZ = 0, ssbc_kxZ = 0, ssbc_qhZ = 0, ssbc_ywZ = 0, ssbc_otherZ = 0;
  1606 + int jhbcZ = 0, jhbc_mZ = 0, jhbc_aZ = 0;
  1607 + int sjbcZ = 0, sjbc_mZ = 0, sjbc_aZ = 0;
  1608 + int ljbcZ = 0, ljbc_mZ = 0, ljbc_aZ = 0;
  1609 + int fzbcZ = 0, fzbc_mZ = 0, fzbc_aZ = 0;
  1610 + int dtbcZ = 0, dtbc_mZ = 0, dtbc_aZ = 0;
  1611 + int djgZ = 0, djg_mZ = 0, djg_aZ = 0, djg_timeZ = 0;
  1612 + Map<String, Object> map = null;
  1613 + for (int i = 0; i < list.size(); i++) {
  1614 + ScheduleRealInfo scheduleRealInfo = list.get(i);
  1615 + if (scheduleRealInfo != null) {
  1616 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  1617 + //计算实际里程,少驶里程,计划里程=实际里程+少驶里程
  1618 + if (childTaskPlans.isEmpty()) {
  1619 + tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();
  1620 + //临加公里
  1621 + if (scheduleRealInfo.isSflj()) {
  1622 + ljgl += tempJhlc;
  1623 + ljglZ += tempJhlc;
  1624 + } else {
  1625 + jhlc += tempJhlc;
  1626 + jhlcZ += tempJhlc;
  1627 + }
  1628 + if (scheduleRealInfo.getStatus() == -1) {
  1629 + ssgl += tempJhlc;
  1630 + ssglZ += tempJhlc;
  1631 + ssbc++;
  1632 + ssbcZ++;
  1633 + if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("路阻") != -1) {
  1634 + ssgl_lz += tempJhlc;
  1635 + ssgl_lzZ += tempJhlc;
  1636 + ssbc_lz++;
  1637 + ssbc_lzZ++;
  1638 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("吊慢") != -1) {
  1639 + ssgl_dm += tempJhlc;
  1640 + ssgl_dmZ += tempJhlc;
  1641 + ssbc_dm++;
  1642 + ssbc_dmZ++;
  1643 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("故障") != -1) {
  1644 + ssgl_gz += tempJhlc;
  1645 + ssgl_gzZ += tempJhlc;
  1646 + ssbc_gz++;
  1647 + ssbc_gzZ++;
  1648 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("纠纷") != -1) {
  1649 + ssgl_jf += tempJhlc;
  1650 + ssgl_jfZ += tempJhlc;
  1651 + ssbc_jf++;
  1652 + ssbc_jfZ++;
  1653 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("肇事") != -1) {
  1654 + ssgl_zs += tempJhlc;
  1655 + ssgl_zsZ += tempJhlc;
  1656 + ssbc_zs++;
  1657 + ssbc_zsZ++;
  1658 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺人") != -1) {
  1659 + ssgl_qr += tempJhlc;
  1660 + ssgl_qrZ += tempJhlc;
  1661 + ssbc_qr++;
  1662 + ssbc_qrZ++;
  1663 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺车") != -1) {
  1664 + ssgl_qc += tempJhlc;
  1665 + ssgl_qcZ += tempJhlc;
  1666 + ssbc_qc++;
  1667 + ssbc_qcZ++;
  1668 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("客稀") != -1) {
  1669 + ssgl_kx += tempJhlc;
  1670 + ssgl_kxZ += tempJhlc;
  1671 + ssbc_kx++;
  1672 + ssbc_kxZ++;
  1673 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("气候") != -1) {
  1674 + ssgl_qh += tempJhlc;
  1675 + ssgl_qhZ += tempJhlc;
  1676 + ssbc_qh++;
  1677 + ssbc_qhZ++;
  1678 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("援外") != -1) {
  1679 + ssgl_yw += tempJhlc;
  1680 + ssgl_ywZ += tempJhlc;
  1681 + ssbc_yw++;
  1682 + ssbc_ywZ++;
  1683 + } else {
  1684 + ssgl_other += tempJhlc;
  1685 + ssgl_otherZ += tempJhlc;
  1686 + ssbc_other++;
  1687 + ssbc_otherZ++;
  1688 + }
  1689 + } else {
  1690 + sjgl += tempJhlc;
  1691 + sjglZ += tempJhlc;
  1692 + }
  1693 + } else {
  1694 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  1695 + while (it.hasNext()) {
  1696 + ChildTaskPlan childTaskPlan = it.next();
  1697 + childMileage = childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
  1698 + jhlc += childMileage;
  1699 + jhlcZ += childMileage;
  1700 + if (childTaskPlan.isDestroy()) {
  1701 + ssgl += childMileage;
  1702 + ssglZ += childMileage;
  1703 + ssbc++;
  1704 + ssbcZ++;
  1705 + if (childTaskPlan.getDestroyReason().equals("路阻")) {
  1706 + ssgl_lz += childTaskPlan.getMileage();
  1707 + ssgl_lzZ += childTaskPlan.getMileage();
  1708 + ssbc_lzZ++;
  1709 + ssbc_lzZ++;
  1710 + } else if (childTaskPlan.getDestroyReason().equals("吊慢")) {
  1711 + ssgl_dm += childTaskPlan.getMileage();
  1712 + ssgl_dmZ += childTaskPlan.getMileage();
  1713 + ssbc_dm++;
  1714 + ssbc_dmZ++;
  1715 + } else if (childTaskPlan.getDestroyReason().equals("故障")) {
  1716 + ssgl_gz += childTaskPlan.getMileage();
  1717 + ssgl_gzZ += childTaskPlan.getMileage();
  1718 + ssbc_gz++;
  1719 + ssbc_gzZ++;
  1720 + } else if (childTaskPlan.getDestroyReason().equals("纠纷")) {
  1721 + ssgl_jf += childTaskPlan.getMileage();
  1722 + ssgl_jfZ += childTaskPlan.getMileage();
  1723 + ssbc_jf++;
  1724 + ssbc_jfZ++;
  1725 + } else if (childTaskPlan.getDestroyReason().equals("肇事")) {
  1726 + ssgl_zs += childTaskPlan.getMileage();
  1727 + ssgl_zsZ += childTaskPlan.getMileage();
  1728 + ssbc_zs++;
  1729 + ssbc_zsZ++;
  1730 + } else if (childTaskPlan.getDestroyReason().equals("缺人")) {
  1731 + ssgl_qr += childTaskPlan.getMileage();
  1732 + ssgl_qrZ += childTaskPlan.getMileage();
  1733 + ssbc_qr++;
  1734 + ssbc_qrZ++;
  1735 + } else if (childTaskPlan.getDestroyReason().equals("缺车")) {
  1736 + ssgl_qc += childTaskPlan.getMileage();
  1737 + ssgl_qcZ += childTaskPlan.getMileage();
  1738 + ssbc_qc++;
  1739 + ssbc_qcZ++;
  1740 + } else if (childTaskPlan.getDestroyReason().equals("客稀")) {
  1741 + ssgl_kx += childTaskPlan.getMileage();
  1742 + ssgl_kxZ += childTaskPlan.getMileage();
  1743 + ssbc_kx++;
  1744 + ssbc_kxZ++;
  1745 + } else if (childTaskPlan.getDestroyReason().equals("气候")) {
  1746 + ssgl_qh += childTaskPlan.getMileage();
  1747 + ssgl_qhZ += childTaskPlan.getMileage();
  1748 + ssbc_qh++;
  1749 + ssbc_qhZ++;
  1750 + } else if (childTaskPlan.getDestroyReason().equals("援外")) {
  1751 + ssgl_yw += childTaskPlan.getMileage();
  1752 + ssgl_ywZ += childTaskPlan.getMileage();
  1753 + ssbc_yw++;
  1754 + ssbc_ywZ++;
  1755 + } else {
  1756 + ssgl_other += childTaskPlan.getMileage();
  1757 + ssgl_otherZ += childTaskPlan.getMileage();
  1758 + ssbc_other++;
  1759 + ssbc_otherZ++;
  1760 + }
  1761 + } else {
  1762 + sjgl += childMileage;
  1763 + sjglZ += childMileage;
  1764 + }
  1765 + }
  1766 + }
  1767 +
  1768 + //班次
  1769 + jhbc++;
  1770 + jhbcZ++;
  1771 + String[] fcsj = scheduleRealInfo.getFcsj().split(":");
  1772 + String[] fcsjActual = (scheduleRealInfo.getFcsjActual() == null ? "0:00" : scheduleRealInfo.getFcsjActual()).split(":");
  1773 + if ((Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) > sj_0 && (Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) < sj_1) {
  1774 + jhbc_m++;
  1775 + jhbc_mZ++;
  1776 + } else if ((Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) > sj_2 && (Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) < sj_3) {
  1777 + jhbc_a++;
  1778 + jhbc_aZ++;
  1779 + }
  1780 + if (scheduleRealInfo.getStatus() != -1) {
  1781 + sjbc++;
  1782 + sjbcZ++;
  1783 + if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_1) {
  1784 + sjbc_m++;
  1785 + sjbc_mZ++;
  1786 + } else if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_3) {
  1787 + sjbc_a++;
  1788 + sjbc_aZ++;
  1789 + }
  1790 + }
  1791 + if (scheduleRealInfo.isSflj()) {
  1792 + ljbc++;
  1793 + ljbcZ++;
  1794 + if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_1) {
  1795 + ljbc_m++;
  1796 + ljbc_mZ++;
  1797 + } else if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_3) {
  1798 + ljbc_a++;
  1799 + ljbc_aZ++;
  1800 + }
  1801 + }
  1802 + if (scheduleRealInfo.getBcType().equals("venting")) {
  1803 + fzbc++;
  1804 + fzbcZ++;
  1805 + if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_1) {
  1806 + fzbc_m++;
  1807 + fzbc_mZ++;
  1808 + } else if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_3) {
  1809 + fzbc_a++;
  1810 + fzbc_aZ++;
  1811 + }
  1812 + }
  1813 +
  1814 + if (i < list.size() - 1) {
  1815 + if (!scheduleRealInfo.getXlBm().equals(list.get(i + 1).getXlBm())) {
  1816 + map = new HashMap<String, Object>();
  1817 + map.put("xlName", scheduleRealInfo.getXlName());
  1818 + map.put("jhlc", format.format(jhlc));
  1819 + map.put("sjgl", format.format(sjgl));
  1820 + map.put("ssgl", format.format(ssgl));
  1821 + map.put("ssgl_lz", ssgl_lz == 0 ? 0 : format.format(ssgl_lz));
  1822 + map.put("ssgl_dm", ssgl_dm == 0 ? 0 : format.format(ssgl_dm));
  1823 + map.put("ssgl_gz", ssgl_gz == 0 ? 0 : format.format(ssgl_gz));
  1824 + map.put("ssgl_jf", ssgl_jf == 0 ? 0 : format.format(ssgl_jf));
  1825 + map.put("ssgl_zs", ssgl_zs == 0 ? 0 : format.format(ssgl_zs));
  1826 + map.put("ssgl_qr", ssgl_qr == 0 ? 0 : format.format(ssgl_qr));
  1827 + map.put("ssgl_qc", ssgl_qc == 0 ? 0 : format.format(ssgl_qc));
  1828 + map.put("ssgl_kx", ssgl_kx == 0 ? 0 : format.format(ssgl_kx));
  1829 + map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
  1830 + map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
  1831 + map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  1832 + map.put("ssbc", ssbc);
  1833 + map.put("ssbc_lz", ssbc_lz);
  1834 + map.put("ssbc_dm", ssbc_dm);
  1835 + map.put("ssbc_gz", ssbc_gz);
  1836 + map.put("ssbc_jf", ssbc_jf);
  1837 + map.put("ssbc_zs", ssbc_zs);
  1838 + map.put("ssbc_qr", ssbc_qr);
  1839 + map.put("ssbc_qc", ssbc_qc);
  1840 + map.put("ssbc_kx", ssbc_kx);
  1841 + map.put("ssbc_qh", ssbc_qh);
  1842 + map.put("ssbc_yw", ssbc_yw);
  1843 + map.put("ssbc_other", ssbc_other);
  1844 + map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
  1845 + map.put("jhbc", jhbc);
  1846 + map.put("jhbc_m", jhbc_m);
  1847 + map.put("jhbc_a", jhbc_a);
  1848 + map.put("sjbc", sjbc);
  1849 + map.put("sjbc_m", sjbc_m);
  1850 + map.put("sjbc_a", sjbc_a);
  1851 + map.put("ljbc", ljbc);
  1852 + map.put("ljbc_m", ljbc_m);
  1853 + map.put("ljbc_a", ljbc_a);
  1854 + map.put("fzbc", fzbc);
  1855 + map.put("fzbc_m", fzbc_m);
  1856 + map.put("fzbc_a", fzbc_a);
  1857 + map.put("dtbc", dtbc);
  1858 + map.put("dtbc_m", dtbc_m);
  1859 + map.put("dtbc_a", dtbc_a);
  1860 + map.put("djg", djg);
  1861 + map.put("djg_m", djg_m);
  1862 + map.put("djg_a", djg_a);
  1863 + map.put("djg_time", djg_time);
  1864 + lMap.add(map);
  1865 + jhlc = 0;
  1866 + tempJhlc = 0;
  1867 + childMileage = 0;
  1868 + sjgl = 0f;
  1869 + ssgl = 0f;
  1870 + ssgl_lz = 0f;
  1871 + ssgl_dm = 0f;
  1872 + ssgl_gz = 0f;
  1873 + ssgl_jf = 0f;
  1874 + ssgl_zs = 0f;
  1875 + ssgl_qr = 0f;
  1876 + ssgl_qc = 0f;
  1877 + ssgl_kx = 0f;
  1878 + ssgl_qh = 0f;
  1879 + ssgl_yw = 0f;
  1880 + ssgl_other = 0f;
  1881 + ljgl = 0f;
  1882 + //班次
  1883 + jhbc = 0;
  1884 + jhbc_m = 0;
  1885 + jhbc_a = 0;
  1886 + sjbc = 0;
  1887 + sjbc_m = 0;
  1888 + sjbc_a = 0;
  1889 + ljbc = 0;
  1890 + ljbc_m = 0;
  1891 + ljbc_a = 0;
  1892 + fzbc = 0;
  1893 + fzbc_m = 0;
  1894 + fzbc_a = 0;
  1895 + dtbc = 0;
  1896 + dtbc_m = 0;
  1897 + dtbc_a = 0;
  1898 + djg = 0;
  1899 + djg_m = 0;
  1900 + djg_a = 0;
  1901 + djg_time = 0;
  1902 + }
  1903 + } else {
  1904 + map = new HashMap<String, Object>();
  1905 + map.put("xlName", scheduleRealInfo.getXlName());
  1906 + map.put("jhlc", format.format(jhlc));
  1907 + map.put("sjgl", format.format(sjgl));
  1908 + map.put("ssgl", format.format(ssgl));
  1909 + map.put("ssgl_lz", ssgl_lz == 0 ? 0 : format.format(ssgl_lz));
  1910 + map.put("ssgl_dm", ssgl_dm == 0 ? 0 : format.format(ssgl_dm));
  1911 + map.put("ssgl_gz", ssgl_gz == 0 ? 0 : format.format(ssgl_gz));
  1912 + map.put("ssgl_jf", ssgl_jf == 0 ? 0 : format.format(ssgl_jf));
  1913 + map.put("ssgl_zs", ssgl_zs == 0 ? 0 : format.format(ssgl_zs));
  1914 + map.put("ssgl_qr", ssgl_qr == 0 ? 0 : format.format(ssgl_qr));
  1915 + map.put("ssgl_qc", ssgl_qc == 0 ? 0 : format.format(ssgl_qc));
  1916 + map.put("ssgl_kx", ssgl_kx == 0 ? 0 : format.format(ssgl_kx));
  1917 + map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
  1918 + map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
  1919 + map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  1920 + map.put("ssbc", ssbc);
  1921 + map.put("ssbc_lz", ssbc_lz);
  1922 + map.put("ssbc_dm", ssbc_dm);
  1923 + map.put("ssbc_gz", ssbc_gz);
  1924 + map.put("ssbc_jf", ssbc_jf);
  1925 + map.put("ssbc_zs", ssbc_zs);
  1926 + map.put("ssbc_qr", ssbc_qr);
  1927 + map.put("ssbc_qc", ssbc_qc);
  1928 + map.put("ssbc_kx", ssbc_kx);
  1929 + map.put("ssbc_qh", ssbc_qh);
  1930 + map.put("ssbc_yw", ssbc_yw);
  1931 + map.put("ssbc_other", ssbc_other);
  1932 + map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
  1933 + map.put("jhbc", jhbc);
  1934 + map.put("jhbc_m", jhbc_m);
  1935 + map.put("jhbc_a", jhbc_a);
  1936 + map.put("sjbc", sjbc);
  1937 + map.put("sjbc_m", sjbc_m);
  1938 + map.put("sjbc_a", sjbc_a);
  1939 + map.put("ljbc", ljbc);
  1940 + map.put("ljbc_m", ljbc_m);
  1941 + map.put("ljbc_a", ljbc_a);
  1942 + map.put("fzbc", fzbc);
  1943 + map.put("fzbc_m", fzbc_m);
  1944 + map.put("fzbc_a", fzbc_a);
  1945 + map.put("dtbc", dtbc);
  1946 + map.put("dtbc_m", dtbc_m);
  1947 + map.put("dtbc_a", dtbc_a);
  1948 + map.put("djg", djg);
  1949 + map.put("djg_m", djg_m);
  1950 + map.put("djg_a", djg_a);
  1951 + map.put("djg_time", djg_time);
  1952 + lMap.add(map);
  1953 + jhlc = 0;
  1954 + tempJhlc = 0;
  1955 + childMileage = 0;
  1956 + sjgl = 0f;
  1957 + ssgl = 0f;
  1958 + ssgl_lz = 0f;
  1959 + ssgl_dm = 0f;
  1960 + ssgl_gz = 0f;
  1961 + ssgl_jf = 0f;
  1962 + ssgl_zs = 0f;
  1963 + ssgl_qr = 0f;
  1964 + ssgl_qc = 0f;
  1965 + ssgl_kx = 0f;
  1966 + ssgl_qh = 0f;
  1967 + ssgl_yw = 0f;
  1968 + ssgl_other = 0f;
  1969 + ljgl = 0f;
  1970 + //班次
  1971 + jhbc = 0;
  1972 + jhbc_m = 0;
  1973 + jhbc_a = 0;
  1974 + sjbc = 0;
  1975 + sjbc_m = 0;
  1976 + sjbc_a = 0;
  1977 + ljbc = 0;
  1978 + ljbc_m = 0;
  1979 + ljbc_a = 0;
  1980 + fzbc = 0;
  1981 + fzbc_m = 0;
  1982 + fzbc_a = 0;
  1983 + dtbc = 0;
  1984 + dtbc_m = 0;
  1985 + dtbc_a = 0;
  1986 + djg = 0;
  1987 + djg_m = 0;
  1988 + djg_a = 0;
  1989 + djg_time = 0;
  1990 + }
  1991 + }
  1992 + }
  1993 + map = new HashMap<String, Object>();
  1994 + map.put("xlName", "合计");
  1995 + map.put("jhlc", format.format(jhlcZ));
  1996 + map.put("sjgl", format.format(sjglZ));
  1997 + map.put("ssgl", format.format(ssglZ));
  1998 + map.put("ssgl_lz", ssgl_lzZ == 0 ? 0 : format.format(ssgl_lzZ));
  1999 + map.put("ssgl_dm", ssgl_dmZ == 0 ? 0 : format.format(ssgl_dmZ));
  2000 + map.put("ssgl_gz", ssgl_gzZ == 0 ? 0 : format.format(ssgl_gzZ));
  2001 + map.put("ssgl_jf", ssgl_jfZ == 0 ? 0 : format.format(ssgl_jfZ));
  2002 + map.put("ssgl_zs", ssgl_zsZ == 0 ? 0 : format.format(ssgl_zsZ));
  2003 + map.put("ssgl_qr", ssgl_qrZ == 0 ? 0 : format.format(ssgl_qrZ));
  2004 + map.put("ssgl_qc", ssgl_qcZ == 0 ? 0 : format.format(ssgl_qcZ));
  2005 + map.put("ssgl_kx", ssgl_kxZ == 0 ? 0 : format.format(ssgl_kxZ));
  2006 + map.put("ssgl_qh", ssgl_qhZ == 0 ? 0 : format.format(ssgl_qhZ));
  2007 + map.put("ssgl_yw", ssgl_ywZ == 0 ? 0 : format.format(ssgl_ywZ));
  2008 + map.put("ssgl_other", ssgl_otherZ == 0 ? 0 : format.format(ssgl_otherZ));
  2009 + map.put("ssbc", ssbcZ);
  2010 + map.put("ssbc_lz", ssbc_lzZ);
  2011 + map.put("ssbc_dm", ssbc_lzZ);
  2012 + map.put("ssbc_gz", ssbc_gzZ);
  2013 + map.put("ssbc_jf", ssbc_jfZ);
  2014 + map.put("ssbc_zs", ssbc_zsZ);
  2015 + map.put("ssbc_qr", ssbc_qrZ);
  2016 + map.put("ssbc_qc", ssbc_qcZ);
  2017 + map.put("ssbc_kx", ssbc_qcZ);
  2018 + map.put("ssbc_qh", ssbc_qhZ);
  2019 + map.put("ssbc_yw", ssbc_ywZ);
  2020 + map.put("ssbc_other", ssbc_otherZ);
  2021 + map.put("ljgl", ljglZ == 0 ? 0 : format.format(ljglZ));
  2022 + map.put("jhbc", jhbcZ);
  2023 + map.put("jhbc_m", jhbc_mZ);
  2024 + map.put("jhbc_a", jhbc_aZ);
  2025 + map.put("sjbc", sjbcZ);
  2026 + map.put("sjbc_m", sjbc_mZ);
  2027 + map.put("sjbc_a", sjbc_aZ);
  2028 + map.put("ljbc", ljbcZ);
  2029 + map.put("ljbc_m", ljbc_mZ);
  2030 + map.put("ljbc_a", ljbc_aZ);
  2031 + map.put("fzbc", fzbcZ);
  2032 + map.put("fzbc_m", fzbc_mZ);
  2033 + map.put("fzbc_a", fzbc_aZ);
  2034 + map.put("dtbc", dtbcZ);
  2035 + map.put("dtbc_m", dtbc_mZ);
  2036 + map.put("dtbc_a", dtbc_aZ);
  2037 + map.put("djg", djgZ);
  2038 + map.put("djg_m", djg_mZ);
  2039 + map.put("djg_a", djg_aZ);
  2040 + map.put("djg_time", djg_timeZ);
  2041 + lMap.add(map);
  2042 + /* for (int i = 0; i < lMap.size(); i++) {
  2043 + Map<String, Object> m=lMap.get(i);
  2044 +// m.get(""))
  2045 + jhlc += Double.parseDouble(m.get("jhlc").toString());
  2046 + sjgl += Double.parseDouble(m.get("sjgl").toString());
  2047 + ssgl += Double.parseDouble( m.get("ssgl").toString());
  2048 + ssgl_lz += Double.parseDouble( m.get("ssgl_lz").toString());
  2049 + ssgl_dm += Double.parseDouble(m.get("ssgl_dm").toString());
  2050 + ssgl_gz += Double.parseDouble( m.get("ssgl_gz").toString());
  2051 + ssgl_jf += m.get("ssgl_jf", ssgl_jf == 0 ? 0 : format.format(ssgl_jf));
  2052 + m.get("ssgl_zs", ssgl_zs == 0 ? 0 : format.format(ssgl_zs));
  2053 + m.get("ssgl_qr", ssgl_qr == 0 ? 0 : format.format(ssgl_qr));
  2054 + m.get("ssgl_qc", ssgl_qc == 0 ? 0 : format.format(ssgl_qc));
  2055 + m.get("ssgl_kx", ssgl_kx == 0 ? 0 : format.format(ssgl_kx));
  2056 + m.get("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
  2057 + m.get("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
  2058 + m.get("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  2059 + m.get("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
  2060 + m.get("jhbc", jhbc);
  2061 + m.get("jhbc_m", jhbc_m);
  2062 + m.get("jhbc_a", jhbc_a);
  2063 + m.get("sjbc", sjbc);
  2064 + m.get("sjbc_m", sjbc_m);
  2065 + m.get("sjbc_a", sjbc_a);
  2066 + m.get("ljbc", ljbc);
  2067 + m.get("ljbc_m", ljbc_m);
  2068 + m.get("ljbc_a", ljbc_a);
  2069 + m.get("fzbc", fzbc);
  2070 + m.get("fzbc_m", fzbc_m);
  2071 + m.get("fzbc_a", fzbc_a);
  2072 + m.get("dtbc", dtbc);
  2073 + m.get("dtbc_m", dtbc_m);
  2074 + m.get("dtbc_a", dtbc_a);
  2075 + m.get("djg", djg);
  2076 + m.get("djg_m", djg_m);
  2077 + m.get("djg_a", djg_a);
  2078 + m.get("djg_time", djg_time);
  2079 + }*/
1440 2080  
1441 2081 if (type != null && type.length() != 0 && type.equals("export")) {
1442 2082 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
... ... @@ -1444,141 +2084,25 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1444 2084 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
1445 2085 Map<String, Object> m = new HashMap<String, Object>();
1446 2086 ReportUtils ee = new ReportUtils();
1447   - m.put("dates", startDate + " 至 " + endDate);
1448   - List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
1449   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
1450   - for (ScheduleRealInfo schedule : list) {
1451   - Map<String, Object> tempMap = new HashMap<String, Object>();
1452   - tempMap.put("xlName", schedule.getXlName() != null ? schedule.getXlName() : "");
1453   - tempMap.put("lpName", schedule.getLpName() != null ? schedule.getLpName() : "");
1454   - tempMap.put("clZbh", schedule.getClZbh() != null ? schedule.getClZbh() : "");
1455   - tempMap.put("jName", schedule.getjName() != null ? schedule.getjName() : "");
1456   - tempMap.put("sName", schedule.getsName() != null ? schedule.getsName() : "");
1457   - tempMap.put("fcsj", schedule.getFcsj() != null ? schedule.getFcsj() : "");
1458   - tempMap.put("fcsjActual", schedule.getFcsjActual() != null ? schedule.getFcsjActual() : "");
1459   - tempMap.put("zdsj", schedule.getZdsj() != null ? schedule.getZdsj() : "");
1460   - tempMap.put("zdsjActual", schedule.getZdsjActual() != null ? schedule.getZdsjActual() : "");
1461   - if (schedule.getUpdateBy() != null) {
1462   - if (schedule.getUpdateBy().getName() != null)
1463   - tempMap.put("userName", schedule.getUpdateBy().getName());
1464   - else
1465   - tempMap.put("userName", "");
1466   - } else {
1467   - tempMap.put("userName", "");
1468   - }
1469   - if (schedule.getUpdateDate() != null) {
1470   - tempMap.put("updateDate", sdf.format(schedule.getUpdateDate()));
1471   - } else {
1472   - tempMap.put("updateDate", "");
1473   - }
1474   - tempMap.put("remarks", schedule.getRemarks() != null ? schedule.getRemarks() : "");
1475   - tempList.add(tempMap);
1476   - }
1477 2087 try {
1478   - listI.add(tempList.iterator());
  2088 + listI.add(lMap.iterator());
1479 2089 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
1480   - ee.excelReplace(listI, new Object[]{m}, path + "mould/correctForm.xls",
1481   - path + "export/修正报表" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
  2090 + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_.xls",
  2091 + path + "export/统计日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
1482 2092 } catch (Exception e) {
1483 2093 // TODO: handle exception
1484 2094 e.printStackTrace();
1485 2095 }
1486   - Map<String, Object> map = tempList.get(tempList.size() - 1);
1487   - System.out.println("tempMap:" + map);
1488   - }
1489   -
1490   - return list;
1491   - }
1492   -
1493   - @Override
1494   - public List<ScheduleRealInfo> queryListWaybill(String jName, String clZbh,
1495   - String lpName, String date, String line) {
1496   - List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();
1497   - List<ScheduleRealInfo> list = null;
1498   - list = scheduleRealInfoRepository.queryListWaybill(jName, clZbh, lpName, date, line);
1499   - for (int i = 0; i < list.size(); i++) {
1500   - ScheduleRealInfo s = list.get(i);
1501   - s.setAdjustExps(i + 1 + "");
1502   - String remarks = "";
1503   - if (s.getRemarks() != null) {
1504   - remarks += s.getRemarks();
1505   - }
1506   -
1507   - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
1508   - if (!childTaskPlans.isEmpty()) {
1509   - s.setFcsjActual("");
1510   - s.setZdsjActual("");
1511   - s.setJhlc(0.0);
1512   - }
1513   -
1514   - if (s.isDestroy()) {
1515   - s.setFcsjActual("");
1516   - s.setZdsjActual("");
1517   - s.setJhlc(0.0);
1518   - remarks += "(烂班)";
1519   - s.setRemarks(remarks);
1520   - }
1521   - listSchedule.add(s);
1522   - //计算营运里程,空驶里程
1523   - if (!childTaskPlans.isEmpty()) {
1524   - String sqlPc = "select * from bsth_c_s_child_task where schedule=" + s.getId() + " order by start_date ";
1525   - List<ScheduleRealInfo> lists = jdbcTemplate.query(sqlPc,
1526   - new RowMapper<ScheduleRealInfo>() {
1527   - @Override
1528   - public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
1529   - ScheduleRealInfo t = new ScheduleRealInfo();
1530   - if (rs.getInt("destroy") == 0) {
1531   - t.setFcsjActual(rs.getString("start_date"));
1532   - t.setZdsjActual(rs.getString("end_date"));
1533   - t.setJhlc(rs.getDouble("mileage"));
1534   - } else {
1535   - t.setFcsjActual("");
1536   - t.setZdsjActual("");
1537   - t.setJhlc(0.0);
1538   - }
1539   - t.setQdzName(rs.getString("start_station_name"));
1540   - t.setZdzName(rs.getString("end_station_name"));
1541   - t.setRemarks(rs.getString("remarks"));
1542   - t.setAdjustExps("子");
1543   - return t;
1544   - }
1545   - });
1546   - for (int j = 0; j < lists.size(); j++) {
1547   - ScheduleRealInfo t = lists.get(j);
1548   - listSchedule.add(t);
1549   - }
1550   - }
1551 2096 }
1552 2097  
1553   - return listSchedule;
1554   - }
1555   -
1556   - @Override
1557   - public Map<String, Object> removeChildTask(Long taskId) {
1558   - Map<String, Object> rs = new HashMap<>();
1559   - ChildTaskPlan chTask = cTaskPlanRepository.findOne(taskId);
1560   -
1561   - ScheduleRealInfo sch = dayOfSchedule.get(chTask.getSchedule().getId());
1562   - try {
1563   -
1564   - sch.getcTasks().remove(chTask);
1565   - scheduleRealInfoRepository.save(sch);
1566   - rs.put("status", ResponseCode.SUCCESS);
1567   - } catch (Exception e) {
1568   - logger.error("", e);
1569   - rs.put("status", ResponseCode.ERROR);
1570   - }
1571   - return rs;
  2098 + return lMap;
1572 2099 }
1573   -
  2100 +
1574 2101 @Override
1575   - public List<Map<String, Object>> statisticsDaily(String line, String date,
  2102 + public List<Map<String, Object>> statisticsDailyTj(String line, String date,String date2,
1576 2103 String xlName, String type) {
1577 2104 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
1578   - if (date.length() == 10)
1579   - list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
1580   - else if (date.length() == 7)
1581   - list = scheduleRealInfoRepository.scheduleByDateAndLine3(line, date);
  2105 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date,date2);
1582 2106  
1583 2107 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
1584 2108 DecimalFormat format = new DecimalFormat("0.00");
... ... @@ -3609,17 +4133,21 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3609 4133 }
3610 4134  
3611 4135 ScheduleRealInfo leftSch, rightSch = null;
3612   - boolean changeRealTime = true;
3613 4136 for (int i = 0; i < largeList.size(); i++) {
3614 4137 leftSch = largeList.get(i);
3615 4138 if (i < smallList.size()) {
3616 4139 rightSch = smallList.get(i);
3617 4140 ts.add(rightSch);
3618   - } else
3619   - changeRealTime = false;
  4141 + } else{
  4142 + //不对称时多出来的
  4143 + lpChangeByLeft(leftSch, largeList.get(i - 1), type);
  4144 + ts.add(leftSch);
  4145 + cars.add(leftSch.getClZbh());
  4146 + continue;
  4147 + }
3620 4148  
3621 4149 //调换路牌
3622   - lpChange(leftSch, rightSch, type, changeRealTime);
  4150 + lpChange(leftSch, rightSch, type);
3623 4151 ts.add(leftSch);
3624 4152  
3625 4153 cars.add(leftSch.getClZbh());
... ... @@ -3655,19 +4183,38 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3655 4183 }
3656 4184  
3657 4185 @Override
3658   - public void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type, boolean changeRealTime) {
  4186 + public void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type) {
3659 4187 LpData leftData = new LpData(leftSch);
3660 4188 LpData rightData = new LpData(rightSch);
3661 4189  
3662   - leftData.appendTo(rightSch, type, changeRealTime);
3663   - rightData.appendTo(leftSch, type, changeRealTime);
  4190 + leftData.appendTo(rightSch, type);
  4191 + rightData.appendTo(leftSch, type);
  4192 +
  4193 + if(type > 0){
  4194 + //更新车辆和班次映射信息
  4195 + dayOfSchedule.removeNbbm2SchMapp(leftSch, leftData.getNbbm());
  4196 + dayOfSchedule.removeNbbm2SchMapp(rightSch, rightData.getNbbm());
3664 4197  
3665   - //更新车辆和班次映射信息
3666   - dayOfSchedule.removeNbbm2SchMapp(leftSch, leftData.getNbbm());
3667   - dayOfSchedule.removeNbbm2SchMapp(rightSch, rightData.getNbbm());
  4198 + dayOfSchedule.addNbbm2SchMapp(leftSch, rightData.getNbbm());
  4199 + dayOfSchedule.addNbbm2SchMapp(rightSch, leftData.getNbbm());
  4200 + }
  4201 + }
  4202 +
  4203 + /**
  4204 + * 更换左边班次的路牌,右边不变
  4205 + * @param leftSch
  4206 + * @param rightSch
  4207 + * @param type
  4208 + */
  4209 + public void lpChangeByLeft(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type) {
  4210 + LpData rightData = new LpData(rightSch);
3668 4211  
3669   - dayOfSchedule.addNbbm2SchMapp(leftSch, rightData.getNbbm());
3670   - dayOfSchedule.addNbbm2SchMapp(rightSch, leftData.getNbbm());
  4212 + rightData.appendTo(leftSch, type);
  4213 +
  4214 + if(type > 0){
  4215 + //更新车辆和班次映射信息
  4216 + dayOfSchedule.addNbbm2SchMapp(leftSch, rightData.getNbbm());
  4217 + }
3671 4218 }
3672 4219  
3673 4220 @Override
... ...
src/main/resources/static/pages/forms/statement/scheduleDaily.html
... ... @@ -37,7 +37,7 @@
37 37 </div>
38 38 <div class="form-group">
39 39 <input class="btn btn-default" type="button" id="query" value="查询"/>
40   - <input class="btn btn-default" type="button" id="month" value="按月查询"/>
  40 +<!-- <input class="btn btn-default" type="button" id="month" value="按月查询"/> -->
41 41 <input class="btn btn-default" type="button" id="export" value="导出"/>
42 42 </div>
43 43 </form>
... ... @@ -345,7 +345,7 @@
345 345 });
346 346  
347 347 //按月查询
348   - $("#month").on('click',function(){
  348 + /* $("#month").on('click',function(){
349 349 line = $("#line").val();
350 350 xlName = $("#select2-line-container").html();
351 351 date = $("#date").val();
... ... @@ -363,7 +363,7 @@
363 363 $('#forms .scheduleDaily_2').html("");
364 364 $('#forms .scheduleDaily_3').html("");
365 365  
366   - });
  366 + }); */
367 367  
368 368 $("#export").on("click",function(){
369 369 var params = {};
... ...
src/main/resources/static/pages/forms/statement/statisticsDaily.html
... ... @@ -32,9 +32,13 @@
32 32 <select class="form-control" name="line" id="line" style="width: 180px;"></select>
33 33 </div>
34 34 <div style="display: inline-block;margin-left: 15px;">
35   - <span class="item-label" style="width: 80px;">时间: </span>
  35 + <span class="item-label" style="width: 80px;">开始时间: </span>
36 36 <input class="form-control" type="text" id="date" style="width: 180px;"/>
37 37 </div>
  38 + <div style="display: inline-block;margin-left: 15px;">
  39 + <span class="item-label" style="width: 80px;">结束时间: </span>
  40 + <input class="form-control" type="text" id="date2" style="width: 180px;"/>
  41 + </div>
38 42 <div class="form-group">
39 43 <input class="btn btn-default" type="button" id="query" value="查询"/>
40 44 <input class="btn btn-default" type="button" id="export" value="导出"/>
... ... @@ -124,6 +128,22 @@
124 128 format : 'YYYY-MM-DD',
125 129 locale : 'zh-cn'
126 130 });
  131 +
  132 + $("#date2").datetimepicker({
  133 + format : 'YYYY-MM-DD',
  134 + locale : 'zh-cn'
  135 + });
  136 + var d = new Date();
  137 + var year = d.getFullYear();
  138 + var month = d.getMonth() + 1;
  139 + var day = d.getDate();
  140 + if(month < 10)
  141 + month = "0" + month;
  142 + if(day < 10)
  143 + day = "0" + day;
  144 + $("#date").val(year + "-" + month + "-" + day);
  145 +
  146 + $("#date2").val(year + "-" + month + "-" + day);
127 147 $.get('/basic/lineCode2Name',function(result){
128 148 var data=[];
129 149  
... ... @@ -139,24 +159,31 @@
139 159 var line ="";
140 160 var xlName ="";
141 161 var date = "";
  162 + var date2 ="";
142 163 $("#query").on("click",function(){
143 164 line = $("#line").val();
144 165 xlName = $("#select2-line-container").html();
145 166 date = $("#date").val();
  167 + date2 =$("#date2").val();
146 168 if(line=="请选择"){
147 169 line="";
148 170 }
149   - $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){
150   - // 把数据填充到模版中
151   - var tbodyHtml = template('statisticsDaily',{list:result});
152   - // 把渲染好的模版html文本追加到表格中
153   - $('#forms .statisticsDaily').html(tbodyHtml);
154   -
155   - if(result.length == 0)
156   - $("#export").attr('disabled',"true");
157   - else
158   - $("#export").removeAttr("disabled");
159   - });
  171 + if(date==null || date =="" ||date2==null || date2 ==""){
  172 + layer.msg('请选择时间段.');
  173 + }else{
  174 + $get('/realSchedule/statisticsDailyTj',{line:line,date:date,date2:date2,xlName:xlName,type:"query"},function(result){
  175 + // 把数据填充到模版中
  176 + var tbodyHtml = template('statisticsDaily',{list:result});
  177 + // 把渲染好的模版html文本追加到表格中
  178 + $('#forms .statisticsDaily').html(tbodyHtml);
  179 +
  180 + if(result.length == 0)
  181 + $("#export").attr('disabled',"true");
  182 + else
  183 + $("#export").removeAttr("disabled");
  184 + });
  185 + }
  186 +
160 187 });
161 188  
162 189 $("#export").on("click",function(){
... ...
src/main/resources/static/pages/forms/statement/waybill.html
... ... @@ -238,13 +238,13 @@
238 238 // 把渲染好的模版html文本追加到表格中
239 239 $('#forms .ludan_1').html(ludan_1);
240 240 });
241   - $post('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){
  241 + $get('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){
242 242 getTime(result);
243 243 var ludan_2 = template('ludan_2',{list:result});
244 244 // 把渲染好的模版html文本追加到表格中
245 245 $('#forms .ludan_2').html(ludan_2);
246 246 });
247   - $post('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){
  247 + $get('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){
248 248 var ludan_3 = template('ludan_3',result);
249 249 $('#forms .ludan_3').html(ludan_3);
250 250 });
... ... @@ -254,7 +254,7 @@
254 254 if(params.length < 1){
255 255 return;
256 256 }
257   - $post('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){
  257 + $get('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2],date:date,line:line},function(result){
258 258 window.open("/downloadFile/download?fileName="+date+"-"+jName+"-"+params[1]+"-"+params[2]+"-行车路单");
259 259 });
260 260 });
... ...
src/main/resources/static/pages/forms/statement/waybillQp.html
... ... @@ -181,13 +181,13 @@
181 181 $('#forms .ludan_1').html(ludan_1);
182 182 //$('#forms .ludan_4').html(ludan_4);
183 183 });
184   - $post('/realSchedule/queryListWaybillQp',{clZbh:params[0],date:date,line:line},function(result){
  184 + $get('/realSchedule/queryListWaybillQp',{clZbh:params[0],date:date,line:line},function(result){
185 185 getTime(result);
186 186 var ludan_2 = template('ludan_2',{list:result});
187 187 // 把渲染好的模版html文本追加到表格中
188 188 $('#forms .ludan_2').html(ludan_2);
189 189 });
190   - $post('/realSchedule/findKMBCQp',{clZbh:params[0],date:date,line:line},function(result){
  190 + $get('/realSchedule/findKMBCQp',{clZbh:params[0],date:date,line:line},function(result){
191 191 console.log(result);
192 192 var ludan_3 = template('ludan_3',{map:result});
193 193 $('#forms .ludan_3').html(ludan_3);
... ... @@ -199,7 +199,7 @@
199 199 if(params.length < 1){
200 200 return;
201 201 }
202   - $post('/realSchedule/exportWaybillQp',{clZbh:params[0],date:date,line:line},function(result){
  202 + $get('/realSchedule/exportWaybillQp',{clZbh:params[0],date:date,line:line},function(result){
203 203 var fileName=date+"-"+params[0]+"-行车路单"
204 204 window.open("/downloadFile/download?fileName="+fileName);
205 205 // window.open("/downloadFile/download?fileName="+encodeURIComponent(encodeURIComponent(fileName)));
... ...
src/main/resources/static/real_control_v2/css/line_schedule.css
... ... @@ -239,7 +239,7 @@
239 239 }
240 240  
241 241 .schedule-body .ct_table dl:nth-child(even){
242   - background: rgba(249, 249, 249, 0.31);
  242 + background: rgba(101, 204, 220, 0.13);
243 243 }
244 244  
245 245 span.fcsj-diff {
... ... @@ -532,7 +532,7 @@ div.drop-rail[data-type=&quot;car&quot;]:before {
532 532 }
533 533  
534 534 dl.relevance-active dd:nth-child(n+2) {
535   - background: #c1e2f9 !important;
  535 + background: #d2d2d2 !important;
536 536 }
537 537  
538 538 dl.relevance-active.intimity dd:nth-child(n+2) {
... ...
src/main/resources/static/real_control_v2/css/main.css
... ... @@ -863,4 +863,40 @@ svg rect.offline{
863 863 color: white;
864 864 box-shadow: 0px 4px 6px 0 rgba(0, 0, 0, 0.2), 0px 4px 10px 0 rgba(0, 0, 0, 0.19);
865 865 border-radius: 1px 1px 4px 4px;
  866 +}
  867 +
  868 +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-label{
  869 + width: 120px;
  870 +}
  871 +
  872 +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-controls{
  873 + margin-left: 125px;
  874 +}
  875 +
  876 +#oil_station-modal .uk-form-icon>[class*=uk-icon-]{
  877 + right: 23px;
  878 +}
  879 +
  880 +#oil_station-modal .uk-form-icon:not(.uk-form-icon-flip)>input{
  881 + padding-left: 10px !important;
  882 +}
  883 +
  884 +#oil_station-modal .uk-form-icon{
  885 + width: calc(100% - 145px);
  886 +}
  887 +
  888 +#oil_station-modal .uk-icon-mile:before{
  889 + content: '公里';
  890 +}
  891 +
  892 +#oil_station-modal .uk-icon-minute:before{
  893 + content: '分钟';
  894 +}
  895 +
  896 +option.oil_station_opt{
  897 + color: red;
  898 +}
  899 +
  900 +#oil_station-modal .uk-modal .uk-form.fv-form{
  901 + margin-bottom: 0 !important;
866 902 }
867 903 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/fcxxwt.html
... ... @@ -197,7 +197,7 @@
197 197 }
198 198  
199 199 //里程有修改
200   - if(data.jhlc != sch.jhlc){
  200 + if(data.jhlc != sch.jhlc && data.jhlc != 0){
201 201 var confHtml = '<h4 style="color: #c04c4c;margin-bottom: 9px;">确认要将班次里程由'+sch.jhlc+' 修改为'+data.jhlc+' </h4><small>备注:</small>';
202 202 UIkit.modal.prompt(confHtml, data.remarks, function(remarks){
203 203 if(remarks){
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
... ... @@ -267,7 +267,7 @@
267 267 }
268 268 });
269 269 //公里与主任务不符合
270   - if (sum != sch.jhlc) {
  270 + if (sum != sch.jhlcOrig) {
271 271 if (i > 1)
272 272 calcs += ('=' + sum);
273 273 calcs += (' ≠ ' + sch.jhlc);
... ... @@ -320,6 +320,11 @@
320 320 var sch = getActiveSch();
321 321 if (!sch)
322 322 return notify_err('无法获取到主任务信息!');
  323 +
  324 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  325 + notify_err('暂不能在进出场班次上做回场子任务!');
  326 + return;
  327 + }
323 328 open_modal(folder + '/sub_task/add_sub_task_inpark.html', {
324 329 sch: sch
325 330 }, modal_opts);
... ... @@ -330,6 +335,10 @@
330 335 var sch = getActiveSch();
331 336 if (!sch)
332 337 return notify_err('无法获取到主任务信息!');
  338 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  339 + notify_err('暂不能在进出场班次上做出场子任务!');
  340 + return;
  341 + }
333 342 open_modal(folder + '/sub_task/add_sub_task_outpark.html', {
334 343 sch: sch
335 344 }, modal_opts);
... ... @@ -369,6 +378,20 @@
369 378 });
370 379 }, '确定删除');
371 380 };
  381 + //加油
  382 + var add_oil = function () {
  383 + var sch = getActiveSch();
  384 + if (!sch)
  385 + return notify_err('无法获取到主任务信息!');
  386 +
  387 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  388 + notify_err('暂不能在进出场班次上做加油子任务!');
  389 + return;
  390 + }
  391 + open_modal(folder + '/sub_task/add_sub_task_oil.html', {
  392 + sch: sch
  393 + }, modal_opts);
  394 + };
372 395  
373 396 var callbackHandler = {
374 397 add_temp_sch: add_temp_sch,
... ... @@ -377,7 +400,8 @@
377 400 add_sub_task_in: add_sub_task_in,
378 401 remove_sub_task: remove_sub_task,
379 402 add_sub_task_out: add_sub_task_out,
380   - add_sub_task_range_turn: add_sub_task_range_turn
  403 + add_sub_task_range_turn: add_sub_task_range_turn,
  404 + add_oil: add_oil
381 405 };
382 406  
383 407 //右键菜单
... ... @@ -394,6 +418,9 @@
394 418 "add_sub_task": {
395 419 name: "添加子任务",
396 420 items: {
  421 + 'add_oil':{
  422 + name: '加油'
  423 + },
397 424 'add_sub_task_in': {
398 425 name: '回场'
399 426 },
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_inpark.html
... ... @@ -52,7 +52,7 @@
52 52 </div>
53 53 </div>
54 54 <div class="uk-width-7-10 pl5">
55   - <input type="text" name="mileage" required>
  55 + <input type="number" step="0.01" name="mileage" required>
56 56 </div>
57 57 </div>
58 58 <div class="uk-grid">
... ... @@ -125,7 +125,7 @@
125 125 </div>
126 126 </div>
127 127 <div class="uk-width-7-10 pl5">
128   - <input type="text" name="mileage" required style="width: calc(100% - 62px);">
  128 + <input type="number" step="0.01" name="mileage" required style="width: calc(100% - 62px);">
129 129 <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a>
130 130 </div>
131 131 </div>
... ... @@ -190,7 +190,7 @@
190 190 </div>
191 191 </div>
192 192 <div class="uk-width-7-10 pl5">
193   - <input type="text" name="mileage" required>
  193 + <input type="number" step="0.01" name="mileage" required>
194 194 </div>
195 195 </div>
196 196 <div class="uk-grid">
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_oil.html 0 → 100644
  1 +<div class="uk-modal ct-form-modal" id="schedule-addsch_oil-modal">
  2 + <div class="uk-modal-dialog" style="width: 1201px;">
  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-3">
  9 + <form class="uk-form uk-form-horizontal ">
  10 + <input type="hidden" name="type1" value="正常">
  11 + <input type="hidden" name="type2" value="1">
  12 + <input type="hidden" name="mileageType" value="service">
  13 +
  14 + <div class="uk-panel uk-panel-box uk-panel-box-primary">
  15 + <div class="uk-panel-badge uk-badge ">营运</div>
  16 + <h3 class="uk-panel-title">线路上站点间</h3>
  17 + <div class="uk-form-row">
  18 + <label class="uk-form-label">起点站</label>
  19 + <div class="uk-form-controls">
  20 + <input type="hidden" name="startStation">
  21 + <input type="text" name="startStationName" disabled>
  22 + </div>
  23 + </div>
  24 + <div class="uk-form-row">
  25 + <label class="uk-form-label">终点站</label>
  26 + <div class="uk-form-controls">
  27 + <input type="hidden" name="endStation">
  28 + <input type="text" name="endStationName" disabled>
  29 + </div>
  30 + </div>
  31 + <div class="uk-form-row">
  32 + <label class="uk-form-label">里程</label>
  33 + <div class="uk-form-controls">
  34 + <input type="number" step="0.01" name="mileage" max=222
  35 + data-fv-lessthan-inclusive="false"
  36 + disabled>
  37 + </div>
  38 + </div>
  39 + <div class="uk-form-row">
  40 + <label class="uk-form-label">开始时间</label>
  41 + <div class="uk-form-controls">
  42 + <input type="time" name="startDate" required>
  43 + </div>
  44 + </div>
  45 + <div class="uk-form-row">
  46 + <label class="uk-form-label">结束时间</label>
  47 + <div class="uk-form-controls">
  48 + <input type="time" name="endDate" required>
  49 + </div>
  50 + </div>
  51 + </div>
  52 + </form>
  53 + </div>
  54 +
  55 + <div class="uk-width-1-3">
  56 + <form class="uk-form uk-form-horizontal">
  57 + <input type="hidden" name="type1" value="临加">
  58 + <input type="hidden" name="type2" value="2">
  59 + <input type="hidden" name="mileageType" value="empty">
  60 +
  61 + <div class="uk-panel uk-panel-box uk-panel-box-secondary">
  62 + <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div>
  63 + <h3 class="uk-panel-title">进场</h3>
  64 + <div class="uk-form-row">
  65 + <label class="uk-form-label">起点站</label>
  66 + <div class="uk-form-controls">
  67 + <select name="startStation" required>
  68 + </select>
  69 + <input type="hidden" name="startStationName" disabled>
  70 + </div>
  71 + </div>
  72 + <div class="uk-form-row">
  73 + <label class="uk-form-label">终点站</label>
  74 + <div class="uk-form-controls">
  75 + <select name="endStation" required>
  76 + </select>
  77 + <input type="hidden" name="endStationName" disabled>
  78 + </div>
  79 + </div>
  80 + <div class="uk-form-row">
  81 + <label class="uk-form-label">里程</label>
  82 + <div class="uk-form-controls">
  83 + <input type="number" step="0.01" name="mileage" max=222
  84 + data-fv-lessthan-inclusive="false"
  85 + required>
  86 + </div>
  87 + </div>
  88 + <div class="uk-form-row">
  89 + <label class="uk-form-label">开始时间</label>
  90 + <div class="uk-form-controls">
  91 + <input type="time" name="startDate" required>
  92 + </div>
  93 + </div>
  94 + <div class="uk-form-row">
  95 + <label class="uk-form-label">结束时间</label>
  96 + <div class="uk-form-controls">
  97 + <input type="time" name="endDate" required>
  98 + </div>
  99 + </div>
  100 + </div>
  101 + </form>
  102 + </div>
  103 +
  104 + <div class="uk-width-1-3">
  105 + <form class="uk-form uk-form-horizontal">
  106 + <input type="hidden" name="type1" value="临加">
  107 + <input type="hidden" name="type2" value="3">
  108 + <input type="hidden" name="mileageType" value="empty">
  109 +
  110 + <div class="uk-panel uk-panel-box uk-panel-box-secondary">
  111 + <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div>
  112 + <h3 class="uk-panel-title">出场</h3>
  113 + <div class="uk-form-row">
  114 + <label class="uk-form-label">起点站</label>
  115 + <div class="uk-form-controls">
  116 + <select name="startStation" required>
  117 + </select>
  118 + <input type="hidden" name="startStationName" disabled>
  119 + </div>
  120 + </div>
  121 + <div class="uk-form-row">
  122 + <label class="uk-form-label">终点站</label>
  123 + <div class="uk-form-controls">
  124 + <select name="endStation" required>
  125 + </select>
  126 + <input type="hidden" name="endStationName" disabled>
  127 + </div>
  128 + </div>
  129 + <div class="uk-form-row">
  130 + <label class="uk-form-label">里程</label>
  131 + <div class="uk-form-controls">
  132 + <input type="number" step="0.01" name="mileage" max=222
  133 + data-fv-lessthan-inclusive="false"
  134 + required>
  135 + </div>
  136 + </div>
  137 + <div class="uk-form-row">
  138 + <label class="uk-form-label">开始时间</label>
  139 + <div class="uk-form-controls">
  140 + <input type="time" name="startDate" required>
  141 + </div>
  142 + </div>
  143 + <div class="uk-form-row">
  144 + <label class="uk-form-label">结束时间</label>
  145 + <div class="uk-form-controls">
  146 + <input type="time" name="endDate" required>
  147 + </div>
  148 + </div>
  149 + </div>
  150 + </form>
  151 + </div>
  152 + </div>
  153 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  154 + <span class="bind_gas_station_panel" style="position: absolute;left: 30px;text-decoration: underline;"></span>
  155 + <button type="button" class="uk-button uk-modal-close">取消</button>
  156 + <button type="submit" id="submitChildTaskBtn" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  157 + </div>
  158 + </div>
  159 +
  160 + <script id="schedule-addsch_oil-form-temp" type="text/html">
  161 +
  162 + </script>
  163 +
  164 + <script>
  165 + (function () {
  166 + var modal = '#schedule-addsch_oil-modal',
  167 + sch, stationRoutes, parks, oilStation;
  168 + var yyForm = $('form', modal)[0];
  169 + var jcForm = $('form', modal)[1];
  170 + var ccForm = $('form', modal)[2];
  171 + var oilId;
  172 + var lineInfo;
  173 +
  174 + var folder = '/real_control_v2/fragments/line_schedule/context_menu';
  175 + $(modal).on('init', function (e, data) {
  176 + e.stopPropagation();
  177 + sch = data.sch;
  178 + oilId = sch.xlBm + '_oil_station';
  179 + lineInfo = gb_data_basic.codeToLine[sch.xlBm];
  180 +
  181 + //站点路由
  182 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  183 + return a.stationRouteCode - b.stationRouteCode;
  184 + }), 'directions');
  185 +
  186 + setDefaultVal();
  187 + //停车场
  188 + $.get('/basic/parks', function (rs) {
  189 + parks = rs;
  190 + var opts = '';
  191 + for (var code in parks) {
  192 + opts += '<option value="' + code + '">' + parks[code] + '</option>';
  193 + }
  194 + $('[name=endStation]', jcForm).html(opts);
  195 + $('[name=startStation]', ccForm).html(opts);
  196 + });
  197 +
  198 + //切换空驶起终点
  199 + $('[name=endStation]', jcForm).on('change', reCalcIn);
  200 + $('[name=startStation]', jcForm).on('change', reCalcIn);
  201 +
  202 + $('[name=endStation]', ccForm).on('change', reCalcOut);
  203 + $('[name=startStation]', ccForm).on('change', reCalcOut);
  204 + //修改开始时间
  205 + $('[name=startDate]', jcForm).on('change', reCalcIn);
  206 + $('[name=startDate]', ccForm).on('change', reCalcOut);
  207 +
  208 + //绑定的社会加油站
  209 + $.get('/oilStation/'+sch.xlBm, function (rs) {
  210 + var htmlStr;
  211 + oilStation = rs;
  212 + if(oilStation){
  213 + htmlStr = '<a><i class="uk-icon-product-hunt"></i> '+oilStation.stationName+'</a>';
  214 +
  215 + var opt = '<option value="'+oilId+'" class="oil_station_opt">'+oilStation.stationName+'</option>';
  216 + $('[name=endStation]', jcForm).prepend(opt).val(oilId).change();
  217 + $('[name=startStation]', ccForm).prepend(opt).val(oilId).change();
  218 + }
  219 + else
  220 + htmlStr = '<a>为'+sch.xlName+'绑定一个社会加油站</a>';
  221 +
  222 + $('.bind_gas_station_panel', modal).html(htmlStr);
  223 + $('.bind_gas_station_panel a', modal).on('click', function () {
  224 + open_modal(folder + '/sub_task//oil_station.html', {
  225 + sch: sch
  226 + }, {center: false, bgclose: false, modal: false});
  227 + });
  228 + });
  229 + });
  230 +
  231 + var dataArray = [];
  232 + var fs = $('form', modal).formValidation({
  233 + framework: 'uikit',
  234 + locale: 'zh_CN'
  235 + });
  236 + fs.on('success.form.fv', function(e) {
  237 + e.preventDefault();
  238 + if($(this).is(':hidden'))
  239 + return;
  240 + dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this)
  241 + , {remarks: '加油', 'schedule.id': sch.id}));
  242 + $(this).data('valid', true);
  243 +
  244 + if(allValidSuccess()){
  245 + var i = 0;
  246 + (function () {
  247 + var f = arguments.callee;
  248 + if(i >= dataArray.length){
  249 + UIkit.modal(modal).hide();
  250 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
  251 + return;
  252 + }
  253 + var data = dataArray[i];
  254 + //里程为0的不保存
  255 + if(data.mileage==0){
  256 + i++;
  257 + f();
  258 + }
  259 + else{
  260 + gb_common.$post('/childTask', data, function (rs) {
  261 + notify_succ('子任务添加成功');
  262 + gb_schedule_table.updateSchedule(rs.t);
  263 + i++;
  264 + f();
  265 + });
  266 + }
  267 + })();
  268 + }
  269 + });
  270 +
  271 + //校验不过
  272 + fs.on('err.field.fv', function () {
  273 + $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
  274 + });
  275 +
  276 + //submit
  277 + $('#submitChildTaskBtn', modal).on('click', function () {
  278 + //空驶的进场终点名称
  279 + if(!oilStation || $('[name=endStation]', jcForm).val() != oilId)
  280 + $('[name=endStationName]', jcForm).val('');
  281 + else
  282 + $('[name=endStationName]', jcForm).val(oilStation.stationName);
  283 +
  284 + //空驶的出场起点名称
  285 + if(!oilStation || $('[name=startStation]', ccForm).val() != oilId)
  286 + $('[name=startStationName]', ccForm).val('');
  287 + else
  288 + $('[name=startStationName]', ccForm).val(oilStation.stationName);
  289 +
  290 +
  291 + //提交表单
  292 + $(this).addClass('disabled').attr('disabled','disabled');
  293 + dataArray = [];
  294 + fs.data('valid', false);
  295 + fs.formValidation('validate');
  296 + //fs.submit();
  297 + });
  298 +
  299 + //获取表单disabled 项的值
  300 + function getDisabledVal(f) {
  301 + var rs = {};
  302 + $('input,select', f).each(function () {
  303 + if($(this).attr('disabled')){
  304 + rs[$(this).attr('name')]=$(this).val();
  305 + }
  306 + });
  307 + return rs;
  308 + }
  309 +
  310 + function allValidSuccess() {
  311 + var flag = true;
  312 + $('form:visible', modal).each(function (i, f) {
  313 + if(!$(f).data('valid')){
  314 + flag = false;
  315 + return false;
  316 + }
  317 + });
  318 + return flag;
  319 + }
  320 +
  321 + function setDefaultVal() {
  322 + //营运班次
  323 + $('[name=startStation]', yyForm).val(sch.qdzCode);
  324 + $('[name=startStationName]', yyForm).val(sch.qdzName);
  325 + $('[name=endStation]', yyForm).val(sch.zdzCode);
  326 + $('[name=endStationName]', yyForm).val(sch.zdzName);
  327 + $('[name=mileage]', yyForm).val(sch.jhlc);
  328 + $('[name=startDate]', yyForm).val(sch.fcsjActual==null?sch.dfsj:sch.fcsjActual);
  329 + $('[name=endDate]', yyForm).val(sch.zdsjActual==null?sch.zdsj:sch.zdsjActual);
  330 +
  331 + //设置进场默认值
  332 + $('[name=startStation]', jcForm).html(createStationOpts(stationRoutes[sch.xlDir]));
  333 + $('[name=startDate]', jcForm).val(sch.zdsjActual==null?sch.zdsj:sch.zdsjActual);
  334 + $('[name=startStation]', jcForm).val(sch.zdzCode);
  335 +
  336 + //设置出场默认值
  337 + $('[name=endStation]', ccForm).html(createStationOpts(stationRoutes[sch.xlDir]));
  338 + $('[name=endStation]', ccForm).val(sch.zdzCode);
  339 + }
  340 +
  341 + function createStationOpts(list) {
  342 + var opts = '';
  343 + $.each(list, function () {
  344 + opts += '<option value="'+this.station.stationCod+'">'+this.stationName+'</option>';
  345 + });
  346 + return opts;
  347 + }
  348 +
  349 + function reCalcIn() {
  350 + if(!oilStation || $('[name=endStation]', jcForm).val() != oilId)
  351 + return;
  352 +
  353 + var data;
  354 + var qdz = $('[name=startStation]', jcForm).find("option:selected").text();
  355 + if(qdz == lineInfo.startStationName){
  356 + //起点进场
  357 + data = {
  358 + mileage: oilStation.upInMile,
  359 + time: oilStation.upInTime
  360 + }
  361 + }
  362 + else if(qdz == lineInfo.endStationName){
  363 + //终点进场
  364 + data = {
  365 + mileage: oilStation.downInMile,
  366 + time: oilStation.downInTime
  367 + }
  368 + }
  369 + if(!data)
  370 + return;
  371 +
  372 + $('[name=mileage]', jcForm).val(data.mileage);
  373 + var st = $('[name=startDate]', jcForm).val();
  374 + if(!st)
  375 + return;
  376 + var ets = moment(st, 'HH:mm').add(data.time, 'minute').format('HH:mm');
  377 + $('[name=endDate]', jcForm).val(ets);
  378 +
  379 + //出场时间 + 1 分钟
  380 + $('[name=startDate]', ccForm).val(moment(ets, 'HH:mm').add(1, 'minute').format('HH:mm'));
  381 + }
  382 +
  383 + function reCalcOut() {
  384 + if(!oilStation || $('[name=startStation]', ccForm).val() != oilId)
  385 + return;
  386 +
  387 + var data;
  388 + var zdz = $('[name=endStation]', ccForm).find("option:selected").text();
  389 + if(zdz == lineInfo.startStationName){
  390 + //出场到起点
  391 + data = {
  392 + mileage: oilStation.upOutMile,
  393 + time: oilStation.upOutTime
  394 + }
  395 + }
  396 + else if(zdz == lineInfo.endStationName){
  397 + //出场到终点
  398 + data = {
  399 + mileage: oilStation.downOutMile,
  400 + time: oilStation.downOutTime
  401 + }
  402 + }
  403 + if(!data)
  404 + return;
  405 +
  406 + $('[name=mileage]', ccForm).val(data.mileage);
  407 + var st = $('[name=startDate]', ccForm).val();
  408 + if(!st)
  409 + return;
  410 + var ets = moment(st, 'HH:mm').add(data.time, 'minute').format('HH:mm');
  411 + $('[name=endDate]', ccForm).val(ets);
  412 + }
  413 + })();
  414 + </script>
  415 +</div>
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_outpark.html
... ... @@ -52,7 +52,7 @@
52 52 </div>
53 53 </div>
54 54 <div class="uk-width-7-10 pl5">
55   - <input type="text" name="mileage" required style="width: calc(100% - 62px);">
  55 + <input type="number" step="0.01" name="mileage" required style="width: calc(100% - 62px);">
56 56 <a style="font-size: 12px;color: grey;cursor: default;" target="_blank"
57 57 class="linkToLineInfo">线路标准</a>
58 58 </div>
... ... @@ -128,7 +128,7 @@
128 128 </div>
129 129 </div>
130 130 <div class="uk-width-7-10 pl5">
131   - <input type="text" name="mileage" disabled>
  131 + <input type="number" step="0.01" name="mileage" disabled>
132 132 </div>
133 133 </div>
134 134 <div class="uk-grid">
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_range_turn.html
... ... @@ -168,7 +168,7 @@
168 168 </div>
169 169 </div>
170 170 <div class="uk-width-7-10 pl5">
171   - <input type="text" name="mileage" value="{{sch.jhlc}}" required>
  171 + <input type="number" step="0.01" name="mileage" value="{{sch.jhlc}}" required>
172 172 </div>
173 173 </div>
174 174 <div class="uk-grid">
... ... @@ -237,7 +237,7 @@
237 237 </div>
238 238 </div>
239 239 <div class="uk-width-7-10 pl5">
240   - <input type="text" name="mileage" required>
  240 + <input type="number" step="0.01" name="mileage" required>
241 241 </div>
242 242 </div>
243 243 <div class="uk-grid">
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/oil_station.html 0 → 100644
  1 +<div class="uk-modal ct-form-modal" id="oil_station-modal">
  2 + <div class="uk-modal-dialog" style="width: 450px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>社会加油站</h2></div>
  6 +
  7 + <form class="uk-form uk-form-horizontal " style="margin-bottom: 0 !important;">
  8 + <div class="uk-form-row">
  9 + <label class="uk-form-label">线路</label>
  10 + <div class="uk-form-icon">
  11 + <input type="hidden" name="lineCode">
  12 + <input type="text" name="qdzName" disabled>
  13 + </div>
  14 + </div>
  15 + <div class="uk-form-row">
  16 + <label class="uk-form-label">加油站名称</label>
  17 + <div class="uk-form-icon">
  18 + <input type="text" name="stationName" value="社会加油站" required>
  19 + </div>
  20 + </div>
  21 + <div class="uk-form-row">
  22 + <label class="uk-form-label">起点进场里程</label>
  23 + <div class="uk-form-icon">
  24 + <i class="uk-icon-mile"></i>
  25 + <input type="number" name="upInMile" step="0.01" required>
  26 + </div>
  27 + </div>
  28 + <div class="uk-form-row">
  29 + <label class="uk-form-label">终点进场里程</label>
  30 + <div class="uk-form-icon">
  31 + <i class="uk-icon-mile"></i>
  32 + <input type="number" name="downInMile" step="0.01" required>
  33 + </div>
  34 + </div>
  35 + <div class="uk-form-row">
  36 + <label class="uk-form-label">起点进场时间</label>
  37 + <div class="uk-form-icon">
  38 + <i class="uk-icon-minute"></i>
  39 + <input type="text" name="upInTime" required>
  40 + </div>
  41 + </div>
  42 + <div class="uk-form-row">
  43 + <label class="uk-form-label">终点进场时间</label>
  44 + <div class="uk-form-icon">
  45 + <i class="uk-icon-minute"></i>
  46 + <input type="text" name="downInTime" required>
  47 + </div>
  48 + </div>
  49 +
  50 + <hr>
  51 + <div class="uk-form-row">
  52 + <label class="uk-form-label">出场到起点里程</label>
  53 + <div class="uk-form-icon">
  54 + <i class="uk-icon-mile"></i>
  55 + <input type="number" name="upOutMile" step="0.01" required>
  56 + </div>
  57 + </div>
  58 + <div class="uk-form-row">
  59 + <label class="uk-form-label">出场到终点里程</label>
  60 + <div class="uk-form-icon">
  61 + <i class="uk-icon-mile"></i>
  62 + <input type="number" name="downOutMile" step="0.01" required>
  63 + </div>
  64 + </div>
  65 + <div class="uk-form-row">
  66 + <label class="uk-form-label">出场到起点时间</label>
  67 + <div class="uk-form-icon">
  68 + <i class="uk-icon-minute"></i>
  69 + <input type="text" name="upOutTime" required>
  70 + </div>
  71 + </div>
  72 + <div class="uk-form-row">
  73 + <label class="uk-form-label">出场到终点时间</label>
  74 + <div class="uk-form-icon">
  75 + <i class="uk-icon-minute"></i>
  76 + <input type="text" name="downOutTime" required>
  77 + </div>
  78 + </div>
  79 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  80 + <button type="button" class="uk-button uk-modal-close">取消</button>
  81 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  82 + </div>
  83 + </form>
  84 + </div>
  85 +
  86 + <script id="" type="text/html">
  87 +
  88 + </script>
  89 +
  90 + <script>
  91 + (function () {
  92 + var modal = '#oil_station-modal',
  93 + sch, oilStation;
  94 +
  95 + var cognates = {
  96 + 'upInMile': 'upOutMile',
  97 + 'downInMile': 'downOutMile',
  98 + 'upInTime': 'upOutTime',
  99 + 'downInTime': 'downOutTime'
  100 + };
  101 + $(modal).on('init', function (e, data) {
  102 + e.stopPropagation();
  103 + sch = data.sch;
  104 +
  105 + $.get('/oilStation/'+sch.xlBm, function (rs) {
  106 + oilStation = rs;
  107 + setDefaultVal(oilStation);
  108 + });
  109 +
  110 + $('form [name=qdzName]', modal).val(sch.xlName);
  111 + $('form [name=lineCode]', modal).val(sch.xlBm);
  112 +
  113 + //submit
  114 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  115 + f.on('success.form.fv', function(e) {
  116 + e.preventDefault();
  117 + var data = $(this).serializeJSON();
  118 +
  119 + gb_common.$post('/oilStation', data, function (rs) {
  120 + notify_succ('添加成功!');
  121 + UIkit.modal(modal).hide();
  122 + $('#schedule-addsch_oil-modal').trigger('init', {sch: sch});
  123 + });
  124 + });
  125 +
  126 + $('form input', modal).on('input', function () {
  127 + var name = $(this).attr('name');
  128 + if(cognates[name]){
  129 + $('form [name='+cognates[name]+']', modal).val($(this).val());
  130 + }
  131 + });
  132 + });
  133 +
  134 + function setDefaultVal(obj) {
  135 + if(!obj)
  136 + return;
  137 + $('form input', modal).each(function () {
  138 + var name = $(this).attr('name');
  139 + if(obj[name])
  140 + $(this).val(obj[name]);
  141 + });
  142 + }
  143 + })();
  144 + </script>
  145 +</div>
... ...
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
... ... @@ -144,6 +144,41 @@ var gb_schedule_context_menu = (function () {
144 144 notify_succ('撤销执行成功!');
145 145 });
146 146 }, '确认撤销执行');
  147 + },
  148 +
  149 + add_sub_task_in: function (sch) {
  150 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  151 + notify_err('暂不能在进出场班次上做回场子任务!');
  152 + return;
  153 + }
  154 + open_modal(folder + '/sub_task/add_sub_task_inpark.html', {
  155 + sch: sch
  156 + }, modal_opts);
  157 + },
  158 + add_sub_task_out: function (sch) {
  159 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  160 + notify_err('暂不能在进出场班次上做出场子任务!');
  161 + return;
  162 + }
  163 + open_modal(folder + '/sub_task/add_sub_task_outpark.html', {
  164 + sch: sch
  165 + }, modal_opts);
  166 + },
  167 + add_sub_task_range_turn: function (sch) {
  168 + if(sch.bcType == 'out' || sch.bcType == 'in')
  169 + return notify_err('进出场班次不能做区间掉头!');
  170 + open_modal(folder + '/sub_task/add_sub_task_range_turn.html', {
  171 + sch: sch
  172 + }, modal_opts);
  173 + },
  174 + add_oil: function (sch) {
  175 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  176 + notify_err('暂不能在进出场班次上做加油子任务!');
  177 + return;
  178 + }
  179 + open_modal(folder + '/sub_task/add_sub_task_oil.html', {
  180 + sch: sch
  181 + }, modal_opts);
147 182 }
148 183 };
149 184  
... ... @@ -185,6 +220,23 @@ var gb_schedule_context_menu = (function () {
185 220 'lj_zrw': {
186 221 name: '临加/子任务'
187 222 },
  223 + 'shortcut': {
  224 + name: '...',
  225 + items: {
  226 + 'add_oil': {
  227 + name: '(子任务)加油'
  228 + },
  229 + 'add_sub_task_in': {
  230 + name: '(子任务)回场'
  231 + },
  232 + 'add_sub_task_out': {
  233 + name: '(子任务)出场'
  234 + },
  235 + 'add_sub_task_range_turn': {
  236 + name: '(子任务)区间调头'
  237 + }
  238 + }
  239 + },
188 240 'sep4': '---------',
189 241 'tzrc': {
190 242 name: '调整人车'
... ...