Commit 4e501eed9c27bac0db51437526bb75796abbcee2

Authored by 徐烜
2 parents 6a5549cf 3fa0edcc

Update

Showing 51 changed files with 2972 additions and 978 deletions
src/main/java/com/bsth/common/Constants.java
@@ -21,6 +21,9 @@ public class Constants { @@ -21,6 +21,9 @@ public class Constants {
21 public static final String LOGIN_FAILURE = "/user/loginFailure"; 21 public static final String LOGIN_FAILURE = "/user/loginFailure";
22 public static final String CAPTCHA = "/captcha.jpg"; 22 public static final String CAPTCHA = "/captcha.jpg";
23 23
  24 + //对外的营运数据接口
  25 + public static final String SERVICE_INTERFACE = "/companyService/**";
  26 +
24 /** 27 /**
25 * 线调部分子页面不做拦截,便于浏览器缓存 28 * 线调部分子页面不做拦截,便于浏览器缓存
26 */ 29 */
src/main/java/com/bsth/controller/oil/YlbController.java
@@ -119,8 +119,15 @@ public class YlbController extends BaseController<Ylb, Integer>{ @@ -119,8 +119,15 @@ public class YlbController extends BaseController<Ylb, Integer>{
119 119
120 Direction d; 120 Direction d;
121 map.put("xlbm_like", map.get("xlbm_like").toString().trim()); 121 map.put("xlbm_like", map.get("xlbm_like").toString().trim());
122 -// try {  
123 String rq=map.get("rq").toString(); 122 String rq=map.get("rq").toString();
  123 + int lx=Integer.parseInt(map.get("sxtj").toString().trim());
  124 + if(lx>0){
  125 + map.put("nbbm_in", yblService.checkNbmmNum(rq, map.get("ssgsdm_like").toString(),
  126 + map.get("fgsdm_like").toString(), map.get("xlbm_like").toString(),
  127 + map.get("nbbm_eq").toString(),lx));
  128 + }
  129 +// try {
  130 +
124 if(!(rq=="")){ 131 if(!(rq=="")){
125 // 132 //
126 // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 133 // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
@@ -155,6 +162,11 @@ public class YlbController extends BaseController<Ylb, Integer>{ @@ -155,6 +162,11 @@ public class YlbController extends BaseController<Ylb, Integer>{
155 return yblService.oilListMonth(line, date); 162 return yblService.oilListMonth(line, date);
156 } 163 }
157 164
  165 + @RequestMapping(value = "/sumYlb",method = RequestMethod.GET)
  166 + public Map<String, Object> sumYlb(@RequestParam Map<String, Object> map){
  167 + Map<String, Object> list=yblService.sumYlb(map);
  168 + return list;
  169 + }
158 170
159 @RequestMapping(value = "/listExport",method = RequestMethod.POST) 171 @RequestMapping(value = "/listExport",method = RequestMethod.POST)
160 public List<Map<String, Object>> listExport(@RequestParam Map<String, Object> map){ 172 public List<Map<String, Object>> listExport(@RequestParam Map<String, Object> map){
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,13 +279,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
279 return scheduleRealInfoService.queryUserInfoPx(line, date,state,type); 279 return scheduleRealInfoService.queryUserInfoPx(line, date,state,type);
280 } 280 }
281 281
282 - @RequestMapping(value = "/exportWaybill") 282 + @RequestMapping(value = "/exportWaybill",method = RequestMethod.GET)
283 public List<ScheduleRealInfo> exportWaybill(@RequestParam String jName, @RequestParam String clZbh, 283 public List<ScheduleRealInfo> exportWaybill(@RequestParam String jName, @RequestParam String clZbh,
284 @RequestParam String lpName,@RequestParam String date,@RequestParam String line) { 284 @RequestParam String lpName,@RequestParam String date,@RequestParam String line) {
285 return scheduleRealInfoService.exportWaybill(jName, clZbh, lpName,date,line); 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 public List<ScheduleRealInfo> exportWaybillQp(@RequestParam String clZbh 289 public List<ScheduleRealInfo> exportWaybillQp(@RequestParam String clZbh
290 ,@RequestParam String date,@RequestParam String line) { 290 ,@RequestParam String date,@RequestParam String line) {
291 return scheduleRealInfoService.exportWaybillQp( clZbh, date,line); 291 return scheduleRealInfoService.exportWaybillQp( clZbh, date,line);
@@ -308,13 +308,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -308,13 +308,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
308 return scheduleRealInfoService.findLine(line); 308 return scheduleRealInfoService.findLine(line);
309 } 309 }
310 310
311 - @RequestMapping(value="/findKMBC") 311 + @RequestMapping(value="/findKMBC",method = RequestMethod.GET)
312 public Map<String,Object> findKMBC(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName 312 public Map<String,Object> findKMBC(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName
313 ,@RequestParam String date,@RequestParam String line){ 313 ,@RequestParam String date,@RequestParam String line){
314 return scheduleRealInfoService.findKMBC(jName, clZbh,lpName,date,line); 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 public Map<String,Object> findKMBCQp(@RequestParam String clZbh 318 public Map<String,Object> findKMBCQp(@RequestParam String clZbh
319 ,@RequestParam String date,@RequestParam String line){ 319 ,@RequestParam String date,@RequestParam String line){
320 return scheduleRealInfoService.findKMBCQp(clZbh,date,line); 320 return scheduleRealInfoService.findKMBCQp(clZbh,date,line);
@@ -344,13 +344,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -344,13 +344,13 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
344 * @param lpName 路牌 344 * @param lpName 路牌
345 * @return 345 * @return
346 */ 346 */
347 - @RequestMapping(value="/queryListWaybill") 347 + @RequestMapping(value="/queryListWaybill",method = RequestMethod.GET)
348 public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName 348 public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName
349 ,@RequestParam String date,@RequestParam String line){ 349 ,@RequestParam String date,@RequestParam String line){
350 return scheduleRealInfoService.queryListWaybill(jName, clZbh,lpName,date,line); 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 public List<ScheduleRealInfo> queryListWaybillQp(@RequestParam String clZbh, 354 public List<ScheduleRealInfo> queryListWaybillQp(@RequestParam String clZbh,
355 @RequestParam String date,@RequestParam String line){ 355 @RequestParam String date,@RequestParam String line){
356 return scheduleRealInfoService.queryListWaybillQp(clZbh,date,line); 356 return scheduleRealInfoService.queryListWaybillQp(clZbh,date,line);
@@ -362,6 +362,12 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -362,6 +362,12 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
362 return scheduleRealInfoService.statisticsDaily(line, date, xlName, type); 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 @RequestMapping(value="/MapById",method = RequestMethod.GET) 371 @RequestMapping(value="/MapById",method = RequestMethod.GET)
366 public Map<String, Object> MapById(@RequestParam("id") Long id){ 372 public Map<String, Object> MapById(@RequestParam("id") Long id){
367 return scheduleRealInfoService.MapById(id); 373 return scheduleRealInfoService.MapById(id);
@@ -457,7 +463,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -457,7 +463,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
457 return scheduleRealInfoService.scheduleDailyExport(map); 463 return scheduleRealInfoService.scheduleDailyExport(map);
458 } 464 }
459 465
460 - @RequestMapping(value = "exportWaybillMore", method = RequestMethod.POST) 466 + @RequestMapping(value = "exportWaybillMore", method = RequestMethod.GET)
461 public Map<String, Object> exportWaybillMore(@RequestParam Map<String, Object> map){ 467 public Map<String, Object> exportWaybillMore(@RequestParam Map<String, Object> map){
462 return scheduleRealInfoService.exportWaybillMore(map); 468 return scheduleRealInfoService.exportWaybillMore(map);
463 } 469 }
src/main/java/com/bsth/controller/realcontrol/ServiceDataInterface.java 0 → 100644
  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,7 +22,7 @@ public class LpData {
22 this.zdzName = sch.getZdzName(); 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 if (type == 0) { 27 if (type == 0) {
28 //只换人 28 //只换人
@@ -33,11 +33,11 @@ public class LpData { @@ -33,11 +33,11 @@ public class LpData {
33 } else if (type == 1) { 33 } else if (type == 1) {
34 //只换车 34 //只换车
35 sch.setClZbh(this.nbbm); 35 sch.setClZbh(this.nbbm);
36 -  
37 - //换实际时间 36 + changeRealTime(sch);
  37 + /*//换实际时间
38 if(changeRealTime){ 38 if(changeRealTime){
39 changeRealTime(sch); 39 changeRealTime(sch);
40 - } 40 + }*/
41 41
42 } else if (type == 2) { 42 } else if (type == 2) {
43 //换人并换车 43 //换人并换车
@@ -48,9 +48,9 @@ public class LpData { @@ -48,9 +48,9 @@ public class LpData {
48 sch.setClZbh(this.nbbm); 48 sch.setClZbh(this.nbbm);
49 49
50 //换实际时间 50 //换实际时间
51 - if(changeRealTime){ 51 + //if(changeRealTime){
52 changeRealTime(sch); 52 changeRealTime(sch);
53 - } 53 + //}
54 } 54 }
55 } 55 }
56 56
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -378,9 +378,11 @@ public class DayOfSchedule implements CommandLineRunner { @@ -378,9 +378,11 @@ public class DayOfSchedule implements CommandLineRunner {
378 sch.setZdsj(fmtHHmm.print(fmtHHmm.parseMillis(sch.getFcsj()) + (sch.getBcsj() * 60 * 1000))); 378 sch.setZdsj(fmtHHmm.print(fmtHHmm.parseMillis(sch.getFcsj()) + (sch.getBcsj() * 60 * 1000)));
379 sch.setLate(false); 379 sch.setLate(false);
380 } 380 }
  381 +
  382 + sch.setJhlcOrig(sch.getJhlc());
381 //计划里程为0,设置NULL 383 //计划里程为0,设置NULL
382 - if (sch.getJhlc() != null && sch.getJhlc() == 0)  
383 - sch.setJhlc(null); 384 + //if (sch.getJhlc() != null && sch.getJhlc() == 0)
  385 + // sch.setJhlc(null);
384 } 386 }
385 } catch (Exception e) { 387 } catch (Exception e) {
386 logger.error("", e); 388 logger.error("", e);
src/main/java/com/bsth/entity/oil/Ylb.java
@@ -30,7 +30,7 @@ public class Ylb { @@ -30,7 +30,7 @@ public class Ylb {
30 private Double jzlc=0.0; 30 private Double jzlc=0.0;
31 private Double czyl=0.0; 31 private Double czyl=0.0;
32 private Double jzyl=0.0; 32 private Double jzyl=0.0;
33 - private Double jzl; 33 + private Double jzl=0.0;
34 private int sfkt; 34 private int sfkt;
35 private String jhsj; 35 private String jhsj;
36 private Double yh=0.0; 36 private Double yh=0.0;
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
@@ -88,7 +88,10 @@ public class ScheduleRealInfo { @@ -88,7 +88,10 @@ public class ScheduleRealInfo {
88 /** 计划里程 */ 88 /** 计划里程 */
89 private Double jhlc; 89 private Double jhlc;
90 90
91 - /** 实际里程 */ 91 + /** 原始计划里程 (原计调的数据) */
  92 + private Double jhlcOrig;
  93 +
  94 + /** 实际里程 这个字段被废弃*/
92 private Double realMileage; 95 private Double realMileage;
93 96
94 /** 实际里程 */ 97 /** 实际里程 */
@@ -623,6 +626,11 @@ public class ScheduleRealInfo { @@ -623,6 +626,11 @@ public class ScheduleRealInfo {
623 } 626 }
624 } 627 }
625 628
  629 + @Override
  630 + public int hashCode() {
  631 + return ("schedule_" + this.id).hashCode();
  632 + }
  633 +
626 public String getQdzArrDateJH() { 634 public String getQdzArrDateJH() {
627 return qdzArrDatejh; 635 return qdzArrDatejh;
628 } 636 }
@@ -757,6 +765,7 @@ public class ScheduleRealInfo { @@ -757,6 +765,7 @@ public class ScheduleRealInfo {
757 } 765 }
758 766
759 public void destroy(){ 767 public void destroy(){
  768 + this.jhlc = 0.0;
760 this.status = -1; 769 this.status = -1;
761 } 770 }
762 771
@@ -845,4 +854,22 @@ public class ScheduleRealInfo { @@ -845,4 +854,22 @@ public class ScheduleRealInfo {
845 public void setRealMileage(Double realMileage) { 854 public void setRealMileage(Double realMileage) {
846 this.realMileage = realMileage; 855 this.realMileage = realMileage;
847 } 856 }
  857 +
  858 + public Double getJhlcOrig() {
  859 + return jhlcOrig;
  860 + }
  861 +
  862 + public void setJhlcOrig(Double jhlcOrig) {
  863 + this.jhlcOrig = jhlcOrig;
  864 + }
  865 +
  866 + public void reCalcLate() {
  867 + if(this.getStatus() == 0
  868 + && this.getFcsjActual() == null
  869 + && this.dfsjT < System.currentTimeMillis()){
  870 + this.setLate(true);
  871 + }
  872 + else
  873 + this.setLate(false);
  874 + }
848 } 875 }
src/main/java/com/bsth/entity/search/PredicatesBuilder.java
@@ -69,6 +69,11 @@ public class PredicatesBuilder { @@ -69,6 +69,11 @@ public class PredicatesBuilder {
69 return cb.in(expression).value(list); 69 return cb.in(expression).value(list);
70 } 70 }
71 71
  72 +
  73 + public static Predicate ins(CriteriaBuilder cb,Path<?> expression, List<String> list){
  74 + return cb.in(expression).value(list);
  75 + }
  76 +
72 public static Predicate gt(CriteriaBuilder cb,Path<Number> expression, Object object){ 77 public static Predicate gt(CriteriaBuilder cb,Path<Number> expression, Object object){
73 try { 78 try {
74 return cb.gt(expression, nf.parse(object.toString())); 79 return cb.gt(expression, nf.parse(object.toString()));
src/main/java/com/bsth/entity/search/SearchOperator.java
@@ -27,5 +27,6 @@ public enum SearchOperator { @@ -27,5 +27,6 @@ public enum SearchOperator {
27 isf, //假 isFalse,boolean 27 isf, //假 isFalse,boolean
28 ist, //真 isTrue,boolean 28 ist, //真 isTrue,boolean
29 date, //时间 29 date, //时间
30 - in //数组 30 + in, //数组
  31 + ins //传参 List<String>
31 } 32 }
src/main/java/com/bsth/filter/BaseFilter.java
@@ -16,7 +16,7 @@ public abstract class BaseFilter implements Filter { @@ -16,7 +16,7 @@ public abstract class BaseFilter implements Filter {
16 /** 16 /**
17 * 白名单 17 * 白名单
18 */ 18 */
19 - private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, 19 + private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE,
20 Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS }; 20 Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS };
21 21
22 @Override 22 @Override
src/main/java/com/bsth/repository/oil/YlbRepository.java
@@ -23,8 +23,9 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{ @@ -23,8 +23,9 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
23 @Modifying 23 @Modifying
24 @Query(value="SELECT a.* FROM bsth_c_ylb a where to_days(?1)-to_days(a.rq)=1" 24 @Query(value="SELECT a.* FROM bsth_c_ylb a where to_days(?1)-to_days(a.rq)=1"
25 + " and jcsx=(select max(b.jcsx) from bsth_c_ylb b where a.nbbm=b.nbbm and " 25 + " and jcsx=(select max(b.jcsx) from bsth_c_ylb b where a.nbbm=b.nbbm and "
26 - + " to_days(?1)-to_days(b.rq)=1 )",nativeQuery=true)  
27 - List<Ylb> obtainYlbefore(String rq); 26 + + " to_days(?1)-to_days(b.rq)=1 ) and ssgsdm like %?2% and fgsdm like %?3% and "
  27 + + " xlbm like %?4% and nbbm like %?5% ",nativeQuery=true)
  28 + List<Ylb> obtainYlbefore(String rq,String gsbm,String fgsbm,String xlbm,String nbbm);
28 29
29 /** 30 /**
30 * 当天YLB信息 31 * 当天YLB信息
@@ -50,6 +51,41 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{ @@ -50,6 +51,41 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
50 */ 51 */
51 @Transactional 52 @Transactional
52 @Modifying 53 @Modifying
53 - @Query(value="select sum(jzl) as jzl,sum(zlc) as zlc ,sum(sh) as sh from bsth_c_ylb where nbbm=?1 and rq=?2",nativeQuery=true)  
54 - List<Object[]> sumLcYl(String nbbm,Date rq); 54 + @Query(value="select ifnull(jzl,0),ifnull(zlc,0),ifnull(sh,0) from bsth_c_ylb where nbbm=?1 and rq=?2 and xlbm like %?3%",nativeQuery=true)
  55 + List<Object[]> sumLcYl(String nbbm,Date rq,String xlbm);
  56 +
  57 + /**
  58 + *
  59 + * @param nbbm
  60 + * @param rq
  61 + * @param xlbm
  62 + * @return
  63 + */
  64 + @Transactional
  65 + @Modifying
  66 + @Query(value="select nbbm,count(nbbm) from bsth_c_ylb where to_days(?1)=to_days(rq) and "
  67 + + " ssgsdm like %?2% "
  68 + + " and fgsdm like %?3%"
  69 + + " and xlbm like %?4% and nbbm like %?5% "
  70 + + " group by nbbm,rq,ssgsdm,fgsdm,xlbm",nativeQuery=true)
  71 + List<Object[]> checkNbmmNum(String rq, String gsbm,String fgsbm,String xlbm,String nbbm);
  72 +
  73 +
  74 + @Query(value="select jzl,yh,sh from Ylb s "
  75 + + " where to_days(?1)=to_days(s.rq) "
  76 + + " and s.ssgsdm like %?2% "
  77 + + " and s.fgsdm like %?3%"
  78 + + " and s.xlbm like %?4% "
  79 + + " and s.nbbm in ?5 ")
  80 + List<Object[]> sumYlb(String rq, String gsbm,String fgsbm,String xlbm,List<String> listNbbm);
  81 +
  82 + @Transactional
  83 + @Modifying
  84 + @Query(value="select ifnull(jzl,0),ifnull(yh,0),ifnull(sh,0) from bsth_c_ylb "
  85 + + " where to_days(?1)=to_days(rq) "
  86 + + " and ssgsdm like %?2% "
  87 + + " and fgsdm like %?3%"
  88 + + " and xlbm like %?4% "
  89 + + " and nbbm like %?5%",nativeQuery=true)
  90 + List<Object[]> sumYlb2(String rq, String gsbm,String fgsbm,String xlbm,String nbbm);
55 } 91 }
src/main/java/com/bsth/repository/oil/YlxxbRepository.java
@@ -19,8 +19,8 @@ public interface YlxxbRepository extends BaseRepository&lt;Ylxxb, Integer&gt;{ @@ -19,8 +19,8 @@ public interface YlxxbRepository extends BaseRepository&lt;Ylxxb, Integer&gt;{
19 */ 19 */
20 @Transactional 20 @Transactional
21 @Modifying 21 @Modifying
22 - @Query(value="SELECT * FROM bsth_c_ylxxb where to_days(?1)=to_days(yyrq) and nylx=?2",nativeQuery=true)  
23 - List<Ylxxb> obtainYlxx(String rq,int nylx); 22 + @Query(value="SELECT * FROM bsth_c_ylxxb where to_days(?1)=to_days(yyrq) and nylx=?2 and gsdm like %?3%",nativeQuery=true)
  23 + List<Ylxxb> obtainYlxx(String rq,int nylx,String gsdm);
24 24
25 @Transactional 25 @Transactional
26 @Modifying 26 @Modifying
src/main/java/com/bsth/repository/realcontrol/ChildTaskPlanRepository.java
1 package com.bsth.repository.realcontrol; 1 package com.bsth.repository.realcontrol;
2 2
3 -import java.util.List;  
4 - 3 +import com.bsth.entity.realcontrol.ChildTaskPlan;
  4 +import com.bsth.repository.BaseRepository;
5 import org.springframework.data.jpa.domain.Specification; 5 import org.springframework.data.jpa.domain.Specification;
6 import org.springframework.data.jpa.repository.EntityGraph; 6 import org.springframework.data.jpa.repository.EntityGraph;
7 import org.springframework.stereotype.Repository; 7 import org.springframework.stereotype.Repository;
8 8
9 -import com.bsth.entity.realcontrol.ChildTaskPlan;  
10 -import com.bsth.repository.BaseRepository; 9 +import java.util.List;
11 10
12 @Repository 11 @Repository
13 public interface ChildTaskPlanRepository extends BaseRepository<ChildTaskPlan, Long>{ 12 public interface ChildTaskPlanRepository extends BaseRepository<ChildTaskPlan, Long>{
@@ -15,4 +14,8 @@ public interface ChildTaskPlanRepository extends BaseRepository&lt;ChildTaskPlan, L @@ -15,4 +14,8 @@ public interface ChildTaskPlanRepository extends BaseRepository&lt;ChildTaskPlan, L
15 @EntityGraph(value = "childTaskPlan_schedule", type = EntityGraph.EntityGraphType.FETCH) 14 @EntityGraph(value = "childTaskPlan_schedule", type = EntityGraph.EntityGraphType.FETCH)
16 @Override 15 @Override
17 List<ChildTaskPlan> findAll(Specification<ChildTaskPlan> spec); 16 List<ChildTaskPlan> findAll(Specification<ChildTaskPlan> spec);
  17 +
  18 + @EntityGraph(value = "childTaskPlan_schedule", type = EntityGraph.EntityGraphType.FETCH)
  19 + @Override
  20 + ChildTaskPlan findOne(Long id);
18 } 21 }
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
@@ -65,11 +65,11 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -65,11 +65,11 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
65 int countByDate(String date); 65 int countByDate(String date);
66 66
67 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 67 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
68 - @Query(value = "select s from ScheduleRealInfo s where s.scheduleDateStr = ?1") 68 + @Query(value = "select DISTINCT s from ScheduleRealInfo s where s.scheduleDateStr = ?1")
69 List<ScheduleRealInfo> findByDate(String dateStr); 69 List<ScheduleRealInfo> findByDate(String dateStr);
70 70
71 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 71 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
72 - @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and cl_zbh=?3 order by bcs") 72 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and cl_zbh=?3 order by bcs")
73 List<ScheduleRealInfo> findByDate2(String line,String date,String clzbh); 73 List<ScheduleRealInfo> findByDate2(String line,String date,String clzbh);
74 74
75 @Query(value="select count(jName) from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.status = -1") 75 @Query(value="select count(jName) from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.status = -1")
@@ -86,26 +86,31 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -86,26 +86,31 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
86 + " and clZbh like %?5% order by s.fcsj") 86 + " and clZbh like %?5% order by s.fcsj")
87 List<ScheduleRealInfo> correctForm(String line,String startDate,String endDate,String lpName,String code); 87 List<ScheduleRealInfo> correctForm(String line,String startDate,String endDate,String lpName,String code);
88 88
89 - @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.scheduleDate = str_to_date(?4,'%Y-%m-%d') and s.xlBm=?5 order by realExecDate,fcsj") 89 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  90 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.scheduleDate = str_to_date(?4,'%Y-%m-%d') and s.xlBm=?5 order by realExecDate,fcsj")
90 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName,String date,String line); 91 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName,String date,String line);
91 92
92 - @Query(value="select s from ScheduleRealInfo s where s.clZbh = ?1 and s.scheduleDate = str_to_date(?2,'%Y-%m-%d') and xlBm =?3 order by realExecDate,fcsj") 93 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  94 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.clZbh = ?1 and s.scheduleDate = str_to_date(?2,'%Y-%m-%d') and xlBm =?3 order by realExecDate,fcsj")
93 List<ScheduleRealInfo> queryListWaybill2(String clZbh,String date,String line); 95 List<ScheduleRealInfo> queryListWaybill2(String clZbh,String date,String line);
94 96
95 - @Query(value="select s from ScheduleRealInfo s where s.jGh = ?1 and s.clZbh = ?2 and s.scheduleDate = str_to_date(?3,'%Y-%m-%d') order by realExecDate,fcsj")  
96 - List<ScheduleRealInfo> queryListWaybill3(String jName,String clZbh,String date); 97 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  98 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jGh like %?1% and s.clZbh like %?2% and s.scheduleDate = str_to_date(?3,'%Y-%m-%d') and s.gsBm like %?4% and s.fgsBm like %?5% order by realExecDate,fcsj")
  99 + List<ScheduleRealInfo> queryListWaybill3(String jName,String clZbh,String date,String gsbm,String fgsbm);
97 100
98 - @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') between str_to_date(?3,'%Y-%m-%d') and str_to_date(?4,'%Y-%m-%d') order by bcs") 101 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  102 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') between str_to_date(?3,'%Y-%m-%d') and str_to_date(?4,'%Y-%m-%d') order by bcs")
99 List<ScheduleRealInfo> queryListWaybill4(String jName,String clZbh,String date,String enddate); 103 List<ScheduleRealInfo> queryListWaybill4(String jName,String clZbh,String date,String enddate);
100 104
101 - @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2") 105 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  106 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2")
102 List<ScheduleRealInfo> scheduleDaily(String line,String date); 107 List<ScheduleRealInfo> scheduleDaily(String line,String date);
103 108
104 @Query(value = "select count(*) from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2") 109 @Query(value = "select count(*) from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2")
105 int countByLineCodeAndDate(String xlBm, String schDate); 110 int countByLineCodeAndDate(String xlBm, String schDate);
106 111
107 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 112 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
108 - @Query(value = "select s from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2") 113 + @Query(value = "select DISTINCT s from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2")
109 List<ScheduleRealInfo> findByLineCodeAndDate(String xlBm, String schDate); 114 List<ScheduleRealInfo> findByLineCodeAndDate(String xlBm, String schDate);
110 115
111 @Modifying 116 @Modifying
@@ -127,8 +132,12 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -127,8 +132,12 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
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") 132 @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 List<ScheduleRealInfo> scheduleByDateAndLine3(String line,String date); 133 List<ScheduleRealInfo> scheduleByDateAndLine3(String line,String date);
129 134
130 - @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 GROUP BY xlBm,clZbh,jGh,scheduleDate,jGh ORDER BY xlBm,clZbh")  
131 - List<Map<String,Object>> yesterdayDataList(String line,String date); 135 + //按照时间段统计
  136 + @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")
  137 + List<ScheduleRealInfo> scheduleByDateAndLineTj(String line,String date,String date2);
  138 +
  139 + @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")
  140 + List<Map<String,Object>> yesterdayDataList(String line,String date,String gsbm,String fgsbm);
132 141
133 @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 ORDER BY xlBm,lpName,clZbh,xlDir") 142 @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 ORDER BY xlBm,lpName,clZbh,xlDir")
134 List<ScheduleRealInfo> setLD(String date); 143 List<ScheduleRealInfo> setLD(String date);
src/main/java/com/bsth/security/WebSecurityConfig.java
@@ -36,7 +36,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @@ -36,7 +36,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
36 public void configure(WebSecurity web) throws Exception { 36 public void configure(WebSecurity web) throws Exception {
37 // 白名单 37 // 白名单
38 web.ignoring().antMatchers(Constants.LOGIN_PAGE, Constants.LOGIN, Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.CAPTCHA, 38 web.ignoring().antMatchers(Constants.LOGIN_PAGE, Constants.LOGIN, Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.CAPTCHA,
39 - Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS); 39 + Constants.SERVICE_INTERFACE, Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS);
40 } 40 }
41 41
42 @Override 42 @Override
src/main/java/com/bsth/service/forms/impl/CommonServiceImpl.java
@@ -101,7 +101,7 @@ public class CommonServiceImpl implements CommonService{ @@ -101,7 +101,7 @@ public class CommonServiceImpl implements CommonService{
101 + " order by bcs"; 101 + " order by bcs";
102 102
103 103
104 - List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill3(jName, clZbh , date); 104 + List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill3(jName, clZbh , date,"","");
105 105
106 DecimalFormat format = new DecimalFormat("0.00"); 106 DecimalFormat format = new DecimalFormat("0.00");
107 // int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName); 107 // int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
@@ -15,6 +15,7 @@ import com.bsth.service.TrafficManageService; @@ -15,6 +15,7 @@ import com.bsth.service.TrafficManageService;
15 import com.bsth.util.TimeUtils; 15 import com.bsth.util.TimeUtils;
16 import com.bsth.util.db.DBUtils_MS; 16 import com.bsth.util.db.DBUtils_MS;
17 import com.bsth.webService.trafficManage.geotool.services.InternalPortType; 17 import com.bsth.webService.trafficManage.geotool.services.InternalPortType;
  18 +import com.bsth.webService.trafficManage.geotool.services.Internal;
18 import com.bsth.webService.trafficManage.org.tempuri.WebServiceLocator; 19 import com.bsth.webService.trafficManage.org.tempuri.WebServiceLocator;
19 import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap; 20 import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap;
20 import org.apache.commons.lang.time.DateUtils; 21 import org.apache.commons.lang.time.DateUtils;
@@ -25,10 +26,7 @@ import org.springframework.data.domain.Sort; @@ -25,10 +26,7 @@ import org.springframework.data.domain.Sort;
25 import org.springframework.data.domain.Sort.Direction; 26 import org.springframework.data.domain.Sort.Direction;
26 import org.springframework.stereotype.Service; 27 import org.springframework.stereotype.Service;
27 28
28 -import java.io.BufferedOutputStream;  
29 -import java.io.File;  
30 -import java.io.FileOutputStream;  
31 -import java.io.IOException; 29 +import java.io.*;
32 import java.sql.Connection; 30 import java.sql.Connection;
33 import java.sql.PreparedStatement; 31 import java.sql.PreparedStatement;
34 import java.sql.ResultSet; 32 import java.sql.ResultSet;
@@ -188,6 +186,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -188,6 +186,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
188 sBuffer.append("</XLs>"); 186 sBuffer.append("</XLs>");
189 System.out.println(sBuffer.toString()); 187 System.out.println(sBuffer.toString());
190 if(sBuffer.indexOf("<XL>") != -1){ 188 if(sBuffer.indexOf("<XL>") != -1){
  189 + portType = new Internal().getInternalHttpSoap11Endpoint();
191 String portResult = portType.setXL(userNameXl, passwordXl, sBuffer.toString()); 190 String portResult = portType.setXL(userNameXl, passwordXl, sBuffer.toString());
192 String portArray[] = portResult.split("\n"); 191 String portArray[] = portResult.split("\n");
193 if(portArray.length >= 4){ 192 if(portArray.length >= 4){
@@ -386,6 +385,24 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -386,6 +385,24 @@ public class TrafficManageServiceImpl implements TrafficManageService{
386 } 385 }
387 386
388 /** 387 /**
  388 + * 从文件中读取xml
  389 + * @param fileName 例:D:/test.txt
  390 + * @return
  391 + * @throws Exception
  392 + */
  393 + private String readXmlFromFile(String fileName) throws Exception {
  394 + StringBuffer sf = new StringBuffer("");
  395 + File file = new File(fileName);
  396 + InputStreamReader reader = new InputStreamReader(new FileInputStream(file),"utf-8");
  397 + BufferedReader bufferedReader = new BufferedReader(reader);
  398 + String lineTxt = "";
  399 + while((lineTxt = bufferedReader.readLine()) != null){
  400 + sf.append(lineTxt);
  401 + }
  402 + reader.close();
  403 + return sf.toString().replaceAll("\t","");
  404 + }
  405 + /**
389 * 上传里程油耗 406 * 上传里程油耗
390 * @return 上传成功标识 407 * @return 上传成功标识
391 */ 408 */
@@ -890,7 +907,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -890,7 +907,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
890 int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 / 1024); 907 int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 / 1024);
891 908
892 System.out.println("zzz:"+nFreeMemory + "M/" + nTotalMemory +"M(free/total)"); 909 System.out.println("zzz:"+nFreeMemory + "M/" + nTotalMemory +"M(free/total)");
893 - 910 + portType = new Internal().getInternalHttpSoap11Endpoint();
894 byte[] res = portType.downloadAllDataFile("down_pdgj", "down_pdgj123"); 911 byte[] res = portType.downloadAllDataFile("down_pdgj", "down_pdgj123");
895 String filePath = "E:\\ygc"; 912 String filePath = "E:\\ygc";
896 BufferedOutputStream bos = null; 913 BufferedOutputStream bos = null;
src/main/java/com/bsth/service/oil/YlbService.java
@@ -15,5 +15,9 @@ public interface YlbService extends BaseService&lt;Ylb, Integer&gt;{ @@ -15,5 +15,9 @@ public interface YlbService extends BaseService&lt;Ylb, Integer&gt;{
15 15
16 Map<String, Object> checkYl(Map<String, Object> map); 16 Map<String, Object> checkYl(Map<String, Object> map);
17 17
  18 + Map<String, Object> sumYlb(Map<String, Object> map);
  19 +
18 List<Ylb> oilListMonth(String line,String date); 20 List<Ylb> oilListMonth(String line,String date);
  21 +
  22 + StringBuffer checkNbmmNum(String rq, String gsbm,String fgsbm,String xlbm,String nbbm,int lx);
19 } 23 }
src/main/java/com/bsth/service/oil/impl/DlbServiceImpl.java
@@ -77,6 +77,10 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -77,6 +77,10 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
77 Cars c=carsList.get(i); 77 Cars c=carsList.get(i);
78 carsMap.put(c.getInsideCode(), c.getSfdc()); 78 carsMap.put(c.getInsideCode(), c.getSfdc());
79 } 79 }
  80 + String gsbm="";
  81 + if(map2.get("ssgsdm_like")!=null){
  82 + gsbm=map2.get("ssgsdm_like").toString();
  83 + }
80 String rq=map2.get("rq").toString(); 84 String rq=map2.get("rq").toString();
81 String line=""; 85 String line="";
82 if(map2.get("xlbm_eq")!=null){ 86 if(map2.get("xlbm_eq")!=null){
@@ -91,14 +95,14 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -91,14 +95,14 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
91 //当天DLB信息 95 //当天DLB信息
92 List<Dlb> dlList=repository.obtainDl(rq); 96 List<Dlb> dlList=repository.obtainDl(rq);
93 //当天YLXXB信息 97 //当天YLXXB信息
94 - List<Ylxxb> ylxxList=ylxxbRepository.obtainYlxx(rq,1); 98 + List<Ylxxb> ylxxList=ylxxbRepository.obtainYlxx(rq,1,gsbm);
95 //当天加电信息表 99 //当天加电信息表
96 List<Jdl> jdlList=jdlRepository.JdlList(rq); 100 List<Jdl> jdlList=jdlRepository.JdlList(rq);
97 //前一天所有车辆最后进场班次信息 101 //前一天所有车辆最后进场班次信息
98 List<Dlb> dlListBe=repository.obtainYlbefore(rq); 102 List<Dlb> dlListBe=repository.obtainYlbefore(rq);
99 List<Cdl> cdyList=cdlRepository.obtainCdl(); 103 List<Cdl> cdyList=cdlRepository.obtainCdl();
100 //从排班表中计算出行驶的总里程 104 //从排班表中计算出行驶的总里程
101 - List<Map<String,Object>> listpb=scheduleRealInfoService.yesterdayDataList(line,rq); 105 + List<Map<String,Object>> listpb=scheduleRealInfoService.yesterdayDataList(line,rq,"","","","");
102 List<Ylb> addList=new ArrayList<Ylb>(); 106 List<Ylb> addList=new ArrayList<Ylb>();
103 List<Ylb> updateList=new ArrayList<Ylb>(); 107 List<Ylb> updateList=new ArrayList<Ylb>();
104 for(int x=0;x<listpb.size();x++){ 108 for(int x=0;x<listpb.size();x++){
@@ -244,14 +248,17 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -244,14 +248,17 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
244 public Map<String, Object> checkDl(Map<String, Object> map) { 248 public Map<String, Object> checkDl(Map<String, Object> map) {
245 Map<String, Object> newMap=new HashMap<String,Object>(); 249 Map<String, Object> newMap=new HashMap<String,Object>();
246 String xlbm=map.get("xlbm_eq").toString(); 250 String xlbm=map.get("xlbm_eq").toString();
247 - 251 + String gsbm="";
  252 + if(map.get("ssgsdm_like")!=null){
  253 + gsbm=map.get("ssgsdm_like").toString();
  254 + }
248 // TODO Auto-generated method stub 255 // TODO Auto-generated method stub
249 try{ 256 try{
250 //获取车辆存油信息 257 //获取车辆存油信息
251 // List<Cyl> cylList=cylRepository.findAll(new CustomerSpecs<Cyl>(newMap)); 258 // List<Cyl> cylList=cylRepository.findAll(new CustomerSpecs<Cyl>(newMap));
252 String rq=map.get("rq").toString(); 259 String rq=map.get("rq").toString();
253 List<Dlb> dlbList=repository.obtainDl(rq); 260 List<Dlb> dlbList=repository.obtainDl(rq);
254 - List<Ylxxb> ylxxbList=ylxxbRepository.obtainYlxx(rq,1); 261 + List<Ylxxb> ylxxbList=ylxxbRepository.obtainYlxx(rq,1,gsbm);
255 //当天加电信息表 262 //当天加电信息表
256 List<Jdl> jdlList=jdlRepository.JdlList(rq); 263 List<Jdl> jdlList=jdlRepository.JdlList(rq);
257 for (int i = 0; i < ylxxbList.size(); i++) { 264 for (int i = 0; i < ylxxbList.size(); i++) {
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
@@ -38,6 +38,7 @@ import com.bsth.repository.oil.YlxxbRepository; @@ -38,6 +38,7 @@ import com.bsth.repository.oil.YlxxbRepository;
38 import com.bsth.service.impl.BaseServiceImpl; 38 import com.bsth.service.impl.BaseServiceImpl;
39 import com.bsth.service.oil.YlbService; 39 import com.bsth.service.oil.YlbService;
40 import com.bsth.service.realcontrol.ScheduleRealInfoService; 40 import com.bsth.service.realcontrol.ScheduleRealInfoService;
  41 +import com.bsth.util.Arith;
41 import com.bsth.util.BatchSaveUtils; 42 import com.bsth.util.BatchSaveUtils;
42 import com.github.abel533.echarts.code.Y; 43 import com.github.abel533.echarts.code.Y;
43 44
@@ -97,10 +98,10 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -97,10 +98,10 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
97 //当天YLXXB信息 98 //当天YLXXB信息
98 // List<Ylxxb> ylxxList=ylxxbRepository.obtainYlxx(rq); 99 // List<Ylxxb> ylxxList=ylxxbRepository.obtainYlxx(rq);
99 //前一天所有车辆最后进场班次信息 100 //前一天所有车辆最后进场班次信息
100 - List<Ylb> ylListBe=repository.obtainYlbefore(rq); 101 + List<Ylb> ylListBe=repository.obtainYlbefore(rq,"","","","");
101 List<Cyl> clyList=cylRepository.obtainCyl("",""); 102 List<Cyl> clyList=cylRepository.obtainCyl("","");
102 //从排班表中计算出行驶的总里程 103 //从排班表中计算出行驶的总里程
103 - List<Map<String,Object>> listpb=scheduleRealInfoService.yesterdayDataList("",rq); 104 + List<Map<String,Object>> listpb=scheduleRealInfoService.yesterdayDataList("", rq, "", "", "", "");
104 105
105 for(int x=0;x<listpb.size();x++){ 106 for(int x=0;x<listpb.size();x++){
106 boolean sfdc=true; 107 boolean sfdc=true;
@@ -222,14 +223,15 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -222,14 +223,15 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
222 // 当天YLB信息 223 // 当天YLB信息
223 List<Ylb> ylList = repository.obtainYl(rq,gsbm,fgsbm,line,nbbm,"nbbm"); 224 List<Ylb> ylList = repository.obtainYl(rq,gsbm,fgsbm,line,nbbm,"nbbm");
224 // 当天YLXXB信息 225 // 当天YLXXB信息
225 - List<Ylxxb> ylxxList = ylxxbRepository.obtainYlxx(rq, 0); 226 + List<Ylxxb> ylxxList = ylxxbRepository.obtainYlxx(rq, 0,gsbm);
226 // 前一天所有车辆最后进场班次信息 227 // 前一天所有车辆最后进场班次信息
227 - List<Ylb> ylListBe = repository.obtainYlbefore(rq); 228 + List<Ylb> ylListBe = repository.obtainYlbefore(rq, gsbm, fgsbm, line, nbbm);
228 List<Cyl> clyList = cylRepository.obtainCyl(nbbm,gsbm); 229 List<Cyl> clyList = cylRepository.obtainCyl(nbbm,gsbm);
229 // 从排班表中计算出行驶的总里程 230 // 从排班表中计算出行驶的总里程
230 - List<Map<String, Object>> listpb = scheduleRealInfoService.yesterdayDataList(line, rq); 231 + List<Map<String, Object>> listpb = scheduleRealInfoService.yesterdayDataList(line, rq, gsbm, fgsbm, "", nbbm);
231 List<Ylb> addList = new ArrayList<Ylb>(); 232 List<Ylb> addList = new ArrayList<Ylb>();
232 List<Ylb> updateList = new ArrayList<Ylb>(); 233 List<Ylb> updateList = new ArrayList<Ylb>();
  234 + String ins="";
233 for (int x = 0; x < listpb.size(); x++) { 235 for (int x = 0; x < listpb.size(); x++) {
234 String type = "add"; 236 String type = "add";
235 boolean sfdc = true; 237 boolean sfdc = true;
@@ -282,9 +284,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -282,9 +284,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
282 break; 284 break;
283 } 285 }
284 } 286 }
285 -  
286 } 287 }
287 -  
288 } 288 }
289 } 289 }
290 } 290 }
@@ -299,9 +299,16 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -299,9 +299,16 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
299 Ylxxb ylxxb = ylxxList.get(j); 299 Ylxxb ylxxb = ylxxList.get(j);
300 if (map.get("clZbh").toString().equals(ylxxb.getNbbm()) 300 if (map.get("clZbh").toString().equals(ylxxb.getNbbm())
301 && map.get("jGh").toString().equals(ylxxb.getJsy())) { 301 && map.get("jGh").toString().equals(ylxxb.getJsy())) {
302 - jzl += ylxxb.getJzl(); 302 +// jzl += ylxxb.getJzl();
  303 + jzl =Arith.add(jzl, ylxxb.getJzl());
303 } 304 }
304 } 305 }
  306 + if(map.get("clZbh").toString().equals("W0A-212")){
  307 + System.out.println();
  308 + }
  309 + if(map.get("clZbh").toString().equals("W0A-211")){
  310 + System.out.println();
  311 + }
305 t.setJzl(jzl); 312 t.setJzl(jzl);
306 t.setNbbm(map.get("clZbh").toString()); 313 t.setNbbm(map.get("clZbh").toString());
307 t.setJsy(map.get("jGh") == null ? "" : map.get("jGh").toString()); 314 t.setJsy(map.get("jGh") == null ? "" : map.get("jGh").toString());
@@ -312,29 +319,34 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -312,29 +319,34 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
312 t.setSsgsdm(map.get("company") == null ? "" : map.get("company").toString()); 319 t.setSsgsdm(map.get("company") == null ? "" : map.get("company").toString());
313 t.setFgsdm(map.get("bCompany") == null ? "" : map.get("bCompany").toString()); 320 t.setFgsdm(map.get("bCompany") == null ? "" : map.get("bCompany").toString());
314 t.setRq(sdf.parse(rq)); 321 t.setRq(sdf.parse(rq));
315 - /*  
316 - * if(type.equals("add")){ addList.add(t); }else{  
317 - * updateList.add(t); }  
318 - */  
319 - repository.save(t); 322 +
  323 + if(type.equals("add")){
  324 + addList.add(t);
  325 + }else{
  326 + updateList.add(t);
  327 + ins += t.getId().toString()+",";
  328 + }
  329 +// repository.save(t);
320 newMap.put("status", ResponseCode.SUCCESS); 330 newMap.put("status", ResponseCode.SUCCESS);
321 331
322 } 332 }
323 } 333 }
  334 + if(addList.size()>0){
  335 + new BatchSaveUtils<Ylb>().saveList(addList, Ylb.class);
  336 + }
  337 +
  338 + if(updateList.size()>0){
  339 + for (int i = 0; i < updateList.size(); i++) {
  340 + repository.save(updateList.get(i));
  341 + }
  342 + }
  343 + newMap.put("status", ResponseCode.SUCCESS);
324 } catch (ParseException e) { 344 } catch (ParseException e) {
325 // TODO Auto-generated catch block 345 // TODO Auto-generated catch block
326 newMap.put("status", ResponseCode.ERROR); 346 newMap.put("status", ResponseCode.ERROR);
327 throw e; 347 throw e;
328 } 348 }
329 - /*  
330 - * try { if(addList.size()>0){ new  
331 - * BatchSaveUtils<Ylb>().saveList(addList, Ylb.class); }  
332 - *  
333 - * if(updateList.size()>0){  
334 - *  
335 - * } newMap.put("status", ResponseCode.SUCCESS); } catch (Exception e) {  
336 - * // TODO: handle exception newMap.put("status", ResponseCode.ERROR); }  
337 - */ 349 +
338 return newMap; 350 return newMap;
339 } 351 }
340 352
@@ -383,15 +395,19 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -383,15 +395,19 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
383 String nbbm_eq = ylb.getNbbm(); 395 String nbbm_eq = ylb.getNbbm();
384 Date rq_eq = ylb.getRq(); 396 Date rq_eq = ylb.getRq();
385 // 得到一天总的加油和里程(根据车,时间) 397 // 得到一天总的加油和里程(根据车,时间)
386 - List<Object[]> sumList = repository.sumLcYl(nbbm_eq, rq_eq); 398 + List<Object[]> sumList = repository.sumLcYl(nbbm_eq, rq_eq,ylb.getXlbm());
387 // 保存总的加油量 399 // 保存总的加油量
388 - Double jzl = Double.valueOf(sumList.get(0)[0].toString()); 400 + Double jzl = 0.0;
389 // 保存总的里程 401 // 保存总的里程
390 - Double zlc = Double.valueOf(sumList.get(0)[1].toString());  
391 -  
392 - Double zsh = Double.valueOf(sumList.get(0)[2].toString());  
393 -  
394 - jzl=jzl-zsh; 402 + Double zlc = 0.0;
  403 + //保存总的损耗
  404 + Double zsh = 0.0;
  405 + for (int j = 0; j < sumList.size(); j++) {
  406 + jzl = Arith.add(jzl, Double.valueOf(sumList.get(j)[0].toString()));
  407 + zlc = Arith.add(zlc, Double.valueOf(sumList.get(j)[1].toString()));
  408 + zsh = Arith.add(zsh, Double.valueOf(sumList.get(j)[2].toString()));
  409 + }
  410 + jzl = Arith.sub(jzl, zsh);
395 // 保留两位小数 411 // 保留两位小数
396 DecimalFormat df = new DecimalFormat("#.00"); 412 DecimalFormat df = new DecimalFormat("#.00");
397 Double zyl = 0.0; 413 Double zyl = 0.0;
@@ -413,17 +429,23 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -413,17 +429,23 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
413 // 进场等于出场的操作 既 最后进场存油量等于第一次的出场存油量 429 // 进场等于出场的操作 既 最后进场存油量等于第一次的出场存油量
414 Double yl = t.getCzyl(); 430 Double yl = t.getCzyl();
415 Double jcyl = t.getCzyl(); 431 Double jcyl = t.getCzyl();
416 - zyl = jcyl + jzl - yl; 432 +// zyl = jcyl + jzl - yl;
  433 + zyl =Arith.sub( Arith.add(jcyl, jzl),yl);
417 Double yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc))); 434 Double yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc)));
418 t.setYh(yh); 435 t.setYh(yh);
419 - nextJzyl = t.getJzl() + t.getCzyl() - yh;  
420 - t.setJzyl(Double.parseDouble(df.format(nextJzyl))); 436 +// nextJzyl = t.getJzl() + t.getCzyl() - yh;
  437 + nextJzyl =Arith.sub( Arith.add(t.getJzl(), t.getCzyl()),yh);
  438 +// t.setJzyl(Double.parseDouble(df.format(nextJzyl)));
  439 + t.setJzyl(nextJzyl);
