Commit a7f1581a5bfa7a5742169be5ee598581f2830797

Authored by 廖磊
2 parents a539fb6f 40601a9f

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing 32 changed files with 747 additions and 114 deletions
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
@@ -175,7 +175,7 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -175,7 +175,7 @@ public class InOutStationSignalHandle extends SignalHandle{
175 dayOfSchedule.save(sch); 175 dayOfSchedule.save(sch);
176 176
177 //清理应发未发标记 177 //清理应发未发标记
178 - LateAdjustHandle.remove(sch); 178 + LateAdjustHandle.remove(sch.getClZbh());
179 179
180 if(!gps.isService() && !dayOfSchedule.emptyService(sch)){ 180 if(!gps.isService() && !dayOfSchedule.emptyService(sch)){
181 //切换成营运状态 181 //切换成营运状态
@@ -482,7 +482,7 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -482,7 +482,7 @@ public class InOutStationSignalHandle extends SignalHandle{
482 boolean limitPark = StringUtils.isNotEmpty(park); 482 boolean limitPark = StringUtils.isNotEmpty(park);
483 483
484 484
485 - if (next.getBcType().equals("in") && config.getOutConfig() == 2 && (next.getBcsj()==0 || next.getJhlcOrig().equals(0)) 485 + if (next.getBcType().equals("in") && config.getOutConfig() == 2 && (next.getBcsj()==0 || next.getJhlcOrig().intValue()==0)
486 && (!limitPark || park.equals(next.getZdzCode()))) { 486 && (!limitPark || park.equals(next.getZdzCode()))) {
487 487
488 next.setFcsjActualAll(sch.getZdsjActualTime()); 488 next.setFcsjActualAll(sch.getZdsjActualTime());
src/main/java/com/bsth/data/gpsdata/recovery/GpsDataRecovery.java
@@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
84 Calendar calendar = Calendar.getInstance(); 84 Calendar calendar = Calendar.getInstance();
85 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); 85 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
86 86
87 - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=267";// + dayOfYear; 87 + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=285";// + dayOfYear;
88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); 88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource());
89 89
90 List<GpsEntity> list = 90 List<GpsEntity> list =
src/main/java/com/bsth/data/pilot80/PilotReport.java
@@ -162,6 +162,15 @@ public class PilotReport { @@ -162,6 +162,15 @@ public class PilotReport {
162 162
163 LineConfig conf = lineConfigData.get(sch.getXlBm()); 163 LineConfig conf = lineConfigData.get(sch.getXlBm());
164 if (conf.getOutConfig() == 1) { 164 if (conf.getOutConfig() == 1) {
  165 +
  166 + try{
  167 + //最大允许时间阈值 2 小时
  168 + if(Math.abs(d80.getTimestamp() - sch.getDfsjT()) > 1000 * 60 * 60 * 2)
  169 + return;
  170 + }catch (Exception e){
  171 + logger.error("", e);
  172 + }
  173 +
165 //为相关班次写入请求出场时间 174 //为相关班次写入请求出场时间
166 sch.setFcsjActualAll(d80.getTimestamp()); 175 sch.setFcsjActualAll(d80.getTimestamp());
167 176
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
@@ -102,12 +102,25 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -102,12 +102,25 @@ public class LateAdjustHandle implements ApplicationContextAware{
102 sch.setLate2(false); 102 sch.setLate2(false);
103 sch.setLateMinute(0); 103 sch.setLateMinute(0);
104 sch.setDfAuto(false); 104 sch.setDfAuto(false);
  105 +
  106 + logger.info("移除误点调整 -" + sch.getClZbh());
105 } 107 }
106 }catch (Exception e){ 108 }catch (Exception e){
107 logger.error("", e); 109 logger.error("", e);
108 } 110 }
109 } 111 }
110 112
  113 + public static void remove(String nbbm){
  114 + if(lateSchMap.containsKey(nbbm)){
  115 + ScheduleRealInfo sch = lateSchMap.get(nbbm);
  116 + sch.setLate2(false);
  117 + sch.setLateMinute(0);
  118 + sch.setDfAuto(false);
  119 +
  120 + logger.info("移除误点调整 nbbm -" + nbbm);
  121 + }
  122 + }
  123 +
111 /** 124 /**
112 * 车辆到站 125 * 车辆到站
113 * @param gps 126 * @param gps
@@ -127,10 +140,17 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -127,10 +140,17 @@ public class LateAdjustHandle implements ApplicationContextAware{
127 /*&& sch.getLateMinute() > 0*/){ 140 /*&& sch.getLateMinute() > 0*/){
128 //自动调整待发 到达时间 + 停靠时间 141 //自动调整待发 到达时间 + 停靠时间
129 long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000)); 142 long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));
130 - sch.setDfsjAll(dt);  
131 - sch.setDfAuto(true);  
132 - //取消应发未到标记  
133 - sch.setLate2(false); 143 +
  144 + //超过2小时最大阈值,放弃
  145 + if(Math.abs(dt - sch.getDfsjT()) > 1000 * 60 * 60 * 2){
  146 + logger.info(sch.getClZbh() + " 超过误点调整阈值,放弃");
  147 + }
  148 + else{
  149 + sch.setDfsjAll(dt);
  150 + sch.setDfAuto(true);
  151 + //取消应发未到标记
  152 + sch.setLate2(false);
  153 + }
134 154
135 lateSchMap.remove(sch.getClZbh()); 155 lateSchMap.remove(sch.getClZbh());
136 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt); 156 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt);
src/main/java/com/bsth/service/schedule/rules/shiftloop/ScheduleResults_output.java
@@ -48,6 +48,7 @@ public class ScheduleResults_output { @@ -48,6 +48,7 @@ public class ScheduleResults_output {
48 groupRuleIdGuideBoardMap.get(s.getRuleId()).add(s); 48 groupRuleIdGuideBoardMap.get(s.getRuleId()).add(s);
49 } 49 }
50 50
  51 + stringBuilder.append("\n");
