Commit cfd644b837c14063bfc590726900317bf103f960

Authored by 徐烜
1 parent 851fdf7c

Update

src/main/java/com/bsth/entity/schedule/temp/SchedulePlanRuleResult.java
@@ -27,20 +27,22 @@ public class SchedulePlanRuleResult { @@ -27,20 +27,22 @@ public class SchedulePlanRuleResult {
27 27
28 /** 排班规则id */ 28 /** 排班规则id */
29 private String ruleId; 29 private String ruleId;
30 - /** 启用日期 */ 30 + /** 启用日期(用于md5计算) */
31 private Date qyrq; 31 private Date qyrq;
32 /** 车辆配置id */ 32 /** 车辆配置id */
33 private String ccId; 33 private String ccId;
34 /** 车辆自编号 */ 34 /** 车辆自编号 */
35 private String ccZbh; 35 private String ccZbh;
36 36
37 - /** 路牌id列表字符串 */ 37 + /** 路牌id列表字符串(用于md5计算) */
38 @Column(length = 1000) 38 @Column(length = 1000)
39 private String gids; 39 private String gids;
40 /** 路牌名字列表字符串 */ 40 /** 路牌名字列表字符串 */
41 private String gnames; 41 private String gnames;
42 /** 翻到哪个路牌索引 */ 42 /** 翻到哪个路牌索引 */
43 private String gidindex; 43 private String gidindex;
  44 + /** 原始的起始路牌索引(用于md5计算) */
  45 + private String origingidindex;
44 /** 人员配置id列表字符串 */ 46 /** 人员配置id列表字符串 */
45 @Column(length = 1000) 47 @Column(length = 1000)
46 private String ecids; 48 private String ecids;
@@ -81,8 +83,8 @@ public class SchedulePlanRuleResult { @@ -81,8 +83,8 @@ public class SchedulePlanRuleResult {
81 "(xl_id,xl_name,rule_id,cc_id,cc_zbh," + 83 "(xl_id,xl_name,rule_id,cc_id,cc_zbh," +
82 "gids,gnames,gidindex,ecids,ecdbbms,ecindex," + 84 "gids,gnames,gidindex,ecids,ecdbbms,ecindex," +
83 "ttinfo_id,ttinfo_name,schedule_date," + 85 "ttinfo_id,ttinfo_name,schedule_date," +
84 - "sysuser_id,sysuser_name,create_date, qyrq) " +  
85 - "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 86 + "sysuser_id,sysuser_name,create_date, qyrq, origingidindex) " +
  87 + "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
86 88
87 return sql; 89 return sql;
88 } 90 }
@@ -106,7 +108,7 @@ public class SchedulePlanRuleResult { @@ -106,7 +108,7 @@ public class SchedulePlanRuleResult {
106 ps.setString(16, this.getSysuserName()); 108 ps.setString(16, this.getSysuserName());
107 ps.setTimestamp(17, new java.sql.Timestamp(this.getCreateDate().getTime())); 109 ps.setTimestamp(17, new java.sql.Timestamp(this.getCreateDate().getTime()));
108 ps.setDate(18, new java.sql.Date(this.getQyrq().getTime())); 110 ps.setDate(18, new java.sql.Date(this.getQyrq().getTime()));
109 - 111 + ps.setString(19, this.getOrigingidindex());
110 112
111 } 113 }
112 114
@@ -261,4 +263,12 @@ public class SchedulePlanRuleResult { @@ -261,4 +263,12 @@ public class SchedulePlanRuleResult {
261 public void setQyrq(Date qyrq) { 263 public void setQyrq(Date qyrq) {
262 this.qyrq = qyrq; 264 this.qyrq = qyrq;
263 } 265 }
  266 +
  267 + public String getOrigingidindex() {
  268 + return origingidindex;
  269 + }
  270 +
  271 + public void setOrigingidindex(String origingidindex) {
  272 + this.origingidindex = origingidindex;
  273 + }
264 } 274 }
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
@@ -358,6 +358,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im @@ -358,6 +358,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im
358 // 执行完毕销毁,有日志的也要关闭 358 // 执行完毕销毁,有日志的也要关闭
359 session.dispose(); 359 session.dispose();
360 360
  361 +// logger.info("错误总数={}", result.getInfos().size());
361 // for (ValidateResults_output.ValidInfo validInfo: result.getInfos()) { 362 // for (ValidateResults_output.ValidInfo validInfo: result.getInfos()) {
362 // logger.info(validInfo.getDesc()); 363 // logger.info(validInfo.getDesc());
363 // } 364 // }
src/main/java/com/bsth/service/schedule/rules/ScheduleRuleServiceImpl.java
@@ -119,6 +119,7 @@ public class ScheduleRuleServiceImpl implements ScheduleRuleService { @@ -119,6 +119,7 @@ public class ScheduleRuleServiceImpl implements ScheduleRuleService {
119 obj.setScheduleDate(rs.getDate("schedule_date")); 119 obj.setScheduleDate(rs.getDate("schedule_date"));
120 obj.setGidindex(rs.getString("gidindex")); 120 obj.setGidindex(rs.getString("gidindex"));
121 obj.setEcindex(rs.getString("ecindex")); 121 obj.setEcindex(rs.getString("ecindex"));
  122 + obj.setOrigingidindex(rs.getString("origingidindex"));
122 123
123 // 其他字段没用 124 // 其他字段没用
124 return obj; 125 return obj;
src/main/java/com/bsth/service/schedule/rules/validate/ValidRepeatBcFunction.java
@@ -47,12 +47,14 @@ public class ValidRepeatBcFunction implements AccumulateFunction { @@ -47,12 +47,14 @@ public class ValidRepeatBcFunction implements AccumulateFunction {
47 47
48 @Override 48 @Override
49 public Serializable createContext() { 49 public Serializable createContext() {
  50 + System.out.println("create");
50 return new RepeatBcInfo(); 51 return new RepeatBcInfo();
51 } 52 }
52 53
53 @Override 54 @Override
54 public void init(Serializable serializable) throws Exception { 55 public void init(Serializable serializable) throws Exception {
55 // TODO: 56 // TODO:
  57 + System.out.println("init");
56 } 58 }
57 59
58 @Override 60 @Override
@@ -82,12 +84,20 @@ public class ValidRepeatBcFunction implements AccumulateFunction { @@ -82,12 +84,20 @@ public class ValidRepeatBcFunction implements AccumulateFunction {
82 84
83 @Override 85 @Override
84 public boolean supportsReverse() { 86 public boolean supportsReverse() {
85 - return false; 87 + return true;
86 } 88 }
87 89
88 @Override 90 @Override
89 - public void reverse(Serializable serializable, Object o) throws Exception { 91 + public void reverse(Serializable context, Object o) throws Exception {
  92 + RepeatBcInfo repeatBcInfo = (RepeatBcInfo) context;
  93 + SchedulePlanInfo schedulePlanInfo = (SchedulePlanInfo) o;
90 94
  95 + String key = schedulePlanInfo.getLp() + "_" + schedulePlanInfo.getFcsj();
  96 + repeatBcInfo.lpBcFcsjCount.remove(key);
  97 +
  98 + if (!repeatBcInfo.validInfoList.isEmpty()) { // 全部清空
  99 + repeatBcInfo.validInfoList.clear();
  100 + }
91 } 101 }
92 102
93 @Override 103 @Override
src/main/resources/rules/shiftloop_fb_2.drl
@@ -88,7 +88,9 @@ rule "calcu_days_1_" @@ -88,7 +88,9 @@ rule "calcu_days_1_"
88 String ruleMd5 = Md5Util.getMd5( 88 String ruleMd5 = Md5Util.getMd5(
89 String.valueOf($qyrq.getMillis()) + 89 String.valueOf($qyrq.getMillis()) +
90 "_" + 90 "_" +
91 - $sri.getSelf().getLpIds() 91 + $sri.getSelf().getLpIds() +
  92 + "_" +
  93 + $sri.getSelf().getLpStart().toString()
92 ); 94 );
93 cdrp.setRuleMd5(ruleMd5); 95 cdrp.setRuleMd5(ruleMd5);
94 // 人员范围个数 96 // 人员范围个数
@@ -136,7 +138,9 @@ rule "calcu_days_2_" @@ -136,7 +138,9 @@ rule "calcu_days_2_"
136 String ruleMd5 = Md5Util.getMd5( 138 String ruleMd5 = Md5Util.getMd5(
137 String.valueOf($qyrq.getMillis()) + 139 String.valueOf($qyrq.getMillis()) +
138 "_" + 140 "_" +
139 - $sri.getSelf().getLpIds() 141 + $sri.getSelf().getLpIds() +
  142 + "_" +
  143 + $sri.getSelf().getLpStart().toString()
140 ); 144 );
141 cdrp.setRuleMd5(ruleMd5); 145 cdrp.setRuleMd5(ruleMd5);
142 // 人员范围个数 146 // 人员范围个数
@@ -187,7 +191,9 @@ rule "Calcu_SchedulePlanRuleResult_wrap" @@ -187,7 +191,9 @@ rule "Calcu_SchedulePlanRuleResult_wrap"
187 String md5 = Md5Util.getMd5( 191 String md5 = Md5Util.getMd5(
188 String.valueOf($sprr.getQyrq().getTime()) + 192 String.valueOf($sprr.getQyrq().getTime()) +
189 "_" + 193 "_" +
190 - $sprr.getGids() 194 + $sprr.getGids() +
  195 + "_" +
  196 + $sprr.getOrigingidindex()
191 ); 197 );
192 198
193 // System.out.println("修改后的md5:" + md5 + "车辆:" + $sprr.getCcZbh()); 199 // System.out.println("修改后的md5:" + md5 + "车辆:" + $sprr.getCcZbh());
@@ -350,7 +356,7 @@ rule "Calcu_loop2_1_" // 路牌在时刻表中存在,就翻 @@ -350,7 +356,7 @@ rule "Calcu_loop2_1_" // 路牌在时刻表中存在,就翻
350 schedulePlanRuleResult.setRuleId($ruleId); 356 schedulePlanRuleResult.setRuleId($ruleId);
351 schedulePlanRuleResult.setCcId($cid); 357 schedulePlanRuleResult.setCcId($cid);
352 schedulePlanRuleResult.setCcZbh($srf.getCarConfigInfo().getCl().getInsideCode()); 358 schedulePlanRuleResult.setCcZbh($srf.getCarConfigInfo().getCl().getInsideCode());
353 - schedulePlanRuleResult.setGids($srf.getLpIds()); 359 + schedulePlanRuleResult.setGids($srf.getLpIds()); // 参与md5计算
354 schedulePlanRuleResult.setGnames($srf.getLpNames()); 360 schedulePlanRuleResult.setGnames($srf.getLpNames());
355 schedulePlanRuleResult.setGidindex(String.valueOf($lpindex)); 361 schedulePlanRuleResult.setGidindex(String.valueOf($lpindex));
356 schedulePlanRuleResult.setEcids($srf.getRyConfigIds()); 362 schedulePlanRuleResult.setEcids($srf.getRyConfigIds());
@@ -359,7 +365,8 @@ rule "Calcu_loop2_1_" // 路牌在时刻表中存在,就翻 @@ -359,7 +365,8 @@ rule "Calcu_loop2_1_" // 路牌在时刻表中存在,就翻
359 schedulePlanRuleResult.setScheduleDate($csd2.toDate()); 365 schedulePlanRuleResult.setScheduleDate($csd2.toDate());
360 schedulePlanRuleResult.setTtinfoId($ttinfoId); 366 schedulePlanRuleResult.setTtinfoId($ttinfoId);
361 schedulePlanRuleResult.setTtinfoName($ttinfoName); 367 schedulePlanRuleResult.setTtinfoName($ttinfoName);
362 - schedulePlanRuleResult.setQyrq($sri.getQyrq().toDate()); 368 + schedulePlanRuleResult.setQyrq($sri.getQyrq().toDate()); // 参与md5计算
  369 + schedulePlanRuleResult.setOrigingidindex(String.valueOf($sri.getSelf().getLpStart())); // 参与md5计算
363 370
364 scheduleResult.getSchedulePlanRuleResults().add(schedulePlanRuleResult); 371 scheduleResult.getSchedulePlanRuleResults().add(schedulePlanRuleResult);
365 372
src/main/resources/rules/validplan.drl
@@ -46,11 +46,11 @@ rule "Valid_repeat_bc" // 验证是否存在重复班次 @@ -46,11 +46,11 @@ rule "Valid_repeat_bc" // 验证是否存在重复班次
46 when 46 when
47 $lp: Loop_param($sd: start_date, $ed: end_date) 47 $lp: Loop_param($sd: start_date, $ed: end_date)
48 eval($sd.isBefore($ed) || $sd.isEqual($ed)) 48 eval($sd.isBefore($ed) || $sd.isEqual($ed))
49 - $spiList: ArrayList() from collect (SchedulePlanInfo(scheduleDate.getTime() == $sd.millis)) 49 + $spiList: ArrayList() from collect (SchedulePlanInfo(scheduleDate.getTime() == $sd.getMillis()))
50 $infos: ArrayList() from accumulate ($spi: SchedulePlanInfo() from $spiList, vrb($spi)) 50 $infos: ArrayList() from accumulate ($spi: SchedulePlanInfo() from $spiList, vrb($spi))
51 then 51 then
52 // TODO: 52 // TODO:
53 -// log.info("日期={},班次重复错误数={}", $sd, $infos.size()); 53 + log.info("日期={},班次重复错误数={}", $sd, $infos.size());
54 54
55 validResult.getInfos().addAll($infos); 55 validResult.getInfos().addAll($infos);
56 56
src/test/resources/testdata/test6.txt
@@ -7,6 +7,13 @@ update bsth_c_s_sp_rule_rst a @@ -7,6 +7,13 @@ update bsth_c_s_sp_rule_rst a
7 set a.qyrq = (select qyrq from bsth_c_s_sr1_flat where id = a.rule_id) 7 set a.qyrq = (select qyrq from bsth_c_s_sr1_flat where id = a.rule_id)
8 where a.qyrq is null; 8 where a.qyrq is null;
9 9
  10 +select * from bsth_c_s_sp_rule_rst
  11 +where origingidindex is null;
  12 +
  13 +update bsth_c_s_sp_rule_rst a
  14 +set a.origingidindex = (select lp_start from bsth_c_s_sr1_flat where id = a.rule_id)
  15 +where a.origingidindex is null;
  16 +
10 970 17 970
11 789 18 789
12 604 19 604