421 } else { 440 } else {
422 - t.setCzyl(Double.parseDouble(df.format(nextJzyl))); 441 +// t.setCzyl(Double.parseDouble(df.format(nextJzyl)));
  442 + t.setCzyl(nextJzyl);
423 Double yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc))); 443 Double yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc)));
424 t.setYh(yh); 444 t.setYh(yh);
425 - nextJzyl = t.getJzl() + nextJzyl - yh;  
426 - t.setJzyl(Double.parseDouble(df.format(nextJzyl))); 445 +// nextJzyl = t.getJzl() + nextJzyl - yh;
  446 + nextJzyl =Arith.sub( Arith.add(t.getJzl(),nextJzyl),yh);
  447 +// t.setJzyl(Double.parseDouble(df.format(nextJzyl)));
  448 + t.setJzyl(nextJzyl);
427 } 449 }
428 repository.save(t); 450 repository.save(t);
429 } 451 }
@@ -484,20 +506,29 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -484,20 +506,29 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
484 String nbbm_eq = ylb.getNbbm(); 506 String nbbm_eq = ylb.getNbbm();
485 Date rq_eq = ylb.getRq(); 507 Date rq_eq = ylb.getRq();
486 // 得到一天总的加油和里程(根据车,时间) 508 // 得到一天总的加油和里程(根据车,时间)
487 - List<Object[]> sumList = repository.sumLcYl(nbbm_eq, rq_eq); 509 + List<Object[]> sumList = repository.sumLcYl(nbbm_eq, rq_eq,ylb.getXlbm());
488 // 保存总的加油量 510 // 保存总的加油量
489 - Double jzl = Double.valueOf(sumList.get(0)[0].toString()); 511 + Double jzl = 0.0;
490 // 保存总的里程 512 // 保存总的里程
491 - Double zlc = Double.valueOf(sumList.get(0)[1].toString());  
492 - // 保存总的损耗  
493 - Double zsh = Double.valueOf(sumList.get(0)[2].toString()); 513 + Double zlc = 0.0;
  514 + //保存总的损耗
  515 + Double zsh = 0.0;
  516 + for (int j = 0; j < sumList.size(); j++) {
  517 + jzl = Arith.add(jzl, Double.valueOf(sumList.get(j)[0].toString()));
  518 + zlc = Arith.add(zlc, Double.valueOf(sumList.get(j)[1].toString()));
  519 + zsh = Arith.add(zsh, Double.valueOf(sumList.get(j)[2].toString()));
  520 + }
  521 + jzl = Arith.sub(jzl, zsh);