51 for (String ruleId : groupRuleIdGuideBoardMap.keySet()) { 52 for (String ruleId : groupRuleIdGuideBoardMap.keySet()) {
52 Collections.sort(groupRuleIdGuideBoardMap.get(ruleId), new Comparator<ScheduleResult_output>() { 53 Collections.sort(groupRuleIdGuideBoardMap.get(ruleId), new Comparator<ScheduleResult_output>() {
53 @Override 54 @Override
src/main/java/com/bsth/service/traffic/impl/VehicleInoutStopServiceImpl.java
@@ -4,6 +4,7 @@ import com.bsth.entity.traffic.VehicleInoutStop; @@ -4,6 +4,7 @@ import com.bsth.entity.traffic.VehicleInoutStop;
4 import com.bsth.service.impl.BaseServiceImpl; 4 import com.bsth.service.impl.BaseServiceImpl;
5 import com.bsth.service.traffic.VehicleInoutStopService; 5 import com.bsth.service.traffic.VehicleInoutStopService;
6 import com.bsth.util.DateUtils; 6 import com.bsth.util.DateUtils;
  7 +import com.bsth.util.db.DBUtils_MS;
7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.jdbc.core.JdbcTemplate; 9 import org.springframework.jdbc.core.JdbcTemplate;
9 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
@@ -51,17 +52,16 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto @@ -51,17 +52,16 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto
51 String order = " order by report_date asc"+ " LIMIT "+page*size+","+size; 52 String order = " order by report_date asc"+ " LIMIT "+page*size+","+size;
52 int dayNum = DateUtils.calcDaynumberInYear(reportDate_start.substring(0,8)) -1; 53 int dayNum = DateUtils.calcDaynumberInYear(reportDate_start.substring(0,8)) -1;
53 if(!lineId.equals("")){ 54 if(!lineId.equals("")){
54 - sql.append(" and l.id = ").append(lineId); 55 + sql.append(" and line_id = ").append(lineId);
55 } 56 }
56 if(!insideCode.equals("")){ 57 if(!insideCode.equals("")){
57 - sql.append(" and c.inside_code = ").append("'").append(insideCode.toUpperCase()).append("'"); 58 + sql.append(" and inside_code = ").append("'").append(insideCode.toUpperCase()).append("'");
58 } 59 }
59 if(!carPlate.equals("")){ 60 if(!carPlate.equals("")){
60 - sql.append(" and c.car_plate = ").append("'").append("沪").append(carPlate.substring(0,1)).append("-")  
61 - .append(carPlate.substring(1)).append("'"); 61 + sql.append(" and car_plate = ").append("'").append(carPlate).append("'");
62 } 62 }
63 sql.append(" and FROM_UNIXTIME(REPORT_DATE/1000,'%Y%m%d%H') between '").append(reportDate_start). 63 sql.append(" and FROM_UNIXTIME(REPORT_DATE/1000,'%Y%m%d%H') between '").append(reportDate_start).
64 - append("' and '").append(reportDate_end).append("'").append(" and r.day_year = ").append(dayNum); 64 + append("' and '").append(reportDate_end).append("'").append(" and day_year = ").append(dayNum);
65 if(flag.equals("count")){ 65 if(flag.equals("count")){
66 return sql.toString(); 66 return sql.toString();
67 }else{ 67 }else{
@@ -75,13 +75,13 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto @@ -75,13 +75,13 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto
75 * @return 75 * @return
76 */ 76 */
77 public List<Map<String, Object>> getVehicleInoutStopByParam(Map<String,Object> map){ 77 public List<Map<String, Object>> getVehicleInoutStopByParam(Map<String,Object> map){
78 - String sql = "SELECT c.branche_company,c.company,l.name,l.shanghai_linecode,inside_code,equipment_code,car_plate," +  
79 - "if( r.service_state= 0,'营运','停运') as service_state ," +  
80 - "if( r.up_down= 0,'上行','下行') as up_down ," +  
81 - "if( r.in_out_stop= 0,'站内','站外') as in_out_stop , " +  
82 - "r.stop,r.report_date FROM bsth_c_shreal r LEFT JOIN bsth_c_cars c on r.cars = c.id " +  
83 - "LEFT JOIN bsth_c_line l on r.line = l.id" + packageParam(map,"") ;  
84 - List<Map<String, Object>> result = jdbcTemplate.queryForList(sql); 78 + JdbcTemplate jdbcTemp = new JdbcTemplate(DBUtils_MS.getDataSource());
  79 + String sql = "SELECT branche_company,company,name,shanghai_linecode,inside_code,equipment_code,car_plate," +
  80 + "if( service_state= 0,'营运','停运') as service_state ," +
  81 + "if( up_down= 0,'上行','下行') as up_down ," +
  82 + "if( in_out_stop= 0,'站内','站外') as in_out_stop , " +
  83 + "stop,report_date FROM bsth_c_shreal " + packageParam(map,"") ;
  84 + List<Map<String, Object>> result = jdbcTemp.queryForList(sql);
85 return result; 85 return result;
86 } 86 }
87 87
@@ -91,9 +91,9 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto @@ -91,9 +91,9 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto
91 * @return 91 * @return
92 */ 92 */
93 public long getVehicleInoutStopCountByParam(Map<String,Object> map){ 93 public long getVehicleInoutStopCountByParam(Map<String,Object> map){
94 - String sql = "SELECT count(1) COUNT FROM bsth_c_shreal r LEFT JOIN bsth_c_cars c on r.cars = c.id " +  
95 - "LEFT JOIN bsth_c_line l on r.line = l.id" + packageParam(map,"count");  
96 - long result = Long.valueOf(jdbcTemplate.queryForMap(sql).get("COUNT")+""); 94 + JdbcTemplate jdbcTemp = new JdbcTemplate(DBUtils_MS.getDataSource());
  95 + String sql = "SELECT count(1) COUNT FROM bsth_c_shreal" + packageParam(map,"count");
  96 + long result = Long.valueOf(jdbcTemp.queryForMap(sql).get("COUNT")+"");
97 return result; 97 return result;
98 } 98 }
99 } 99 }
src/main/resources/rules/legacy/shiftloop_fb_2.drl 0 → 100644
  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.ttinfo.LpInfoResult_output;
  7 +
  8 +import com.bsth.service.schedule.utils.Md5Util;
  9 +
  10 +import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input;
  11 +import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;
  12 +import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_Type;
  13 +import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output;
  14 +import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;
  15 +
  16 +import com.bsth.entity.schedule.temp.SchedulePlanRuleResult;
  17 +
  18 +import com.bsth.service.schedule.rules.ScheduleRuleService;
  19 +
  20 +import org.slf4j.Logger;
  21 +
  22 +global Logger log;
  23 +global ScheduleResults_output scheduleResult;
  24 +global ScheduleRuleService scheduleRuleService;
  25 +
  26 +/*
  27 + 存在(翻班格式)
  28 +*/
  29 +
  30 +//------------------------- 第一阶段、计算规则准备数据(天数) ----------------------------//
  31 +
  32 +declare Calcu_days_result_pre
  33 + ruleId: String // 规则Id
  34 + ruleMd5: String // 规则md5
  35 + ruleEcCount: Integer // 人员范围个数
  36 +
  37 + calcu_index_lp : Integer // 计算之后路牌的起始索引
  38 + calcu_index_ry : Integer // 计算之后人员的起始索引
  39 +
  40 + // 1、第一部分循环需要用到的数据(当开始日期大于启用日期的时候才有)
  41 + calcu_start_date_1: DateTime // 第一部分开始计算日期
  42 + calcu_end_date_1: DateTime // 第一部分结束计算日期
  43 +
  44 + // 2、第二部分循环需要用到的数据
  45 + sdays : Integer // 总共需要排班的天数
  46 + calcu_start_date_2 : DateTime // 开始计算日期
  47 + calcu_end_date_2 : DateTime // 结束计算日期
  48 +
  49 +end
  50 +
  51 +/*
  52 + 计算启用日期,开始计算日期,结束计算日期,相差天数
  53 + 1、规则启用日期小于开始计算日期
  54 + 2、规则启用日期大于等于开始日期,小于等于结束日期
  55 +*/
  56 +// 1、启用日期 < 开始日期
  57 +rule "calcu_days_1_"
  58 + salience 1000
  59 + when
  60 + ScheduleCalcuParam_input(
  61 + fromDate.isBefore(toDate) || fromDate.isEqual(toDate),
  62 + $fromDate : fromDate,
  63 + $toDate : toDate,
  64 + $xlId: xlId
  65 + )
  66 + $sri: ScheduleRule_input(
  67 + $ruleId : ruleId, $qyrq : qyrq,
  68 + $lpindex : startGbdIndex, $ryindex: startEIndex)
  69 + eval($qyrq.isBefore($fromDate))
  70 + then
  71 + scheduleResult.setXlid($xlId);
  72 +
  73 + // 构造Calcu_days_result_pre,用于路牌
  74 + Calcu_days_result_pre cdrp = new Calcu_days_result_pre();
  75 + cdrp.setRuleId($ruleId);
  76 + cdrp.setCalcu_index_lp($lpindex);
  77 + cdrp.setCalcu_index_ry($ryindex);
  78 + cdrp.setCalcu_start_date_1($qyrq);
  79 + cdrp.setCalcu_end_date_1($fromDate);
  80 + Period p2 = new Period($fromDate, $toDate, PeriodType.days());
  81 + cdrp.setSdays(p2.getDays() + 1);
  82 + cdrp.setCalcu_start_date_2($fromDate);
  83 + cdrp.setCalcu_end_date_2($toDate);
  84 +
  85 + /**
  86 + * 规则md5值(不使用id判定,使用md5判定)
  87 + * 使用,启用日期,路牌范围,结合生成md5编码
  88 + */
  89 + String ruleMd5 = Md5Util.getMd5(
  90 + String.valueOf($qyrq.getMillis()) +
  91 + "_" +
  92 + $sri.getSelf().getLpIds() +
  93 + "_" +
  94 + $sri.getSelf().getLpStart().toString()
  95 + );
  96 + cdrp.setRuleMd5(ruleMd5);
  97 + // 人员范围个数
  98 + cdrp.setRuleEcCount($sri.getEmployeeConfigIds().size());
  99 +
  100 + insert(cdrp);
  101 +
  102 +// log.info("总共需要排班的天数 sdays={} ruleId={} from={} to={}", (p2.getDays() + 1), $ruleId, $fromDate, $toDate);
  103 +
  104 +end
  105 +
  106 +// 启用日期 属于 [开始日期,结束日期]
  107 +rule "calcu_days_2_"
  108 + salience 1000
  109 + when
  110 + ScheduleCalcuParam_input(
  111 + fromDate.isBefore(toDate) || fromDate.isEqual(toDate),
  112 + $fromDate : fromDate,
  113 + $toDate : toDate,
  114 + $xlId: xlId
  115 + )
  116 + $sri: ScheduleRule_input(
  117 + $ruleId : ruleId, $qyrq : qyrq,
  118 + $lpindex : startGbdIndex, $ryindex: startEIndex)
  119 + eval((!$qyrq.isBefore($fromDate)) && (!$qyrq.isAfter($toDate)))
  120 + then
  121 + scheduleResult.setXlid($xlId);
  122 +
  123 + // 构造Calcu_days_result_pre,用于路牌
  124 + Calcu_days_result_pre cdrp = new Calcu_days_result_pre();
  125 + cdrp.setRuleId($ruleId);
  126 + cdrp.setCalcu_index_lp($lpindex);
  127 + cdrp.setCalcu_index_ry($ryindex);
  128 + cdrp.setCalcu_start_date_1($qyrq);
  129 + cdrp.setCalcu_end_date_1($qyrq);
  130 + Period p2 = new Period($qyrq, $toDate, PeriodType.days());
  131 + cdrp.setSdays(p2.getDays() + 1);
  132 + cdrp.setCalcu_start_date_2($qyrq);
  133 + cdrp.setCalcu_end_date_2($toDate);
  134 +
  135 + /**
  136 + * 规则md5值(不使用id判定,使用md5判定)
  137 + * 使用,启用日期,路牌范围,结合生成md5编码
  138 + */
  139 + String ruleMd5 = Md5Util.getMd5(
  140 + String.valueOf($qyrq.getMillis()) +
  141 + "_" +
  142 + $sri.getSelf().getLpIds() +
  143 + "_" +
  144 + $sri.getSelf().getLpStart().toString()
  145 + );
  146 + cdrp.setRuleMd5(ruleMd5);
  147 + // 人员范围个数
  148 + cdrp.setRuleEcCount($sri.getEmployeeConfigIds().size());
  149 +
  150 + insert(cdrp);
  151 +
  152 +// log.info("总共需要排班的天数 sdays={} ruleId={} from={} to={}", (p2.getDays() + 1), $ruleId, $qyrq, $toDate);
  153 +
  154 +end
  155 +
  156 +// 使用已经排过班的数据修正Calcu_days_result_pre
  157 +// 1、避免每次从规则的启用日期开始算
  158 +// 2、时刻表会不停的修正,如果每次都从规则启用日期开始算,会出错
  159 +
  160 +declare SchedulePlanRuleResult_wrap
  161 + ruleId: String // 规则Id
  162 + ruleMd5: String // 规则md5编码
  163 + scheduleDate: DateTime // 排班日期
  164 +
  165 + isUsed: Boolean = false // 是否被使用过
  166 +
  167 + self: SchedulePlanRuleResult; // 原始对象数据
  168 +end
  169 +
  170 +rule "Calcu_SchedulePlanRuleResult_wrap"
  171 + salience 950
  172 + when
  173 + ScheduleCalcuParam_input(
  174 + fromDate.isBefore(toDate) || fromDate.isEqual(toDate),
  175 + $fromDate : fromDate,
  176 + $toDate : toDate,
  177 + $xlId: xlId,
  178 + $self: schedulePlan
  179 + )
  180 + eval($self.getIsHistoryPlanFirst() == true) // 是否使用历史排班标识
  181 + $sprr: SchedulePlanRuleResult() from scheduleRuleService.findLastByXl($xlId, $fromDate.toDate())
  182 + eval($sprr.getQyrq() != null)
  183 +
  184 + then
  185 + // 创建班序历史结果数据
  186 + SchedulePlanRuleResult_wrap schedulePlanRuleResult_wrap = new SchedulePlanRuleResult_wrap();
  187 + schedulePlanRuleResult_wrap.setRuleId($sprr.getRuleId());
  188 + schedulePlanRuleResult_wrap.setScheduleDate(new DateTime($sprr.getScheduleDate()));
  189 + schedulePlanRuleResult_wrap.setSelf($sprr);
  190 +
  191 + // 规则Md5编码
  192 + String md5 = Md5Util.getMd5(
  193 + String.valueOf($sprr.getQyrq().getTime()) +
  194 + "_" +
  195 + $sprr.getGids() +
  196 + "_" +
  197 + $sprr.getOrigingidindex()
  198 + );
  199 +
  200 +// System.out.println("修改后的md5:" + md5 + "车辆:" + $sprr.getCcZbh());
  201 +
  202 + schedulePlanRuleResult_wrap.setRuleMd5(md5);
  203 +
  204 + insert(schedulePlanRuleResult_wrap);
  205 +end
  206 +
  207 +
  208 +// 1、启用日期 < 开始日期
  209 +// 2、如果最近的排班规则历史时间在 (启用日期,开始日期) 之间,需要重新修正预处理数据
  210 +rule "calcu_days_1_with_result"
  211 + no-loop
  212 + salience 960
  213 + when
  214 + $cdrp: Calcu_days_result_pre(
  215 + calcu_start_date_1.isBefore(calcu_start_date_2),
  216 + $ruleId: ruleId,
  217 + $ruleMd5: ruleMd5,
  218 + $ruleEcCount: ruleEcCount
  219 + )
  220 + $srrr_wrap: SchedulePlanRuleResult_wrap(
  221 +// ruleId == $ruleId,
  222 + ruleMd5 == $ruleMd5,
  223 + scheduleDate.isAfter($cdrp.calcu_start_date_1),
  224 + scheduleDate.isBefore($cdrp.calcu_start_date_2),
  225 + isUsed == false,
  226 + $scheduleDate: scheduleDate,
  227 + $self: self
  228 + )
  229 + then
  230 + // 修正排班数据
  231 +// log.info("准备修正 ruleId={} historyDate={}", $ruleId, $scheduleDate);
  232 +
  233 + // 路牌范围起始index使用历史数据
  234 + $cdrp.setCalcu_index_lp(Integer.valueOf($self.getGidindex()));
  235 + // 人员范围起始index,需要判定,如果长度都是一样的,使用历史的,否则不更新,使用最新的
  236 + String history_ecids = $self.getEcids();
  237 + if ($ruleEcCount == history_ecids.split(",").length) {
  238 + $cdrp.setCalcu_index_ry(Integer.valueOf($self.getEcindex()));
  239 + }
  240 +
  241 + $cdrp.setCalcu_start_date_1($scheduleDate);
  242 + update($cdrp);
  243 +
  244 + $srrr_wrap.setIsUsed(true);
  245 + update($srrr_wrap);
  246 +
  247 +end
  248 +
  249 +
  250 +
  251 +//------------------------- 第二阶段、计算规则准备数据2(第一组循环) ----------------------------//
  252 +rule "Calcu_loop1_1_" // 路牌在时刻表中存在,就翻
  253 + salience 900
  254 + when
  255 + $cdrp: Calcu_days_result_pre(
  256 + calcu_start_date_1.isBefore(calcu_end_date_1),
  257 + $csd1: calcu_start_date_1,
  258 + $ced1: calcu_end_date_1,
  259 + $ruleId: ruleId,
  260 + $lpindex: calcu_index_lp,
  261 + $ryindex: calcu_index_ry
  262 + )
  263 + $sri: ScheduleRule_input(
  264 + ruleId == $ruleId,
  265 + $gids: guideboardIds,
  266 + $lprangesize : guideboardIds.size(),
  267 + $ryrangesize: employeeConfigIds.size()
  268 + )
  269 + $liro: LpInfoResult_output(
  270 + dateTime.isEqual($csd1),
  271 + $gids.get($lpindex) == lpId,
  272 + $lpId: lpId
  273 + )
  274 + then
  275 + $cdrp.setCalcu_index_lp(($lpindex + 1) % $lprangesize);
  276 + $cdrp.setCalcu_index_ry(($ryindex + 1) % $ryrangesize);
  277 + $cdrp.setCalcu_start_date_1($csd1.plusDays(1));
  278 +
  279 +// log.info("Calcu_loop1_1_ ruleId={}, calcu_index_lp/ry={}/{}",
  280 +// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry());
  281 +
  282 + update($cdrp);
  283 +end
  284 +
  285 +rule "Calcu_loop1_2_" // 路牌在时刻表中不存在,就不翻
  286 + salience 900
  287 + when
  288 + $cdrp: Calcu_days_result_pre(
  289 + calcu_start_date_1.isBefore(calcu_end_date_1),
  290 + $csd1: calcu_start_date_1,
  291 + $ced1: calcu_end_date_1,
  292 + $ruleId: ruleId
  293 + )
  294 + $sri: ScheduleRule_input(
  295 + ruleId == $ruleId,
  296 + $rangesize : guideboardIds.size()
  297 + )
  298 + then
  299 + $cdrp.setCalcu_start_date_1($csd1.plusDays(1));
  300 +
  301 +// log.info("Calcu_loop1_2_ ruleId={}, calcu_index_lp/ry={}/{}",
  302 +// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry());
  303 +
  304 + update($cdrp);
  305 +end
  306 +
  307 +//------------------------- 第三阶段、计算规则准备数据2(第二组循环) ----------------------------//
  308 +rule "Calcu_loop2_1_" // 路牌在时刻表中存在,就翻
  309 + salience 800
  310 + when
  311 + ScheduleCalcuParam_input($sp: schedulePlan, $xlid: xlId)
  312 + $cdrp: Calcu_days_result_pre(
  313 + calcu_start_date_1.isEqual(calcu_end_date_1),
  314 + calcu_start_date_2.isBefore(calcu_end_date_2) || calcu_start_date_2.isEqual(calcu_end_date_2),
  315 + $csd2: calcu_start_date_2,
  316 + $ced2: calcu_end_date_2,
  317 + $ruleId: ruleId,
  318 + $lpindex: calcu_index_lp,
  319 + $ryindex: calcu_index_ry
  320 + )
  321 + $sri: ScheduleRule_input(
  322 + ruleId == $ruleId,
  323 + $cid: carConfigId,
  324 + $gids: guideboardIds,
  325 + $eids: employeeConfigIds,
  326 + $lprangesize : guideboardIds.size(),
  327 + $ryrangesize: employeeConfigIds.size(),
  328 + $srf: self
  329 + )
  330 + $liro: LpInfoResult_output(
  331 + dateTime.isEqual($csd2),
  332 + $gids.get($lpindex) == lpId,
  333 + $lpId: lpId,
  334 + $ttinfoId: ttInfoId,
  335 + $ttinfoName: ttInfoName
  336 + )
  337 + then
  338 + ScheduleResult_output ro = new ScheduleResult_output();
  339 + ro.setRuleId($ruleId);
  340 + ro.setSd($csd2);
  341 + ro.setGuideboardId(String.valueOf($gids.get($lpindex)));
  342 + ro.setEmployeeConfigId(String.valueOf($eids.get($ryindex)));
  343 + ro.setCarConfigId($cid);
  344 + ro.setXlId($xlid);
  345 +
  346 + // 类型
  347 + ro.setsType($sri.getsType());
  348 +
  349 + scheduleResult.getResults().add(ro);
  350 +
  351 +// log.info("gogoogogogogo");
  352 +
  353 + $cdrp.setCalcu_index_lp(($lpindex + 1) % $lprangesize);
  354 + $cdrp.setCalcu_index_ry(($ryindex + 1) % $ryrangesize);
  355 + $cdrp.setCalcu_start_date_2($csd2.plusDays(1));
  356 +
  357 + if ($sri.getsType() == ScheduleRule_Type.NORMAL) {
  358 + // 保存排班规则循环结果 --> SchedulePlanRuleResult
  359 + SchedulePlanRuleResult schedulePlanRuleResult = new SchedulePlanRuleResult($sp);
  360 +// schedulePlanRuleResult.setXlId(String.valueOf($srf.getXl().getId()));
  361 + schedulePlanRuleResult.setXlId($srf.getXl().getId());
  362 + schedulePlanRuleResult.setXlName($srf.getXl().getName());
  363 + schedulePlanRuleResult.setRuleId($ruleId);
  364 + schedulePlanRuleResult.setCcId($cid);
  365 + schedulePlanRuleResult.setCcZbh($srf.getCarConfigInfo().getCl().getInsideCode());
  366 + schedulePlanRuleResult.setGids($srf.getLpIds()); // 参与md5计算
  367 + schedulePlanRuleResult.setGnames($srf.getLpNames());
  368 + schedulePlanRuleResult.setGidindex(String.valueOf($lpindex));
  369 + schedulePlanRuleResult.setEcids($srf.getRyConfigIds());
  370 + schedulePlanRuleResult.setEcdbbms($srf.getRyDbbms());
  371 + schedulePlanRuleResult.setEcindex(String.valueOf($ryindex));
  372 + schedulePlanRuleResult.setScheduleDate($csd2.toDate());
  373 + schedulePlanRuleResult.setTtinfoId($ttinfoId);
  374 + schedulePlanRuleResult.setTtinfoName($ttinfoName);
  375 + schedulePlanRuleResult.setQyrq($sri.getQyrq().toDate()); // 参与md5计算
  376 + schedulePlanRuleResult.setOrigingidindex(String.valueOf($sri.getSelf().getLpStart())); // 参与md5计算
  377 +
  378 + scheduleResult.getSchedulePlanRuleResults().add(schedulePlanRuleResult);
  379 + }
  380 +
  381 +
  382 +
  383 +// log.info("Calcu_loop2_1_ ruleId={}, calcu_index_lp/ry={}/{}, from={}, to={}",
  384 +// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry(), $csd2, $ced2);
  385 +
  386 + update($cdrp);
  387 +end
  388 +
  389 +rule "Calcu_loop2_2_" // 路牌在时刻表中不存在,就不翻
  390 + salience 800
  391 + when
  392 + ScheduleCalcuParam_input($sp: schedulePlan, $xlid: xlId)
  393 + $cdrp: Calcu_days_result_pre(
  394 + calcu_start_date_1.isEqual(calcu_end_date_1),
  395 + calcu_start_date_2.isBefore(calcu_end_date_2) || calcu_start_date_2.isEqual(calcu_end_date_2),
  396 + $csd2: calcu_start_date_2,
  397 + $ced2: calcu_end_date_2,
  398 + $ruleId: ruleId,
  399 + $lpindex: calcu_index_lp,
  400 + $ryindex: calcu_index_ry
  401 + )
  402 + $sri: ScheduleRule_input(
  403 + ruleId == $ruleId,
  404 + $cid: carConfigId,
  405 + $gids: guideboardIds,
  406 + $eids: employeeConfigIds,
  407 + $srf: self
  408 + )
  409 + then
  410 + ScheduleResult_output ro = new ScheduleResult_output();
  411 + ro.setRuleId($ruleId);
  412 + ro.setSd($csd2);
  413 + ro.setGuideboardId(String.valueOf($gids.get($lpindex)));
  414 + ro.setEmployeeConfigId(String.valueOf($eids.get($ryindex)));
  415 + ro.setCarConfigId($cid);
  416 + ro.setXlId($xlid);
  417 +
  418 + // 类型
  419 + ro.setsType($sri.getsType());
  420 +
  421 + scheduleResult.getResults().add(ro);
  422 +
  423 + $cdrp.setCalcu_start_date_2($csd2.plusDays(1));
  424 +
  425 +// // 保存排班规则循环结果 --> SchedulePlanRuleResult
  426 +// SchedulePlanRuleResult schedulePlanRuleResult = new SchedulePlanRuleResult($sp);
  427 +// schedulePlanRuleResult.setXlId(String.valueOf($srf.getXl().getId()));
  428 +// schedulePlanRuleResult.setXlName($srf.getXl().getName());
  429 +// schedulePlanRuleResult.setRuleId($ruleId);
  430 +// schedulePlanRuleResult.setCcId($cid);
  431 +// schedulePlanRuleResult.setCcZbh($srf.getCarConfigInfo().getCl().getInsideCode());
  432 +// schedulePlanRuleResult.setGids($srf.getLpIds());
  433 +// schedulePlanRuleResult.setGnames($srf.getLpNames());
  434 +// schedulePlanRuleResult.setGidindex(String.valueOf($lpindex));
  435 +// schedulePlanRuleResult.setEcids($srf.getRyConfigIds());
  436 +// schedulePlanRuleResult.setEcdbbms($srf.getRyDbbms());
  437 +// schedulePlanRuleResult.setEcindex(String.valueOf($ryindex));
  438 +// schedulePlanRuleResult.setScheduleDate($csd2.toDate());
  439 +//
  440 +// scheduleResult.getSchedulePlanRuleResults().add(schedulePlanRuleResult);
  441 +
  442 +// log.info("Calcu_loop2_2_ ruleId={}, calcu_index_lp/ry={}/{}, from={}, to={}",
  443 +// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry(), $csd2, $ced2);
  444 +
  445 + update($cdrp);
  446 +end
  447 +
  448 +
  449 +
  450 +
  451 +
  452 +
src/main/resources/rules/shiftloop_fb_2.drl
@@ -254,6 +254,10 @@ rule &quot;calcu_days_1_with_result&quot; @@ -254,6 +254,10 @@ rule &quot;calcu_days_1_with_result&quot;
254 $cdrp.setCalcu_index_ry(Integer.valueOf($self.getEcindex())); 254 $cdrp.setCalcu_index_ry(Integer.valueOf($self.getEcindex()));
255 } 255 }
256 256
  257 + // 翻班格式利用路牌的历史index更新
  258 + int fb_temp = Integer.valueOf($self.getGidindex()) % $cdrp.getFbweeks().size();
  259 + $cdrp.setFbgs_index(fb_temp);
  260 +
257 $cdrp.setCalcu_start_date_1($scheduleDate); 261 $cdrp.setCalcu_start_date_1($scheduleDate);
258 update($cdrp); 262 update($cdrp);
259 263
@@ -266,7 +270,7 @@ end @@ -266,7 +270,7 @@ end
266 270
267 //------------------------- 第二阶段、计算规则准备数据2(第一组循环) ----------------------------// 271 //------------------------- 第二阶段、计算规则准备数据2(第一组循环) ----------------------------//
268 272
269 -function void calcu_loop1_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sri) { 273 +function void calcu_loop1_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sri, Logger log) {
270 Integer $lpindex = $cdrp.getCalcu_index_lp(); 274 Integer $lpindex = $cdrp.getCalcu_index_lp();
271 Integer $lprangesize = $sri.getGuideboardIds().size(); 275 Integer $lprangesize = $sri.getGuideboardIds().size();
272 Integer $ryindex = $cdrp.getCalcu_index_ry(); 276 Integer $ryindex = $cdrp.getCalcu_index_ry();
@@ -274,6 +278,8 @@ function void calcu_loop1_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sr @@ -274,6 +278,8 @@ function void calcu_loop1_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sr
274 Integer $fbindex = $cdrp.getFbgs_index(); 278 Integer $fbindex = $cdrp.getFbgs_index();
275 Integer $fbfangesize = $sri.getWeekdays().size(); 279 Integer $fbfangesize = $sri.getWeekdays().size();
276 DateTime $csd1 = $cdrp.getCalcu_start_date_1(); 280 DateTime $csd1 = $cdrp.getCalcu_start_date_1();
  281 + DateTime $ced1 = $cdrp.getCalcu_end_date_1();
  282 +
277 String $ruleId = $cdrp.getRuleId(); 283 String $ruleId = $cdrp.getRuleId();
278 284
279 $cdrp.setCalcu_index_lp(($lpindex + 1) % $lprangesize); 285 $cdrp.setCalcu_index_lp(($lpindex + 1) % $lprangesize);
@@ -282,19 +288,21 @@ function void calcu_loop1_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sr @@ -282,19 +288,21 @@ function void calcu_loop1_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sr
282 $cdrp.setFbgs_index(($fbindex + 1) % $fbfangesize); 288 $cdrp.setFbgs_index(($fbindex + 1) % $fbfangesize);
283 $cdrp.setCalcu_start_date_1($csd1.plusDays(1)); 289 $cdrp.setCalcu_start_date_1($csd1.plusDays(1));
284 290
285 -// log.info("calcu_loop1_fb ruleId={}, calcu_index_lp/ry={}/{}",  
286 -// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry()); 291 +// log.info("calcu_loop1_fb ruleId={}, calcu_index_lp/ry={}/{}, from={}, to={}",
  292 +// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry(), $csd1, $ced1);
  293 +
287 } 294 }
288 -function void calcu_loop1_not_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sri) { 295 +function void calcu_loop1_not_fb(Calcu_days_result_pre $cdrp, ScheduleRule_input $sri, Logger log) {
289 DateTime $csd1 = $cdrp.getCalcu_start_date_1(); 296 DateTime $csd1 = $cdrp.getCalcu_start_date_1();
  297 + DateTime $ced1 = $cdrp.getCalcu_end_date_1();
290 Integer $fbindex = $cdrp.getFbgs_index(); 298 Integer $fbindex = $cdrp.getFbgs_index();
291 Integer $fbfangesize = $sri.getWeekdays().size(); 299 Integer $fbfangesize = $sri.getWeekdays().size();
292 300
293 $cdrp.setFbgs_index(($fbindex + 1) % $fbfangesize); 301 $cdrp.setFbgs_index(($fbindex + 1) % $fbfangesize);
294 $cdrp.setCalcu_start_date_1($csd1.plusDays(1)); 302 $cdrp.setCalcu_start_date_1($csd1.plusDays(1));
295 303
296 -// log.info("calcu_loop1_not_fb ruleId={}, calcu_index_lp/ry={}/{}",  
297 -// $cdrp.getRuleId(), $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry()); 304 +// log.info("calcu_loop1_not_fb ruleId={}, calcu_index_lp/ry={}/{}, from={}, to={}",
  305 +// $cdrp.getRuleId(), $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry(), $csd1, $ced1);
298 } 306 }
299 307
300 308
@@ -312,7 +320,7 @@ rule &quot;Calcu_loop1_fbtype_with_0_&quot; // 翻班模式为 type=1 使用翻班格式 @@ -312,7 +320,7 @@ rule &quot;Calcu_loop1_fbtype_with_0_&quot; // 翻班模式为 type=1 使用翻班格式
312 weekdays[$fbindex] == false 320 weekdays[$fbindex] == false
313 ) 321 )
314 then 322 then
315 - calcu_loop1_not_fb($cdrp, $sri); 323 + calcu_loop1_not_fb($cdrp, $sri, log);
316 update($cdrp); 324 update($cdrp);
317 end 325 end
318 326
@@ -337,7 +345,7 @@ rule &quot;Calcu_loop1_fbtype_with_1_lp_&quot; // 翻班模式为 type=1 使用翻班格 @@ -337,7 +345,7 @@ rule &quot;Calcu_loop1_fbtype_with_1_lp_&quot; // 翻班模式为 type=1 使用翻班格
337 $gids[$lpindex] == lpId 345 $gids[$lpindex] == lpId
338 ) 346 )
339 then 347 then
340 - calcu_loop1_fb($cdrp, $sri); 348 + calcu_loop1_fb($cdrp, $sri, log);
341 update($cdrp); 349 update($cdrp);
342 350
343 end 351 end
@@ -357,7 +365,7 @@ rule &quot;Calcu_loop1_fbtype_with_1_no_lp_&quot; // 翻班模式为 type=1 使用翻班 @@ -357,7 +365,7 @@ rule &quot;Calcu_loop1_fbtype_with_1_no_lp_&quot; // 翻班模式为 type=1 使用翻班
357 weekdays[$fbindex] == true 365 weekdays[$fbindex] == true
358 ) 366 )
359 then 367 then
360 - calcu_loop1_not_fb($cdrp, $sri); 368 + calcu_loop1_not_fb($cdrp, $sri, log);
361 update($cdrp); 369 update($cdrp);
362 end 370 end
363 371
@@ -381,7 +389,7 @@ rule &quot;Calcu_loop1_timetabletype_with_lp_&quot; // 翻班模式为 type=0 使用时刻 @@ -381,7 +389,7 @@ rule &quot;Calcu_loop1_timetabletype_with_lp_&quot; // 翻班模式为 type=0 使用时刻
381 $gids[$lpindex] == lpId 389 $gids[$lpindex] == lpId
382 ) 390 )
383 then 391 then
384 - calcu_loop1_fb($cdrp, $sri); 392 + calcu_loop1_fb($cdrp, $sri, log);
385 update($cdrp); 393 update($cdrp);
386 end 394 end
387 395
@@ -398,7 +406,7 @@ rule &quot;Calcu_loop1_timetabletype_with_no_lp_&quot; // 翻班模式为 type=0 使用时 @@ -398,7 +406,7 @@ rule &quot;Calcu_loop1_timetabletype_with_no_lp_&quot; // 翻班模式为 type=0 使用时
398 ruleId == $ruleId 406 ruleId == $ruleId
399 ) 407 )
400 then 408 then
401 - calcu_loop1_not_fb($cdrp, $sri); 409 + calcu_loop1_not_fb($cdrp, $sri, log);
402 update($cdrp); 410 update($cdrp);
403 end 411 end
404 412
@@ -477,18 +485,20 @@ function void calcu_loop2_fb( @@ -477,18 +485,20 @@ function void calcu_loop2_fb(
477 485
478 486
479 487
480 - log.info("calcu_loop2_fb ruleId={}, calcu_index_lp/ry={}/{}, from={}, to={}",  
481 - $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry(), $csd2, $ced2); 488 +// log.info("calcu_loop2_fb ruleId={}, calcu_index_lp/ry={}/{}, from={}, to={}",
  489 +// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry(), $csd2, $ced2);
482 490
483 } 491 }
484 492
485 function void calcu_loop2_not_fb( 493 function void calcu_loop2_not_fb(
486 Calcu_days_result_pre $cdrp, 494 Calcu_days_result_pre $cdrp,
487 ScheduleRule_input $sri, 495 ScheduleRule_input $sri,
488 - ScheduleResults_output rs) { 496 + ScheduleResults_output rs,
  497 + Logger log) {
489 498
490 String $ruleId = $cdrp.getRuleId(); 499 String $ruleId = $cdrp.getRuleId();
491 DateTime $csd2 = $cdrp.getCalcu_start_date_2(); 500 DateTime $csd2 = $cdrp.getCalcu_start_date_2();
  501 + DateTime $ced2 = $cdrp.getCalcu_end_date_2();
492 Integer $lpindex = $cdrp.getCalcu_index_lp(); 502 Integer $lpindex = $cdrp.getCalcu_index_lp();
493 List $gids = $sri.getGuideboardIds(); 503 List $gids = $sri.getGuideboardIds();
494 Integer $ryindex = $cdrp.getCalcu_index_ry(); 504 Integer $ryindex = $cdrp.getCalcu_index_ry();
@@ -514,6 +524,10 @@ function void calcu_loop2_not_fb( @@ -514,6 +524,10 @@ function void calcu_loop2_not_fb(
514 524
515 $cdrp.setFbgs_index(($fbindex + 1) % $fbfangesize); 525 $cdrp.setFbgs_index(($fbindex + 1) % $fbfangesize);
516 $cdrp.setCalcu_start_date_2($csd2.plusDays(1)); 526 $cdrp.setCalcu_start_date_2($csd2.plusDays(1));
  527 +
  528 +// log.info("calcu_loop2_not_fb ruleId={}, calcu_index_lp/ry={}/{}, from={}, to={}",
  529 +// $ruleId, $cdrp.getCalcu_index_lp(), $cdrp.getCalcu_index_ry(), $csd2, $ced2);
  530 +
517 } 531 }
518 532
519 rule "Calcu_loop2_fbtype_with_0_" // 翻班模式为 type=1 使用翻班格式翻,当天翻班格式是false,就跳过 533 rule "Calcu_loop2_fbtype_with_0_" // 翻班模式为 type=1 使用翻班格式翻,当天翻班格式是false,就跳过
@@ -532,7 +546,7 @@ rule &quot;Calcu_loop2_fbtype_with_0_&quot; // 翻班模式为 type=1 使用翻班格式 @@ -532,7 +546,7 @@ rule &quot;Calcu_loop2_fbtype_with_0_&quot; // 翻班模式为 type=1 使用翻班格式
532 weekdays[$fbindex] == false 546 weekdays[$fbindex] == false
533 ) 547 )
534 then 548 then
535 - calcu_loop2_not_fb($cdrp, $sri, scheduleResult); 549 + calcu_loop2_not_fb($cdrp, $sri, scheduleResult, log);
536 update($cdrp); 550 update($cdrp);
537 551
538 end 552 end
@@ -580,7 +594,7 @@ rule &quot;Calcu_loop2_fbtype_with_1_no_lp_&quot; // 翻班模式为 type=1 使用翻班 @@ -580,7 +594,7 @@ rule &quot;Calcu_loop2_fbtype_with_1_no_lp_&quot; // 翻班模式为 type=1 使用翻班
580 weekdays[$fbindex] == true 594 weekdays[$fbindex] == true
581 ) 595 )
582 then 596 then
583 - calcu_loop2_not_fb($cdrp, $sri, scheduleResult); 597 + calcu_loop2_not_fb($cdrp, $sri, scheduleResult, log);
584 update($cdrp); 598 update($cdrp);
585 599
586 end 600 end
@@ -626,7 +640,7 @@ rule &quot;Calcu_loop2_timetabletype_with_no_lp_&quot; // 翻班模式为 type=0 使用时 @@ -626,7 +640,7 @@ rule &quot;Calcu_loop2_timetabletype_with_no_lp_&quot; // 翻班模式为 type=0 使用时
626 ruleId == $ruleId 640 ruleId == $ruleId
627 ) 641 )
628 then 642 then
629 - calcu_loop2_not_fb($cdrp, $sri, scheduleResult); 643 + calcu_loop2_not_fb($cdrp, $sri, scheduleResult, log);
630 update($cdrp); 644 update($cdrp);
631 end 645 end
632 646
src/main/resources/static/pages/base/line/list.html
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 <div class="page-title"> 5 <div class="page-title">
6 <h1>线路信息</h1> 6 <h1>线路信息</h1>
7 </div> 7 </div>
8 - 8 +</div>
9 <!-- 片段标题 END --> 9 <!-- 片段标题 END -->
10 10
11 <!-- 线路信息导航栏组件 START --> 11 <!-- 线路信息导航栏组件 START -->
@@ -154,7 +154,6 @@ @@ -154,7 +154,6 @@
154 </div> 154 </div>
155 </div> 155 </div>
156 </div> 156 </div>
157 -</div>  
158 <!-- 157 <!--
159 158
160 <td style="vertical-align: middle;"> 159 <td style="vertical-align: middle;">
src/main/resources/static/pages/base/stationroute/deletesection.html
@@ -136,7 +136,6 @@ $(&#39;#delete_section_mobal&#39;).on(&#39;deleteSectionMobal.show&#39;,function(e, ajaxd, line, @@ -136,7 +136,6 @@ $(&#39;#delete_section_mobal&#39;).on(&#39;deleteSectionMobal.show&#39;,function(e, ajaxd, line,
136 //ids.push($(this).val()); 136 //ids.push($(this).val());
137 }); 137 });
138 if (ids != "" && ids != null && ids != undefined) { 138 if (ids != "" && ids != null && ids != undefined) {
139 - console.log("ids:" + ids);  
140 ids = ids.substr(1, ids.length - 1); 139 ids = ids.substr(1, ids.length - 1);
141 var params = {}; 140 var params = {};
142 params.ids = ids; 141 params.ids = ids;
@@ -224,6 +223,8 @@ $(&#39;#delete_section_mobal&#39;).on(&#39;deleteSectionMobal.show&#39;,function(e, ajaxd, line, @@ -224,6 +223,8 @@ $(&#39;#delete_section_mobal&#39;).on(&#39;deleteSectionMobal.show&#39;,function(e, ajaxd, line,
224 * 223 *
225 */ 224 */
226 function loadTableDate(param, isPon) { 225 function loadTableDate(param, isPon) {
  226 + // 初始化全选按钮
  227 + document.getElementById('scetionCheckItems').checked = null;
227 // 搜索参数 228 // 搜索参数
228 var params = {}; 229 var params = {};
229 if (param) 230 if (param)
src/main/resources/static/pages/base/stationroute/deletestation.html
@@ -225,6 +225,8 @@ $(&#39;#delete_station_mobal&#39;).on(&#39;deleteStationMobal.show&#39;,function(e, ajaxd, line, @@ -225,6 +225,8 @@ $(&#39;#delete_station_mobal&#39;).on(&#39;deleteStationMobal.show&#39;,function(e, ajaxd, line,
225 * 225 *
226 */ 226 */
227 function loadTableDate(param, isPon) { 227 function loadTableDate(param, isPon) {
  228 + // 初始化全选按钮
  229 + document.getElementById('stationCheckItems').checked = null;
228 // 搜索参数 230 // 搜索参数
229 var params = {}; 231 var params = {};
230 if (param) 232 if (param)
src/main/resources/static/pages/base/stationroute/js/stationroute-list-function.js
@@ -277,6 +277,7 @@ var PublicFunctions = function () { @@ -277,6 +277,7 @@ var PublicFunctions = function () {
277 277
278 /** @param directionV_ :方向 */ 278 /** @param directionV_ :方向 */
279 stationRevoke : function(directionV_) { 279 stationRevoke : function(directionV_) {
  280 + debugger
280 // 获取树选中节点对象 281 // 获取树选中节点对象
281 var obj = PublicFunctions.getCurrSelNode(directionV_); 282 var obj = PublicFunctions.getCurrSelNode(directionV_);
282 // 是否选中,选中节点是否为站点 283 // 是否选中,选中节点是否为站点
@@ -298,9 +299,9 @@ var PublicFunctions = function () { @@ -298,9 +299,9 @@ var PublicFunctions = function () {
298 // 关闭弹出框 299 // 关闭弹出框
299 layer.close(index); 300 layer.close(index);
300 if(result.status=='SUCCESS'){ 301 if(result.status=='SUCCESS'){
301 - layer.msg('撤销上行站点【'+obj[0].text+'】成功!'); 302 + layer.msg('撤销'+(directionV_==0?"上行":"下行")+'站点【'+obj[0].text+'】成功!');
302 }else{ 303 }else{
303 - layer.msg('撤销上行站点【'+obj[0].text+'】失败!'); 304 + layer.msg('撤销'+(directionV_==0?"上行":"下行")+'站点【'+obj[0].text+'】失败!');
304 } 305 }
305 WorldsBMap.clearMarkAndOverlays(); 306 WorldsBMap.clearMarkAndOverlays();
306 var Line = LineObj.getLineObj(); 307 var Line = LineObj.getLineObj();
src/main/resources/static/pages/base/stationroute/js/stationroute-list-reload.js
@@ -58,16 +58,12 @@ $(function(){ @@ -58,16 +58,12 @@ $(function(){
58 /** 初始化下行树 @param:<Line.id:线路Id;1:下行> */ 58 /** 初始化下行树 @param:<Line.id:线路Id;1:下行> */
59 PublicFunctions.TreeUpOrDown(Line.id,'1'); 59 PublicFunctions.TreeUpOrDown(Line.id,'1');
60 60
61 - var start =new Date();  
62 - console.log(start);  
63 /** 查询路段信息 @param:<Line.id:线路Id;dir:方向> @return:data:路段数据 */ 61 /** 查询路段信息 @param:<Line.id:线路Id;dir:方向> @return:data:路段数据 */
64 GetAjaxData.getSectionRouteInfo(Line.id,dir,function(data) { 62 GetAjaxData.getSectionRouteInfo(Line.id,dir,function(data) {
65 /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:路段数据> */ 63 /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:路段数据> */
66 PublicFunctions.linePanlThree(Line.id,data,dir); 64 PublicFunctions.linePanlThree(Line.id,data,dir);
67 65
68 }); 66 });
69 - var finish =new Date();  
70 - console.log(finish);  
71 },500); 67 },500);
72 68
73 }else { 69 }else {
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
1 -//所有模块service配置 1 +//所有模块service配置
2 // 车辆信息service 2 // 车辆信息service
3 angular.module('ScheduleApp').factory( 3 angular.module('ScheduleApp').factory(
4 'BusInfoManageService_g', 4 'BusInfoManageService_g',
@@ -79,7 +79,7 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -79,7 +79,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(
79 79
80 } 80 }
81 ] 81 ]
82 -); 82 +);
83 // 车辆设备信息service 83 // 车辆设备信息service
84 angular.module('ScheduleApp').factory('DeviceInfoManageService_g', ['$resource', function($resource) { 84 angular.module('ScheduleApp').factory('DeviceInfoManageService_g', ['$resource', function($resource) {
85 return $resource( 85 return $resource(
@@ -119,7 +119,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;DeviceInfoManageService_g&#39;, [&#39;$resource&#39;, @@ -119,7 +119,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;DeviceInfoManageService_g&#39;, [&#39;$resource&#39;,
119 } 119 }
120 } 120 }
121 ); 121 );
122 -}]); 122 +}]);
123 // 人员信息service 123 // 人员信息service
124 angular.module('ScheduleApp').factory( 124 angular.module('ScheduleApp').factory(
125 'EmployeeInfoManageService_g', 125 'EmployeeInfoManageService_g',
@@ -183,7 +183,7 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -183,7 +183,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(
183 } 183 }
184 ] 184 ]
185 ); 185 );
186 - 186 +
187 // 车辆配置service 187 // 车辆配置service
188 angular.module('ScheduleApp').factory('BusConfigService_g', ['$resource', 'UserPrincipal', function($resource, UserPrincipal) { 188 angular.module('ScheduleApp').factory('BusConfigService_g', ['$resource', 'UserPrincipal', function($resource, UserPrincipal) {
189 return { 189 return {
@@ -238,7 +238,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService_g&#39;, [&#39;$resource&#39;, &#39;UserP @@ -238,7 +238,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService_g&#39;, [&#39;$resource&#39;, &#39;UserP
238 } 238 }
239 ) 239 )
240 }; 240 };
241 -}]); 241 +}]);
242 // 线路运营统计service 242 // 线路运营统计service
243 angular.module('ScheduleApp').factory('BusLineInfoStatService_g', ['$resource', function($resource) { 243 angular.module('ScheduleApp').factory('BusLineInfoStatService_g', ['$resource', function($resource) {
244 return $resource( 244 return $resource(
@@ -254,7 +254,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusLineInfoStatService_g&#39;, [&#39;$resource&#39;, @@ -254,7 +254,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusLineInfoStatService_g&#39;, [&#39;$resource&#39;,
254 } 254 }
255 ); 255 );
256 }]); 256 }]);
257 - 257 +
258 // 人员配置service 258 // 人员配置service
259 angular.module('ScheduleApp').factory('EmployeeConfigService_g', ['$resource', function($resource) { 259 angular.module('ScheduleApp').factory('EmployeeConfigService_g', ['$resource', function($resource) {
260 return { 260 return {
@@ -338,7 +338,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f @@ -338,7 +338,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f
338 } 338 }
339 ) 339 )
340 }; 340 };
341 -}]); 341 +}]);
342 // 路牌管理service 342 // 路牌管理service
343 angular.module('ScheduleApp').factory('GuideboardManageService_g', ['$resource', function($resource) { 343 angular.module('ScheduleApp').factory('GuideboardManageService_g', ['$resource', function($resource) {
344 return { 344 return {
@@ -411,7 +411,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;GuideboardManageService_g&#39;, [&#39;$resource&#39;, @@ -411,7 +411,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;GuideboardManageService_g&#39;, [&#39;$resource&#39;,
411 } 411 }
412 ) 412 )
413 }; 413 };
414 -}]); 414 +}]);
415 // 套跑管理service 415 // 套跑管理service
416 angular.module('ScheduleApp').factory('rerunManageService_g', ['$resource', function($resource) { 416 angular.module('ScheduleApp').factory('rerunManageService_g', ['$resource', function($resource) {
417 return { 417 return {
@@ -453,7 +453,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;rerunManageService_g&#39;, [&#39;$resource&#39;, func @@ -453,7 +453,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;rerunManageService_g&#39;, [&#39;$resource&#39;, func
453 } 453 }
454 ) 454 )
455 }; 455 };
456 -}]); 456 +}]);
457 // 排班计划管理service 457 // 排班计划管理service
458 angular.module('ScheduleApp').factory('SchedulePlanManageService_g', ['$resource', function($resource) { 458 angular.module('ScheduleApp').factory('SchedulePlanManageService_g', ['$resource', function($resource) {
459 return { 459 return {
@@ -612,13 +612,13 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso @@ -612,13 +612,13 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso
612 612
613 613
614 }; 614 };
615 -}]); 615 +}]);
616 // 排班管理service 616 // 排班管理service
617 angular.module('ScheduleApp').factory('ScheduleRuleManageService_g', ['$resource', function($resource) { 617 angular.module('ScheduleApp').factory('ScheduleRuleManageService_g', ['$resource', function($resource) {
618 return { 618 return {
619 rest: $resource( 619 rest: $resource(
620 '/sr1fc/:id', 620 '/sr1fc/:id',
621 - {order: 'xl.id,updateDate,carConfigInfo.cl.insideCode', direction: 'ASC,DESC,ASC', id: '@id'}, 621 + {order: 'xl.id,fbtype,updateDate,carConfigInfo.cl.insideCode', direction: 'ASC,DESC,DESC,ASC', id: '@id'},
622 { 622 {
623 list: { 623 list: {
624 method: 'GET', 624 method: 'GET',
@@ -671,7 +671,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;ScheduleRuleManageService_g&#39;, [&#39;$resource @@ -671,7 +671,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;ScheduleRuleManageService_g&#39;, [&#39;$resource
671 ) 671 )
672 }; 672 };
673 }]); 673 }]);
674 - 674 +
675 // 时刻表管理service 675 // 时刻表管理service
676 angular.module('ScheduleApp').factory( 676 angular.module('ScheduleApp').factory(
677 'TTInfoManageService_g', 677 'TTInfoManageService_g',
@@ -838,7 +838,7 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -838,7 +838,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(
838 } 838 }
839 839
840 ] 840 ]
841 -); 841 +);
842 // 项目通用的全局service服务,供不同的controller使用,自定义指令不使用 842 // 项目通用的全局service服务,供不同的controller使用,自定义指令不使用
843 843
844 // 文件下载服务 844 // 文件下载服务
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/list.html
@@ -56,7 +56,8 @@ @@ -56,7 +56,8 @@
56 </tr> 56 </tr>
57 </thead> 57 </thead>
58 <tbody> 58 <tbody>
59 - <tr ng-repeat="info in ctrl.page()['content']" class="odd gradeX"> 59 + <tr ng-repeat="info in ctrl.page()['content']"
  60 + ng-class="{odd: true, gradeX: true, info: ctrl.isFBGSMODE(info.fbtype), 'row-active': ctrl.isFBGSMODE(info.fbtype)}">
60 <td> 61 <td>
61 <div> 62 <div>
62 <a href="#"> 63 <a href="#">
@@ -107,7 +108,7 @@ @@ -107,7 +108,7 @@
107 <td> 108 <td>
108 <a href="#" 109 <a href="#"
109 tooltip-animation="false" 110 tooltip-animation="false"
110 - tooltip-placement="top" 111 + tooltip-placement="left-top"
111 uib-tooltip="{{info.ryDbbms}}" 112 uib-tooltip="{{info.ryDbbms}}"
112 tooltip-class="headClass"> 113 tooltip-class="headClass">
113 {{info.ryDbbms}} 114 {{info.ryDbbms}}
@@ -116,7 +117,7 @@ @@ -116,7 +117,7 @@
116 <td> 117 <td>
117 <a href="#" 118 <a href="#"
118 tooltip-animation="false" 119 tooltip-animation="false"
119 - tooltip-placement="top" 120 + tooltip-placement="left-top"
120 uib-tooltip="{{info.fbgs}}" 121 uib-tooltip="{{info.fbgs}}"
121 tooltip-class="headClass"> 122 tooltip-class="headClass">
122 {{info.fbgs}} 123 {{info.fbgs}}
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/module.js
@@ -245,6 +245,11 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -245,6 +245,11 @@ angular.module(&#39;ScheduleApp&#39;).controller(
245 245
246 self.doPage(); 246 self.doPage();
247 247
  248 + // 是否是翻班格式模式
  249 + self.isFBGSMODE = function(type) {
  250 + return type == "FBGSMODE";
  251 + }
  252 +
248 } 253 }
249 ] 254 ]
250 ); 255 );
src/main/resources/static/pages/summary/work_hours/list.html
@@ -263,8 +263,8 @@ @@ -263,8 +263,8 @@
263 } 263 }
264 264
265 //日期选择器 265 //日期选择器
266 - $('[name=rq_eq]', f).val('2017-09-24');  
267 - flatpickr('.ct_search_form_wrap [name=rq_eq]', {"locale": "zh", maxDate: '2017-09-24', minDate: '2017-07-01'}); 266 + $('[name=rq_eq]', f).val('2017-10-10');
  267 + flatpickr('.ct_search_form_wrap [name=rq_eq]', {"locale": "zh", maxDate: '2017-10-10', minDate: '2017-07-01'});
