Commit cfd644b837c14063bfc590726900317bf103f960
1 parent
851fdf7c
Update
Showing
7 changed files
with
50 additions
and
14 deletions
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 |