494 522
495 //新的 损耗不等于 旧的损耗 总损耗从新算 523 //新的 损耗不等于 旧的损耗 总损耗从新算
496 - if(ylb.getSh() - sh >0.0000001 || ylb.getSh()-sh <0.00000001){  
497 - zsh =zsh-ylb.getSh()+sh;  
498 - jzl =jzl-zsh; 524 + if(Arith.sub(ylb.getSh(),sh )!=0){
  525 +// zsh =zsh-ylb.getSh()+sh;
  526 + zsh =Arith.add(Arith.sub(zsh, ylb.getSh()), sh);
  527 +// jzl =jzl-zsh;
  528 + jzl =Arith.sub(jzl, zsh);
499 }else{ 529 }else{
500 - jzl=jzl-zsh; 530 +// jzl=jzl-zsh;
  531 + jzl =Arith.sub(jzl, zsh);
501 } 532 }
502 map.put("nbbm_eq", nbbm_eq); 533 map.put("nbbm_eq", nbbm_eq);
503 map.put("rq_eq", rq_eq); 534 map.put("rq_eq", rq_eq);
@@ -519,25 +550,31 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -519,25 +550,31 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
519 t.setShyy(shyy); 550 t.setShyy(shyy);
520 } 551 }
521 Double jcyl = t.getCzyl(); 552 Double jcyl = t.getCzyl();
522 - zyl = jcyl + jzl - yl; 553 +// zyl = jcyl + jzl - yl;
  554 + zyl = Arith.sub(Arith.add(jcyl, jzl), yl);
523 Double yh = 0.0; 555 Double yh = 0.0;
524 if (zlc > 0 && t.getZlc() > 0) { 556 if (zlc > 0 && t.getZlc() > 0) {
525 yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc))); 557 yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc)));
526 } 558 }
527 t.setYh(yh); 559 t.setYh(yh);
528 - nextJzyl = t.getJzl() + t.getCzyl() - yh-t.getSh();  
529 - t.setJzyl(Double.parseDouble(df.format(nextJzyl))); 560 +// nextJzyl = t.getJzl() + t.getCzyl() - yh-t.getSh();
  561 + nextJzyl =Arith.sub(Arith.add(t.getJzl(), t.getCzyl()), Arith.add(yh, t.getSh()));
  562 +// t.setJzyl(Double.parseDouble(df.format(nextJzyl)));
  563 + t.setJzyl(nextJzyl);
530 } else { 564 } else {
531 if(t.getId()==id){ 565 if(t.getId()==id){
532 t.setSh(sh); 566 t.setSh(sh);
533 t.setShyy(shyy); 567 t.setShyy(shyy);
534 } 568 }
535 if (t.getZlc() != 0) { 569 if (t.getZlc() != 0) {
536 - t.setCzyl(Double.parseDouble(df.format(nextJzyl))); 570 +// t.setCzyl(Double.parseDouble(df.format(nextJzyl)));
  571 + t.setCzyl(nextJzyl);
537 Double yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc))); 572 Double yh = Double.parseDouble(df.format(zyl * (t.getZlc() / zlc)));
538 t.setYh(yh); 573 t.setYh(yh);
539 - nextJzyl = t.getJzl() + nextJzyl - yh-t.getSh();  
540 - t.setJzyl(Double.parseDouble(df.format(nextJzyl))); 574 +// nextJzyl = t.getJzl() + nextJzyl - yh-t.getSh();
  575 + nextJzyl = Arith.sub(Arith.add(t.getJzl(), nextJzyl), Arith.add(yh, t.getSh()));
  576 +// t.setJzyl(Double.parseDouble(df.format(nextJzyl)));
  577 + t.setJzyl(nextJzyl);
541 } 578 }
542 579
543 } 580 }
@@ -610,7 +647,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -610,7 +647,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
610 nbbm=map.get("nbbm_eq").toString(); 647 nbbm=map.get("nbbm_eq").toString();
611 } 648 }
612 List<Ylb> ylbList=repository.obtainYl(rq,gsbm,fgsbm,xlbm,nbbm,"nbbm"); 649 List<Ylb> ylbList=repository.obtainYl(rq,gsbm,fgsbm,xlbm,nbbm,"nbbm");
613 - List<Ylxxb> ylxxbList=ylxxbRepository.obtainYlxx(rq,0); 650 + List<Ylxxb> ylxxbList=ylxxbRepository.obtainYlxx(rq,0,gsbm);
614 for (int i = 0; i < ylxxbList.size(); i++) { 651 for (int i = 0; i < ylxxbList.size(); i++) {
615 Boolean fage=true; 652 Boolean fage=true;
616 Ylxxb y1=ylxxbList.get(i); 653 Ylxxb y1=ylxxbList.get(i);
@@ -638,7 +675,8 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -638,7 +675,8 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
638 for(int z=0;z<cylList.size();z++){ 675 for(int z=0;z<cylList.size();z++){
639 cyl=cylList.get(z); 676 cyl=cylList.get(z);
640 if(t.getNbbm().equals(cyl.getNbbm())){ 677 if(t.getNbbm().equals(cyl.getNbbm())){
641 - cyl.setCyl(cyl.getCyl()+t.getJzl()); 678 +// cyl.setCyl(cyl.getCyl()+t.getJzl());
  679 + cyl.setCyl(Arith.add(cyl.getCyl(),t.getJzl()));
642 cyl.setUpdatetime(t.getRq()); 680 cyl.setUpdatetime(t.getRq());
643 status=true; 681 status=true;
644 break; 682 break;
@@ -702,6 +740,106 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -702,6 +740,106 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
702 }); 740 });
703 return list; 741 return list;
704 } 742 }
  743 +
  744 + @Override
  745 + public StringBuffer checkNbmmNum(String rq, String gsbm, String fgsbm, String xlbm,String nbbm,int lx) {
  746 + StringBuffer stringList =new StringBuffer();
  747 + List<Object[]> objectList=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
  748 + for (int i = 0; i < objectList.size(); i++) {
  749 + String clbm=objectList.get(i)[0].toString()+",";
  750 + int cs=Integer.parseInt(objectList.get(i)[1].toString());
  751 + //一车一单
  752 + if(lx==1){
  753 + if(cs==1){
  754 + stringList.append(clbm);
  755 + }
  756 + }
  757 + //一车多单
  758 + if(lx==2){
  759 + if(cs>1){
  760 + stringList.append(clbm);
  761 + }
  762 +
  763 + }
  764 + }
  765 + return stringList;
  766 + }
  767 +
  768 +
  769 +
  770 + @Override
  771 + public Map<String, Object> sumYlb(Map<String, Object> map) {
  772 + // TODO Auto-generated method stub
  773 + List<String> stringList=new ArrayList<String>();
  774 + String rq=map.get("rq").toString();
  775 + String gsbm=map.get("ssgsdm_like").toString();
  776 + String fgsbm=map.get("fgsdm_like").toString();
  777 + String xlbm=map.get("xlbm_like").toString().trim();
  778 + String nbbm=map.get("nbbm_eq").toString();
  779 + String sxtj=map.get("sxtj").toString();
  780 + if(nbbm.trim()!=""){
  781 + stringList.add(nbbm);
  782 + }else{
  783 + if(!sxtj.equals("0")){
  784 + List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
  785 + for (int i = 0; i < objectLists.size(); i++) {
  786 + String clbm=objectLists.get(i)[0].toString();
  787 + int cs=Integer.parseInt(objectLists.get(i)[1].toString());
  788 + //一车一单
  789 +
  790 + if(sxtj.equals("1")){
  791 + if(cs==1){
  792 + stringList.add(clbm);
  793 + }
  794 + }
  795 + //一车多单
  796 + if(sxtj.equals("2")){
  797 + if(cs>1){
  798 + stringList.add(clbm);
  799 + }
  800 + }
  801 + }
  802 + }
  803 + }
  804 + List<Object[]> sumYlbList=new ArrayList<Object[]>();
  805 + if(sxtj.equals("0")){
  806 + sumYlbList=repository.sumYlb2(rq, gsbm, fgsbm, xlbm,nbbm);
  807 + }else{
  808 + if(stringList.size()>0){
  809 +
  810 +// String strings[]=new String[stringList.size()];
  811 +// for(int i=0;i<stringList.size();i++){
  812 +// strings[i]=stringList.get(i);
  813 +// }
  814 + sumYlbList=repository.sumYlb(rq, gsbm, fgsbm, xlbm, stringList);
  815 + }else{
  816 + sumYlbList=repository.sumYlb2(rq, gsbm, fgsbm, xlbm, nbbm);
  817 + }
  818 +
  819 + }
  820 +
  821 + Double jzl=0.0,yh=0.0,sh=0.0;
  822 + for (int i = 0; i < sumYlbList.size(); i++) {
  823 + jzl = Arith.add(jzl, Double.valueOf(sumYlbList.get(i)[0].toString()));
  824 + yh = Arith.add(yh, Double.valueOf(sumYlbList.get(i)[1].toString()));
  825 + sh = Arith.add(sh, Double.valueOf(sumYlbList.get(i)[2].toString()));
  826 + }
  827 +
  828 + Map<String, Object> sumMap=new HashMap<String,Object>();
  829 + sumMap.put("jzl", jzl);
  830 + sumMap.put("yh", yh);
  831 + sumMap.put("sh", sh);
  832 +// String sql="select sum(jzl),sum(yh),sum(sh) from bsth_c_ylb "
  833 +// + " where to_days('"+map.get("rq").toString()+"')=to_days(rq) "
  834 +// + " and ssgsdm like '%"+map.get("ssgsdm_like").toString()+"%' "
  835 +// + " and fgsdm like '%"+map.get("fgsdm_like").toString()+"%' "
  836 +// + " and xlbm like '%"+map.get("xlbm_like").toString()+ "%'"
  837 +// + " and nbbm like '%"+map.get("nbbm_eq").toString()+"% '";
  838 +// if(map.get("nbbm_in")!=null){
  839 +//// sql +=" and nbbm in ("
  840 +// }
  841 + return sumMap;
  842 + }
705 843
706 844
707 } 845 }
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,6 +112,8 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
112 112
113 List<Map<String,Object>> statisticsDaily(String line, String date, String xlName, String type); 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 //List<Object> scheduleDaily(String line,String date); 117 //List<Object> scheduleDaily(String line,String date);
116 118
117 int countByLineCodeAndDate(String xlBm, String schDate); 119 int countByLineCodeAndDate(String xlBm, String schDate);
@@ -126,7 +128,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -126,7 +128,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
126 List<ScheduleRealInfo> realScheduleList(String line,String date); 128 List<ScheduleRealInfo> realScheduleList(String line,String date);
127 List<ScheduleRealInfo> realScheduleListQp(String line,String date); 129 List<ScheduleRealInfo> realScheduleListQp(String line,String date);
128 130
129 - List<Map<String,Object>> yesterdayDataList(String line,String date); 131 + List<Map<String,Object>> yesterdayDataList(String line,String date,String gsbm,String fgsbm,String jGh,String nbbm);
130 132
131 List<Map<String,Object>> yesterdayDataList(String line); 133 List<Map<String,Object>> yesterdayDataList(String line);
132 134
@@ -156,7 +158,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -156,7 +158,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
156 158
157 Map<String,Object> lpChangeMulti(String leftIdx, String rightIdx, int type); 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 Map<String,Object> revokeRealArrive(Long id); 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,6 +9,7 @@ import com.bsth.repository.realcontrol.ChildTaskPlanRepository;
9 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; 9 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
10 import com.bsth.service.impl.BaseServiceImpl; 10 import com.bsth.service.impl.BaseServiceImpl;
11 import com.bsth.service.realcontrol.ChildTaskPlanService; 11 import com.bsth.service.realcontrol.ChildTaskPlanService;
  12 +import org.apache.commons.lang3.StringUtils;
12 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.jdbc.core.JdbcTemplate; 14 import org.springframework.jdbc.core.JdbcTemplate;
14 import org.springframework.stereotype.Service; 15 import org.springframework.stereotype.Service;
@@ -45,8 +46,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon @@ -45,8 +46,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
45 //保存起终点名称 46 //保存起终点名称
46 String prefix = sch.getXlBm() + "_" + sch.getXlDir() + "_"; 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 rs = super.save(t); 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
@@ -179,6 +179,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -179,6 +179,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
179 schedule.setBcType(bcType); 179 schedule.setBcType(bcType);
180 } 180 }
181 181
  182 + //重新计算是否误点
  183 + schedule.reCalcLate();
  184 +
182 // 持久化到数据库 185 // 持久化到数据库
183 dayOfSchedule.save(schedule); 186 dayOfSchedule.save(schedule);
184 187
@@ -391,14 +394,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -391,14 +394,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
391 return rs; 394 return rs;
392 } 395 }
393 396
394 - dayOfSchedule.delete(sch);  
395 - //ScheduleRealInfo sch = dayOfSchedule.delete(id);  
396 //数据库删除 397 //数据库删除
397 rs = super.delete(id); 398 rs = super.delete(id);
398 - //更新起点应到时间  
399 - List<ScheduleRealInfo> ts = dayOfSchedule.updateQdzTimePlan(sch.getClZbh());  
400 - rs.put("ts", ts);  
401 - rs.put("delete", sch); 399 + if(rs.get("status").equals(ResponseCode.SUCCESS)){
  400 + dayOfSchedule.delete(sch);
  401 + //更新起点应到时间
  402 + List<ScheduleRealInfo> ts = dayOfSchedule.updateQdzTimePlan(sch.getClZbh());
  403 + rs.put("ts", ts);
  404 + rs.put("delete", sch);
  405 + }
402 406
403 return rs; 407 return rs;
404 } 408 }
@@ -853,6 +857,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -853,6 +857,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
853 rs.put("msg", "未烂班,无法撤销!"); 857 rs.put("msg", "未烂班,无法撤销!");
854 } else { 858 } else {
855 sch.setStatus(0); 859 sch.setStatus(0);
  860 + sch.setRemarks("");//清空备注
  861 + sch.setJhlc(sch.getJhlcOrig());
856 rs.put("status", ResponseCode.SUCCESS); 862 rs.put("status", ResponseCode.SUCCESS);
857 rs.put("t", sch); 863 rs.put("t", sch);
858 864
@@ -1057,9 +1063,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1057,9 +1063,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1057 1063
1058 //修改班次里程 1064 //修改班次里程
1059 String jhlc = map.get("jhlc"); 1065 String jhlc = map.get("jhlc");
1060 - if (StringUtils.isNotEmpty(jhlc)  
1061 - && Double.parseDouble(jhlc) != sch.getJhlc()) {  
1062 - sch.setJhlc(Double.parseDouble(jhlc)); 1066 + if (StringUtils.isNotEmpty(jhlc)) {
  1067 + if(Double.parseDouble(jhlc) == 0 && sch.getJhlcOrig() != 0)
  1068 + destroy(sch.getId() + "", "", map.get("adjustExps").toString());
  1069 + else
  1070 + sch.setJhlc(Double.parseDouble(jhlc));
1063 } 1071 }
1064 } 1072 }
1065 1073
@@ -1097,6 +1105,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1097,6 +1105,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1097 schedule = dayOfSchedule.get(jsonObj.getLong("id")); 1105 schedule = dayOfSchedule.get(jsonObj.getLong("id"));
1098 //设置待发时间 1106 //设置待发时间
1099 schedule.setDfsjAll(dfsj); 1107 schedule.setDfsjAll(dfsj);
  1108 + //重新计算是否误点
  1109 + schedule.reCalcLate();