268 268
269 var comps; 269 var comps;
270 //构建公司级联下拉框 270 //构建公司级联下拉框
src/main/resources/static/pages/trafficManage/js/lineStationUploadRecord.js
@@ -99,6 +99,9 @@ @@ -99,6 +99,9 @@
99 alert("请选择时间"); 99 alert("请选择时间");
100 return ; 100 return ;
101 } 101 }
  102 + if(pagination){
  103 + page = 0;
  104 + }
102 var params = {}; 105 var params = {};
103 // 排序(按方向与序号) 106 // 排序(按方向与序号)
104 params['order'] = 'reportDate'; 107 params['order'] = 'reportDate';
src/main/resources/static/real_control_v2/css/handicapped_style.css 0 → 100644
  1 +/** 为残疾人提供的一份样式 , .ct_table.line-schedule-table dl dt*/
  2 +
  3 +.ct_table.line-schedule-table dl dd{
  4 + border-right-color: #000000 !important;
  5 + border-top: 1px solid #000000 !important;
  6 + color: #000000;
  7 +}
  8 +
  9 +.schedule-body .ct_table.line-schedule-table dl:nth-child(even){
  10 + background: rgba(114, 197, 210, 0.33) !important;
  11 +}
  12 +
  13 +.tl-yzx{
  14 + background: rgb(151, 151, 223) !important;
  15 +}
  16 +
  17 +.tl-zzzx {
  18 + background: rgb(152, 217, 54) !important;
  19 +}
  20 +
  21 +.tl-xxfc {
  22 + background: rgb(15, 220, 220) !important;
  23 +}
  24 +
  25 +.ct_table>.ct_table_body{
  26 + border-bottom: 1px solid #000000 !important;
  27 +}
src/main/resources/static/real_control_v2/css/main.css
@@ -1411,10 +1411,11 @@ ul.left_tabs_lg li{ @@ -1411,10 +1411,11 @@ ul.left_tabs_lg li{
1411 border-bottom: none; 1411 border-bottom: none;
1412 } 1412 }
1413 1413
1414 -.add_range_wrap>.err_panel{  
1415 - font-size: 16px;  
1416 - color: #a44a4a; 1414 +.err_panel{
  1415 + font-size: 12px;
  1416 + color: #7e7d7d;
1417 font-family: 微软雅黑; 1417 font-family: 微软雅黑;
  1418 + margin-top: 5px;
1418 } 1419 }
1419 1420
1420 #schedule-lp_change-modal .ct_table dl{ 1421 #schedule-lp_change-modal .ct_table dl{
@@ -1458,6 +1459,16 @@ ul.left_tabs_lg li{ @@ -1458,6 +1459,16 @@ ul.left_tabs_lg li{
1458 background: #ffffff; 1459 background: #ffffff;
1459 } 1460 }
1460 1461
  1462 +.sub_task_form_v2.service_form.temp_service:before{
  1463 + content: '营运 (临加)';
  1464 + color: #9C27B0;
  1465 + background: #ffffff;
  1466 +}
  1467 +
  1468 +.sub_task_form_v2.service_form.temp_service {
  1469 + background: #faf0fd;
  1470 +}
  1471 +