1100 1110
1101 dayOfSchedule.save(schedule); 1111 dayOfSchedule.save(schedule);
1102 } 1112 }
@@ -1215,7 +1225,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1215,7 +1225,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1215 1225
1216 @Override 1226 @Override
1217 public Map<String, Object> findKMBC2(String jName, String clZbh, String date) { 1227 public Map<String, Object> findKMBC2(String jName, String clZbh, String date) {
1218 - List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill3(jName, clZbh, date); 1228 + List<ScheduleRealInfo> list = scheduleRealInfoRepository.queryListWaybill3(jName, clZbh, date,"","");
1219 1229
1220 DecimalFormat format = new DecimalFormat("0.00"); 1230 DecimalFormat format = new DecimalFormat("0.00");
1221 // int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName); 1231 // int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
@@ -1290,7 +1300,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1290,7 +1300,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1290 // int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName); 1300 // int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
1291 int jhbc = 0, cjbc = 0, ljbc = 0; 1301 int jhbc = 0, cjbc = 0, ljbc = 0;
1292 double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0, jcclc = 0; 1302 double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0, jcclc = 0;
1293 - float addMileage = 0l, remMileage = 0l; 1303 + float addMileage = 0l, remMileage = 0l,addMileageYy = 0l,addMileageJc =0l;
1294 Map<String, Object> map = new HashMap<String, Object>(); 1304 Map<String, Object> map = new HashMap<String, Object>();
1295 for (ScheduleRealInfo scheduleRealInfo : list) { 1305 for (ScheduleRealInfo scheduleRealInfo : list) {
1296 if (scheduleRealInfo != null) { 1306 if (scheduleRealInfo != null) {
@@ -1301,18 +1311,25 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1301,18 +1311,25 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1301 tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc(); 1311 tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();
1302 if (scheduleRealInfo.isSflj()) { 1312 if (scheduleRealInfo.isSflj()) {
1303 addMileage += tempJhlc; 1313 addMileage += tempJhlc;
1304 - ljbc++; 1314 + if (scheduleRealInfo.getBcType().equals("in")
  1315 + || scheduleRealInfo.getBcType().equals("out")) {
  1316 + addMileageJc +=tempJhlc;
  1317 + }else{
  1318 + ljbc++;
  1319 + addMileageYy +=tempJhlc;
  1320 + }
  1321 +
1305 } else { 1322 } else {
1306 if (!(scheduleRealInfo.getBcType().equals("in") 1323 if (!(scheduleRealInfo.getBcType().equals("in")
1307 || scheduleRealInfo.getBcType().equals("out"))) { 1324 || scheduleRealInfo.getBcType().equals("out"))) {
1308 - jhbc++;  
1309 - jhlc += tempJhlc; 1325 + jhbc++;
  1326 + jhlc += tempJhlc;
  1327 + if (scheduleRealInfo.getStatus() == -1) {
  1328 + remMileage += tempJhlc;
  1329 + cjbc++;
  1330 + }
1310 } 1331 }
1311 1332
1312 - if (scheduleRealInfo.getStatus() == -1) {  
1313 - remMileage += tempJhlc;  
1314 - cjbc++;  
1315 - }  
1316 } 1333 }
1317 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); 1334 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
1318 //计算营运里程,空驶里程 1335 //计算营运里程,空驶里程
@@ -1358,15 +1375,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1358,15 +1375,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1358 map.put("jhlc", format.format(jhlc)); 1375 map.put("jhlc", format.format(jhlc));
1359 map.put("remMileage", format.format(remMileage)); 1376 map.put("remMileage", format.format(remMileage));
1360 map.put("addMileage", format.format(addMileage)); 1377 map.put("addMileage", format.format(addMileage));
1361 - map.put("yygl", format.format(yygl)); 1378 + map.put("yygl", format.format(yygl+addMileageYy));
1362 map.put("ksgl", format.format(ksgl)); 1379 map.put("ksgl", format.format(ksgl));
1363 - map.put("realMileage", format.format(yygl + ksgl + jcclc)); 1380 + map.put("realMileage", format.format(yygl + ksgl + jcclc+addMileage));
1364 map.put("jhbc", jhbc); 1381 map.put("jhbc", jhbc);
1365 map.put("cjbc", cjbc); 1382 map.put("cjbc", cjbc);
1366 map.put("ljbc", ljbc); 1383 map.put("ljbc", ljbc);
1367 map.put("sjbc", jhbc - cjbc + ljbc); 1384 map.put("sjbc", jhbc - cjbc + ljbc);
1368 map.put("jcclc", jcclc); 1385 map.put("jcclc", jcclc);
1369 - map.put("zkslc", format.format(ksgl + jcclc)); 1386 + map.put("zkslc", format.format(ksgl + jcclc+addMileageJc));
1370 return map; 1387 return map;
1371 } 1388 }
1372 1389
@@ -1436,140 +1453,681 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1436,140 +1453,681 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1436 List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); 1453 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
1437 Map<String, Object> m = new HashMap<String, Object>(); 1454 Map<String, Object> m = new HashMap<String, Object>();
1438 ReportUtils ee = new ReportUtils(); 1455 ReportUtils ee = new ReportUtils();
1439 - m.put("dates", startDate + " 至 " + endDate);  
1440 - List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();  
1441 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
1442 - for (ScheduleRealInfo schedule : list) {  
1443 - Map<String, Object> tempMap = new HashMap<String, Object>();  
1444 - tempMap.put("xlName", schedule.getXlName() != null ? schedule.getXlName() : "");  
1445 - tempMap.put("lpName", schedule.getLpName() != null ? schedule.getLpName() : "");  
1446 - tempMap.put("clZbh", schedule.getClZbh() != null ? schedule.getClZbh() : "");  
1447 - tempMap.put("jName", schedule.getjName() != null ? schedule.getjName() : "");  
1448 - tempMap.put("sName", schedule.getsName() != null ? schedule.getsName() : "");  
1449 - tempMap.put("fcsj", schedule.getFcsj() != null ? schedule.getFcsj() : "");  
1450 - tempMap.put("fcsjActual", schedule.getFcsjActual() != null ? schedule.getFcsjActual() : "");  
1451 - tempMap.put("zdsj", schedule.getZdsj() != null ? schedule.getZdsj() : "");  
1452 - tempMap.put("zdsjActual", schedule.getZdsjActual() != null ? schedule.getZdsjActual() : "");  
1453 - if (schedule.getUpdateBy() != null) {  
1454 - if (schedule.getUpdateBy().getName() != null)  
1455 - tempMap.put("userName", schedule.getUpdateBy().getName());  
1456 - else  
1457 - tempMap.put("userName", "");  
1458 - } else {  
1459 - tempMap.put("userName", "");  
1460 - }  
1461 - if (schedule.getUpdateDate() != null) {  
1462 - tempMap.put("updateDate", sdf.format(schedule.getUpdateDate()));  
1463 - } else {  
1464 - tempMap.put("updateDate", "");  
1465 - }  
1466 - tempMap.put("remarks", schedule.getRemarks() != null ? schedule.getRemarks() : "");  
1467 - tempList.add(tempMap);  
1468 - } 1456 + m.put("dates", startDate + " 至 " + endDate);
  1457 + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
  1458 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1459 + for (ScheduleRealInfo schedule : list) {
  1460 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1461 + tempMap.put("xlName", schedule.getXlName() != null ? schedule.getXlName() : "");
  1462 + tempMap.put("lpName", schedule.getLpName() != null ? schedule.getLpName() : "");
  1463 + tempMap.put("clZbh", schedule.getClZbh() != null ? schedule.getClZbh() : "");
  1464 + tempMap.put("jName", schedule.getjName() != null ? schedule.getjName() : "");
  1465 + tempMap.put("sName", schedule.getsName() != null ? schedule.getsName() : "");
  1466 + tempMap.put("fcsj", schedule.getFcsj() != null ? schedule.getFcsj() : "");
  1467 + tempMap.put("fcsjActual", schedule.getFcsjActual() != null ? schedule.getFcsjActual() : "");
  1468 + tempMap.put("zdsj", schedule.getZdsj() != null ? schedule.getZdsj() : "");
  1469 + tempMap.put("zdsjActual", schedule.getZdsjActual() != null ? schedule.getZdsjActual() : "");
  1470 + if (schedule.getUpdateBy() != null) {
  1471 + if (schedule.getUpdateBy().getName() != null)
  1472 + tempMap.put("userName", schedule.getUpdateBy().getName());
  1473 + else
  1474 + tempMap.put("userName", "");
  1475 + } else {
  1476 + tempMap.put("userName", "");
  1477 + }
  1478 + if (schedule.getUpdateDate() != null) {
  1479 + tempMap.put("updateDate", sdf.format(schedule.getUpdateDate()));
  1480 + } else {
  1481 + tempMap.put("updateDate", "");
  1482 + }
  1483 + tempMap.put("remarks", schedule.getRemarks() != null ? schedule.getRemarks() : "");
  1484 + tempList.add(tempMap);
  1485 + }
  1486 + try {
  1487 + listI.add(tempList.iterator());
  1488 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  1489 + ee.excelReplace(listI, new Object[]{m}, path + "mould/correctForm.xls",
  1490 + path + "export/修正报表" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
  1491 + } catch (Exception e) {
  1492 + // TODO: handle exception
  1493 + e.printStackTrace();
  1494 + }
  1495 + Map<String, Object> map = tempList.get(tempList.size() - 1);
  1496 + System.out.println("tempMap:" + map);
  1497 + }
  1498 +
  1499 + return list;
  1500 + }
  1501 +
  1502 + @Override
  1503 + public List<ScheduleRealInfo> queryListWaybill(String jName, String clZbh,
  1504 + String lpName, String date, String line) {
  1505 + List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();
  1506 + List<ScheduleRealInfo> list = null;
  1507 + list = scheduleRealInfoRepository.queryListWaybill(jName, clZbh, lpName, date, line);
  1508 + for (int i = 0; i < list.size(); i++) {
  1509 + ScheduleRealInfo s = list.get(i);
  1510 + s.setAdjustExps(i + 1 + "");
  1511 + String remarks = "";
  1512 + if (s.getRemarks() != null) {
  1513 + remarks += s.getRemarks();
  1514 + }
  1515 +
  1516 + Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
  1517 + if (!childTaskPlans.isEmpty()) {
  1518 + s.setFcsjActual("");
  1519 + s.setZdsjActual("");
  1520 + s.setJhlc(0.0);
  1521 + }
  1522 +
  1523 + if (s.isDestroy()) {
  1524 + s.setFcsjActual("");
  1525 + s.setZdsjActual("");
  1526 + s.setJhlc(0.0);
  1527 + remarks += "(烂班)";
  1528 + s.setRemarks(remarks);
  1529 + }
  1530 + listSchedule.add(s);
  1531 + //计算营运里程,空驶里程
  1532 + if (!childTaskPlans.isEmpty()) {
  1533 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  1534 + while (it.hasNext()) {
  1535 + ScheduleRealInfo t = new ScheduleRealInfo();
  1536 + ChildTaskPlan childTaskPlan = it.next();
  1537 + if (childTaskPlan.isDestroy()) {
  1538 + t.setFcsjActual("");
  1539 + t.setZdsjActual("");
  1540 + t.setJhlc(0.0);
  1541 + } else {
  1542 + t.setFcsjActual(childTaskPlan.getStartDate());
  1543 + t.setZdsjActual(childTaskPlan.getEndDate());
  1544 + t.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage())));
  1545 + }
  1546 + t.setQdzName(childTaskPlan.getStartStationName());
  1547 + t.setZdzName(childTaskPlan.getEndStationName());
  1548 + t.setRemarks(childTaskPlan.getRemarks());
  1549 + t.setAdjustExps("子");
  1550 + listSchedule.add(t);
  1551 + }
  1552 + /* String sqlPc = "select * from bsth_c_s_child_task where schedule=" + s.getId() + " order by start_date ";
  1553 + List<ScheduleRealInfo> lists = jdbcTemplate.query(sqlPc,
  1554 + new RowMapper<ScheduleRealInfo>() {
  1555 + @Override
  1556 + public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
  1557 + ScheduleRealInfo t = new ScheduleRealInfo();
  1558 + if (rs.getInt("destroy") == 0) {
  1559 + t.setFcsjActual(rs.getString("start_date"));
  1560 + t.setZdsjActual(rs.getString("end_date"));
  1561 + t.setJhlc(rs.getDouble("mileage"));
  1562 + } else {
  1563 + t.setFcsjActual("");
  1564 + t.setZdsjActual("");
  1565 + t.setJhlc(0.0);
  1566 + }
  1567 + t.setQdzName(rs.getString("start_station_name"));
  1568 + t.setZdzName(rs.getString("end_station_name"));
  1569 + t.setRemarks(rs.getString("remarks"));
  1570 + t.setAdjustExps("子");
  1571 + return t;
  1572 + }
  1573 + });
  1574 + for (int j = 0; j < lists.size(); j++) {
  1575 + ScheduleRealInfo t = lists.get(j);
  1576 + listSchedule.add(t);
  1577 + }*/
  1578 + }
  1579 + }
  1580 +
  1581 + return listSchedule;
  1582 + }
  1583 +
  1584 + @Override
  1585 + public Map<String, Object> removeChildTask(Long taskId) {
  1586 + Map<String, Object> rs = new HashMap<>();
  1587 + ChildTaskPlan chTask = cTaskPlanRepository.findOne(taskId);
  1588 +
  1589 + ScheduleRealInfo sch = dayOfSchedule.get(chTask.getSchedule().getId());
  1590 + try {
  1591 +
  1592 + sch.getcTasks().remove(chTask);
  1593 + scheduleRealInfoRepository.save(sch);
  1594 + rs.put("status", ResponseCode.SUCCESS);
  1595 + } catch (Exception e) {
  1596 + logger.error("", e);
  1597 + rs.put("status", ResponseCode.ERROR);
  1598 + }
  1599 + return rs;
  1600 + }
  1601 +
  1602 + @Override
  1603 + public List<Map<String, Object>> statisticsDaily(String line, String date,
  1604 + String xlName, String type) {
  1605 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  1606 + if (date.length() == 10)
  1607 + list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
  1608 + else if (date.length() == 7)
  1609 + list = scheduleRealInfoRepository.scheduleByDateAndLine3(line, date);
  1610 +
  1611 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  1612 + DecimalFormat format = new DecimalFormat("0.00");
  1613 + double jhlc = 0, tempJhlc = 0, childMileage = 0;
  1614 + 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;
  1615 + //班次
  1616 + 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;
  1617 + int sj_0 = 6 * 60 + 31, sj_1 = 8 * 60 + 30, sj_2 = 16 * 60 + 1, sj_3 = 18 * 60;
  1618 + int jhbc = 0, jhbc_m = 0, jhbc_a = 0;
  1619 + int sjbc = 0, sjbc_m = 0, sjbc_a = 0;
  1620 + int ljbc = 0, ljbc_m = 0, ljbc_a = 0;
  1621 + int fzbc = 0, fzbc_m = 0, fzbc_a = 0;
  1622 + int dtbc = 0, dtbc_m = 0, dtbc_a = 0;
  1623 + int djg = 0, djg_m = 0, djg_a = 0, djg_time = 0;
  1624 +
  1625 + double jhlcZ = 0, tempJhlcZ = 0, childMileageZ = 0;
  1626 + float sjglZ = 0f, ssglZ = 0f, ssgl_lzZ = 0f, ssgl_dmZ = 0f,
  1627 + ssgl_gzZ = 0f, ssgl_jfZ = 0f, ssgl_zsZ = 0f, ssgl_qrZ = 0f, ssgl_qcZ = 0f,
  1628 + ssgl_kxZ = 0f, ssgl_qhZ = 0f, ssgl_ywZ = 0f, ssgl_otherZ = 0f, ljglZ = 0f;
  1629 + //班次
  1630 + 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;
  1631 + int jhbcZ = 0, jhbc_mZ = 0, jhbc_aZ = 0;
  1632 + int sjbcZ = 0, sjbc_mZ = 0, sjbc_aZ = 0;
  1633 + int ljbcZ = 0, ljbc_mZ = 0, ljbc_aZ = 0;
  1634 + int fzbcZ = 0, fzbc_mZ = 0, fzbc_aZ = 0;
  1635 + int dtbcZ = 0, dtbc_mZ = 0, dtbc_aZ = 0;
  1636 + int djgZ = 0, djg_mZ = 0, djg_aZ = 0, djg_timeZ = 0;
  1637 + Map<String, Object> map = null;
  1638 + for (int i = 0; i < list.size(); i++) {
  1639 + ScheduleRealInfo scheduleRealInfo = list.get(i);
  1640 + if (scheduleRealInfo != null) {
  1641 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  1642 + //计算实际里程,少驶里程,计划里程=实际里程+少驶里程
  1643 + if (childTaskPlans.isEmpty()) {
  1644 + tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();
  1645 + //临加公里
  1646 + if (scheduleRealInfo.isSflj()) {
  1647 + ljgl += tempJhlc;
  1648 + ljglZ += tempJhlc;
  1649 + } else {
  1650 + jhlc += tempJhlc;
  1651 + jhlcZ += tempJhlc;
  1652 + }
  1653 + if (scheduleRealInfo.getStatus() == -1) {
  1654 + ssgl += tempJhlc;
  1655 + ssglZ += tempJhlc;
  1656 + ssbc++;
  1657 + ssbcZ++;
  1658 + if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("路阻") != -1) {
  1659 + ssgl_lz += tempJhlc;
  1660 + ssgl_lzZ += tempJhlc;
  1661 + ssbc_lz++;
  1662 + ssbc_lzZ++;
  1663 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("吊慢") != -1) {
  1664 + ssgl_dm += tempJhlc;
  1665 + ssgl_dmZ += tempJhlc;
  1666 + ssbc_dm++;
  1667 + ssbc_dmZ++;
  1668 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("故障") != -1) {
  1669 + ssgl_gz += tempJhlc;
  1670 + ssgl_gzZ += tempJhlc;
  1671 + ssbc_gz++;
  1672 + ssbc_gzZ++;
  1673 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("纠纷") != -1) {
  1674 + ssgl_jf += tempJhlc;
  1675 + ssgl_jfZ += tempJhlc;
  1676 + ssbc_jf++;
  1677 + ssbc_jfZ++;
  1678 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("肇事") != -1) {
  1679 + ssgl_zs += tempJhlc;
  1680 + ssgl_zsZ += tempJhlc;
  1681 + ssbc_zs++;
  1682 + ssbc_zsZ++;
  1683 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺人") != -1) {
  1684 + ssgl_qr += tempJhlc;
  1685 + ssgl_qrZ += tempJhlc;
  1686 + ssbc_qr++;
  1687 + ssbc_qrZ++;
  1688 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺车") != -1) {
  1689 + ssgl_qc += tempJhlc;
  1690 + ssgl_qcZ += tempJhlc;
  1691 + ssbc_qc++;
  1692 + ssbc_qcZ++;
  1693 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("客稀") != -1) {
  1694 + ssgl_kx += tempJhlc;
  1695 + ssgl_kxZ += tempJhlc;
  1696 + ssbc_kx++;
  1697 + ssbc_kxZ++;
  1698 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("气候") != -1) {
  1699 + ssgl_qh += tempJhlc;
  1700 + ssgl_qhZ += tempJhlc;
  1701 + ssbc_qh++;
  1702 + ssbc_qhZ++;
  1703 + } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("援外") != -1) {
  1704 + ssgl_yw += tempJhlc;
  1705 + ssgl_ywZ += tempJhlc;
  1706 + ssbc_yw++;
  1707 + ssbc_ywZ++;
  1708 + } else {
  1709 + ssgl_other += tempJhlc;
  1710 + ssgl_otherZ += tempJhlc;
  1711 + ssbc_other++;
  1712 + ssbc_otherZ++;
  1713 + }
  1714 + } else {
  1715 + sjgl += tempJhlc;
  1716 + sjglZ += tempJhlc;
  1717 + }
  1718 + } else {
  1719 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  1720 + while (it.hasNext()) {
  1721 + ChildTaskPlan childTaskPlan = it.next();
  1722 + childMileage = childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
  1723 + jhlc += childMileage;
  1724 + jhlcZ += childMileage;
  1725 + if (childTaskPlan.isDestroy()) {
  1726 + ssgl += childMileage;
  1727 + ssglZ += childMileage;
  1728 + ssbc++;
  1729 + ssbcZ++;
  1730 + if (childTaskPlan.getDestroyReason().equals("路阻")) {
  1731 + ssgl_lz += childTaskPlan.getMileage();
  1732 + ssgl_lzZ += childTaskPlan.getMileage();
  1733 + ssbc_lzZ++;
  1734 + ssbc_lzZ++;
  1735 + } else if (childTaskPlan.getDestroyReason().equals("吊慢")) {
  1736 + ssgl_dm += childTaskPlan.getMileage();
  1737 + ssgl_dmZ += childTaskPlan.getMileage();
  1738 + ssbc_dm++;
  1739 + ssbc_dmZ++;
  1740 + } else if (childTaskPlan.getDestroyReason().equals("故障")) {
  1741 + ssgl_gz += childTaskPlan.getMileage();
  1742 + ssgl_gzZ += childTaskPlan.getMileage();
  1743 + ssbc_gz++;
  1744 + ssbc_gzZ++;
  1745 + } else if (childTaskPlan.getDestroyReason().equals("纠纷")) {
  1746 + ssgl_jf += childTaskPlan.getMileage();
  1747 + ssgl_jfZ += childTaskPlan.getMileage();
  1748 + ssbc_jf++;
  1749 + ssbc_jfZ++;
  1750 + } else if (childTaskPlan.getDestroyReason().equals("肇事")) {
  1751 + ssgl_zs += childTaskPlan.getMileage();
  1752 + ssgl_zsZ += childTaskPlan.getMileage();
  1753 + ssbc_zs++;
  1754 + ssbc_zsZ++;
  1755 + } else if (childTaskPlan.getDestroyReason().equals("缺人")) {
  1756 + ssgl_qr += childTaskPlan.getMileage();
  1757 + ssgl_qrZ += childTaskPlan.getMileage();
  1758 + ssbc_qr++;
  1759 + ssbc_qrZ++;
  1760 + } else if (childTaskPlan.getDestroyReason().equals("缺车")) {
  1761 + ssgl_qc += childTaskPlan.getMileage();
  1762 + ssgl_qcZ += childTaskPlan.getMileage();
  1763 + ssbc_qc++;
  1764 + ssbc_qcZ++;
  1765 + } else if (childTaskPlan.getDestroyReason().equals("客稀")) {
  1766 + ssgl_kx += childTaskPlan.getMileage();
  1767 + ssgl_kxZ += childTaskPlan.getMileage();
  1768 + ssbc_kx++;
  1769 + ssbc_kxZ++;
  1770 + } else if (childTaskPlan.getDestroyReason().equals("气候")) {
  1771 + ssgl_qh += childTaskPlan.getMileage();
  1772 + ssgl_qhZ += childTaskPlan.getMileage();
  1773 + ssbc_qh++;
  1774 + ssbc_qhZ++;
  1775 + } else if (childTaskPlan.getDestroyReason().equals("援外")) {
  1776 + ssgl_yw += childTaskPlan.getMileage();
  1777 + ssgl_ywZ += childTaskPlan.getMileage();
  1778 + ssbc_yw++;
  1779 + ssbc_ywZ++;
  1780 + } else {
  1781 + ssgl_other += childTaskPlan.getMileage();
  1782 + ssgl_otherZ += childTaskPlan.getMileage();
  1783 + ssbc_other++;
  1784 + ssbc_otherZ++;
  1785 + }
  1786 + } else {
  1787 + sjgl += childMileage;
  1788 + sjglZ += childMileage;
  1789 + }
  1790 + }
  1791 + }
  1792 +
  1793 + //班次
  1794 + jhbc++;
  1795 + jhbcZ++;
  1796 + String[] fcsj = scheduleRealInfo.getFcsj().split(":");
  1797 + String[] fcsjActual = (scheduleRealInfo.getFcsjActual() == null ? "0:00" : scheduleRealInfo.getFcsjActual()).split(":");
  1798 + if ((Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) > sj_0 && (Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) < sj_1) {
  1799 + jhbc_m++;
  1800 + jhbc_mZ++;
  1801 + } else if ((Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) > sj_2 && (Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) < sj_3) {
  1802 + jhbc_a++;
  1803 + jhbc_aZ++;
  1804 + }
  1805 + if (scheduleRealInfo.getStatus() != -1) {
  1806 + sjbc++;
  1807 + sjbcZ++;
  1808 + if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_1) {
  1809 + sjbc_m++;
  1810 + sjbc_mZ++;
  1811 + } else if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_3) {
  1812 + sjbc_a++;
  1813 + sjbc_aZ++;
  1814 + }
  1815 + }
  1816 + if (scheduleRealInfo.isSflj()) {
  1817 + ljbc++;
  1818 + ljbcZ++;
  1819 + if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_1) {
  1820 + ljbc_m++;
  1821 + ljbc_mZ++;
  1822 + } else if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_3) {
  1823 + ljbc_a++;
  1824 + ljbc_aZ++;
  1825 + }
  1826 + }
  1827 + if (scheduleRealInfo.getBcType().equals("venting")) {
  1828 + fzbc++;
  1829 + fzbcZ++;
  1830 + if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_0 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_1) {
  1831 + fzbc_m++;
  1832 + fzbc_mZ++;
  1833 + } else if ((Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) > sj_2 && (Integer.parseInt(fcsjActual[0]) * 60 + Integer.parseInt(fcsjActual[1])) < sj_3) {
  1834 + fzbc_a++;
  1835 + fzbc_aZ++;
  1836 + }
  1837 + }
  1838 +
  1839 + if (i < list.size() - 1) {
  1840 + if (!scheduleRealInfo.getXlBm().equals(list.get(i + 1).getXlBm())) {
  1841 + map = new HashMap<String, Object>();
  1842 + map.put("xlName", scheduleRealInfo.getXlName());
  1843 + map.put("jhlc", format.format(jhlc));
  1844 + map.put("sjgl", format.format(sjgl));
  1845 + map.put("ssgl", format.format(ssgl));
  1846 + map.put("ssgl_lz", ssgl_lz == 0 ? 0 : format.format(ssgl_lz));
  1847 + map.put("ssgl_dm", ssgl_dm == 0 ? 0 : format.format(ssgl_dm));
  1848 + map.put("ssgl_gz", ssgl_gz == 0 ? 0 : format.format(ssgl_gz));
  1849 + map.put("ssgl_jf", ssgl_jf == 0 ? 0 : format.format(ssgl_jf));
  1850 + map.put("ssgl_zs", ssgl_zs == 0 ? 0 : format.format(ssgl_zs));
  1851 + map.put("ssgl_qr", ssgl_qr == 0 ? 0 : format.format(ssgl_qr));
  1852 + map.put("ssgl_qc", ssgl_qc == 0 ? 0 : format.format(ssgl_qc));
  1853 + map.put("ssgl_kx", ssgl_kx == 0 ? 0 : format.format(ssgl_kx));
  1854 + map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
  1855 + map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
  1856 + map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  1857 + map.put("ssbc", ssbc);
  1858 + map.put("ssbc_lz", ssbc_lz);
  1859 + map.put("ssbc_dm", ssbc_dm);
  1860 + map.put("ssbc_gz", ssbc_gz);
  1861 + map.put("ssbc_jf", ssbc_jf);
  1862 + map.put("ssbc_zs", ssbc_zs);
  1863 + map.put("ssbc_qr", ssbc_qr);
  1864 + map.put("ssbc_qc", ssbc_qc);
  1865 + map.put("ssbc_kx", ssbc_kx);
  1866 + map.put("ssbc_qh", ssbc_qh);
  1867 + map.put("ssbc_yw", ssbc_yw);
  1868 + map.put("ssbc_other", ssbc_other);
  1869 + map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
  1870 + map.put("jhbc", jhbc);
  1871 + map.put("jhbc_m", jhbc_m);
  1872 + map.put("jhbc_a", jhbc_a);
  1873 + map.put("sjbc", sjbc);
  1874 + map.put("sjbc_m", sjbc_m);
  1875 + map.put("sjbc_a", sjbc_a);
  1876 + map.put("ljbc", ljbc);
  1877 + map.put("ljbc_m", ljbc_m);
  1878 + map.put("ljbc_a", ljbc_a);
  1879 + map.put("fzbc", fzbc);
  1880 + map.put("fzbc_m", fzbc_m);
  1881 + map.put("fzbc_a", fzbc_a);
  1882 + map.put("dtbc", dtbc);
  1883 + map.put("dtbc_m", dtbc_m);
  1884 + map.put("dtbc_a", dtbc_a);
  1885 + map.put("djg", djg);
  1886 + map.put("djg_m", djg_m);
  1887 + map.put("djg_a", djg_a);
  1888 + map.put("djg_time", djg_time);
  1889 + lMap.add(map);
  1890 + jhlc = 0;
  1891 + tempJhlc = 0;
  1892 + childMileage = 0;
  1893 + sjgl = 0f;
  1894 + ssgl = 0f;
  1895 + ssgl_lz = 0f;
  1896 + ssgl_dm = 0f;
  1897 + ssgl_gz = 0f;
  1898 + ssgl_jf = 0f;
  1899 + ssgl_zs = 0f;
  1900 + ssgl_qr = 0f;
  1901 + ssgl_qc = 0f;
  1902 + ssgl_kx = 0f;
  1903 + ssgl_qh = 0f;
  1904 + ssgl_yw = 0f;
  1905 + ssgl_other = 0f;
  1906 + ljgl = 0f;
  1907 + //班次
  1908 + jhbc = 0;
  1909 + jhbc_m = 0;
  1910 + jhbc_a = 0;
  1911 + sjbc = 0;
  1912 + sjbc_m = 0;
  1913 + sjbc_a = 0;
  1914 + ljbc = 0;
  1915 + ljbc_m = 0;
  1916 + ljbc_a = 0;
  1917 + fzbc = 0;
  1918 + fzbc_m = 0;
  1919 + fzbc_a = 0;
  1920 + dtbc = 0;
  1921 + dtbc_m = 0;
  1922 + dtbc_a = 0;
  1923 + djg = 0;
  1924 + djg_m = 0;
  1925 + djg_a = 0;
  1926 + djg_time = 0;
  1927 + }
  1928 + } else {
  1929 + map = new HashMap<String, Object>();
  1930 + map.put("xlName", scheduleRealInfo.getXlName());
  1931 + map.put("jhlc", format.format(jhlc));
  1932 + map.put("sjgl", format.format(sjgl));
  1933 + map.put("ssgl", format.format(ssgl));
  1934 + map.put("ssgl_lz", ssgl_lz == 0 ? 0 : format.format(ssgl_lz));
  1935 + map.put("ssgl_dm", ssgl_dm == 0 ? 0 : format.format(ssgl_dm));
  1936 + map.put("ssgl_gz", ssgl_gz == 0 ? 0 : format.format(ssgl_gz));
  1937 + map.put("ssgl_jf", ssgl_jf == 0 ? 0 : format.format(ssgl_jf));
  1938 + map.put("ssgl_zs", ssgl_zs == 0 ? 0 : format.format(ssgl_zs));
  1939 + map.put("ssgl_qr", ssgl_qr == 0 ? 0 : format.format(ssgl_qr));
  1940 + map.put("ssgl_qc", ssgl_qc == 0 ? 0 : format.format(ssgl_qc));
  1941 + map.put("ssgl_kx", ssgl_kx == 0 ? 0 : format.format(ssgl_kx));
  1942 + map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
  1943 + map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
  1944 + map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  1945 + map.put("ssbc", ssbc);
  1946 + map.put("ssbc_lz", ssbc_lz);
  1947 + map.put("ssbc_dm", ssbc_dm);
  1948 + map.put("ssbc_gz", ssbc_gz);
  1949 + map.put("ssbc_jf", ssbc_jf);
  1950 + map.put("ssbc_zs", ssbc_zs);
  1951 + map.put("ssbc_qr", ssbc_qr);
  1952 + map.put("ssbc_qc", ssbc_qc);
  1953 + map.put("ssbc_kx", ssbc_kx);
  1954 + map.put("ssbc_qh", ssbc_qh);
  1955 + map.put("ssbc_yw", ssbc_yw);
  1956 + map.put("ssbc_other", ssbc_other);
  1957 + map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
  1958 + map.put("jhbc", jhbc);
  1959 + map.put("jhbc_m", jhbc_m);
  1960 + map.put("jhbc_a", jhbc_a);
  1961 + map.put("sjbc", sjbc);
  1962 + map.put("sjbc_m", sjbc_m);
  1963 + map.put("sjbc_a", sjbc_a);
  1964 + map.put("ljbc", ljbc);
  1965 + map.put("ljbc_m", ljbc_m);
  1966 + map.put("ljbc_a", ljbc_a);
  1967 + map.put("fzbc", fzbc);
  1968 + map.put("fzbc_m", fzbc_m);
  1969 + map.put("fzbc_a", fzbc_a);
  1970 + map.put("dtbc", dtbc);
  1971 + map.put("dtbc_m", dtbc_m);
  1972 + map.put("dtbc_a", dtbc_a);
  1973 + map.put("djg", djg);
  1974 + map.put("djg_m", djg_m);
  1975 + map.put("djg_a", djg_a);
  1976 + map.put("djg_time", djg_time);
  1977 + lMap.add(map);
  1978 + jhlc = 0;
  1979 + tempJhlc = 0;
  1980 + childMileage = 0;
  1981 + sjgl = 0f;
  1982 + ssgl = 0f;
  1983 + ssgl_lz = 0f;
  1984 + ssgl_dm = 0f;
  1985 + ssgl_gz = 0f;
  1986 + ssgl_jf = 0f;
  1987 + ssgl_zs = 0f;
  1988 + ssgl_qr = 0f;
  1989 + ssgl_qc = 0f;
  1990 + ssgl_kx = 0f;
  1991 + ssgl_qh = 0f;
  1992 + ssgl_yw = 0f;
  1993 + ssgl_other = 0f;
  1994 + ljgl = 0f;
  1995 + //班次
  1996 + jhbc = 0;
  1997 + jhbc_m = 0;
  1998 + jhbc_a = 0;
  1999 + sjbc = 0;
  2000 + sjbc_m = 0;
  2001 + sjbc_a = 0;
  2002 + ljbc = 0;
  2003 + ljbc_m = 0;
  2004 + ljbc_a = 0;
  2005 + fzbc = 0;
  2006 + fzbc_m = 0;
  2007 + fzbc_a = 0;
  2008 + dtbc = 0;
  2009 + dtbc_m = 0;
  2010 + dtbc_a = 0;
  2011 + djg = 0;
  2012 + djg_m = 0;
  2013 + djg_a = 0;
  2014 + djg_time = 0;
  2015 + }
  2016 + }
  2017 + }
  2018 + map = new HashMap<String, Object>();
  2019 + map.put("xlName", "合计");
  2020 + map.put("jhlc", format.format(jhlcZ));
  2021 + map.put("sjgl", format.format(sjglZ));
  2022 + map.put("ssgl", format.format(ssglZ));
  2023 + map.put("ssgl_lz", ssgl_lzZ == 0 ? 0 : format.format(ssgl_lzZ));
  2024 + map.put("ssgl_dm", ssgl_dmZ == 0 ? 0 : format.format(ssgl_dmZ));
  2025 + map.put("ssgl_gz", ssgl_gzZ == 0 ? 0 : format.format(ssgl_gzZ));
  2026 + map.put("ssgl_jf", ssgl_jfZ == 0 ? 0 : format.format(ssgl_jfZ));
  2027 + map.put("ssgl_zs", ssgl_zsZ == 0 ? 0 : format.format(ssgl_zsZ));
  2028 + map.put("ssgl_qr", ssgl_qrZ == 0 ? 0 : format.format(ssgl_qrZ));
  2029 + map.put("ssgl_qc", ssgl_qcZ == 0 ? 0 : format.format(ssgl_qcZ));
  2030 + map.put("ssgl_kx", ssgl_kxZ == 0 ? 0 : format.format(ssgl_kxZ));
  2031 + map.put("ssgl_qh", ssgl_qhZ == 0 ? 0 : format.format(ssgl_qhZ));
  2032 + map.put("ssgl_yw", ssgl_ywZ == 0 ? 0 : format.format(ssgl_ywZ));
  2033 + map.put("ssgl_other", ssgl_otherZ == 0 ? 0 : format.format(ssgl_otherZ));
  2034 + map.put("ssbc", ssbcZ);
  2035 + map.put("ssbc_lz", ssbc_lzZ);
  2036 + map.put("ssbc_dm", ssbc_lzZ);
  2037 + map.put("ssbc_gz", ssbc_gzZ);
  2038 + map.put("ssbc_jf", ssbc_jfZ);
  2039 + map.put("ssbc_zs", ssbc_zsZ);
  2040 + map.put("ssbc_qr", ssbc_qrZ);
  2041 + map.put("ssbc_qc", ssbc_qcZ);
  2042 + map.put("ssbc_kx", ssbc_qcZ);
  2043 + map.put("ssbc_qh", ssbc_qhZ);
  2044 + map.put("ssbc_yw", ssbc_ywZ);
  2045 + map.put("ssbc_other", ssbc_otherZ);
  2046 + map.put("ljgl", ljglZ == 0 ? 0 : format.format(ljglZ));
  2047 + map.put("jhbc", jhbcZ);
  2048 + map.put("jhbc_m", jhbc_mZ);
  2049 + map.put("jhbc_a", jhbc_aZ);
  2050 + map.put("sjbc", sjbcZ);
  2051 + map.put("sjbc_m", sjbc_mZ);
  2052 + map.put("sjbc_a", sjbc_aZ);
  2053 + map.put("ljbc", ljbcZ);
  2054 + map.put("ljbc_m", ljbc_mZ);
  2055 + map.put("ljbc_a", ljbc_aZ);
  2056 + map.put("fzbc", fzbcZ);
  2057 + map.put("fzbc_m", fzbc_mZ);
  2058 + map.put("fzbc_a", fzbc_aZ);
  2059 + map.put("dtbc", dtbcZ);
  2060 + map.put("dtbc_m", dtbc_mZ);
  2061 + map.put("dtbc_a", dtbc_aZ);
  2062 + map.put("djg", djgZ);
  2063 + map.put("djg_m", djg_mZ);
  2064 + map.put("djg_a", djg_aZ);
  2065 + map.put("djg_time", djg_timeZ);
  2066 + lMap.add(map);
  2067 + /* for (int i = 0; i < lMap.size(); i++) {
  2068 + Map<String, Object> m=lMap.get(i);
  2069 +// m.get(""))
  2070 + jhlc += Double.parseDouble(m.get("jhlc").toString());
  2071 + sjgl += Double.parseDouble(m.get("sjgl").toString());
  2072 + ssgl += Double.parseDouble( m.get("ssgl").toString());
  2073 + ssgl_lz += Double.parseDouble( m.get("ssgl_lz").toString());
  2074 + ssgl_dm += Double.parseDouble(m.get("ssgl_dm").toString());
  2075 + ssgl_gz += Double.parseDouble( m.get("ssgl_gz").toString());
  2076 + ssgl_jf += m.get("ssgl_jf", ssgl_jf == 0 ? 0 : format.format(ssgl_jf));
  2077 + m.get("ssgl_zs", ssgl_zs == 0 ? 0 : format.format(ssgl_zs));
  2078 + m.get("ssgl_qr", ssgl_qr == 0 ? 0 : format.format(ssgl_qr));
  2079 + m.get("ssgl_qc", ssgl_qc == 0 ? 0 : format.format(ssgl_qc));
  2080 + m.get("ssgl_kx", ssgl_kx == 0 ? 0 : format.format(ssgl_kx));
  2081 + m.get("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
  2082 + m.get("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
  2083 + m.get("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  2084 + m.get("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
  2085 + m.get("jhbc", jhbc);
  2086 + m.get("jhbc_m", jhbc_m);
  2087 + m.get("jhbc_a", jhbc_a);
  2088 + m.get("sjbc", sjbc);
  2089 + m.get("sjbc_m", sjbc_m);
  2090 + m.get("sjbc_a", sjbc_a);
  2091 + m.get("ljbc", ljbc);
  2092 + m.get("ljbc_m", ljbc_m);
  2093 + m.get("ljbc_a", ljbc_a);
  2094 + m.get("fzbc", fzbc);
  2095 + m.get("fzbc_m", fzbc_m);
  2096 + m.get("fzbc_a", fzbc_a);
  2097 + m.get("dtbc", dtbc);
  2098 + m.get("dtbc_m", dtbc_m);
  2099 + m.get("dtbc_a", dtbc_a);
  2100 + m.get("djg", djg);
  2101 + m.get("djg_m", djg_m);
  2102 + m.get("djg_a", djg_a);
  2103 + m.get("djg_time", djg_time);
  2104 + }*/
  2105 +
  2106 + if (type != null && type.length() != 0 && type.equals("export")) {
  2107 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  2108 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  2109 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  2110 + Map<String, Object> m = new HashMap<String, Object>();
  2111 + ReportUtils ee = new ReportUtils();
1469 try { 2112 try {
1470 - listI.add(tempList.iterator()); 2113 + listI.add(lMap.iterator());
1471 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 2114 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
1472 - ee.excelReplace(listI, new Object[]{m}, path + "mould/correctForm.xls",  
1473 - path + "export/修正报表" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls"); 2115 + ee.excelReplace(listI, new Object[]{m}, path + "mould/statisticsDaily_.xls",
  2116 + path + "export/统计日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
1474 } catch (Exception e) { 2117 } catch (Exception e) {
1475 // TODO: handle exception 2118 // TODO: handle exception
1476 e.printStackTrace(); 2119 e.printStackTrace();
1477 } 2120 }
1478 - Map<String, Object> map = tempList.get(tempList.size() - 1);  
1479 - System.out.println("tempMap:" + map);  
1480 - }  
1481 -  
1482 - return list;  
1483 - }  
1484 -  
1485 - @Override  
1486 - public List<ScheduleRealInfo> queryListWaybill(String jName, String clZbh,  
1487 - String lpName, String date, String line) {  
1488 - List<ScheduleRealInfo> listSchedule = new ArrayList<ScheduleRealInfo>();  
1489 - List<ScheduleRealInfo> list = null;  
1490 - list = scheduleRealInfoRepository.queryListWaybill(jName, clZbh, lpName, date, line);  
1491 - for (int i = 0; i < list.size(); i++) {  
1492 - ScheduleRealInfo s = list.get(i);  
1493 - s.setAdjustExps(i + 1 + "");  
1494 - String remarks = "";  
1495 - if (s.getRemarks() != null) {  
1496 - remarks += s.getRemarks();  
1497 - }  
1498 -  
1499 - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();  
1500 - if (!childTaskPlans.isEmpty()) {  
1501 - s.setFcsjActual("");  
1502 - s.setZdsjActual("");  
1503 - }  
1504 -  
1505 - if (s.isDestroy()) {  
1506 - s.setFcsjActual("");  
1507 - s.setZdsjActual("");  
1508 - s.setJhlc(0.0);  
1509 - remarks += "(烂班)";  
1510 - s.setRemarks(remarks);  
1511 - }  
1512 - listSchedule.add(s);  
1513 - //计算营运里程,空驶里程  
1514 - if (!childTaskPlans.isEmpty()) {  
1515 - String sqlPc = "select * from bsth_c_s_child_task where schedule=" + s.getId() + " order by start_date ";  
1516 - List<ScheduleRealInfo> lists = jdbcTemplate.query(sqlPc,  
1517 - new RowMapper<ScheduleRealInfo>() {  
1518 - @Override  
1519 - public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {  
1520 - ScheduleRealInfo t = new ScheduleRealInfo();  
1521 - if (rs.getInt("destroy") == 0) {  
1522 - t.setFcsjActual(rs.getString("start_date"));  
1523 - t.setZdsjActual(rs.getString("end_date"));  
1524 - t.setJhlc(rs.getDouble("mileage"));  
1525 - } else {  
1526 - t.setFcsjActual("");  
1527 - t.setZdsjActual("");  
1528 - t.setJhlc(0.0);  
1529 - }  
1530 - t.setQdzName(rs.getString("start_station_name"));  
1531 - t.setZdzName(rs.getString("end_station_name"));  
1532 - t.setRemarks(rs.getString("remarks"));  
1533 - t.setAdjustExps("子");  
1534 - return t;  
1535 - }  
1536 - });  
1537 - for (int j = 0; j < lists.size(); j++) {  
1538 - ScheduleRealInfo t = lists.get(j);  
1539 - listSchedule.add(t);  
1540 - }  
1541 - }  
1542 } 2121 }
1543 2122
1544 - return listSchedule;  
1545 - }  
1546 -  
1547 - @Override  
1548 - public Map<String, Object> removeChildTask(Long taskId) {  
1549 - Map<String, Object> rs = new HashMap<>();  
1550 - ChildTaskPlan chTask = cTaskPlanRepository.findOne(taskId);  
1551 -  
1552 - ScheduleRealInfo sch = dayOfSchedule.get(chTask.getSchedule().getId());  
1553 - try {  
1554 -  
1555 - sch.getcTasks().remove(chTask);  
1556 - scheduleRealInfoRepository.save(sch);  
1557 - rs.put("status", ResponseCode.SUCCESS);  
1558 - } catch (Exception e) {  
1559 - logger.error("", e);  
1560 - rs.put("status", ResponseCode.ERROR);  
1561 - }  
1562 - return rs; 2123 + return lMap;
1563 } 2124 }
1564 - 2125 +
1565 @Override 2126 @Override
1566 - public List<Map<String, Object>> statisticsDaily(String line, String date, 2127 + public List<Map<String, Object>> statisticsDailyTj(String line, String date,String date2,
1567 String xlName, String type) { 2128 String xlName, String type) {
1568 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); 2129 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
1569 - if (date.length() == 10)  
1570 - list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);  
1571 - else if (date.length() == 7)  
1572 - list = scheduleRealInfoRepository.scheduleByDateAndLine3(line, date); 2130 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date,date2);
1573 2131
1574 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); 2132 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
1575 DecimalFormat format = new DecimalFormat("0.00"); 2133 DecimalFormat format = new DecimalFormat("0.00");
@@ -2331,119 +2889,113 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2331,119 +2889,113 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2331 return list; 2889 return list;
2332 } 2890 }
2333 2891
2334 - public List<Map<String, Object>> yesterdayDataList(String line, String date) { 2892 + public List<Map<String, Object>> yesterdayDataList(String line, String date,String gsbm,String fgsbm,String jGh,String nbbm) {
  2893 +// Arith arith=new Arith();
2335 //前一天日期 2894 //前一天日期
2336 // String date = sdfMonth.format(org.apache.commons.lang.time.DateUtils.addDays(new Date(), -1)); 2895 // String date = sdfMonth.format(org.apache.commons.lang.time.DateUtils.addDays(new Date(), -1));
2337 // String date = "2016-09-20"; 2896 // String date = "2016-09-20";
2338 - List<Map<String, Object>> yesterdayDataList = scheduleRealInfoRepository.yesterdayDataList(line, date);  
2339 -// List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine(line, date); 2897 + System.out.println("shijian1:"+new Date());
  2898 + List<Map<String, Object>> yesterdayDataList = scheduleRealInfoRepository.yesterdayDataList(line, date,gsbm,fgsbm);
  2899 + System.out.println("shijian2:"+new Date());
  2900 + // List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine(line, date);
  2901 + List<ScheduleRealInfo> lists = scheduleRealInfoRepository.queryListWaybill3(jGh, nbbm, date,gsbm,fgsbm);
  2902 + System.out.println("shijian3:"+new Date());
2340 for (int x = 0; x < yesterdayDataList.size(); x++) { 2903 for (int x = 0; x < yesterdayDataList.size(); x++) {
2341 String jName = yesterdayDataList.get(x).get("jGh").toString(); 2904 String jName = yesterdayDataList.get(x).get("jGh").toString();
2342 String clZbh = yesterdayDataList.get(x).get("clZbh").toString(); 2905 String clZbh = yesterdayDataList.get(x).get("clZbh").toString();
2343 - List<ScheduleRealInfo> lists = scheduleRealInfoRepository.queryListWaybill3(jName, clZbh, date); 2906 +
2344 double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0, jcclc = 0; 2907 double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0, jcclc = 0;
2345 - float addMileage = 0l, remMileage = 0l; 2908 + double addMileage = 0, remMileage = 0;
2346 Map<String, Object> map = new HashMap<String, Object>(); 2909 Map<String, Object> map = new HashMap<String, Object>();
2347 boolean fage = true; 2910 boolean fage = true;
  2911 + String company="";
  2912 + String bCompany="";
2348 for (ScheduleRealInfo scheduleRealInfo : lists) { 2913 for (ScheduleRealInfo scheduleRealInfo : lists) {
2349 - if (fage) {  
2350 - //根据线路代码获取公司  
2351 - Line li = lineRepository.findByLineCode(scheduleRealInfo.getXlBm());  
2352 - yesterdayDataList.get(x).put("company", li.getCompany());  
2353 - yesterdayDataList.get(x).put("bCompany", li.getBrancheCompany());  
2354 - fage = false;  
2355 - }  
2356 - if (scheduleRealInfo != null) {  
2357 - //计划里程(主任务过滤掉临加班次),  
2358 - //烂班里程(主任务烂班),  
2359 - //临加里程(主任务临加),  
2360 - //计划班次,烂班班次,增加班次  
2361 - tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();  
2362 - if (scheduleRealInfo.isSflj()) {  
2363 - addMileage += tempJhlc;  
2364 - } else {  
2365 - if (!(scheduleRealInfo.getBcType().equals("in")  
2366 - || scheduleRealInfo.getBcType().equals("out"))) {  
2367 - jhlc += tempJhlc;  
2368 - }  
2369 -  
2370 - if (scheduleRealInfo.getStatus() == -1) {  
2371 - remMileage += tempJhlc;  
2372 - }  
2373 - }  
2374 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
2375 - //计算营运里程,空驶里程  
2376 - if (childTaskPlans.isEmpty()) {  
2377 - if (scheduleRealInfo.getBcType().equals("in") ||  
2378 - scheduleRealInfo.getBcType().equals("out")) {  
2379 - if (scheduleRealInfo.getStatus() != -1) {  
2380 - jcclc += tempJhlc;  
2381 - }  
2382 - }  
2383 - //主任务 放空班次属于营运  
2384 -// else if(scheduleRealInfo.getBcType().equals("venting")){  
2385 -// ksgl += tempJhlc;  
2386 -// }  
2387 - else {  
2388 - if (scheduleRealInfo.getStatus() != -1) {  
2389 - yygl += tempJhlc;  
2390 - }  
2391 - }  
2392 - } else {  
2393 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
2394 - while (it.hasNext()) {  
2395 - ChildTaskPlan childTaskPlan = it.next();  
2396 - if (childTaskPlan.getMileageType().equals("empty")) {  
2397 - if (childTaskPlan.isDestroy()) {  
2398 - remMileage += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();  
2399 - } else {  
2400 - ksgl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();  
2401 - }  
2402 - } else {  
2403 - if (childTaskPlan.isDestroy()) {  
2404 - remMileage += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();  
2405 - } else {  
2406 - yygl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();  
2407 - }  
2408 - }  
2409 - }  
2410 - }  
2411 - } 2914 + if(scheduleRealInfo.getjGh().equals(jName) && scheduleRealInfo.getClZbh().equals(clZbh)){
  2915 + if (fage) {
  2916 + //根据线路代码获取公司
  2917 + company=scheduleRealInfo.getGsBm();
  2918 + bCompany=scheduleRealInfo.getFgsBm();
  2919 + fage = false;
  2920 + }
  2921 + if (scheduleRealInfo != null) {
  2922 + //计划里程(主任务过滤掉临加班次),
  2923 + //烂班里程(主任务烂班),
  2924 + //临加里程(主任务临加),
  2925 + //计划班次,烂班班次,增加班次
  2926 + tempJhlc = scheduleRealInfo.getJhlc() == null ? 0 : scheduleRealInfo.getJhlc();
  2927 + if (scheduleRealInfo.isSflj()) {
  2928 + if(scheduleRealInfo.getStatus() == -1){
  2929 +// addMileage += tempJhlc;
  2930 + addMileage =Arith.add(addMileage, tempJhlc);
  2931 + }
  2932 + } else {
  2933 + if (!(scheduleRealInfo.getBcType().equals("in")
  2934 + || scheduleRealInfo.getBcType().equals("out"))) {
  2935 +// jhlc += tempJhlc;
  2936 + jhlc =Arith.add(jhlc,tempJhlc);
  2937 + }
  2938 +
  2939 + if (scheduleRealInfo.getStatus() == -1) {
  2940 +// remMileage += tempJhlc;
  2941 + remMileage =Arith.add(remMileage,tempJhlc);
  2942 + }
  2943 + }
  2944 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  2945 + //计算营运里程,空驶里程
  2946 + if (childTaskPlans.isEmpty()) {
  2947 + if (scheduleRealInfo.getBcType().equals("in") ||
  2948 + scheduleRealInfo.getBcType().equals("out")) {
  2949 + if (scheduleRealInfo.getStatus() != -1) {
  2950 +// jcclc += tempJhlc;
  2951 + jcclc=Arith.add(jcclc,tempJhlc);
  2952 + }
  2953 + }
  2954 + //主任务 放空班次属于营运
  2955 + // else if(scheduleRealInfo.getBcType().equals("venting")){
  2956 + // ksgl += tempJhlc;
  2957 + // }
  2958 + else {
  2959 + if (scheduleRealInfo.getStatus() != -1) {
  2960 +// yygl += tempJhlc;
  2961 + yygl=Arith.add(yygl,tempJhlc);
  2962 + }
  2963 + }
  2964 + } else {
  2965 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  2966 + while (it.hasNext()) {
  2967 + ChildTaskPlan childTaskPlan = it.next();
  2968 + if (childTaskPlan.getMileageType().equals("empty")) {
  2969 + if (childTaskPlan.isDestroy()) {
  2970 +// remMileage += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
  2971 + remMileage=Arith.add(remMileage,childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage());
  2972 + } else {
  2973 +// ksgl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
  2974 + ksgl += Arith.add(ksgl,childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage());
  2975 + }
  2976 + } else {
  2977 + if (childTaskPlan.isDestroy()) {
  2978 +// remMileage += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
  2979 + remMileage=Arith.add(remMileage,childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage());
  2980 +
  2981 + } else {
  2982 +// yygl += childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage();
  2983 + yygl=Arith.add(yygl,childTaskPlan.getMileage() == null ? 0 : childTaskPlan.getMileage());
  2984 +
  2985 + }
  2986 + }
  2987 + }
  2988 + }
  2989 + }
  2990 + }
2412 } 2991 }
  2992 + yesterdayDataList.get(x).put("company", company);
  2993 + yesterdayDataList.get(x).put("bCompany", bCompany);
  2994 + Double zgl=Arith.add(yygl,ksgl);
  2995 + yesterdayDataList.get(x).put("totalKilometers", Arith.add(zgl, jcclc));
2413 2996
2414 - yesterdayDataList.get(x).put("totalKilometers", yygl + ksgl + jcclc);  
2415 -  
2416 - }  
2417 -  
2418 - /* for(ScheduleRealInfo scheduleRealInfo:list){  
2419 - if(scheduleRealInfo != null){  
2420 - for(int i=0;i<yesterdayDataList.size();i++){  
2421 - if(scheduleRealInfo.getXlBm().equals(yesterdayDataList.get(i).get("xlBm")) && scheduleRealInfo.getClZbh().equals(yesterdayDataList.get(i).get("clZbh"))  
2422 - && scheduleRealInfo.getjGh().equals(yesterdayDataList.get(i).get("jGh"))){  
2423 - //根据线路代码获取公司  
2424 - Line li = lineRepository.findByLineCode(scheduleRealInfo.getXlBm());  
2425 - yesterdayDataList.get(i).put("company", li.getCompany());  
2426 - yesterdayDataList.get(i).put("bCompany", li.getBrancheCompany());  
2427 - //计算总公里  
2428 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
2429 - //如果没有子任务,里程就是已执行(Status=2);有子任务的,忽略主任务,子任务的烂班  
2430 - if(childTaskPlans.isEmpty()){  
2431 - if(scheduleRealInfo.getStatus() == 2){  
2432 - yesterdayDataList.get(i).put("totalKilometers", scheduleRealInfo.getJhlc()==null?0.0:scheduleRealInfo.getJhlc()+(double)(yesterdayDataList.get(i).get("totalKilometers")==null?0.0:yesterdayDataList.get(i).get("totalKilometers")));  
2433 - }  
2434 - }else{  
2435 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
2436 - while(it.hasNext()){  
2437 - ChildTaskPlan childTaskPlan = it.next();  
2438 - if(!childTaskPlan.isDestroy()){  
2439 - yesterdayDataList.get(i).put("totalKilometers", childTaskPlan.getMileage()==null?0.0:childTaskPlan.getMileage()+(double)(yesterdayDataList.get(i).get("totalKilometers")==null?0.0:yesterdayDataList.get(i).get("totalKilometers")));  
2440 - }  
2441 - }  
2442 - }  
2443 - }  
2444 - }  
2445 - }  
2446 - }*/ 2997 + }
  2998 + System.out.println();
2447 //增加顺序号 2999 //增加顺序号
2448 for (int i = 0; i < yesterdayDataList.size(); i++) { 3000 for (int i = 0; i < yesterdayDataList.size(); i++) {
2449 if (i == 0) { 3001 if (i == 0) {
@@ -3118,7 +3670,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3118,7 +3670,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3118 } 3670 }
3119 3671
3120 if (!c.isDestroy()) { 3672 if (!c.isDestroy()) {
3121 - sjlc += c.getMileage() == null ? 0 : c.getMileage(); 3673 + if(c.getMileageType().equals("service")){
  3674 + sjlc += c.getMileage() == null ? 0 : c.getMileage();
  3675 + }
3122 } 3676 }
3123 3677
3124 } 3678 }
@@ -3593,17 +4147,21 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3593,17 +4147,21 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3593 } 4147 }
3594 4148
3595 ScheduleRealInfo leftSch, rightSch = null; 4149 ScheduleRealInfo leftSch, rightSch = null;
3596 - boolean changeRealTime = true;  
3597 for (int i = 0; i < largeList.size(); i++) { 4150 for (int i = 0; i < largeList.size(); i++) {
3598 leftSch = largeList.get(i); 4151 leftSch = largeList.get(i);
3599 if (i < smallList.size()) { 4152 if (i < smallList.size()) {
3600 rightSch = smallList.get(i); 4153 rightSch = smallList.get(i);
3601 ts.add(rightSch); 4154 ts.add(rightSch);
3602 - } else  
3603 - changeRealTime = false; 4155 + } else{
  4156 + //不对称时多出来的
  4157 + lpChangeByLeft(leftSch, largeList.get(i - 1), type);
  4158 + ts.add(leftSch);
  4159 + cars.add(leftSch.getClZbh());
  4160 + continue;
  4161 + }
3604 4162
3605 //调换路牌 4163 //调换路牌
3606 - lpChange(leftSch, rightSch, type, changeRealTime); 4164 + lpChange(leftSch, rightSch, type);
3607 ts.add(leftSch); 4165 ts.add(leftSch);
3608 4166
3609 cars.add(leftSch.getClZbh()); 4167 cars.add(leftSch.getClZbh());
@@ -3639,19 +4197,38 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3639,19 +4197,38 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3639 } 4197 }
3640 4198
3641 @Override 4199 @Override
3642 - public void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type, boolean changeRealTime) { 4200 + public void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type) {
3643 LpData leftData = new LpData(leftSch); 4201 LpData leftData = new LpData(leftSch);
3644 LpData rightData = new LpData(rightSch); 4202 LpData rightData = new LpData(rightSch);
3645 4203
3646 - leftData.appendTo(rightSch, type, changeRealTime);  
3647 - rightData.appendTo(leftSch, type, changeRealTime); 4204 + leftData.appendTo(rightSch, type);
  4205 + rightData.appendTo(leftSch, type);
  4206 +
  4207 + if(type > 0){
  4208 + //更新车辆和班次映射信息
  4209 + dayOfSchedule.removeNbbm2SchMapp(leftSch, leftData.getNbbm());
  4210 + dayOfSchedule.removeNbbm2SchMapp(rightSch, rightData.getNbbm());
3648 4211
3649 - //更新车辆和班次映射信息  
3650 - dayOfSchedule.removeNbbm2SchMapp(leftSch, leftData.getNbbm());  
3651 - dayOfSchedule.removeNbbm2SchMapp(rightSch, rightData.getNbbm()); 4212 + dayOfSchedule.addNbbm2SchMapp(leftSch, rightData.getNbbm());
  4213 + dayOfSchedule.addNbbm2SchMapp(rightSch, leftData.getNbbm());
  4214 + }
  4215 + }
  4216 +
  4217 + /**
  4218 + * 更换左边班次的路牌,右边不变
  4219 + * @param leftSch
  4220 + * @param rightSch
  4221 + * @param type
  4222 + */
  4223 + public void lpChangeByLeft(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type) {
  4224 + LpData rightData = new LpData(rightSch);
3652 4225
3653 - dayOfSchedule.addNbbm2SchMapp(leftSch, rightData.getNbbm());  
3654 - dayOfSchedule.addNbbm2SchMapp(rightSch, leftData.getNbbm()); 4226 + rightData.appendTo(leftSch, type);
  4227 +
  4228 + if(type > 0){
  4229 + //更新车辆和班次映射信息
  4230 + dayOfSchedule.addNbbm2SchMapp(leftSch, rightData.getNbbm());
  4231 + }
3655 } 4232 }
3656 4233
3657 @Override 4234 @Override
src/main/java/com/bsth/service/schedule/rules/plan/PlanResult.java
1 -package com.bsth.service.schedule.rules.plan;  
2 -  
3 -import com.bsth.entity.schedule.SchedulePlanInfo;  
4 -  
5 -import java.util.ArrayList;  
6 -import java.util.List;  
7 -  
8 -/**  
9 - * 计划输出。  
10 - */  
11 -public class PlanResult {  
12 - private List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>();  
13 -  
14 - public PlanResult() {  
15 - }  
16 -  
17 - public void add(SchedulePlanInfo schedulePlanInfo) {  
18 - schedulePlanInfos.add(schedulePlanInfo);  
19 - }  
20 -  
21 - public List<SchedulePlanInfo> getSchedulePlanInfos() {  
22 - return schedulePlanInfos;  
23 - }  
24 -  
25 - public void setSchedulePlanInfos(List<SchedulePlanInfo> schedulePlanInfos) {  
26 - this.schedulePlanInfos = schedulePlanInfos;  
27 - }  
28 -} 1 +package com.bsth.service.schedule.rules.plan;
  2 +
  3 +import com.bsth.entity.schedule.SchedulePlanInfo;
  4 +
  5 +import java.util.ArrayList;
  6 +import java.util.List;
  7 +
  8 +/**
  9 + * 计划输出。
  10 + */
  11 +public class PlanResult {
  12 + private List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>();
  13 +
  14 + public PlanResult() {
  15 + }
  16 +
  17 + public void add(SchedulePlanInfo schedulePlanInfo) {
  18 + schedulePlanInfos.add(schedulePlanInfo);
  19 + }
  20 +
  21 + public List<SchedulePlanInfo> getSchedulePlanInfos() {
  22 + return schedulePlanInfos;
  23 + }
  24 +
  25 + public void setSchedulePlanInfos(List<SchedulePlanInfo> schedulePlanInfos) {
  26 + this.schedulePlanInfos = schedulePlanInfos;
  27 + }
  28 +}
src/main/java/com/bsth/service/schedule/rules/plan/readme.txt
1 -排班计划规则,构造计划明细输出  
2 -1、使用shiftloop.drl和ttinfo.drl的输出作为输入,进行规则计算 1 +排班计划规则,构造计划明细输出
  2 +1、使用shiftloop.drl和ttinfo.drl的输出作为输入,进行规则计算
3 2、计算后输出排班明细列表 3 2、计算后输出排班明细列表
4 \ No newline at end of file 4 \ No newline at end of file
src/main/java/com/bsth/util/Arith.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +public class Arith {
  6 + /**
  7 + * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
  8 + * 确的浮点数运算,包括加减乘除和四舍五入。
  9 + */
  10 + //默认除法运算精度
  11 + private static final int DEF_DIV_SCALE = 10;
  12 +
  13 + //这个类不能实例化
  14 + private Arith(){
  15 + }
  16 +
  17 + /**
  18 + * 提供精确的加法运算。
  19 + * @param v1 被加数
  20 + * @param v2 加数
  21 + * @return 两个参数的和
  22 + */
  23 + public static double add(double v1,double v2){
  24 + BigDecimal b1 = new BigDecimal(Double.toString(v1));
  25 + BigDecimal b2 = new BigDecimal(Double.toString(v2));
  26 + return b1.add(b2).doubleValue();
  27 + }
  28 +
  29 + /**
  30 + * 提供精确的减法运算。
  31 + * @param v1 被减数
  32 + * @param v2 减数
  33 + * @return 两个参数的差
  34 + */
  35 + public static double sub(double v1,double v2){
  36 + BigDecimal b1 = new BigDecimal(Double.toString(v1));
  37 + BigDecimal b2 = new BigDecimal(Double.toString(v2));
  38 + return b1.subtract(b2).doubleValue();
  39 + }
  40 +
  41 + /**
  42 + * 提供精确的乘法运算。
  43 + * @param v1 被乘数
  44 + * @param v2 乘数
  45 + * @return 两个参数的积
  46 + */
  47 + public static double mul(double v1,double v2){
  48 + BigDecimal b1 = new BigDecimal(Double.toString(v1));
  49 + BigDecimal b2 = new BigDecimal(Double.toString(v2));
  50 + return b1.multiply(b2).doubleValue();
  51 + }
  52 +
  53 + /**
  54 + * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
  55 + * 小数点以后10位,以后的数字四舍五入。
  56 + * @param v1 被除数
  57 + * @param v2 除数
  58 + * @return 两个参数的商
  59 + */
  60 + public static double div(double v1,double v2){
  61 + return div(v1,v2,DEF_DIV_SCALE);
  62 + }
  63 +
  64 + /**
  65 + * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
  66 + * 定精度,以后的数字四舍五入。
  67 + * @param v1 被除数
  68 + * @param v2 除数
  69 + * @param scale 表示表示需要精确到小数点以后几位。
  70 + * @return 两个参数的商
  71 + */
  72 + public static double div(double v1,double v2,int scale){
  73 + if(scale<0){
  74 + throw new IllegalArgumentException(
  75 + "The scale must be a positive integer or zero");
  76 + }
  77 + BigDecimal b1 = new BigDecimal(Double.toString(v1));
  78 + BigDecimal b2 = new BigDecimal(Double.toString(v2));
  79 + return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
  80 + }
  81 +
  82 + /**
  83 + * 提供精确的小数位四舍五入处理。
  84 + * @param v 需要四舍五入的数字
  85 + * @param scale 小数点后保留几位
  86 + * @return 四舍五入后的结果
  87 + */
  88 + public static double round(double v,int scale){
  89 + if(scale<0){
  90 + throw new IllegalArgumentException(
  91 + "The scale must be a positive integer or zero");
  92 + }
  93 + BigDecimal b = new BigDecimal(Double.toString(v));
  94 + BigDecimal one = new BigDecimal("1");
  95 + return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
  96 + }
  97 +
  98 + /**
  99 + * 提供精确的类型转换(Float)
  100 + * @param v 需要被转换的数字
  101 + * @return 返回转换结果
  102 + */
  103 + public static float convertsToFloat(double v){
  104 + BigDecimal b = new BigDecimal(v);
  105 + return b.floatValue();
  106 + }
  107 +
  108 + /**
  109 + * 提供精确的类型转换(Int)不进行四舍五入
  110 + * @param v 需要被转换的数字
  111 + * @return 返回转换结果
  112 + */
  113 + public static int convertsToInt(double v){
  114 + BigDecimal b = new BigDecimal(v);
  115 + return b.intValue();
  116 + }
  117 +
  118 + /**
  119 + * 提供精确的类型转换(Long)
  120 + * @param v 需要被转换的数字
  121 + * @return 返回转换结果
  122 + */
  123 + public static long convertsToLong(double v){
  124 + BigDecimal b = new BigDecimal(v);
  125 + return b.longValue();
  126 + }
  127 +
  128 + /**
  129 + * 返回两个数中大的一个值
  130 + * @param v1 需要被对比的第一个数
  131 + * @param v2 需要被对比的第二个数
  132 + * @return 返回两个数中大的一个值
  133 + */
  134 + public static double returnMax(double v1,double v2){
  135 + BigDecimal b1 = new BigDecimal(v1);
  136 + BigDecimal b2 = new BigDecimal(v2);
  137 + return b1.max(b2).doubleValue();
  138 + }
  139 +
  140 + /**
  141 + * 返回两个数中小的一个值
  142 + * @param v1 需要被对比的第一个数
  143 + * @param v2 需要被对比的第二个数
  144 + * @return 返回两个数中小的一个值
  145 + */
  146 + public static double returnMin(double v1,double v2){
  147 + BigDecimal b1 = new BigDecimal(v1);
  148 + BigDecimal b2 = new BigDecimal(v2);
  149 + return b1.min(b2).doubleValue();
  150 + }
  151 +
  152 + /**
  153 + * 精确对比两个数字
  154 + * @param v1 需要被对比的第一个数
  155 + * @param v2 需要被对比的第二个数
  156 + * @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1
  157 + */
  158 + public static int compareTo(double v1,double v2){
  159 + BigDecimal b1 = new BigDecimal(v1);
  160 + BigDecimal b2 = new BigDecimal(v2);
  161 + return b1.compareTo(b2);
  162 + }
  163 +}