1461 .sub_task_form_v2.empty_form:before{ 1472 .sub_task_form_v2.empty_form:before{
1462 content: '空驶'; 1473 content: '空驶';
1463 color: #928f92; 1474 color: #928f92;
@@ -1699,4 +1710,13 @@ dl.active&gt;dd.disabled{ @@ -1699,4 +1710,13 @@ dl.active&gt;dd.disabled{
1699 1710
1700 .display_hide{ 1711 .display_hide{
1701 display: none; 1712 display: none;
  1713 +}
  1714 +
  1715 +.ct_eye_icon{
  1716 + font-size: 16px;
  1717 + cursor: pointer;
  1718 +}
  1719 +
  1720 +.ct_eye_icon.active{
  1721 + color: #444;
1702 } 1722 }
1703 \ No newline at end of file 1723 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/fcxxwt.html
@@ -197,15 +197,19 @@ @@ -197,15 +197,19 @@
197 return; 197 return;
198 } 198 }
199 199
200 - if(!data.adjustExps && (data.status==-1  
201 - || (data.jhlc==0 && sch.bcType != 'in' && sch.bcType != 'out'))){ 200 + //正常班次里程修改为0
  201 + var normalDestory = data.jhlc==0 && sch.bcType != 'in' && sch.bcType != 'out';
  202 + //修改里程
  203 + var editJhlc = data.jhlc != sch.jhlc && data.jhlc != 0;
  204 + if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){
202 notify_err("当前操作需要选择调整原因!"); 205 notify_err("当前操作需要选择调整原因!");
203 return; 206 return;
204 } 207 }
205 208
206 //里程有修改 209 //里程有修改
207 - if(data.jhlc != sch.jhlc && data.jhlc != 0){  
208 - var confHtml = '<h4 style="color: #c04c4c;margin-bottom: 9px;">确认要将班次里程由'+sch.jhlc+' 修改为'+data.jhlc+' </h4><small>备注:</small>'; 210 + //if(data.jhlc != sch.jhlc && data.jhlc != 0){
  211 +
  212 + /*var confHtml = '<h4 style="color: #c04c4c;margin-bottom: 9px;">确认要将班次里程由'+sch.jhlc+' 修改为'+data.jhlc+' </h4><small>备注:</small>';
209 UIkit.modal.prompt(confHtml, data.remarks, function(remarks){ 213 UIkit.modal.prompt(confHtml, data.remarks, function(remarks){
210 if(remarks){ 214 if(remarks){
211 //在这里写操作日志 215 //在这里写操作日志
@@ -221,10 +225,10 @@ @@ -221,10 +225,10 @@
221 Ok: '确定修改公里并保存', 225 Ok: '确定修改公里并保存',
222 Cancel: '取消' 226 Cancel: '取消'
223 } 227 }
224 - });  
225 - }  
226 - else  
227 - postData(data); 228 + });*/
  229 + //}
  230 + //else
  231 + postData(data);
228 }); 232 });
229 233
230 var postData = function (data) { 234 var postData = function (data) {
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_custom.html
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <span class="plus_icon_span"> 3 <span class="plus_icon_span">
4 <i class="uk-icon-plus"></i> 4 <i class="uk-icon-plus"></i>
5 </span> 5 </span>
6 - <form class="uk-form remarks_form"> 6 +<!-- <form class="uk-form remarks_form">
7 <div class="uk-grid"> 7 <div class="uk-grid">
8 <div class="uk-width-1-1"> 8 <div class="uk-width-1-1">
9 <div class="uk-form-row ct-stacked"> 9 <div class="uk-form-row ct-stacked">
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 </div> 14 </div>
15 </div> 15 </div>
16 </div> 16 </div>
17 - </form> 17 + </form>-->
18 <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> 18 <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;">
19 <button type="button" class="uk-button uk-modal-close">取消</button> 19 <button type="button" class="uk-button uk-modal-close">取消</button>
20 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button> 20 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
@@ -76,7 +76,7 @@ @@ -76,7 +76,7 @@
76 e.preventDefault(); 76 e.preventDefault();
77 77
78 dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) 78 dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this)
79 - , {remarks: $('#form-s-t',wrap).val(), 'schedule.id': sch.id})); 79 + , {/*remarks: $('#form-s-t',wrap).val(), */'schedule.id': sch.id}));
80 $(this).data('valid', true); 80 $(this).data('valid', true);
81 81
82 if(allValidSuccess()){ 82 if(allValidSuccess()){
@@ -93,21 +93,21 @@ @@ -93,21 +93,21 @@
93 } 93 }
94 var data = dataArray[i]; 94 var data = dataArray[i];
95 //营运里程为0的不保存 95 //营运里程为0的不保存
96 - if(data.mileageType == 'service' && data.mileage==0){ 96 + /*if(data.mileageType == 'service' && data.mileage==0){
97 i++; 97 i++;
98 f(); 98 f();
99 } 99 }
100 - else{ 100 + else{*/
101 //营运子任务不写备注 101 //营运子任务不写备注
102 - if(data.mileageType == 'service' && !data.destroy)  
103 - data.remarks = ''; 102 + /*if(data.mileageType == 'service' && !data.destroy)
  103 + data.remarks = '';*/
104 gb_common.$post('/childTask', data, function (rs) { 104 gb_common.$post('/childTask', data, function (rs) {
105 notify_succ('子任务添加成功'); 105 notify_succ('子任务添加成功');
106 rst = rs.t; 106 rst = rs.t;
107 i++; 107 i++;
108 f(); 108 f();
109 }); 109 });
110 - } 110 + //}
111 })(); 111 })();
112 } 112 }
113 }); 113 });
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_in_out.html
1 <div class="add_inOut_wrap"> 1 <div class="add_inOut_wrap">
2 <div class="forms"></div> 2 <div class="forms"></div>
3 - <form class="uk-form remarks_form"> 3 +<!-- <form class="uk-form remarks_form">
4 <div class="uk-grid"> 4 <div class="uk-grid">
5 <div class="uk-width-1-1"> 5 <div class="uk-width-1-1">
6 <div class="uk-form-row ct-stacked"> 6 <div class="uk-form-row ct-stacked">
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 </div> 11 </div>
12 </div> 12 </div>
13 </div> 13 </div>
14 - </form> 14 + </form>-->
15 <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> 15 <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;">
16 <button type="button" class="uk-button uk-modal-close">取消</button> 16 <button type="button" class="uk-button uk-modal-close">取消</button>
17 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button> 17 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
@@ -276,7 +276,7 @@ @@ -276,7 +276,7 @@
276 e.preventDefault(); 276 e.preventDefault();
277 277
278 dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) 278 dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this)
279 - , {remarks: $('#form-s-t',wrap).val(), 'schedule.id': sch.id})); 279 + , {/*remarks: $('#form-s-t',wrap).val(), */'schedule.id': sch.id}));
280 $(this).data('valid', true); 280 $(this).data('valid', true);
281 281
282 if(allValidSuccess()){ 282 if(allValidSuccess()){
@@ -299,8 +299,8 @@ @@ -299,8 +299,8 @@
299 } 299 }
300 else{ 300 else{
301 //营运子任务不写备注 301 //营运子任务不写备注
302 - if(data.mileageType == 'service' && !data.destroy)  
303 - data.remarks = ''; 302 + /*if(data.mileageType == 'service' && !data.destroy)
  303 + data.remarks = '';*/
304 gb_common.$post('/childTask', data, function (rs) { 304 gb_common.$post('/childTask', data, function (rs) {
305 notify_succ('子任务添加成功'); 305 notify_succ('子任务添加成功');
306 rst = rs.t; 306 rst = rs.t;
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_range_normal.html 0 → 100644
  1 +<!-- 区间变全程 -->
  2 +<div class="add_range_2_normal">
  3 + <div class="err_panel">暂不开放使用</div>
  4 + <!--<div class="forms"></div>
  5 +
  6 + <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;">
  7 + <button type="button" class="uk-button uk-modal-close">取消</button>
  8 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  9 + </div>
  10 + <script>
  11 + (function () {
  12 + var wrap = '#add-sub-task-main-modal .add_range_2_normal',
  13 + sch,f1,tf1;
  14 +
  15 + $(wrap).on('init', function (e, data) {
  16 + e.stopPropagation();
  17 + sch = data.sch;
  18 +
  19 + f1 = addTaskForm();
  20 + tf1 = addTaskForm();
  21 + tf1.addClass('temp_service');
  22 + });
  23 +
  24 + function addTaskForm() {
  25 + var htmlStr = template('sub-task-v2-form-temp', {sch: sch});
  26 + var f = $(htmlStr);
  27 + $('.forms', wrap).append(f);
  28 + //字典转换
  29 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  30 +
  31 + //班次类型切换
  32 + $('select[name=type2]', f).trigger('change');
  33 +
  34 + //滚动条到底
  35 + $('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight);
  36 +
  37 + f.formValidation({
  38 + framework: 'uikit',
  39 + locale: 'zh_CN'
  40 + }).on('add_reason_field', function () {
  41 + $(this).formValidation('addField', 'reason');
  42 + });
  43 + return f;
  44 + }
  45 + })();
  46 + </script>-->
  47 +</div>
0 \ No newline at end of file 48 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_range_turn.html
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 </div> 30 </div>
31 31
32 <div class="forms"></div> 32 <div class="forms"></div>
33 - <form class="uk-form remarks_form"> 33 +<!-- <form class="uk-form remarks_form">
34 <div class="uk-grid"> 34 <div class="uk-grid">
35 <div class="uk-width-1-1"> 35 <div class="uk-width-1-1">
36 <div class="uk-form-row ct-stacked"> 36 <div class="uk-form-row ct-stacked">
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 </div> 41 </div>
42 </div> 42 </div>
43 </div> 43 </div>
44 - </form> 44 + </form>-->
45 <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> 45 <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;">
46 <button type="button" class="uk-button uk-modal-close">取消</button> 46 <button type="button" class="uk-button uk-modal-close">取消</button>
47 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button> 47 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
@@ -55,9 +55,9 @@ @@ -55,9 +55,9 @@
55 $(wrap).on('init', function (e, data) { 55 $(wrap).on('init', function (e, data) {
56 e.stopPropagation(); 56 e.stopPropagation();
57 sch = data.sch; 57 sch = data.sch;
58 - nextSch = gb_schedule_table.getNextNormalSch(sch);  
59 - if(!nextSch || nextSch.bcType!='normal'){  
60 - $(wrap).html('<div class="err_panel">无法做区间调头,原因是没有找到返程班次!</div>'); 58 + nextSch = gb_schedule_table.getNextSch(sch);
  59 + if(!nextSch || nextSch.bcType=='in' || nextSch.bcType=='out'){
  60 + $(wrap).html('<div class="err_panel">当前班次类型不支持直接应用区间调头模板!</div>');
61 return; 61 return;
62 } 62 }
63 63
@@ -67,7 +67,7 @@ @@ -67,7 +67,7 @@
67 }), 'directions'); 67 }), 'directions');
68 //第一段营运 68 //第一段营运
69 f1 = addTaskForm(); 69 f1 = addTaskForm();
70 - $f('startStation', f1).trigger('change'); 70 + $f('startStation', f1).val(sch.qdzCode).trigger('change');
71 71
72 disabled_form(f1); 72 disabled_form(f1);
73 $('.domains', f1).empty(); 73 $('.domains', f1).empty();
@@ -247,7 +247,7 @@ @@ -247,7 +247,7 @@
247 e.preventDefault(); 247 e.preventDefault();
248 248
249 dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) 249 dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this)
250 - , {remarks: $('#form-s-t',wrap).val()})); 250 + /*, {remarks: $('#form-s-t',wrap).val()}*/));
251 $(this).data('valid', true); 251 $(this).data('valid', true);
252 252
253 if (allValidSuccess()) { 253 if (allValidSuccess()) {
@@ -267,8 +267,8 @@ @@ -267,8 +267,8 @@
267 } 267 }
268 var data = dataArray[i]; 268 var data = dataArray[i];
269 //营运子任务不写备注 269 //营运子任务不写备注
270 - if(data.mileageType == 'service' && !data.destroy)  
271 - data.remarks = ''; 270 + /*if(data.mileageType == 'service' && !data.destroy)
  271 + data.remarks = '';*/
272 gb_common.$post('/childTask', data, function (rs) { 272 gb_common.$post('/childTask', data, function (rs) {
273 notify_succ('子任务添加成功'); 273 notify_succ('子任务添加成功');
274 gb_schedule_table.updateSchedule(rs.t); 274 gb_schedule_table.updateSchedule(rs.t);
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/main.html
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <li name="normal"><a>1、子任务</a></li> 10 <li name="normal"><a>1、子任务</a></li>
11 <li name="in_out"><a>2、进出场</a></li> 11 <li name="in_out"><a>2、进出场</a></li>
12 <li name="range_turn"><a>3、区间调头</a></li> 12 <li name="range_turn"><a>3、区间调头</a></li>
13 - <!--<li name="range_to_normal"><a>4、区间变全程</a></li>--> 13 + <li name="range_to_normal"><a>4、区间变全程</a></li>
14 </ul> 14 </ul>
15 </div> 15 </div>
16 <div class="uk-width-8-10"> 16 <div class="uk-width-8-10">
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 <li class="tab_cont normalCont"></li> 18 <li class="tab_cont normalCont"></li>
19 <li class="tab_cont inOutCont"></li> 19 <li class="tab_cont inOutCont"></li>
20 <li class="tab_cont rangeTurnCont"></li> 20 <li class="tab_cont rangeTurnCont"></li>
21 - <!--<li class="tab_cont rangeToNormal"></li>--> 21 + <li class="tab_cont rangeToNormal"></li>
22 </ul> 22 </ul>
23 </div> 23 </div>
24 </div> 24 </div>
@@ -95,10 +95,12 @@ @@ -95,10 +95,12 @@
95 </div> 95 </div>
96 <div class="uk-width-1-3"> 96 <div class="uk-width-1-3">
97 <div class="uk-form-row"> 97 <div class="uk-form-row">
98 - <label class="uk-form-label">公里</label> 98 + <label class="uk-form-label">公里</label>
99 <div class="uk-form-controls"> 99 <div class="uk-form-controls">
100 <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" 100 <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false"
101 - required> 101 + required style="width: 42%;">
  102 + <select class="form-control nt-dictionary" required name="mileageType"
  103 + data-group="MileageType" style="width: 52%;"></select>
102 </div> 104 </div>
103 </div> 105 </div>
104 </div> 106 </div>
@@ -108,10 +110,10 @@ @@ -108,10 +110,10 @@
108 <div class="uk-width-2-3 domains"></div> 110 <div class="uk-width-2-3 domains"></div>
109 <div class="uk-width-1-3"> 111 <div class="uk-width-1-3">
110 <div class="uk-form-row"> 112 <div class="uk-form-row">
111 - <label class="uk-form-label">里程类型</label> 113 + <label class="uk-form-label">备注</label>
112 <div class="uk-form-controls"> 114 <div class="uk-form-controls">
113 - <select class="form-control nt-dictionary" required name="mileageType"  
114 - data-group="MileageType"></select> 115 + <!--<select class="form-control nt-dictionary" required name="remarks"></select>-->
  116 + <input class="form-control" name="remarks" data-fv-stringlength-max="50" data-fv-stringlength="true">
115 </div> 117 </div>
116 </div> 118 </div>
117 </div> 119 </div>
@@ -245,6 +247,8 @@ @@ -245,6 +247,8 @@
245 $('.rangeTurnCont', modal).html(st_doms.range_dom); 247 $('.rangeTurnCont', modal).html(st_doms.range_dom);
246 $('.add_range_wrap', modal).trigger('init', data); 248 $('.add_range_wrap', modal).trigger('init', data);
247 //区间变全程 249 //区间变全程
  250 + $('.rangeToNormal', modal).html(st_doms.range_2_normal_dom);
  251 + //$('.add_range_2_normal', modal).trigger('init', data);
248 } 252 }
249 }); 253 });
250 254
@@ -505,7 +509,7 @@ @@ -505,7 +509,7 @@
505 } 509 }
506 else { 510 else {
507 var cont = f.parents('li.tab_cont'), 511 var cont = f.parents('li.tab_cont'),
508 - remInput = $('.remarks_form [name=remarks]', cont); 512 + remInput = $('[name=remarks]', cont);
509 513
510 if(remInput.val()==reason + ',') 514 if(remInput.val()==reason + ',')
511 return; 515 return;
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
@@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
23 </a> 23 </a>
24 </div> 24 </div>
25 </div> 25 </div>
  26 + <i class="uk-icon-eye uk-icon-hover ct_eye_icon"></i>
26 <div class="search_sch_panel"> 27 <div class="search_sch_panel">
27 <form class="uk-form" onsubmit="javascript:return false;"> 28 <form class="uk-form" onsubmit="javascript:return false;">
28 <div class="uk-autocomplete sch-search-autocom"> 29 <div class="uk-autocomplete sch-search-autocom">
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
@@ -19,6 +19,9 @@ var gb_schedule_context_menu = (function () { @@ -19,6 +19,9 @@ var gb_schedule_context_menu = (function () {
19 $.get(folder + '/sub_task_v2/add_range_turn.html', function (dom) { 19 $.get(folder + '/sub_task_v2/add_range_turn.html', function (dom) {
20 st_doms.range_dom=dom; 20 st_doms.range_dom=dom;
21 }); 21 });
  22 + $.get(folder + '/sub_task_v2/add_range_normal.html', function (dom) {
  23 + st_doms.range_2_normal_dom=dom;
  24 + });
22 //提前缓存临加的片段页面 25 //提前缓存临加的片段页面
23 var add_sch_doms={}; 26 var add_sch_doms={};
24 $.get(folder + '/temp_sch/add_normal.html', function (dom) { 27 $.get(folder + '/temp_sch/add_normal.html', function (dom) {
src/main/resources/static/real_control_v2/js/line_schedule/legend.js
@@ -8,7 +8,7 @@ var gb_sch_legend = (function () { @@ -8,7 +8,7 @@ var gb_sch_legend = (function () {
8 var animationend = 'webkitAnimationEnd animationend'; 8 var animationend = 'webkitAnimationEnd animationend';
9 var initLegend = function (cont) { 9 var initLegend = function (cont) {
10 //双击展开 10 //双击展开
11 - $('.schedule-wrap i.uk-icon-question-circle', cont).dblclick(openLegend); 11 + /*$('.schedule-wrap i.uk-icon-question-circle', cont).dblclick(openLegend);
12 12
13 //关闭事件 13 //关闭事件
14 $('.schedule-wrap .fixed_legend_close', cont).on('click', function () { 14 $('.schedule-wrap .fixed_legend_close', cont).on('click', function () {
@@ -35,13 +35,34 @@ var gb_sch_legend = (function () { @@ -35,13 +35,34 @@ var gb_sch_legend = (function () {
35 35
36 var flag=storage.getItem(locaKey); 36 var flag=storage.getItem(locaKey);
37 if(flag && flag==1) 37 if(flag && flag==1)
38 - openLegend(); 38 + openLegend();*/
  39 +
  40 + //eye init
  41 + var eyeState = storage.getItem('eye_state');
  42 + if(eyeState && eyeState==1)
  43 + $(eye_dom).eq(0).trigger('click');
39 }; 44 };
40 45
  46 + var eye_dom = '.schedule-wrap i.ct_eye_icon';
  47 + $(document).on('click', eye_dom, changeHandicappedStyle);
  48 + function changeHandicappedStyle() {
  49 + if($(this).hasClass('active')){
  50 + $(eye_dom).removeClass('active');
  51 + $('#handicappedStyleLink', 'head').remove();
  52 + storage.setItem('eye_state', 0);
  53 + }
  54 + else{
  55 + $(eye_dom).addClass('active');
  56 + $("<link>").attr({rel: "stylesheet", type: "text/css", href: "/real_control_v2/css/handicapped_style.css",
  57 + id: 'handicappedStyleLink'
  58 + }).appendTo("head");
  59 + storage.setItem('eye_state', 1);
  60 + }
  61 + }
41 62
42 //展开图例 63 //展开图例
43 var openLegend = function () { 64 var openLegend = function () {
44 - $('.qtip.sch-tl-tip').qtip('destroy', true); 65 + /*$('.qtip.sch-tl-tip').qtip('destroy', true);
45 66
46 //隐藏ICON 67 //隐藏ICON
47 $('.schedule-wrap i.uk-icon-question-circle').hide(); 68 $('.schedule-wrap i.uk-icon-question-circle').hide();
@@ -58,7 +79,7 @@ var gb_sch_legend = (function () { @@ -58,7 +79,7 @@ var gb_sch_legend = (function () {
58 $('.schedule-wrap .fixed_legend').css('display', 'inline-block'); 79 $('.schedule-wrap .fixed_legend').css('display', 'inline-block');
59 80
60 //记录状态 81 //记录状态
61 - storage.setItem(locaKey, 1); 82 + storage.setItem(locaKey, 1);*/
62 }; 83 };
63 84
64 return { 85 return {
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
@@ -105,8 +105,10 @@ var gb_schedule_table = (function () { @@ -105,8 +105,10 @@ var gb_schedule_table = (function () {
105 //标记路牌最后一个班次 105 //标记路牌最后一个班次
106 markerLastByLine(lineCode); 106 markerLastByLine(lineCode);
107 //初始化图例相关,dbclick 不能代理事件 107 //初始化图例相关,dbclick 不能代理事件
108 - gb_sch_legend.init(this); 108 + //gb_sch_legend.init(this);
109 }); 109 });
  110 + //初始化图例
  111 + gb_sch_legend.init();
110 var content = $('.line_schedule .ct_table_wrap'); 112 var content = $('.line_schedule .ct_table_wrap');
111 //初始化滚动条 113 //初始化滚动条
112 content.perfectScrollbar({suppressScrollX: true}); 114 content.perfectScrollbar({suppressScrollX: true});
src/main/resources/static/real_control_v2/js/main.js
@@ -47,7 +47,7 @@ var gb_main_ep = new EventProxy(), @@ -47,7 +47,7 @@ var gb_main_ep = new EventProxy(),
47 $('li.map-panel', '#main-tab-content').load('/real_control_v2/mapmonitor/real.html'); 47 $('li.map-panel', '#main-tab-content').load('/real_control_v2/mapmonitor/real.html');
48 }, 1000); 48 }, 1000);
49 //弹出更新说明 49 //弹出更新说明
50 - showUpdateDescription(); 50 + //showUpdateDescription();
51 }); 51 });
52 52
53 function g_emit(id) { 53 function g_emit(id) {
src/main/resources/static/real_control_v2/js/utils/ct_table.js
@@ -49,7 +49,7 @@ var gb_ct_table = (function() { @@ -49,7 +49,7 @@ var gb_ct_table = (function() {
49 $tbody.empty().append(dls); 49 $tbody.empty().append(dls);
50 //console.log('replaceAfter..', replaceAfter); 50 //console.log('replaceAfter..', replaceAfter);
51 replaceAfter && replaceAfter($tbody); 51 replaceAfter && replaceAfter($tbody);
52 - } 52 + };
53 53
54 function toggleOrder(that) { 54 function toggleOrder(that) {
55 var order = $(that).data('order'); 55 var order = $(that).data('order');