src/main/resources/rules/plan.drl
@@ -356,3 +356,4 @@ end @@ -356,3 +356,4 @@ end
356 356
357 357
358 358
  359 +
src/main/resources/rules/shiftloop_fb.drl
1 -package com.bsth.service.schedule.shiftloop;  
2 -  
3 -import org.joda.time.*;  
4 -import java.util.*;  
5 -  
6 -import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input;  
7 -import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;  
8 -import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output;  
9 -import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;  
10 -  
11 -import org.slf4j.Logger;  
12 -  
13 -global Logger log;  
14 -  
15 -/*  
16 - 存在(翻班格式)  
17 -*/  
18 -  
19 -//------------------------- 第一阶段、计算规则准备数据(天数) ----------------------------//  
20 -  
21 -declare Calcu_days_result  
22 - ruleId : String // 规则Id  
23 - qyrq_days : Integer // 开始日期离启用日期的天数  
24 - sdays : Integer // 总共需要排班的天数  
25 - calcu_start_date : DateTime // 开始计算日期  
26 - calcu_end_date : DateTime // 结束计算日期  
27 -end  
28 -  
29 -/*  
30 - 计算启用日期,开始计算日期,结束计算日期,相差天数  
31 - 1、规则启用日期小于开始计算日期  
32 - 2、规则启用日期大于等于开始日期,小于等于结束日期  
33 -*/  
34 -rule "calcu_days_1"  
35 - salience 100  
36 - when  
37 - ScheduleCalcuParam_input(  
38 - fromDate.isBefore(toDate) || fromDate.isEqual(toDate),  
39 - $fromDate : fromDate,  
40 - $toDate : toDate  
41 - )  
42 - ScheduleRule_input($ruleId : ruleId, $qyrq : qyrq)  
43 - eval($qyrq.isBefore($fromDate))  
44 - then  
45 - // 构造Calcu_days_result对象,进行下一阶段计算  
46 - Calcu_days_result cdr = new Calcu_days_result();  
47 - cdr.setRuleId($ruleId);  
48 - Period p1 = new Period($qyrq, $fromDate, PeriodType.days());  
49 - cdr.setQyrq_days(p1.getDays());  
50 - Period p2 = new Period($fromDate, $toDate, PeriodType.days());  
51 - cdr.setSdays(p2.getDays() + 1);  
52 - cdr.setCalcu_start_date($fromDate);  
53 - cdr.setCalcu_end_date($toDate);  
54 -  
55 - log.info("开始日期离启用日期的天数 qyrq_days={}", p1.getDays());  
56 - log.info("总共需要排班的天数 sdays={}", (p2.getDays() + 1));  
57 -  
58 - insert(cdr); // 插入fact数据,进入下一个阶段  
59 -end  
60 -  
61 -rule "calcu_days_2"  
62 - salience 100  
63 - when  
64 - ScheduleCalcuParam_input(  
65 - fromDate.isBefore(toDate) || fromDate.isEqual(toDate),  
66 - $fromDate : fromDate,  
67 - $toDate : toDate  
68 - )  
69 - ScheduleRule_input($ruleId : ruleId, $qyrq : qyrq)  
70 - eval((!$qyrq.isBefore($fromDate)) && (!$qyrq.isAfter($toDate)))  
71 - then  
72 - // 构造Calcu_days_result对象,进行下一阶段计算  
73 - Calcu_days_result cdr = new Calcu_days_result();  
74 - cdr.setRuleId($ruleId);  
75 - cdr.setQyrq_days(0);  
76 - Period p2 = new Period($qyrq, $toDate, PeriodType.days());  
77 - cdr.setSdays(Integer.valueOf(p2.getDays() + 1));  
78 - cdr.setCalcu_start_date($qyrq);  
79 - cdr.setCalcu_end_date($toDate);  
80 -  
81 - log.info("开始日期离启用日期的天数 qyrq_days=0");  
82 - log.info("总共需要排班的天数 sdays={}", (p2.getDays() + 1));  
83 -  
84 - insert(cdr); // 插入fact数据,进入下一个阶段  
85 -end  
86 -  
87 -//------------------------- 第二阶段、计算规则准备数据2(起始索引) ----------------------------//  
88 -  
89 -//----------------------- 路牌范围循环计算 ------------------------//  
90 -  
91 -declare Calcu_guideboard_index_result  
92 - ruleId : String // 规则Id  
93 - calcu_index : Integer // 计算之后的起始索引  
94 -end  
95 -  
96 -// 启用日期等于开始日期  
97 -rule "calcu_guideboard_index_qyrq_eq_startrq"  
98 - when  
99 - $calcu_days_result : Calcu_days_result(  
100 - qyrq_days == 0,  
101 - $ruleId: ruleId  
102 - )  
103 - $scheduleRule_input : ScheduleRule_input(  
104 - ruleId == $ruleId,  
105 - $oindex : startGbdIndex  
106 - )  
107 - then  
108 - Calcu_guideboard_index_result cgir = new Calcu_guideboard_index_result();  
109 - cgir.setRuleId($ruleId);  
110 - cgir.setCalcu_index($oindex);  
111 -  
112 - log.info("calcu_guideboard_index_qyrq_eq_startrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());  
113 -  
114 - insert(cgir);  
115 -end  
116 -  
117 -// 开始日期大于启用日期  
118 -rule "calcu_guideboard_index_startrq_gt_qyrq"  
119 - when  
120 - $calcu_days_result : Calcu_days_result(  
121 - qyrq_days > 0,  
122 - $ruleId: ruleId, $qyrq_days: qyrq_days,  
123 - $calcu_start_date: calcu_start_date  
124 - )  
125 - $scheduleRule_input : ScheduleRule_input(  
126 - ruleId == $ruleId,  
127 - $qyrq: qyrq,  
128 - $rangesize : guideboardIds.size(),  
129 - $oindex : startGbdIndex,  
130 - $weekdays: weekdays  
131 - )  
132 - then  
133 - // 开始时间  
134 - DateTime initDate = $qyrq;  
135 - int index = $oindex;  
136 - int resultIndex = index;  
137 -  
138 - while (!initDate.isAfter($calcu_start_date)) {  
139 - if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {  
140 - resultIndex = index;  
141 - index = (index + 1) % $rangesize;  
142 - }  
143 - initDate = initDate.plusDays(1);  
144 - }  
145 -  
146 - Calcu_guideboard_index_result cgir = new Calcu_guideboard_index_result();  
147 - cgir.setRuleId($ruleId);  
148 - cgir.setCalcu_index(resultIndex);  
149 -  
150 - log.info("calcu_guideboard_index_startrq_gt_qyrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());  
151 -  
152 - insert(cgir);  
153 -end  
154 -  
155 -//----------------------- 人员范围循环计算 ------------------------//  
156 -  
157 -declare Calcu_employee_index_result  
158 - ruleId : String // 规则Id  
159 - calcu_index : Integer // 计算之后的起始索引  
160 -end  
161 -  
162 -// 启用日期等于开始日期  
163 -rule "calcu_employee_index_qyrq_eq_startrq"  
164 - when  
165 - $calcu_days_result : Calcu_days_result(  
166 - qyrq_days == 0,  
167 - $ruleId: ruleId)  
168 - $scheduleRule_input : ScheduleRule_input(  
169 - ruleId == $ruleId,  
170 - $oindex : startEIndex)  
171 - then  
172 - Calcu_employee_index_result cgir = new Calcu_employee_index_result();  
173 - cgir.setRuleId($ruleId);  
174 - cgir.setCalcu_index($oindex);  
175 -  
176 - log.info("calcu_employee_index_qyrq_eq_startrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());  
177 -  
178 - insert(cgir);  
179 -end  
180 -  
181 -// 开始日期大于启用日期  
182 -rule "calcu_employee_index_startrq_gt_qyrq"  
183 - when  
184 - $calcu_days_result : Calcu_days_result(  
185 - qyrq_days > 0,  
186 - $ruleId: ruleId, $qyrq_days: qyrq_days,  
187 - $calcu_start_date: calcu_start_date  
188 - )  
189 - $scheduleRule_input : ScheduleRule_input(  
190 - ruleId == $ruleId,  
191 - $qyrq: qyrq,  
192 - $rangesize : employeeConfigIds.size(),  
193 - $oindex : startEIndex,  
194 - $weekdays: weekdays  
195 - )  
196 - then  
197 - // 开始时间  
198 - DateTime initDate = $qyrq;  
199 - int index = $oindex;  
200 - int resultIndex = index;  
201 -  
202 - while (!initDate.isAfter($calcu_start_date)) {  
203 - if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {  
204 - resultIndex = index;  
205 - index = (index + 1) % $rangesize;  
206 - }  
207 - initDate = initDate.plusDays(1);  
208 - }  
209 -  
210 - Calcu_employee_index_result cgir = new Calcu_employee_index_result();  
211 - cgir.setRuleId($ruleId);  
212 - cgir.setCalcu_index(resultIndex);  
213 -  
214 - log.info("calcu_employee_index_startrq_gt_qyrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());  
215 -  
216 - insert(cgir);  
217 -  
218 -end  
219 -  
220 -//------------------------- 第三阶段、循环计算 ------------------------//  
221 -  
222 -//----------------------- 路牌范围循环计算 ------------------------//  
223 -declare loop_guideboard_result  
224 - ruleId : String // 规则id  
225 - go_list : List // 路牌循环的列表  
226 -end  
227 -  
228 -// 循环路牌计算  
229 -rule "Calcu_loop_guideboard_result"  
230 - when  
231 - Calcu_days_result(  
232 - $ruleId: ruleId,  
233 - $startDate : calcu_start_date,  
234 - $calcu_end_date: calcu_end_date  
235 - )  
236 - $ruleData : ScheduleRule_input(  
237 - ruleId == $ruleId,  
238 - $rangesize : guideboardIds.size(),  
239 - $weekdays: weekdays  
240 - )  
241 - $indexData : Calcu_guideboard_index_result(  
242 - ruleId == $ruleId  
243 - )  
244 - then  
245 - DateTime initDate = $startDate; // 开始时间  
246 - DateTime endDate = $calcu_end_date; // 结束实际  
247 - List<ScheduleResult_output> scheduleResult_outputs =  
248 - new ArrayList<ScheduleResult_output>();  
249 -  
250 - int i = $indexData.getCalcu_index();  
251 - if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue() == false) {  
252 - i = (i + 1) % $rangesize;  
253 - }  
254 -  
255 - while (!initDate.isAfter(endDate)) {  
256 - if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {  
257 - ScheduleResult_output ro = new ScheduleResult_output();  
258 - ro.setRuleId($ruleId);  
259 - ro.setSd(initDate);  
260 - ro.setGuideboardId($ruleData.getGuideboardIds().get(i));  
261 - ro.setCarConfigId($ruleData.getCarConfigId());  
262 - scheduleResult_outputs.add(ro);  
263 -  
264 - i = (i + 1) % $rangesize;  
265 - }  
266 -  
267 - initDate = initDate.plusDays(1);  
268 - }  
269 -  
270 - loop_guideboard_result clgr = new loop_guideboard_result();  
271 - clgr.setRuleId($ruleId);  
272 - clgr.setGo_list(scheduleResult_outputs);  
273 -  
274 - log.info(String.valueOf(scheduleResult_outputs.size()));  
275 -  
276 - insert(clgr);  
277 -  
278 -end  
279 -  
280 -//----------------------- 人员范围循环计算 ------------------------//  
281 -declare loop_employee_result  
282 - ruleId : String // 规则id  
283 - eo_list : List // 人员循环的列表  
284 -end  
285 -  
286 -// 循环人员计算  
287 -rule "Calcu_loop_employee_result"  
288 - when  
289 - Calcu_days_result(  
290 - $ruleId: ruleId,  
291 - $startDate : calcu_start_date,  
292 - $calcu_end_date: calcu_end_date  
293 - )  
294 - $ruleData : ScheduleRule_input(  
295 - ruleId == $ruleId,  
296 - $rangesize : employeeConfigIds.size(),  
297 - $weekdays: weekdays  
298 - )  
299 - $indexData : Calcu_employee_index_result(  
300 - ruleId == $ruleId  
301 - )  
302 - then  
303 - DateTime initDate = $startDate; // 开始时间  
304 - DateTime endDate = $calcu_end_date; // 结束实际  
305 - List<ScheduleResult_output> scheduleResult_outputs =  
306 - new ArrayList<ScheduleResult_output>();  
307 -  
308 - int i = $indexData.getCalcu_index();  
309 - if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue() == false) {  
310 - i = (i + 1) % $rangesize;  
311 - }  
312 -  
313 - while (!initDate.isAfter(endDate)) {  
314 - if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {  
315 - ScheduleResult_output ro = new ScheduleResult_output();  
316 - ro.setRuleId($ruleId);  
317 - ro.setSd(initDate);  
318 - ro.setEmployeeConfigId($ruleData.getEmployeeConfigIds().get(i));  
319 - ro.setCarConfigId($ruleData.getCarConfigId());  
320 - scheduleResult_outputs.add(ro);  
321 -  
322 - i = (i + 1) % $rangesize;  
323 - }  
324 -  
325 - initDate = initDate.plusDays(1);  
326 - }  
327 -  
328 - loop_employee_result clgr = new loop_employee_result();  
329 - clgr.setRuleId($ruleId);  
330 - clgr.setEo_list(scheduleResult_outputs);  
331 -  
332 - log.info(String.valueOf(scheduleResult_outputs.size()));  
333 -  
334 - insert(clgr);  
335 -end  
336 -  
337 -//------------------------- 第四阶段、范围组循环计算 ----------------------------//  
338 -  
339 -global ScheduleResults_output scheduleResult;  
340 -  
341 -rule "output"  
342 - when  
343 - loop_guideboard_result(  
344 - go_list.size() > 0,  
345 - $ruleId : ruleId, $go_list : go_list  
346 - )  
347 - loop_employee_result(  
348 - ruleId == $ruleId,  
349 - eo_list.size() == $go_list.size(),  
350 - $eo_list : eo_list  
351 - )  
352 - then  
353 - for (int i = 0; i < $go_list.size(); i++) {  
354 - ScheduleResult_output go = (ScheduleResult_output) $go_list.get(i);  
355 - ScheduleResult_output eo = (ScheduleResult_output) $eo_list.get(i);  
356 - go.setEmployeeConfigId(eo.getEmployeeConfigId());  
357 - scheduleResult.getResults().add(go);  
358 - }  
359 -  
360 -end  
361 -  
362 -  
363 -  
364 -  
365 -  
366 -  
367 -  
368 -  
369 -  
370 -  
371 -  
372 -  
373 -  
374 -  
375 -  
376 - 1 +package com.bsth.service.schedule.shiftloop;
  2 +
  3 +import org.joda.time.*;
  4 +import java.util.*;
  5 +
  6 +import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input;
  7 +import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;
  8 +import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output;
  9 +import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;
  10 +
  11 +import org.slf4j.Logger;
  12 +
  13 +global Logger log;
  14 +
  15 +/*
  16 + 存在(翻班格式)
  17 +*/
  18 +
  19 +//------------------------- 第一阶段、计算规则准备数据(天数) ----------------------------//
  20 +
  21 +declare Calcu_days_result
  22 + ruleId : String // 规则Id
  23 + qyrq_days : Integer // 开始日期离启用日期的天数
  24 + sdays : Integer // 总共需要排班的天数
  25 + calcu_start_date : DateTime // 开始计算日期
  26 + calcu_end_date : DateTime // 结束计算日期
  27 +end
  28 +
  29 +/*
  30 + 计算启用日期,开始计算日期,结束计算日期,相差天数
  31 + 1、规则启用日期小于开始计算日期
  32 + 2、规则启用日期大于等于开始日期,小于等于结束日期
  33 +*/
  34 +rule "calcu_days_1"
  35 + salience 100
  36 + when
  37 + ScheduleCalcuParam_input(
  38 + fromDate.isBefore(toDate) || fromDate.isEqual(toDate),
  39 + $fromDate : fromDate,
  40 + $toDate : toDate
  41 + )
  42 + ScheduleRule_input($ruleId : ruleId, $qyrq : qyrq)
  43 + eval($qyrq.isBefore($fromDate))
  44 + then
  45 + // 构造Calcu_days_result对象,进行下一阶段计算
  46 + Calcu_days_result cdr = new Calcu_days_result();
  47 + cdr.setRuleId($ruleId);
  48 + Period p1 = new Period($qyrq, $fromDate, PeriodType.days());
  49 + cdr.setQyrq_days(p1.getDays());
  50 + Period p2 = new Period($fromDate, $toDate, PeriodType.days());
  51 + cdr.setSdays(p2.getDays() + 1);
  52 + cdr.setCalcu_start_date($fromDate);
  53 + cdr.setCalcu_end_date($toDate);
  54 +
  55 + log.info("开始日期离启用日期的天数 qyrq_days={}", p1.getDays());
  56 + log.info("总共需要排班的天数 sdays={}", (p2.getDays() + 1));
  57 +
  58 + insert(cdr); // 插入fact数据,进入下一个阶段
  59 +end
  60 +
  61 +rule "calcu_days_2"
  62 + salience 100
  63 + when
  64 + ScheduleCalcuParam_input(
  65 + fromDate.isBefore(toDate) || fromDate.isEqual(toDate),
  66 + $fromDate : fromDate,
  67 + $toDate : toDate
  68 + )
  69 + ScheduleRule_input($ruleId : ruleId, $qyrq : qyrq)
  70 + eval((!$qyrq.isBefore($fromDate)) && (!$qyrq.isAfter($toDate)))
  71 + then
  72 + // 构造Calcu_days_result对象,进行下一阶段计算
  73 + Calcu_days_result cdr = new Calcu_days_result();
  74 + cdr.setRuleId($ruleId);
  75 + cdr.setQyrq_days(0);
  76 + Period p2 = new Period($qyrq, $toDate, PeriodType.days());
  77 + cdr.setSdays(Integer.valueOf(p2.getDays() + 1));
  78 + cdr.setCalcu_start_date($qyrq);
  79 + cdr.setCalcu_end_date($toDate);
  80 +
  81 + log.info("开始日期离启用日期的天数 qyrq_days=0");
  82 + log.info("总共需要排班的天数 sdays={}", (p2.getDays() + 1));
  83 +
  84 + insert(cdr); // 插入fact数据,进入下一个阶段
  85 +end
  86 +
  87 +//------------------------- 第二阶段、计算规则准备数据2(起始索引) ----------------------------//
  88 +
  89 +//----------------------- 路牌范围循环计算 ------------------------//
  90 +
  91 +declare Calcu_guideboard_index_result
  92 + ruleId : String // 规则Id
  93 + calcu_index : Integer // 计算之后的起始索引
  94 +end
  95 +
  96 +// 启用日期等于开始日期
  97 +rule "calcu_guideboard_index_qyrq_eq_startrq"
  98 + when
  99 + $calcu_days_result : Calcu_days_result(
  100 + qyrq_days == 0,
  101 + $ruleId: ruleId
  102 + )
  103 + $scheduleRule_input : ScheduleRule_input(
  104 + ruleId == $ruleId,
  105 + $oindex : startGbdIndex
  106 + )
  107 + then
  108 + Calcu_guideboard_index_result cgir = new Calcu_guideboard_index_result();
  109 + cgir.setRuleId($ruleId);
  110 + cgir.setCalcu_index($oindex);
  111 +
  112 + log.info("calcu_guideboard_index_qyrq_eq_startrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());
  113 +
  114 + insert(cgir);
  115 +end
  116 +
  117 +// 开始日期大于启用日期
  118 +rule "calcu_guideboard_index_startrq_gt_qyrq"
  119 + when
  120 + $calcu_days_result : Calcu_days_result(
  121 + qyrq_days > 0,
  122 + $ruleId: ruleId, $qyrq_days: qyrq_days,
  123 + $calcu_start_date: calcu_start_date
  124 + )
  125 + $scheduleRule_input : ScheduleRule_input(
  126 + ruleId == $ruleId,
  127 + $qyrq: qyrq,
  128 + $rangesize : guideboardIds.size(),
  129 + $oindex : startGbdIndex,
  130 + $weekdays: weekdays
  131 + )
  132 + then
  133 + // 开始时间
  134 + DateTime initDate = $qyrq;
  135 + int index = $oindex;
  136 + int resultIndex = index;
  137 +
  138 + while (!initDate.isAfter($calcu_start_date)) {
  139 + if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {
  140 + resultIndex = index;
  141 + index = (index + 1) % $rangesize;
  142 + }
  143 + initDate = initDate.plusDays(1);
  144 + }
  145 +
  146 + Calcu_guideboard_index_result cgir = new Calcu_guideboard_index_result();
  147 + cgir.setRuleId($ruleId);
  148 + cgir.setCalcu_index(resultIndex);
  149 +
  150 + log.info("calcu_guideboard_index_startrq_gt_qyrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());
  151 +
  152 + insert(cgir);
  153 +end
  154 +
  155 +//----------------------- 人员范围循环计算 ------------------------//
  156 +
  157 +declare Calcu_employee_index_result
  158 + ruleId : String // 规则Id
  159 + calcu_index : Integer // 计算之后的起始索引
  160 +end
  161 +
  162 +// 启用日期等于开始日期
  163 +rule "calcu_employee_index_qyrq_eq_startrq"
  164 + when
  165 + $calcu_days_result : Calcu_days_result(
  166 + qyrq_days == 0,
  167 + $ruleId: ruleId)
  168 + $scheduleRule_input : ScheduleRule_input(
  169 + ruleId == $ruleId,
  170 + $oindex : startEIndex)
  171 + then
  172 + Calcu_employee_index_result cgir = new Calcu_employee_index_result();
  173 + cgir.setRuleId($ruleId);
  174 + cgir.setCalcu_index($oindex);
  175 +
  176 + log.info("calcu_employee_index_qyrq_eq_startrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());
  177 +
  178 + insert(cgir);
  179 +end
  180 +
  181 +// 开始日期大于启用日期
  182 +rule "calcu_employee_index_startrq_gt_qyrq"
  183 + when
  184 + $calcu_days_result : Calcu_days_result(
  185 + qyrq_days > 0,
  186 + $ruleId: ruleId, $qyrq_days: qyrq_days,
  187 + $calcu_start_date: calcu_start_date
  188 + )
  189 + $scheduleRule_input : ScheduleRule_input(
  190 + ruleId == $ruleId,
  191 + $qyrq: qyrq,
  192 + $rangesize : employeeConfigIds.size(),
  193 + $oindex : startEIndex,
  194 + $weekdays: weekdays
  195 + )
  196 + then
  197 + // 开始时间
  198 + DateTime initDate = $qyrq;
  199 + int index = $oindex;
  200 + int resultIndex = index;
  201 +
  202 + while (!initDate.isAfter($calcu_start_date)) {
  203 + if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {
  204 + resultIndex = index;
  205 + index = (index + 1) % $rangesize;
  206 + }
  207 + initDate = initDate.plusDays(1);
  208 + }
  209 +
  210 + Calcu_employee_index_result cgir = new Calcu_employee_index_result();
  211 + cgir.setRuleId($ruleId);
  212 + cgir.setCalcu_index(resultIndex);
  213 +
  214 + log.info("calcu_employee_index_startrq_gt_qyrq ruleId={}, calcu_index={}", $ruleId, cgir.getCalcu_index());
  215 +
  216 + insert(cgir);
  217 +
  218 +end
  219 +
  220 +//------------------------- 第三阶段、循环计算 ------------------------//
  221 +
  222 +//----------------------- 路牌范围循环计算 ------------------------//
  223 +declare loop_guideboard_result
  224 + ruleId : String // 规则id
  225 + go_list : List // 路牌循环的列表
  226 +end
  227 +
  228 +// 循环路牌计算
  229 +rule "Calcu_loop_guideboard_result"
  230 + when
  231 + Calcu_days_result(
  232 + $ruleId: ruleId,
  233 + $startDate : calcu_start_date,
  234 + $calcu_end_date: calcu_end_date
  235 + )
  236 + $ruleData : ScheduleRule_input(
  237 + ruleId == $ruleId,
  238 + $rangesize : guideboardIds.size(),
  239 + $weekdays: weekdays
  240 + )
  241 + $indexData : Calcu_guideboard_index_result(
  242 + ruleId == $ruleId
  243 + )
  244 + then
  245 + DateTime initDate = $startDate; // 开始时间
  246 + DateTime endDate = $calcu_end_date; // 结束实际
  247 + List<ScheduleResult_output> scheduleResult_outputs =
  248 + new ArrayList<ScheduleResult_output>();
  249 +
  250 + int i = $indexData.getCalcu_index();
  251 + if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue() == false) {
  252 + i = (i + 1) % $rangesize;
  253 + }
  254 +
  255 + while (!initDate.isAfter(endDate)) {
  256 + if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {
  257 + ScheduleResult_output ro = new ScheduleResult_output();
  258 + ro.setRuleId($ruleId);
  259 + ro.setSd(initDate);
  260 + ro.setGuideboardId($ruleData.getGuideboardIds().get(i));
  261 + ro.setCarConfigId($ruleData.getCarConfigId());
  262 + scheduleResult_outputs.add(ro);
  263 +
  264 + i = (i + 1) % $rangesize;
  265 + }
  266 +
  267 + initDate = initDate.plusDays(1);
  268 + }
  269 +
  270 + loop_guideboard_result clgr = new loop_guideboard_result();
  271 + clgr.setRuleId($ruleId);
  272 + clgr.setGo_list(scheduleResult_outputs);
  273 +
  274 + log.info(String.valueOf(scheduleResult_outputs.size()));
  275 +
  276 + insert(clgr);
  277 +
  278 +end
  279 +
  280 +//----------------------- 人员范围循环计算 ------------------------//
  281 +declare loop_employee_result
  282 + ruleId : String // 规则id
  283 + eo_list : List // 人员循环的列表
  284 +end
  285 +
  286 +// 循环人员计算
  287 +rule "Calcu_loop_employee_result"
  288 + when
  289 + Calcu_days_result(
  290 + $ruleId: ruleId,
  291 + $startDate : calcu_start_date,
  292 + $calcu_end_date: calcu_end_date
  293 + )
  294 + $ruleData : ScheduleRule_input(
  295 + ruleId == $ruleId,
  296 + $rangesize : employeeConfigIds.size(),
  297 + $weekdays: weekdays
  298 + )
  299 + $indexData : Calcu_employee_index_result(
  300 + ruleId == $ruleId
  301 + )
  302 + then
  303 + DateTime initDate = $startDate; // 开始时间
  304 + DateTime endDate = $calcu_end_date; // 结束实际
  305 + List<ScheduleResult_output> scheduleResult_outputs =
  306 + new ArrayList<ScheduleResult_output>();
  307 +
  308 + int i = $indexData.getCalcu_index();
  309 + if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue() == false) {
  310 + i = (i + 1) % $rangesize;
  311 + }
  312 +
  313 + while (!initDate.isAfter(endDate)) {
  314 + if (((Boolean) $weekdays.get(initDate.getDayOfWeek() - 1)).booleanValue()) {
  315 + ScheduleResult_output ro = new ScheduleResult_output();
  316 + ro.setRuleId($ruleId);
  317 + ro.setSd(initDate);
  318 + ro.setEmployeeConfigId($ruleData.getEmployeeConfigIds().get(i));
  319 + ro.setCarConfigId($ruleData.getCarConfigId());
  320 + scheduleResult_outputs.add(ro);
  321 +
  322 + i = (i + 1) % $rangesize;
  323 + }
  324 +
  325 + initDate = initDate.plusDays(1);
  326 + }
  327 +
  328 + loop_employee_result clgr = new loop_employee_result();
  329 + clgr.setRuleId($ruleId);
  330 + clgr.setEo_list(scheduleResult_outputs);
  331 +
  332 + log.info(String.valueOf(scheduleResult_outputs.size()));
  333 +
  334 + insert(clgr);
  335 +end
  336 +
  337 +//------------------------- 第四阶段、范围组循环计算 ----------------------------//
  338 +
  339 +global ScheduleResults_output scheduleResult;
  340 +
  341 +rule "output"
  342 + when
  343 + loop_guideboard_result(
  344 + go_list.size() > 0,
  345 + $ruleId : ruleId, $go_list : go_list
  346 + )
  347 + loop_employee_result(
  348 + ruleId == $ruleId,
  349 + eo_list.size() == $go_list.size(),
  350 + $eo_list : eo_list
  351 + )
  352 + then
  353 + for (int i = 0; i < $go_list.size(); i++) {
  354 + ScheduleResult_output go = (ScheduleResult_output) $go_list.get(i);
  355 + ScheduleResult_output eo = (ScheduleResult_output) $eo_list.get(i);
  356 + go.setEmployeeConfigId(eo.getEmployeeConfigId());
  357 + scheduleResult.getResults().add(go);
  358 + }
  359 +
  360 +end
  361 +
  362 +
  363 +
  364 +
  365 +
  366 +
  367 +
  368 +
  369 +
  370 +
  371 +
  372 +
  373 +
  374 +
  375 +
  376 +
src/main/resources/static/pages/forms/statement/scheduleDaily.html
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 </div> 37 </div>
38 <div class="form-group"> 38 <div class="form-group">
39 <input class="btn btn-default" type="button" id="query" value="查询"/> 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 <input class="btn btn-default" type="button" id="export" value="导出"/> 41 <input class="btn btn-default" type="button" id="export" value="导出"/>
42 </div> 42 </div>
43 </form> 43 </form>
@@ -345,7 +345,7 @@ @@ -345,7 +345,7 @@
345 }); 345 });
346 346
347 //按月查询 347 //按月查询
348 - $("#month").on('click',function(){ 348 + /* $("#month").on('click',function(){
349 line = $("#line").val(); 349 line = $("#line").val();
350 xlName = $("#select2-line-container").html(); 350 xlName = $("#select2-line-container").html();
351 date = $("#date").val(); 351 date = $("#date").val();
@@ -363,7 +363,7 @@ @@ -363,7 +363,7 @@
363 $('#forms .scheduleDaily_2').html(""); 363 $('#forms .scheduleDaily_2').html("");
364 $('#forms .scheduleDaily_3').html(""); 364 $('#forms .scheduleDaily_3').html("");
365 365
366 - }); 366 + }); */
367 367
368 $("#export").on("click",function(){ 368 $("#export").on("click",function(){
369 var params = {}; 369 var params = {};
src/main/resources/static/pages/forms/statement/statisticsDaily.html
@@ -32,9 +32,13 @@ @@ -32,9 +32,13 @@
32 <select class="form-control" name="line" id="line" style="width: 180px;"></select> 32 <select class="form-control" name="line" id="line" style="width: 180px;"></select>
33 </div> 33 </div>
34 <div style="display: inline-block;margin-left: 15px;"> 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 <input class="form-control" type="text" id="date" style="width: 180px;"/> 36 <input class="form-control" type="text" id="date" style="width: 180px;"/>
37 </div> 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 <div class="form-group"> 42 <div class="form-group">
39 <input class="btn btn-default" type="button" id="query" value="查询"/> 43 <input class="btn btn-default" type="button" id="query" value="查询"/>
40 <input class="btn btn-default" type="button" id="export" value="导出"/> 44 <input class="btn btn-default" type="button" id="export" value="导出"/>
@@ -124,6 +128,22 @@ @@ -124,6 +128,22 @@
124 format : 'YYYY-MM-DD', 128 format : 'YYYY-MM-DD',
125 locale : 'zh-cn' 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 $.get('/basic/lineCode2Name',function(result){ 147 $.get('/basic/lineCode2Name',function(result){
128 var data=[]; 148 var data=[];
129 149
@@ -139,24 +159,31 @@ @@ -139,24 +159,31 @@
139 var line =""; 159 var line ="";
140 var xlName =""; 160 var xlName ="";
141 var date = ""; 161 var date = "";
  162 + var date2 ="";
142 $("#query").on("click",function(){ 163 $("#query").on("click",function(){
143 line = $("#line").val(); 164 line = $("#line").val();
144 xlName = $("#select2-line-container").html(); 165 xlName = $("#select2-line-container").html();
145 date = $("#date").val(); 166 date = $("#date").val();
  167 + date2 =$("#date2").val();
146 if(line=="请选择"){ 168 if(line=="请选择"){
147 line=""; 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 $("#export").on("click",function(){ 189 $("#export").on("click",function(){
src/main/resources/static/pages/forms/statement/waybill.html
@@ -238,13 +238,13 @@ @@ -238,13 +238,13 @@
238 // 把渲染好的模版html文本追加到表格中 238 // 把渲染好的模版html文本追加到表格中
239 $('#forms .ludan_1').html(ludan_1); 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 getTime(result); 242 getTime(result);
243 var ludan_2 = template('ludan_2',{list:result}); 243 var ludan_2 = template('ludan_2',{list:result});
244 // 把渲染好的模版html文本追加到表格中 244 // 把渲染好的模版html文本追加到表格中
245 $('#forms .ludan_2').html(ludan_2); 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 var ludan_3 = template('ludan_3',result); 248 var ludan_3 = template('ludan_3',result);
249 $('#forms .ludan_3').html(ludan_3); 249 $('#forms .ludan_3').html(ludan_3);
250 }); 250 });
@@ -254,7 +254,7 @@ @@ -254,7 +254,7 @@
254 if(params.length < 1){ 254 if(params.length < 1){
255 return; 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 window.open("/downloadFile/download?fileName="+date+"-"+jName+"-"+params[1]+"-"+params[2]+"-行车路单"); 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,13 +181,13 @@
181 $('#forms .ludan_1').html(ludan_1); 181 $('#forms .ludan_1').html(ludan_1);
182 //$('#forms .ludan_4').html(ludan_4); 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 getTime(result); 185 getTime(result);
186 var ludan_2 = template('ludan_2',{list:result}); 186 var ludan_2 = template('ludan_2',{list:result});
187 // 把渲染好的模版html文本追加到表格中 187 // 把渲染好的模版html文本追加到表格中
188 $('#forms .ludan_2').html(ludan_2); 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 console.log(result); 191 console.log(result);
192 var ludan_3 = template('ludan_3',{map:result}); 192 var ludan_3 = template('ludan_3',{map:result});
193 $('#forms .ludan_3').html(ludan_3); 193 $('#forms .ludan_3').html(ludan_3);
@@ -199,7 +199,7 @@ @@ -199,7 +199,7 @@
199 if(params.length < 1){ 199 if(params.length < 1){
200 return; 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 var fileName=date+"-"+params[0]+"-行车路单" 203 var fileName=date+"-"+params[0]+"-行车路单"
204 window.open("/downloadFile/download?fileName="+fileName); 204 window.open("/downloadFile/download?fileName="+fileName);
205 // window.open("/downloadFile/download?fileName="+encodeURIComponent(encodeURIComponent(fileName))); 205 // window.open("/downloadFile/download?fileName="+encodeURIComponent(encodeURIComponent(fileName)));
src/main/resources/static/pages/oil/checkJyryList.html
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 class="caption-subject font-dark sbold uppercase">加油人员不符</span> 20 class="caption-subject font-dark sbold uppercase">加油人员不符</span>
21 </div> 21 </div>
22 <div class="actions"> 22 <div class="actions">
23 - <a class="btn btn-circle blue" href="cylAdd.html" data-pjax><i class="fa fa-plus"></i> 添加</a> 23 +<!-- <a class="btn btn-circle blue" href="cylAdd.html" data-pjax><i class="fa fa-plus"></i> 添加</a> -->
24 <button type="button" class="btn btn-circle blue" id="saveButton"><i class="fa fa-minus-square"></i> 保存</button> 24 <button type="button" class="btn btn-circle blue" id="saveButton"><i class="fa fa-minus-square"></i> 保存</button>
25 <!-- <button type="button" class="btn btn-circle red" disabled="disabled" id="removeButton"><i class="fa fa-trash"></i> 删除用户</button> --> 25 <!-- <button type="button" class="btn btn-circle red" disabled="disabled" id="removeButton"><i class="fa fa-trash"></i> 删除用户</button> -->
26 <!-- <div class="btn-group"> 26 <!-- <div class="btn-group">
src/main/resources/static/pages/oil/list_ph.html
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 </div> 21 </div>
22 <div class="actions"> 22 <div class="actions">
23 <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加</a> 23 <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加</a>
24 - <!-- <button type="button" class="btn btn-circle blue" id="removeButton"><i class="fa fa-trash-o"></i> 删除</button> --> 24 + <button type="button" class="btn btn-circle blue" id="removeButton"><i class="fa fa-trash-o"></i> 删除</button>
25 <button type="button" class="btn btn-circle blue" id="sortButton"><i class="fa fa-minus-square"></i> 25 <button type="button" class="btn btn-circle blue" id="sortButton"><i class="fa fa-minus-square"></i>
26 拆分/保存 26 拆分/保存
27 </button> 27 </button>
@@ -58,56 +58,99 @@ @@ -58,56 +58,99 @@
58 id="datatable_ylb"> 58 id="datatable_ylb">
59 <thead> 59 <thead>
60 <tr role="row" class="filter"> 60 <tr role="row" class="filter">
61 - <td> 公司:</td>  
62 - <td colspan="2">  
63 -  
64 - <select class="form-control" name="ssgsdm_like" id="ylbListGsdmId" ></select>  
65 -  
66 - </td>  
67 - <td>  
68 - 分公司:  
69 - </td>  
70 - <td colspan="2">  
71 -  
72 - <select class="form-control" name="fgsdm_like" id="ylbListFgsdmId" ></select>  
73 - </td>  
74 -  
75 - <td>  
76 - 日期:  
77 - </td>  
78 - <td>  
79 - <input type="text" style="width: 80px" name="rq" id="rq"/>  
80 - </td>  
81 - <td >  
82 - 线路:  
83 - </td>  
84 - <td colspan="2">  
85 - <select class="form-control" name="xlbm_like" id="xlbm" style="width: 120px;"></select>  
86 - </td>  
87 - <td >  
88 - 内部编码:  
89 - </td>  
90 - <td colspan="4">  
91 - <div style="float:left;">  
92 - <select class="form-control" name="nbbm_eq" id="nbbm" style="width: 120px;"></select>  
93 - </div>  
94 - <div style="float:left;">  
95 - <button class="btn btn-sm #000 btn-outline filter-cancel" style="margin-right:0px">  
96 - <i class="fa fa-times"></i>  
97 - </button>  
98 - </div>  
99 - </td>  
100 - <td colspan="1">  
101 - <button class="btn btn-sm green btn-outline filter-submit margin-bottom" style="margin-right:0px">  
102 - <i class="fa fa-search"></i> 搜索  
103 - </button> 61 + <td colspan="2">
  62 + <div style="float: right; " >&nbsp;公司&nbsp;</div>
  63 + </td>
  64 + <td colspan="3">
  65 + <div style="float: left;width: 150px">
  66 + <select class="form-control" name="ssgsdm_like"
  67 + id="ylbListGsdmId"></select>
  68 + </div>
  69 + </td>
  70 + <td colspan="2">
  71 + <div style="float: right; " >&nbsp;分公司&nbsp;</div>
  72 + </td>
  73 + <td colspan="4">
  74 + <div style="float: left;">
  75 + <select class="form-control" name="fgsdm_like"
  76 + id="ylbListFgsdmId" style="width: 150px"></select>
  77 + </div>
  78 + </td>
  79 + <td >
  80 + <div style="float: right; ">日期</div>
  81 + </td>
  82 + <td colspan="3">
  83 + <div style="float: left;">
  84 + <input type="text" style="width: 120px" name="rq" id="rq" />
  85 + </div>
  86 + </td>
  87 + <td rowspan="2" colspan="2">
  88 + <div style="float: left;">
  89 + &nbsp;<button
  90 + class="btn btn-sm green btn-outline filter-submit margin-bottom"
  91 + style="margin-right: 0px">
  92 + <i class="fa fa-search"></i> 搜索
  93 + </button> <!-- <button class="btn btn-sm red btn-outline filter-cancel" style="margin-right:0px"> -->
  94 + <!-- <i class="fa fa-times"></i> 重置 -->
  95 + <!-- </button> -->
104 96
105 -<!-- <button class="btn btn-sm red btn-outline filter-cancel" style="margin-right:0px"> -->  
106 -<!-- <i class="fa fa-times"></i> 重置 -->  
107 -<!-- </button> -->  
108 -  
109 - </td> 97 + </div>
  98 + </td>
110 </tr> 99 </tr>
  100 + <tr class="filter2">
  101 + <td colspan="2">
  102 + <div style="float: right; ">&nbsp;线路</div>
  103 + </td>
  104 + <td colspan="3">
  105 + <div style="float: left;">
  106 + <select class="form-control" name="xlbm_like" id="xlbm"
  107 + style="width: 150px;"></select>
  108 + </div>
  109 + </td>
  110 + <td colspan="2">
  111 + <div style="float: right;">&nbsp;内部编码</div>
  112 + </td>
  113 + <td colspan="4">
  114 + <div style="float: left;">
  115 + <select class="form-control" name="nbbm_eq" id="nbbm"
  116 + style="width: 120px;"></select>
  117 + </div>
  118 + <div style="float: left;">
  119 + <button class="btn btn-sm #000 btn-outline filter-cancel"
  120 + style="margin-right: 0px">
  121 + <i class="fa fa-times"></i>
  122 + </button>
  123 + </div>
  124 + </td>
  125 + <td >
  126 + <div style="float: right;">
  127 + 类型
  128 + </div>
  129 + </td>
  130 + <td colspan="3">
  131 + <div style="float: left;">
  132 + <select class="form-control" name="sxtj">
  133 + <option value="0">全部</option>
  134 + <option value="1">一车一单</option>
  135 + <option value="2">一车多单</option>
  136 + </select>
  137 + </div>
  138 +
  139 + </td>
  140 + </tr>
  141 + <tr>
  142 + <td colspan="17">
  143 + <div style="float: left;">
  144 + 总计
  145 + &nbsp;&nbsp;
  146 + 加注量:&nbsp;<label id="sumJzl"></label>
  147 + &nbsp;&nbsp;
  148 + 耗油量:&nbsp;<label id="sumYh"></label>
  149 + &nbsp;&nbsp;
  150 + 损耗量:&nbsp;<label id="sumSh"></label>
  151 + </div>
  152 + </td>
  153 + </tr>
111 <tr role="row" class="heading"> 154 <tr role="row" class="heading">
112 <th width="2%">#</th> 155 <th width="2%">#</th>
113 <th width="8%">日期</th> 156 <th width="8%">日期</th>
@@ -226,18 +269,7 @@ @@ -226,18 +269,7 @@
226 $("#checkYl").on('click', function () { 269 $("#checkYl").on('click', function () {
227 console.log("核对加注量"); 270 console.log("核对加注量");
228 if ($("#rq").val() != "") { 271 if ($("#rq").val() != "") {
229 - var cells = $('tr.filter')[0].cells  
230 - , params = {}  
231 - , name;  
232 - $.each(cells, function (i, cell) {  
233 - var items = $('input,select', cell);  
234 - for (var j = 0, item; item = items[j++];) {  
235 - name = $(item).attr('name');  
236 - if (name) {  
237 - params[name] = $(item).val();  
238 - }  
239 - }  
240 - }); 272 + var params=getParamsList();
241 var i = layer.load(2); 273 var i = layer.load(2);
242 $get('/ylb/checkYl', params, function () { 274 $get('/ylb/checkYl', params, function () {
243 layer.close(i); 275 layer.close(i);
@@ -252,18 +284,7 @@ @@ -252,18 +284,7 @@
252 $("#outAndIn").on('click', function () { 284 $("#outAndIn").on('click', function () {
253 console.log("进场油量等于出场油量"); 285 console.log("进场油量等于出场油量");
254 if ($("#rq").val() != "") { 286 if ($("#rq").val() != "") {
255 - var cells = $('tr.filter')[0].cells  
256 - , params = {}  
257 - , name;  
258 - $.each(cells, function (i, cell) {  
259 - var items = $('input,select', cell);  
260 - for (var j = 0, item; item = items[j++];) {  
261 - name = $(item).attr('name');  
262 - if (name) {  
263 - params[name] = $(item).val();  
264 - }  
265 - }  
266 - }); 287 + var params=getParamsList();
267 var i = layer.load(2); 288 var i = layer.load(2);
268 $get('/ylb/outAndIn', params, function () { 289 $get('/ylb/outAndIn', params, function () {
269 layer.close(i); 290 layer.close(i);
@@ -272,7 +293,8 @@ @@ -272,7 +293,8 @@
272 } else { 293 } else {
273 layer.msg('请选择日期.'); 294 layer.msg('请选择日期.');
274 } 295 }
275 - }) 296 + });
  297 +
276 //拆分 298 //拆分
277 $("#sortButton").on('click', function () { 299 $("#sortButton").on('click', function () {
278 if ($("#rq").val() != "") { 300 if ($("#rq").val() != "") {
@@ -294,18 +316,7 @@ @@ -294,18 +316,7 @@
294 var i = layer.load(2); 316 var i = layer.load(2);
295 $get('/ylb/sort', params, function () { 317 $get('/ylb/sort', params, function () {
296 layer.close(i); 318 layer.close(i);
297 - var cells = $('tr.filter')[0].cells  
298 - , params1 = {}  
299 - , name;  
300 - $.each(cells, function (i, cell) {  
301 - var items = $('input,select', cell);  
302 - for (var j = 0, item; item = items[j++];) {  
303 - name = $(item).attr('name');  
304 - if (name) {  
305 - params1[name] = $(item).val();  
306 - }  
307 - }  
308 - }); 319 + var params1 =getParamsList();
309 jsDoQuery(params1, true); 320 jsDoQuery(params1, true);
310 }); 321 });
311 322
@@ -318,18 +329,8 @@ @@ -318,18 +329,8 @@
318 $("#obtain").on('click', function () { 329 $("#obtain").on('click', function () {
319 console.log("获取加存"); 330 console.log("获取加存");
320 if ($("#rq").val() != "") { 331 if ($("#rq").val() != "") {
321 - var cells = $('tr.filter')[0].cells  
322 - , params = {}  
323 - , name;  
324 - $.each(cells, function (i, cell) {  
325 - var items = $('input,select', cell);  
326 - for (var j = 0, item; item = items[j++];) {  
327 - name = $(item).attr('name');  
328 - if (name) {  
329 - params[name] = $(item).val();  
330 - }  
331 - }  
332 - }); 332 + var params =getParamsList();
  333 +
333 var i = layer.load(2); 334 var i = layer.load(2);
334 $get('/ylb/obtain', params, function () { 335 $get('/ylb/obtain', params, function () {
335 layer.close(i); 336 layer.close(i);
@@ -352,8 +353,8 @@ @@ -352,8 +353,8 @@
352 } 353 }
353 354
354 //重置 355 //重置
355 - $('tr.filter .filter-cancel').on('click', function () {  
356 - $('tr.filter , #nbbm').val('').change(); 356 + $('tr.filter2 .filter-cancel').on('click', function () {
  357 + $('tr.filter2 , #nbbm').val('').change();
357 }); 358 });
358 359
359 //提交 360 //提交
@@ -365,23 +366,39 @@ @@ -365,23 +366,39 @@
365 }else if(ylbGsdm=="" || ylbGsdm==null || ylbFgsdm=="" ||ylbFgsdm==null){ 366 }else if(ylbGsdm=="" || ylbGsdm==null || ylbFgsdm=="" ||ylbFgsdm==null){
366 layer.msg('请选择公司和分公司.'); 367 layer.msg('请选择公司和分公司.');
367 }else { 368 }else {
368 - var cells = $('tr.filter')[0].cells  
369 - , params = {}  
370 - , name;  
371 - $.each(cells, function (i, cell) {  
372 - var items = $('input,select', cell);  
373 - for (var j = 0, item; item = items[j++];) {  
374 - name = $(item).attr('name');  
375 - if (name) {  
376 - params[name] = $(item).val();  
377 - }  
378 - }  
379 - }); 369 + var params = getParamsList();
  370 +
  371 +
380 page = 0; 372 page = 0;
381 jsDoQuery(params, true); 373 jsDoQuery(params, true);
382 } 374 }
383 }); 375 });
384 376
  377 + function getParamsList(){
  378 + var cells = $('tr.filter')[0].cells
  379 + , cells1 = $('tr.filter2')[0].cells,params = {}
  380 + , name;
  381 + $.each(cells, function (i, cell) {
  382 + var items = $('input,select', cell);
  383 + for (var j = 0, item; item = items[j++];) {
  384 + name = $(item).attr('name');
  385 + if (name) {
  386 + params[name] = $(item).val();
  387 + }
  388 + }
  389 + });
  390 + $.each(cells1, function (i, cell) {
  391 + var items = $('input,select', cell);
  392 + for (var j = 0, item; item = items[j++];) {
  393 + name = $(item).attr('name');
  394 + if (name) {
  395 + params[name] = $(item).val();
  396 + }
  397 + }
  398 + });
  399 +
  400 + return params;
  401 + }
385 402
386 // var gsqxdm=""; 403 // var gsqxdm="";
387 404
@@ -454,13 +471,15 @@ @@ -454,13 +471,15 @@
454 params['fgsdm_in']=fgsqx1; 471 params['fgsdm_in']=fgsqx1;
455 } 472 }
456 } */ 473 } */
  474 +
457 var l = layer.load(2); 475 var l = layer.load(2);
458 $get('/ylb', params, function (data) { 476 $get('/ylb', params, function (data) {
  477 +
459 $.each(data.content, function (i, obj) { 478 $.each(data.content, function (i, obj) {
460 obj.rq = moment(obj.rq).format("YYYY-MM-DD"); 479 obj.rq = moment(obj.rq).format("YYYY-MM-DD");
461 }); 480 });
462 var bodyHtm = template('ylb_list_temp', {list: data.content}); 481 var bodyHtm = template('ylb_list_temp', {list: data.content});
463 - 482 +
464 $('#datatable_ylb tbody').html(bodyHtm) 483 $('#datatable_ylb tbody').html(bodyHtm)
465 .find('.icheck').iCheck(icheckOptions) 484 .find('.icheck').iCheck(icheckOptions)
466 .on('ifChanged', iCheckChange); 485 .on('ifChanged', iCheckChange);
@@ -470,7 +489,13 @@ @@ -470,7 +489,13 @@
470 showPagination(data); 489 showPagination(data);
471 } 490 }
472 layer.close(l); 491 layer.close(l);
473 - 492 + $get('/ylb/sumYlb',params,function(returns){
  493 + console.log(returns);
  494 + console.log(returns.jzl);
  495 + $("#sumJzl").html(returns.jzl);
  496 + $("#sumYh").html(returns.yh);
  497 + $("#sumSh").html(returns.sh);
  498 + });
474 startOptJzylLink($('#ll_oil_list .in_carpark_jzyl')); 499 startOptJzylLink($('#ll_oil_list .in_carpark_jzyl'));
475 startOptShylLink($('#ll_oil_list .in_carpark_shyl')); 500 startOptShylLink($('#ll_oil_list .in_carpark_shyl'));
476 }); 501 });
@@ -549,18 +574,7 @@ @@ -549,18 +574,7 @@
549 return; 574 return;
550 } 575 }
551 576
552 - var cells = $('tr.filter')[0].cells  
553 - , params = {}  
554 - , name;  
555 - $.each(cells, function (i, cell) {  
556 - var items = $('input,select', cell);  
557 - for (var j = 0, item; item = items[j++];) {  
558 - name = $(item).attr('name');  
559 - if (name) {  
560 - params[name] = $(item).val();  
561 - }  
562 - }  
563 - }); 577 + var params=getParamsList();
564 page = num - 1; 578 page = num - 1;
565 jsDoQuery(params, true); 579 jsDoQuery(params, true);
566 } 580 }
@@ -570,13 +584,15 @@ @@ -570,13 +584,15 @@
570 584
571 //删除 585 //删除
572 $('#removeButton').on('click', function () { 586 $('#removeButton').on('click', function () {
573 - if ($(this).attr('disabled'))  
574 - return;  
575 -  
576 - var id = $('input.icheck:checked').data('id');  
577 - removeConfirm('确定要删除选中的数据?', '/resource/' + id, function () {  
578 - $('tr.filter .filter-submit').click();  
579 - }); 587 + var id = $('input.icheck:checked').data('id');
  588 + if (typeof(id) == 'undefined') {
  589 + layer.msg("请选择要删除的数据");
  590 + }else{
  591 + removeConfirm('确定要删除选中的数据?', '/ylb/' + id, function () {
  592 + var params=getParamsList();
  593 + jsDoQuery(params, true);
  594 + });
  595 + }
580 }); 596 });
581 597
582 //搜索线路 598 //搜索线路
@@ -636,18 +652,7 @@ @@ -636,18 +652,7 @@
636 652
637 $("#export").on("click", function () { 653 $("#export").on("click", function () {
638 if ($("#rq").val() != "") { 654 if ($("#rq").val() != "") {
639 - var cells = $('tr.filter')[0].cells  
640 - , params = {}  
641 - , name;  
642 - $.each(cells, function (i, cell) {  
643 - var items = $('input,select', cell);  
644 - for (var j = 0, item; item = items[j++];) {  
645 - name = $(item).attr('name');  
646 - if (name) {  
647 - params[name] = $(item).val();  
648 - }  
649 - }  
650 - }); 655 + var params=getParamsList();
651 $post('/ylb/listExport', params, function (result) { 656 $post('/ylb/listExport', params, function (result) {
652 window.open("/downloadFile/download?fileName=进出场存油量" + moment($("#rq").val()).format("YYYYMMDD")); 657 window.open("/downloadFile/download?fileName=进出场存油量" + moment($("#rq").val()).format("YYYYMMDD"));
653 }); 658 });
src/main/resources/static/real_control_v2/css/line_schedule.css
@@ -239,7 +239,7 @@ @@ -239,7 +239,7 @@
239 } 239 }
240 240
241 .schedule-body .ct_table dl:nth-child(even){ 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 span.fcsj-diff { 245 span.fcsj-diff {
@@ -532,7 +532,7 @@ div.drop-rail[data-type=&quot;car&quot;]:before { @@ -532,7 +532,7 @@ div.drop-rail[data-type=&quot;car&quot;]:before {
532 } 532 }
533 533
534 dl.relevance-active dd:nth-child(n+2) { 534 dl.relevance-active dd:nth-child(n+2) {
535 - background: #c1e2f9 !important; 535 + background: #d2d2d2 !important;
536 } 536 }
537 537
538 dl.relevance-active.intimity dd:nth-child(n+2) { 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,4 +863,40 @@ svg rect.offline{
863 color: white; 863 color: white;
864 box-shadow: 0px 4px 6px 0 rgba(0, 0, 0, 0.2), 0px 4px 10px 0 rgba(0, 0, 0, 0.19); 864 box-shadow: 0px 4px 6px 0 rgba(0, 0, 0, 0.2), 0px 4px 10px 0 rgba(0, 0, 0, 0.19);
865 border-radius: 1px 1px 4px 4px; 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 \ No newline at end of file 903 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/fcxxwt.html
@@ -141,7 +141,7 @@ @@ -141,7 +141,7 @@
141 <div class="uk-form-row"> 141 <div class="uk-form-row">
142 <label class="uk-form-label" >里程</label> 142 <label class="uk-form-label" >里程</label>
143 <div class="uk-form-controls"> 143 <div class="uk-form-controls">
144 - <input type="text" value="{{if sch.status==-1}}0{{else}}{{sch.jhlc}}{{/if}}" name="jhlc" > 144 + <input type="text" value="{{if sch.status==-1}}0{{else}}{{sch.jhlc}}{{/if}}" name="jhlc" required>
145 </div> 145 </div>
146 </div> 146 </div>
147 </div> 147 </div>
@@ -197,7 +197,7 @@ @@ -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 var confHtml = '<h4 style="color: #c04c4c;margin-bottom: 9px;">确认要将班次里程由'+sch.jhlc+' 修改为'+data.jhlc+' </h4><small>备注:</small>'; 201 var confHtml = '<h4 style="color: #c04c4c;margin-bottom: 9px;">确认要将班次里程由'+sch.jhlc+' 修改为'+data.jhlc+' </h4><small>备注:</small>';
202 UIkit.modal.prompt(confHtml, data.remarks, function(remarks){ 202 UIkit.modal.prompt(confHtml, data.remarks, function(remarks){
203 if(remarks){ 203 if(remarks){
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
@@ -267,7 +267,7 @@ @@ -267,7 +267,7 @@
267 } 267 }
268 }); 268 });
269 //公里与主任务不符合 269 //公里与主任务不符合
270 - if (sum != sch.jhlc) { 270 + if (sum != sch.jhlcOrig) {
271 if (i > 1) 271 if (i > 1)
272 calcs += ('=' + sum); 272 calcs += ('=' + sum);
273 calcs += (' ≠ ' + sch.jhlc); 273 calcs += (' ≠ ' + sch.jhlc);
@@ -320,6 +320,11 @@ @@ -320,6 +320,11 @@
320 var sch = getActiveSch(); 320 var sch = getActiveSch();
321 if (!sch) 321 if (!sch)
322 return notify_err('无法获取到主任务信息!'); 322 return notify_err('无法获取到主任务信息!');
  323 +
  324 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  325 + notify_err('暂不能在进出场班次上做回场子任务!');
  326 + return;
  327 + }
323 open_modal(folder + '/sub_task/add_sub_task_inpark.html', { 328 open_modal(folder + '/sub_task/add_sub_task_inpark.html', {
324 sch: sch 329 sch: sch
325 }, modal_opts); 330 }, modal_opts);
@@ -330,6 +335,10 @@ @@ -330,6 +335,10 @@
330 var sch = getActiveSch(); 335 var sch = getActiveSch();
331 if (!sch) 336 if (!sch)
332 return notify_err('无法获取到主任务信息!'); 337 return notify_err('无法获取到主任务信息!');
  338 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  339 + notify_err('暂不能在进出场班次上做出场子任务!');
  340 + return;
  341 + }
333 open_modal(folder + '/sub_task/add_sub_task_outpark.html', { 342 open_modal(folder + '/sub_task/add_sub_task_outpark.html', {
334 sch: sch 343 sch: sch
335 }, modal_opts); 344 }, modal_opts);
@@ -369,6 +378,20 @@ @@ -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 var callbackHandler = { 396 var callbackHandler = {
374 add_temp_sch: add_temp_sch, 397 add_temp_sch: add_temp_sch,
@@ -377,7 +400,8 @@ @@ -377,7 +400,8 @@
377 add_sub_task_in: add_sub_task_in, 400 add_sub_task_in: add_sub_task_in,
378 remove_sub_task: remove_sub_task, 401 remove_sub_task: remove_sub_task,
379 add_sub_task_out: add_sub_task_out, 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,6 +418,9 @@
394 "add_sub_task": { 418 "add_sub_task": {
395 name: "添加子任务", 419 name: "添加子任务",
396 items: { 420 items: {
  421 + 'add_oil':{
  422 + name: '加油'
  423 + },
397 'add_sub_task_in': { 424 'add_sub_task_in': {
398 name: '回场' 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,7 +52,7 @@
52 </div> 52 </div>
53 </div> 53 </div>
54 <div class="uk-width-7-10 pl5"> 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 </div> 56 </div>
57 </div> 57 </div>
58 <div class="uk-grid"> 58 <div class="uk-grid">
@@ -125,7 +125,7 @@ @@ -125,7 +125,7 @@
125 </div> 125 </div>
126 </div> 126 </div>
127 <div class="uk-width-7-10 pl5"> 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 <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a> 129 <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a>
130 </div> 130 </div>
131 </div> 131 </div>
@@ -190,7 +190,7 @@ @@ -190,7 +190,7 @@
190 </div> 190 </div>
191 </div> 191 </div>
192 <div class="uk-width-7-10 pl5"> 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 </div> 194 </div>
195 </div> 195 </div>
196 <div class="uk-grid"> 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,7 +52,7 @@
52 </div> 52 </div>
53 </div> 53 </div>
54 <div class="uk-width-7-10 pl5"> 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 <a style="font-size: 12px;color: grey;cursor: default;" target="_blank" 56 <a style="font-size: 12px;color: grey;cursor: default;" target="_blank"
57 class="linkToLineInfo">线路标准</a> 57 class="linkToLineInfo">线路标准</a>
58 </div> 58 </div>
@@ -128,7 +128,7 @@ @@ -128,7 +128,7 @@
128 </div> 128 </div>
129 </div> 129 </div>
130 <div class="uk-width-7-10 pl5"> 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 </div> 132 </div>
133 </div> 133 </div>
134 <div class="uk-grid"> 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,7 +168,7 @@
168 </div> 168 </div>
169 </div> 169 </div>
170 <div class="uk-width-7-10 pl5"> 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 </div> 172 </div>
173 </div> 173 </div>
174 <div class="uk-grid"> 174 <div class="uk-grid">
@@ -237,7 +237,7 @@ @@ -237,7 +237,7 @@
237 </div> 237 </div>
238 </div> 238 </div>
239 <div class="uk-width-7-10 pl5"> 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 </div> 241 </div>
242 </div> 242 </div>
243 <div class="uk-grid"> 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
@@ -132,7 +132,7 @@ var gb_schedule_context_menu = (function () { @@ -132,7 +132,7 @@ var gb_schedule_context_menu = (function () {
132 }, modal_opts); 132 }, modal_opts);
133 }, 133 },
134 cxzx: function (sch) { 134 cxzx: function (sch) {
135 - if (!sch.zdsjActual) 135 + if (!sch.zdsjActual && !sch.fcsjActual)
136 return notify_err('车辆未执行,无法撤销执行!'); 136 return notify_err('车辆未执行,无法撤销执行!');
137 137
138 var content = '<h3>确定要撤销<span style="color:red;margin: 0 5px;">' + sch.clZbh + '( ' + sch.dfsj + ' )</span>的实达时间?</h3>' 138 var content = '<h3>确定要撤销<span style="color:red;margin: 0 5px;">' + sch.clZbh + '( ' + sch.dfsj + ' )</span>的实达时间?</h3>'
@@ -144,6 +144,41 @@ var gb_schedule_context_menu = (function () { @@ -144,6 +144,41 @@ var gb_schedule_context_menu = (function () {
144 notify_succ('撤销执行成功!'); 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,6 +220,23 @@ var gb_schedule_context_menu = (function () {
185 'lj_zrw': { 220 'lj_zrw': {
186 name: '临加/子任务' 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 'sep4': '---------', 240 'sep4': '---------',
189 'tzrc': { 241 'tzrc': {
190 name: '调整人车' 242 name: '调整人车'
src/test/java/com/bsth/service/schedule/rules/DroolsRulesTest2.java
1 -package com.bsth.service.schedule.rules;  
2 -  
3 -import com.bsth.Application;  
4 -import org.junit.runner.RunWith;  
5 -import org.kie.api.KieBase;  
6 -import org.springframework.beans.factory.annotation.Autowired;  
7 -import org.springframework.boot.test.SpringApplicationConfiguration;  
8 -import org.springframework.context.annotation.ComponentScan;  
9 -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
10 -  
11 -/**  
12 - * 测试类。  
13 - */  
14 -@RunWith(SpringJUnit4ClassRunner.class)  
15 -@SpringApplicationConfiguration(classes = {Application.class})  
16 -@ComponentScan(basePackages = {"com.bsth.entity"})  
17 -public class DroolsRulesTest2 {  
18 - @Autowired  
19 - private KieBase kieBase;  
20 -  
21 - @org.junit.Test  
22 - public void test1() throws Exception {  
23 - System.out.println("dfdfdfdfd");  
24 - }  
25 -  
26 -} 1 +package com.bsth.service.schedule.rules;
  2 +
  3 +import com.bsth.Application;
  4 +import org.junit.runner.RunWith;
  5 +import org.kie.api.KieBase;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.boot.test.SpringApplicationConfiguration;
  8 +import org.springframework.context.annotation.ComponentScan;
  9 +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  10 +
  11 +/**
  12 + * 测试类。
  13 + */
  14 +@RunWith(SpringJUnit4ClassRunner.class)
  15 +@SpringApplicationConfiguration(classes = {Application.class})
  16 +@ComponentScan(basePackages = {"com.bsth.entity"})
  17 +public class DroolsRulesTest2 {
  18 + @Autowired
  19 + private KieBase kieBase;
  20 +
  21 + @org.junit.Test
  22 + public void test1() throws Exception {
  23 + System.out.println("dfdfdfdfd");
  24 + }
  25 +
  26 +}