Commit 4fa0d03acd1706e445bed8f44f319b2a4756ecfe
1 parent
0ad6ab86
Update
Showing
21 changed files
with
580 additions
and
812 deletions
src/main/java/com/bsth/entity/schedule/SchedulePlan.java
| 1 | package com.bsth.entity.schedule; | 1 | package com.bsth.entity.schedule; |
| 2 | 2 | ||
| 3 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | -import com.bsth.entity.schedule.rule.ScheduleRule1; | ||
| 5 | import com.fasterxml.jackson.annotation.JsonIgnore; | 4 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 6 | 5 | ||
| 7 | import javax.persistence.*; | 6 | import javax.persistence.*; |
| @@ -15,9 +14,8 @@ import java.util.List; | @@ -15,9 +14,8 @@ import java.util.List; | ||
| 15 | @Entity | 14 | @Entity |
| 16 | @Table(name = "bsth_c_s_sp") | 15 | @Table(name = "bsth_c_s_sp") |
| 17 | @NamedEntityGraphs({ | 16 | @NamedEntityGraphs({ |
| 18 | - @NamedEntityGraph(name = "schedulePlan_xl_ttinfo", attributeNodes = { | 17 | + @NamedEntityGraph(name = "schedulePlan_xl", attributeNodes = { |
| 19 | @NamedAttributeNode("xl"), | 18 | @NamedAttributeNode("xl"), |
| 20 | - @NamedAttributeNode("ttInfo") | ||
| 21 | }) | 19 | }) |
| 22 | }) | 20 | }) |
| 23 | public class SchedulePlan extends BEntity { | 21 | public class SchedulePlan extends BEntity { |
| @@ -30,22 +28,6 @@ public class SchedulePlan extends BEntity { | @@ -30,22 +28,6 @@ public class SchedulePlan extends BEntity { | ||
| 30 | /** 关联的线路 */ | 28 | /** 关联的线路 */ |
| 31 | @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) | 29 | @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) |
| 32 | private Line xl; | 30 | private Line xl; |
| 33 | - /** 关联的时刻表/模版 */ | ||
| 34 | - // TODO:这个字段之后就不用了 | ||
| 35 | - @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) | ||
| 36 | - private TTInfo ttInfo; | ||
| 37 | - /** TODO:关联的排班规则(这里暂时改成可以不关联规则,直接生成排班) */ | ||
| 38 | - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | ||
| 39 | - private ScheduleRule1 scheduleRule1; | ||
| 40 | - | ||
| 41 | - // TODO: 新字段,测试完后删除旧的字段 | ||
| 42 | - | ||
| 43 | - /** 使用的时刻表名字列表(用逗号连接) */ | ||
| 44 | - private String ttInfoNames; | ||
| 45 | - /** 使用的时刻表id列表(用逗号连接) */ | ||
| 46 | - private String ttInfoId; | ||
| 47 | - /** 使用的规则1列表(用逗号连接) */ | ||
| 48 | - private String rule1Ids; | ||
| 49 | 31 | ||
| 50 | /** 排班计划的开始时间 */ | 32 | /** 排班计划的开始时间 */ |
| 51 | @Column(nullable = false) | 33 | @Column(nullable = false) |
| @@ -54,6 +36,11 @@ public class SchedulePlan extends BEntity { | @@ -54,6 +36,11 @@ public class SchedulePlan extends BEntity { | ||
| 54 | @Column(nullable = false) | 36 | @Column(nullable = false) |
| 55 | private Date scheduleToTime; | 37 | private Date scheduleToTime; |
| 56 | 38 | ||
| 39 | + /** 使用的时刻表名字列表(用逗号连接) */ | ||
| 40 | + private String ttInfoNames; | ||
| 41 | + /** 使用的时刻表id列表(用逗号连接) */ | ||
| 42 | + private String ttInfoIds; | ||
| 43 | + | ||
| 57 | @JsonIgnore | 44 | @JsonIgnore |
| 58 | /** 使用中间表的一对多关联 明细信息 */ | 45 | /** 使用中间表的一对多关联 明细信息 */ |
| 59 | @OneToMany(mappedBy = "schedulePlan", cascade = CascadeType.ALL, fetch = FetchType.LAZY) | 46 | @OneToMany(mappedBy = "schedulePlan", cascade = CascadeType.ALL, fetch = FetchType.LAZY) |
| @@ -75,22 +62,6 @@ public class SchedulePlan extends BEntity { | @@ -75,22 +62,6 @@ public class SchedulePlan extends BEntity { | ||
| 75 | this.xl = xl; | 62 | this.xl = xl; |
| 76 | } | 63 | } |
| 77 | 64 | ||
| 78 | - public TTInfo getTtInfo() { | ||
| 79 | - return ttInfo; | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | - public void setTtInfo(TTInfo ttInfo) { | ||
| 83 | - this.ttInfo = ttInfo; | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - public ScheduleRule1 getScheduleRule1() { | ||
| 87 | - return scheduleRule1; | ||
| 88 | - } | ||
| 89 | - | ||
| 90 | - public void setScheduleRule1(ScheduleRule1 scheduleRule1) { | ||
| 91 | - this.scheduleRule1 = scheduleRule1; | ||
| 92 | - } | ||
| 93 | - | ||
| 94 | public Date getScheduleFromTime() { | 65 | public Date getScheduleFromTime() { |
| 95 | return scheduleFromTime; | 66 | return scheduleFromTime; |
| 96 | } | 67 | } |
| @@ -123,19 +94,11 @@ public class SchedulePlan extends BEntity { | @@ -123,19 +94,11 @@ public class SchedulePlan extends BEntity { | ||
| 123 | this.ttInfoNames = ttInfoNames; | 94 | this.ttInfoNames = ttInfoNames; |
| 124 | } | 95 | } |
| 125 | 96 | ||
| 126 | - public String getTtInfoId() { | ||
| 127 | - return ttInfoId; | ||
| 128 | - } | ||
| 129 | - | ||
| 130 | - public void setTtInfoId(String ttInfoId) { | ||
| 131 | - this.ttInfoId = ttInfoId; | ||
| 132 | - } | ||
| 133 | - | ||
| 134 | - public String getRule1Ids() { | ||
| 135 | - return rule1Ids; | 97 | + public String getTtInfoIds() { |
| 98 | + return ttInfoIds; | ||
| 136 | } | 99 | } |
| 137 | 100 | ||
| 138 | - public void setRule1Ids(String rule1Ids) { | ||
| 139 | - this.rule1Ids = rule1Ids; | 101 | + public void setTtInfoIds(String ttInfoIds) { |
| 102 | + this.ttInfoIds = ttInfoIds; | ||
| 140 | } | 103 | } |
| 141 | } | 104 | } |
src/main/java/com/bsth/repository/BusinessRepository.java
| @@ -4,6 +4,8 @@ import org.springframework.stereotype.Repository; | @@ -4,6 +4,8 @@ import org.springframework.stereotype.Repository; | ||
| 4 | 4 | ||
| 5 | import com.bsth.entity.Business; | 5 | import com.bsth.entity.Business; |
| 6 | 6 | ||
| 7 | +import java.util.List; | ||
| 8 | + | ||
| 7 | /** | 9 | /** |
| 8 | * | 10 | * |
| 9 | * @Interface: BusinessRepository(公司Repository数据持久层接口) | 11 | * @Interface: BusinessRepository(公司Repository数据持久层接口) |
| @@ -23,4 +25,8 @@ import com.bsth.entity.Business; | @@ -23,4 +25,8 @@ import com.bsth.entity.Business; | ||
| 23 | @Repository | 25 | @Repository |
| 24 | public interface BusinessRepository extends BaseRepository<Business, Integer> { | 26 | public interface BusinessRepository extends BaseRepository<Business, Integer> { |
| 25 | 27 | ||
| 28 | + List<Business> findByBusinessCode(String code); | ||
| 29 | + | ||
| 30 | + List<Business> findByUpCodeAndBusinessCode(String c1, String c2); | ||
| 31 | + | ||
| 26 | } | 32 | } |
src/main/java/com/bsth/repository/schedule/CarConfigInfoRepository.java
| @@ -45,4 +45,7 @@ public interface CarConfigInfoRepository extends BaseRepository<CarConfigInfo, L | @@ -45,4 +45,7 @@ public interface CarConfigInfoRepository extends BaseRepository<CarConfigInfo, L | ||
| 45 | 45 | ||
| 46 | @Query("select new map(cc.cl.id as id, cc.cl.insideCode as insideCode) from CarConfigInfo cc") | 46 | @Query("select new map(cc.cl.id as id, cc.cl.insideCode as insideCode) from CarConfigInfo cc") |
| 47 | List<Map<String, Object>> findCarsFromConfig(); | 47 | List<Map<String, Object>> findCarsFromConfig(); |
| 48 | + | ||
| 49 | + @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH) | ||
| 50 | + List<CarConfigInfo> findByXlId(Integer xlid); | ||
| 48 | } | 51 | } |
| 49 | \ No newline at end of file | 52 | \ No newline at end of file |
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
| @@ -25,6 +25,9 @@ public interface EmployeeConfigInfoRepository extends BaseRepository<EmployeeCon | @@ -25,6 +25,9 @@ public interface EmployeeConfigInfoRepository extends BaseRepository<EmployeeCon | ||
| 25 | List<EmployeeConfigInfo> findBylineCode(String lineCode); | 25 | List<EmployeeConfigInfo> findBylineCode(String lineCode); |
| 26 | 26 | ||
| 27 | @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH) | 27 | @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH) |
| 28 | + List<EmployeeConfigInfo> findByXlId(Integer xlid); | ||
| 29 | + | ||
| 30 | + @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH) | ||
| 28 | @Override | 31 | @Override |
| 29 | Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable); | 32 | Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable); |
| 30 | 33 |
src/main/java/com/bsth/repository/schedule/SchedulePlanRepository.java
| @@ -13,7 +13,7 @@ import org.springframework.stereotype.Repository; | @@ -13,7 +13,7 @@ import org.springframework.stereotype.Repository; | ||
| 13 | */ | 13 | */ |
| 14 | @Repository | 14 | @Repository |
| 15 | public interface SchedulePlanRepository extends BaseRepository<SchedulePlan, Long> { | 15 | public interface SchedulePlanRepository extends BaseRepository<SchedulePlan, Long> { |
| 16 | - @EntityGraph(value = "schedulePlan_xl_ttinfo", type = EntityGraph.EntityGraphType.FETCH) | 16 | + @EntityGraph(value = "schedulePlan_xl", type = EntityGraph.EntityGraphType.FETCH) |
| 17 | @Override | 17 | @Override |
| 18 | Page<SchedulePlan> findAll(Specification<SchedulePlan> spec, Pageable pageable); | 18 | Page<SchedulePlan> findAll(Specification<SchedulePlan> spec, Pageable pageable); |
| 19 | 19 |
src/main/java/com/bsth/repository/schedule/ScheduleRule1FlatRepository.java
| 1 | package com.bsth.repository.schedule; | 1 | package com.bsth.repository.schedule; |
| 2 | 2 | ||
| 3 | +import com.bsth.entity.Line; | ||
| 3 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; | 4 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; |
| 4 | import com.bsth.repository.BaseRepository; | 5 | import com.bsth.repository.BaseRepository; |
| 5 | import org.springframework.data.domain.Page; | 6 | import org.springframework.data.domain.Page; |
| @@ -9,6 +10,8 @@ import org.springframework.data.jpa.repository.EntityGraph; | @@ -9,6 +10,8 @@ import org.springframework.data.jpa.repository.EntityGraph; | ||
| 9 | import org.springframework.data.jpa.repository.Query; | 10 | import org.springframework.data.jpa.repository.Query; |
| 10 | import org.springframework.stereotype.Repository; | 11 | import org.springframework.stereotype.Repository; |
| 11 | 12 | ||
| 13 | +import java.util.List; | ||
| 14 | + | ||
| 12 | /** | 15 | /** |
| 13 | * Created by xu on 16/7/4. | 16 | * Created by xu on 16/7/4. |
| 14 | */ | 17 | */ |
| @@ -22,4 +25,6 @@ public interface ScheduleRule1FlatRepository extends BaseRepository<ScheduleRule | @@ -22,4 +25,6 @@ public interface ScheduleRule1FlatRepository extends BaseRepository<ScheduleRule | ||
| 22 | @EntityGraph(value = "scheduleRule1Flat_xl_carconfig", type = EntityGraph.EntityGraphType.FETCH) | 25 | @EntityGraph(value = "scheduleRule1Flat_xl_carconfig", type = EntityGraph.EntityGraphType.FETCH) |
| 23 | @Query("select cc from ScheduleRule1Flat cc where cc.id=?1") | 26 | @Query("select cc from ScheduleRule1Flat cc where cc.id=?1") |
| 24 | ScheduleRule1Flat findOneExtend(Long aLong); | 27 | ScheduleRule1Flat findOneExtend(Long aLong); |
| 28 | + | ||
| 29 | + List<ScheduleRule1Flat> findByXl(Line line); | ||
| 25 | } | 30 | } |
src/main/java/com/bsth/repository/schedule/TTInfoDetailRepository.java
| @@ -45,8 +45,11 @@ public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Lon | @@ -45,8 +45,11 @@ public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Lon | ||
| 45 | @Query(value = "select tt from TTInfoDetail tt where tt.xl.id = ?1 and tt.ttinfo.id = ?2 and tt.lp.id = ?3 order by tt.fcno asc") | 45 | @Query(value = "select tt from TTInfoDetail tt where tt.xl.id = ?1 and tt.ttinfo.id = ?2 and tt.lp.id = ?3 order by tt.fcno asc") |
| 46 | List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId); | 46 | List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId); |
| 47 | 47 | ||
| 48 | + List<TTInfoDetail> findByTtinfoId(Long id); | ||
| 49 | + | ||
| 48 | @Modifying | 50 | @Modifying |
| 49 | @Query(value = "delete from TTInfoDetail t where t.ttinfo.id = ?1") | 51 | @Query(value = "delete from TTInfoDetail t where t.ttinfo.id = ?1") |
| 50 | void deleteByTtinfoIdWithModify(Long ttinfoid); | 52 | void deleteByTtinfoIdWithModify(Long ttinfoid); |
| 51 | 53 | ||
| 54 | + | ||
| 52 | } | 55 | } |
src/main/java/com/bsth/repository/schedule/TTInfoRepository.java
| 1 | package com.bsth.repository.schedule; | 1 | package com.bsth.repository.schedule; |
| 2 | 2 | ||
| 3 | +import com.bsth.entity.Line; | ||
| 3 | import com.bsth.entity.schedule.EmployeeConfigInfo; | 4 | import com.bsth.entity.schedule.EmployeeConfigInfo; |
| 4 | import com.bsth.entity.schedule.TTInfo; | 5 | import com.bsth.entity.schedule.TTInfo; |
| 5 | import com.bsth.repository.BaseRepository; | 6 | import com.bsth.repository.BaseRepository; |
| @@ -10,6 +11,8 @@ import org.springframework.data.jpa.repository.EntityGraph; | @@ -10,6 +11,8 @@ import org.springframework.data.jpa.repository.EntityGraph; | ||
| 10 | import org.springframework.data.jpa.repository.Query; | 11 | import org.springframework.data.jpa.repository.Query; |
| 11 | import org.springframework.stereotype.Repository; | 12 | import org.springframework.stereotype.Repository; |
| 12 | 13 | ||
| 14 | +import java.util.List; | ||
| 15 | + | ||
| 13 | /** | 16 | /** |
| 14 | * Created by xu on 16/5/12. | 17 | * Created by xu on 16/5/12. |
| 15 | */ | 18 | */ |
| @@ -23,4 +26,7 @@ public interface TTInfoRepository extends BaseRepository<TTInfo, Long> { | @@ -23,4 +26,7 @@ public interface TTInfoRepository extends BaseRepository<TTInfo, Long> { | ||
| 23 | @EntityGraph(value = "ttInfo_xl", type = EntityGraph.EntityGraphType.FETCH) | 26 | @EntityGraph(value = "ttInfo_xl", type = EntityGraph.EntityGraphType.FETCH) |
| 24 | @Query("select cc from TTInfo cc where cc.id=?1") | 27 | @Query("select cc from TTInfo cc where cc.id=?1") |
| 25 | TTInfo findOneExtend(Long aLong); | 28 | TTInfo findOneExtend(Long aLong); |
| 29 | + | ||
| 30 | + @Query("select t from TTInfo t where t.xl = ?1 and t.isCancel = false") | ||
| 31 | + List<TTInfo> findInCanceledByXl(Line xl); | ||
| 26 | } | 32 | } |
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
| 1 | package com.bsth.service.schedule.impl; | 1 | package com.bsth.service.schedule.impl; |
| 2 | 2 | ||
| 3 | -import com.bsth.entity.Line; | ||
| 4 | import com.bsth.entity.schedule.SchedulePlan; | 3 | import com.bsth.entity.schedule.SchedulePlan; |
| 5 | import com.bsth.entity.schedule.TTInfo; | 4 | import com.bsth.entity.schedule.TTInfo; |
| 6 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; | 5 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; |
| 7 | -import com.bsth.repository.schedule.SchedulePlanInfoRepository; | ||
| 8 | -import com.bsth.repository.schedule.SchedulePlanRepository; | ||
| 9 | -import com.bsth.service.BusinessService; | ||
| 10 | -import com.bsth.service.LineService; | ||
| 11 | -import com.bsth.service.schedule.*; | 6 | +import com.bsth.repository.BusinessRepository; |
| 7 | +import com.bsth.repository.LineRepository; | ||
| 8 | +import com.bsth.repository.schedule.*; | ||
| 9 | +import com.bsth.service.schedule.SchedulePlanService; | ||
| 12 | import com.bsth.service.schedule.rules.plan.PlanCalcuParam_input; | 10 | import com.bsth.service.schedule.rules.plan.PlanCalcuParam_input; |
| 13 | import com.bsth.service.schedule.rules.plan.PlanResult; | 11 | import com.bsth.service.schedule.rules.plan.PlanResult; |
| 14 | import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input; | 12 | import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input; |
| 15 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; | 13 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; |
| 16 | import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input; | 14 | import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input; |
| 17 | -import com.bsth.service.schedule.rules.strategy.IStrategy; | ||
| 18 | import com.bsth.service.schedule.rules.ttinfo.*; | 15 | import com.bsth.service.schedule.rules.ttinfo.*; |
| 19 | import com.bsth.service.schedule.rules.ttinfo2.CalcuParam; | 16 | import com.bsth.service.schedule.rules.ttinfo2.CalcuParam; |
| 20 | import com.bsth.service.schedule.rules.ttinfo2.Result; | 17 | import com.bsth.service.schedule.rules.ttinfo2.Result; |
| @@ -28,7 +25,6 @@ import org.springframework.stereotype.Service; | @@ -28,7 +25,6 @@ import org.springframework.stereotype.Service; | ||
| 28 | import org.springframework.transaction.annotation.Isolation; | 25 | import org.springframework.transaction.annotation.Isolation; |
| 29 | import org.springframework.transaction.annotation.Propagation; | 26 | import org.springframework.transaction.annotation.Propagation; |
| 30 | import org.springframework.transaction.annotation.Transactional; | 27 | import org.springframework.transaction.annotation.Transactional; |
| 31 | -import org.springframework.util.CollectionUtils; | ||
| 32 | 28 | ||
| 33 | import java.util.*; | 29 | import java.util.*; |
| 34 | 30 | ||
| @@ -40,75 +36,45 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -40,75 +36,45 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 40 | @Autowired | 36 | @Autowired |
| 41 | private KieBase kieBase; | 37 | private KieBase kieBase; |
| 42 | @Autowired | 38 | @Autowired |
| 43 | - private IStrategy strategy; | ||
| 44 | - @Autowired | ||
| 45 | - private SchedulePlanRepository schedulePlanRepository; | ||
| 46 | - @Autowired | ||
| 47 | private SchedulePlanInfoRepository schedulePlanInfoRepository; | 39 | private SchedulePlanInfoRepository schedulePlanInfoRepository; |
| 48 | @Autowired | 40 | @Autowired |
| 49 | - private LineService lineService; | 41 | + private ScheduleRule1FlatRepository scheduleRule1FlatRepository; |
| 42 | + @Autowired | ||
| 43 | + private TTInfoRepository ttInfoRepository; | ||
| 50 | @Autowired | 44 | @Autowired |
| 51 | - private TTInfoService ttInfoService; | 45 | + private TTInfoDetailRepository ttInfoDetailRepository; |
| 52 | @Autowired | 46 | @Autowired |
| 53 | - private TTInfoDetailService ttInfoDetailService; | 47 | + private LineRepository lineRepository; |
| 54 | @Autowired | 48 | @Autowired |
| 55 | - private BusinessService businessService; | 49 | + private CarConfigInfoRepository carConfigInfoRepository; |
| 56 | @Autowired | 50 | @Autowired |
| 57 | - private CarConfigInfoService carConfigInfoService; | 51 | + private EmployeeConfigInfoRepository employeeConfigInfoRepository; |
| 58 | @Autowired | 52 | @Autowired |
| 59 | - private EmployeeConfigInfoService employeeConfigInfoService; | 53 | + private BusinessRepository businessRepository; |
| 60 | 54 | ||
| 61 | /** 日志记录器 */ | 55 | /** 日志记录器 */ |
| 62 | private Logger logger = LoggerFactory.getLogger(SchedulePlanServiceImpl.class); | 56 | private Logger logger = LoggerFactory.getLogger(SchedulePlanServiceImpl.class); |
| 63 | 57 | ||
| 64 | - // 查找线路(未撤销),TODO:到时候放入drl中 | ||
| 65 | - private Line getLine(Integer xlId) { | ||
| 66 | - Map<String, Object> param = new HashMap<>(); | ||
| 67 | - param.put("id_eq", xlId); | ||
| 68 | - param.put("destroy_eq", 0); // 未撤销 | ||
| 69 | - List<Line> lines = (List<Line>) lineService.list(param); | ||
| 70 | - if (CollectionUtils.isEmpty(lines)) { | ||
| 71 | - throw new RuntimeException("线路找不到,可能已经撤销!"); | ||
| 72 | - } | ||
| 73 | - return lines.get(0); | ||
| 74 | - } | ||
| 75 | - // 查找时刻表(未作废),TODO:到时候放入drl中 | ||
| 76 | - private List<TTInfo> getTTInfos(Integer xlId) { | ||
| 77 | - // 查询参数 | ||
| 78 | - Map<String, Object> param = new HashMap<>(); | ||
| 79 | - param.put("xl.id_eq", xlId); // 线路Id | ||
| 80 | - param.put("isCancel_eq", false); // 作废的过滤掉 | ||
| 81 | - Iterator<TTInfo> ttInfoIterator = ttInfoService.list(param).iterator(); | ||
| 82 | - if (!ttInfoIterator.hasNext()) { | ||
| 83 | - throw new RuntimeException("线路id=" + xlId + " 没有时刻表!"); | ||
| 84 | - } | ||
| 85 | - List<TTInfo> ttInfos = new ArrayList<>(); | ||
| 86 | - while (ttInfoIterator.hasNext()) { | ||
| 87 | - TTInfo ttInfo = ttInfoIterator.next(); | ||
| 88 | - ttInfos.add(ttInfo); | ||
| 89 | - } | ||
| 90 | - return ttInfos; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | /** | 58 | /** |
| 94 | * 循环规则输出。 | 59 | * 循环规则输出。 |
| 95 | - * @param schedulePlan | 60 | + * @param schedulePlan 排班计划对象 |
| 61 | + * @param lpInfoResults_output 时刻表每日路牌的情况 | ||
| 96 | */ | 62 | */ |
| 97 | - private ScheduleResults_output loopRuleOutput(SchedulePlan schedulePlan, LpInfoResults_output lpInfoResults_output) { | ||
| 98 | - // 获取主线路 | ||
| 99 | - Line xl = strategy.getLine(schedulePlan.getXl().getId()); | ||
| 100 | - | 63 | + private ScheduleResults_output loopRuleOutput( |
| 64 | + SchedulePlan schedulePlan, | ||
| 65 | + LpInfoResults_output lpInfoResults_output) { | ||
| 101 | // 1-1、构造drools规则输入数据,输出数据 | 66 | // 1-1、构造drools规则输入数据,输出数据 |
| 102 | // 全局计算参数 | 67 | // 全局计算参数 |
| 103 | ScheduleCalcuParam_input scheduleCalcuParam_input = new ScheduleCalcuParam_input(schedulePlan); | 68 | ScheduleCalcuParam_input scheduleCalcuParam_input = new ScheduleCalcuParam_input(schedulePlan); |
| 104 | // 每个规则对应的输入参数 | 69 | // 每个规则对应的输入参数 |
| 105 | List<ScheduleRule_input> scheduleRule_inputs = new ArrayList<>(); | 70 | List<ScheduleRule_input> scheduleRule_inputs = new ArrayList<>(); |
| 106 | - Iterator<ScheduleRule1Flat> scheduleRule1FlatIterator = strategy.getScheduleRule(xl.getId()).iterator(); | ||
| 107 | - while (scheduleRule1FlatIterator.hasNext()) { | ||
| 108 | - ScheduleRule1Flat scheduleRule1Flat_temp = scheduleRule1FlatIterator.next(); | ||
| 109 | - ScheduleRule_input scheduleRule_input = new ScheduleRule_input(scheduleRule1Flat_temp); | 71 | + List<ScheduleRule1Flat> scheduleRule1Flats = scheduleRule1FlatRepository.findByXl(schedulePlan.getXl()); |
| 72 | + | ||
| 73 | + for (ScheduleRule1Flat scheduleRule1Flat: scheduleRule1Flats) { | ||
| 74 | + ScheduleRule_input scheduleRule_input = new ScheduleRule_input(scheduleRule1Flat); | ||
| 110 | scheduleRule_inputs.add(scheduleRule_input); | 75 | scheduleRule_inputs.add(scheduleRule_input); |
| 111 | } | 76 | } |
| 77 | + | ||
| 112 | // 规则输出数据 | 78 | // 规则输出数据 |
| 113 | ScheduleResults_output scheduleResults_output = new ScheduleResults_output(); | 79 | ScheduleResults_output scheduleResults_output = new ScheduleResults_output(); |
| 114 | 80 | ||
| @@ -124,6 +90,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -124,6 +90,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 124 | for (ScheduleRule_input scheduleRule_input : scheduleRule_inputs) { | 90 | for (ScheduleRule_input scheduleRule_input : scheduleRule_inputs) { |
| 125 | session.insert(scheduleRule_input); | 91 | session.insert(scheduleRule_input); |
| 126 | } | 92 | } |
| 93 | + // 每日时刻表路牌数据 | ||
| 127 | for (LpInfoResult_output lpInfoResult_output: lpInfoResults_output.getLpInfoResult_outputs()) { | 94 | for (LpInfoResult_output lpInfoResult_output: lpInfoResults_output.getLpInfoResult_outputs()) { |
| 128 | session.insert(lpInfoResult_output); | 95 | session.insert(lpInfoResult_output); |
| 129 | } | 96 | } |
| @@ -140,12 +107,12 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -140,12 +107,12 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 140 | 107 | ||
| 141 | /** | 108 | /** |
| 142 | * 时刻表选择(判定每天使用的时刻表,以及路牌数据输出)。 | 109 | * 时刻表选择(判定每天使用的时刻表,以及路牌数据输出)。 |
| 143 | - * @param schedulePlan | 110 | + * @param schedulePlan 排班计划对象 |
| 144 | * @return TTInfoResults_output, LpInfoResults_output | 111 | * @return TTInfoResults_output, LpInfoResults_output |
| 145 | */ | 112 | */ |
| 146 | private Object[] ttInfoOutput(SchedulePlan schedulePlan) { | 113 | private Object[] ttInfoOutput(SchedulePlan schedulePlan) { |
| 147 | // 获取线路的所有未作废的时刻表 | 114 | // 获取线路的所有未作废的时刻表 |
| 148 | - List<TTInfo> ttInfos = getTTInfos(schedulePlan.getXl().getId()); | 115 | + List<TTInfo> ttInfos = ttInfoRepository.findInCanceledByXl(schedulePlan.getXl()); |
| 149 | 116 | ||
| 150 | // 1-1、构造drools规则输入数据,输出数据 | 117 | // 1-1、构造drools规则输入数据,输出数据 |
| 151 | // 全局计算参数 | 118 | // 全局计算参数 |
| @@ -167,8 +134,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -167,8 +134,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 167 | session.setGlobal("results", ttInfoResults_output); | 134 | session.setGlobal("results", ttInfoResults_output); |
| 168 | session.setGlobal("lpInfoResults_output", lpInfoResults_output); | 135 | session.setGlobal("lpInfoResults_output", lpInfoResults_output); |
| 169 | session.setGlobal("log", logger); // 设置日志 | 136 | session.setGlobal("log", logger); // 设置日志 |
| 170 | - | ||
| 171 | - session.setGlobal("tTInfoDetailService", ttInfoDetailService); | 137 | + session.setGlobal("tTInfoDetailRepository", ttInfoDetailRepository); |
| 172 | 138 | ||
| 173 | // 载入数据 | 139 | // 载入数据 |
| 174 | session.insert(ttInfoCalcuParam_input); | 140 | session.insert(ttInfoCalcuParam_input); |
| @@ -177,12 +143,11 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -177,12 +143,11 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 177 | session.insert(ttInfo_input); | 143 | session.insert(ttInfo_input); |
| 178 | } | 144 | } |
| 179 | 145 | ||
| 146 | + // 载入数据2(计算规则最早启用时间) | ||
| 147 | + List<ScheduleRule1Flat> scheduleRule1Flats = scheduleRule1FlatRepository.findByXl(schedulePlan.getXl()); | ||
| 180 | 148 | ||
| 181 | - // 载入数据2 | ||
| 182 | - Iterator<ScheduleRule1Flat> scheduleRule1FlatIterator = strategy.getScheduleRule(schedulePlan.getXl().getId()).iterator(); | ||
| 183 | - while (scheduleRule1FlatIterator.hasNext()) { | ||
| 184 | - ScheduleRule1Flat scheduleRule1Flat_temp = scheduleRule1FlatIterator.next(); | ||
| 185 | - ScheduleRule_input scheduleRule_input = new ScheduleRule_input(scheduleRule1Flat_temp); | 149 | + for (ScheduleRule1Flat scheduleRule1Flat: scheduleRule1Flats) { |
| 150 | + ScheduleRule_input scheduleRule_input = new ScheduleRule_input(scheduleRule1Flat); | ||
| 186 | session.insert(scheduleRule_input); | 151 | session.insert(scheduleRule_input); |
| 187 | } | 152 | } |
| 188 | 153 | ||
| @@ -196,6 +161,13 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -196,6 +161,13 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 196 | 161 | ||
| 197 | } | 162 | } |
| 198 | 163 | ||
| 164 | + /** | ||
| 165 | + * 排班生成。 | ||
| 166 | + * @param schedulePlan 排班计划对象 | ||
| 167 | + * @param scheduleResults_output loopRuleOutput方法规则输出 | ||
| 168 | + * @param ttInfoResults_output ttInfoOutput方法规则输出 | ||
| 169 | + * @return PlanResult | ||
| 170 | + */ | ||
| 199 | private PlanResult planResultOutput( | 171 | private PlanResult planResultOutput( |
| 200 | SchedulePlan schedulePlan, | 172 | SchedulePlan schedulePlan, |
| 201 | ScheduleResults_output scheduleResults_output, | 173 | ScheduleResults_output scheduleResults_output, |
| @@ -216,14 +188,14 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -216,14 +188,14 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 216 | 188 | ||
| 217 | // 设置gloable对象,在drl中通过别名使用 | 189 | // 设置gloable对象,在drl中通过别名使用 |
| 218 | session.setGlobal("planResult", planResult); | 190 | session.setGlobal("planResult", planResult); |
| 219 | - session.setGlobal("tTInfoService", ttInfoService); | ||
| 220 | - session.setGlobal("tTInfoDetailService", ttInfoDetailService); | ||
| 221 | - session.setGlobal("carConfigInfoService", carConfigInfoService); | ||
| 222 | - session.setGlobal("employeeConfigInfoService", employeeConfigInfoService); | ||
| 223 | - session.setGlobal("lineService", lineService); | ||
| 224 | - session.setGlobal("businessService", businessService); | ||
| 225 | session.setGlobal("log", logger); // 设置日志 | 191 | session.setGlobal("log", logger); // 设置日志 |
| 226 | 192 | ||
| 193 | + session.setGlobal("tTInfoDetailRepository", ttInfoDetailRepository); | ||
| 194 | + session.setGlobal("carConfigInfoRepository", carConfigInfoRepository); | ||
| 195 | + session.setGlobal("employeeConfigInfoRepository", employeeConfigInfoRepository); | ||
| 196 | + session.setGlobal("lineRepository", lineRepository); | ||
| 197 | + session.setGlobal("businessRepository", businessRepository); | ||
| 198 | + | ||
| 227 | // 载入数据 | 199 | // 载入数据 |
| 228 | session.insert(planCalcuParam_input); | 200 | session.insert(planCalcuParam_input); |
| 229 | 201 | ||
| @@ -238,207 +210,28 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -238,207 +210,28 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 238 | } | 210 | } |
| 239 | 211 | ||
| 240 | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) | 212 | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) |
| 241 | - public SchedulePlan save2(SchedulePlan schedulePlan) { | 213 | + public SchedulePlan save(SchedulePlan schedulePlan) { |
| 214 | + // pre、如果排班的数据之前已经有了,删除之前的数据 | ||
| 215 | + schedulePlanInfoRepository.deleteByXlAndScheduleDateGreaterThanEqualAndScheduleDateLessThanEqual( | ||
| 216 | + schedulePlan.getXl().getId(), schedulePlan.getScheduleFromTime(), schedulePlan.getScheduleToTime() | ||
| 217 | + ); | ||
| 218 | + | ||
| 242 | // 1、时刻表数据及每日路牌数据计算 | 219 | // 1、时刻表数据及每日路牌数据计算 |
| 243 | Object[] ttInfoRets = ttInfoOutput(schedulePlan); | 220 | Object[] ttInfoRets = ttInfoOutput(schedulePlan); |
| 244 | TTInfoResults_output ttInfoResults_output = (TTInfoResults_output) ttInfoRets[0]; | 221 | TTInfoResults_output ttInfoResults_output = (TTInfoResults_output) ttInfoRets[0]; |
| 245 | LpInfoResults_output lpInfoResults_output = (LpInfoResults_output) ttInfoRets[1]; | 222 | LpInfoResults_output lpInfoResults_output = (LpInfoResults_output) ttInfoRets[1]; |
| 246 | - | ||
| 247 | // 2、循环规则计算输出 | 223 | // 2、循环规则计算输出 |
| 248 | ScheduleResults_output scheduleResults_output = loopRuleOutput(schedulePlan, lpInfoResults_output); | 224 | ScheduleResults_output scheduleResults_output = loopRuleOutput(schedulePlan, lpInfoResults_output); |
| 249 | - | ||
| 250 | // 3、计划输出 | 225 | // 3、计划输出 |
| 251 | PlanResult planResult = planResultOutput(schedulePlan, scheduleResults_output, ttInfoResults_output); | 226 | PlanResult planResult = planResultOutput(schedulePlan, scheduleResults_output, ttInfoResults_output); |
| 252 | 227 | ||
| 253 | - schedulePlan.setTtInfoId("todo"); // TODO:待修正 | ||
| 254 | - schedulePlan.setTtInfoNames("todo"); // TODO:待修正 | ||
| 255 | - | 228 | + // 4、保存数据(TODO:之后改成批量保存) |
| 256 | schedulePlan.getSchedulePlanInfoList().addAll(planResult.getSchedulePlanInfos()); | 229 | schedulePlan.getSchedulePlanInfoList().addAll(planResult.getSchedulePlanInfos()); |
| 257 | - | ||
| 258 | super.save(schedulePlan); | 230 | super.save(schedulePlan); |
| 259 | 231 | ||
| 260 | - | ||
| 261 | - | ||
| 262 | -// // 1、循环规则计算输出 | ||
| 263 | -// ScheduleResults_output scheduleResults_output = loopRuleOutput(schedulePlan); | ||
| 264 | -// // 2、时刻表选择 | ||
| 265 | -// TTInfoResults_output ttInfoResults_output = ttInfoOutput(schedulePlan); | ||
| 266 | -// // 3、计划输出 | ||
| 267 | -// PlanResult planResult = planResultOutput(schedulePlan, scheduleResults_output, ttInfoResults_output); | ||
| 268 | -// | ||
| 269 | -// schedulePlan.getSchedulePlanInfoList().addAll(planResult.getSchedulePlanInfos()); | ||
| 270 | -// schedulePlan.setTtInfoId("todo"); // TODO:待修正 | ||
| 271 | -// schedulePlan.setTtInfoNames("todo"); // TODO:待修正 | ||
| 272 | -// | ||
| 273 | -// super.save(schedulePlan); | ||
| 274 | - | ||
| 275 | return new SchedulePlan(); | 232 | return new SchedulePlan(); |
| 276 | } | 233 | } |
| 277 | 234 | ||
| 278 | - @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) | ||
| 279 | - public SchedulePlan save(SchedulePlan schedulePlan) { | ||
| 280 | - // 2-3、如果排班的数据之前已经有了,删除之前的数据 | ||
| 281 | - schedulePlanInfoRepository.deleteByXlAndScheduleDateGreaterThanEqualAndScheduleDateLessThanEqual( | ||
| 282 | - schedulePlan.getXl().getId(), schedulePlan.getScheduleFromTime(), schedulePlan.getScheduleToTime() | ||
| 283 | - ); | ||
| 284 | - | ||
| 285 | - // 测试 | ||
| 286 | - return save2(schedulePlan); | ||
| 287 | - | ||
| 288 | -// // 1-1、查找线路具体信息 | ||
| 289 | -// Line xl = strategy.getLine(schedulePlan.getXl().getId()); | ||
| 290 | -// // 1-2、查出指定线路的所有规则 | ||
| 291 | -// TTInfo ttInfo = strategy.getTTInfo(xl.getId()).get(0); // 时刻表id | ||
| 292 | -// schedulePlan.setTtInfo(ttInfo); // TODO:关联的时刻表,之后改掉 | ||
| 293 | -// | ||
| 294 | -// // 2-1、构造drools规则输入数据,输出数据 | ||
| 295 | -// // 全局计算参数 | ||
| 296 | -// ScheduleCalcuParam_input scheduleCalcuParam_input = new ScheduleCalcuParam_input(schedulePlan); | ||
| 297 | -// // 每个规则对应的输入参数 | ||
| 298 | -// List<ScheduleRule_input> scheduleRule_inputs = new ArrayList<>(); | ||
| 299 | -// Iterator<ScheduleRule1Flat> scheduleRule1FlatIterator = strategy.getScheduleRule(xl.getId()).iterator(); | ||
| 300 | -// while (scheduleRule1FlatIterator.hasNext()) { | ||
| 301 | -// ScheduleRule1Flat scheduleRule1Flat_temp = scheduleRule1FlatIterator.next(); | ||
| 302 | -// ScheduleRule_input scheduleRule_input = new ScheduleRule_input(scheduleRule1Flat_temp); | ||
| 303 | -// scheduleRule_inputs.add(scheduleRule_input); | ||
| 304 | -// } | ||
| 305 | -// // 规则输出数据 | ||
| 306 | -// ScheduleResults_output scheduleResults_output = new ScheduleResults_output(); | ||
| 307 | -// | ||
| 308 | -// // 2-2、构造drools session->载入数据->启动规则->计算->销毁session | ||
| 309 | -// // 创建session,内部配置的是stateful | ||
| 310 | -// KieSession session = kieBase.newKieSession(); | ||
| 311 | -// // 设置gloable对象,在drl中通过别名使用 | ||
| 312 | -// session.setGlobal("scheduleResult", scheduleResults_output); | ||
| 313 | -// session.setGlobal("log", logger); // 设置日志 | ||
| 314 | -// | ||
| 315 | -// // 载入数据 | ||
| 316 | -// session.insert(scheduleCalcuParam_input); | ||
| 317 | -// for (ScheduleRule_input scheduleRule_input : scheduleRule_inputs) { | ||
| 318 | -// session.insert(scheduleRule_input); | ||
| 319 | -// } | ||
| 320 | -// // 执行rule | ||
| 321 | -// session.fireAllRules(); | ||
| 322 | -// | ||
| 323 | -// // 执行完毕销毁,有日志的也要关闭 | ||
| 324 | -// session.dispose(); | ||
| 325 | -// | ||
| 326 | -// System.out.println(scheduleResults_output.showGuideboardDesc1()); | ||
| 327 | -// | ||
| 328 | -// // 2-3、如果排班的数据之前已经有了,删除之前的数据 | ||
| 329 | -// schedulePlanInfoRepository.deleteByXlAndScheduleDateGreaterThanEqualAndScheduleDateLessThanEqual( | ||
| 330 | -// xl.getId(), schedulePlan.getScheduleFromTime(), schedulePlan.getScheduleToTime() | ||
| 331 | -// ); | ||
| 332 | -// | ||
| 333 | -// // 3、根据规则返回,组合最后的输出数据 | ||
| 334 | -// // 3-1、根据注入的策略服务,获取原始数据 | ||
| 335 | -// Map<Date, Multimap<Long, TTInfoDetail>> gbdTTinfoMaps = strategy.getGuideboardXlTTInfoDetailMaps( | ||
| 336 | -// xl.getId(), schedulePlan.getScheduleFromTime(), schedulePlan.getScheduleToTime()); | ||
| 337 | -// | ||
| 338 | -// Map<Long, CarConfigInfo> carConfigMaps = strategy.getCarConfigMaps(xl.getId()); // 车辆配置对应车辆信息 | ||
| 339 | -// Map<Long, EmployeeConfigInfo> employeeConfigMaps = strategy.getEmployeeConfigMaps(xl.getId()); // 人员配置对应的人员信息 | ||
| 340 | -// | ||
| 341 | -// // 3-2、循环规则输出 | ||
| 342 | -// Map<Long, String> ttInfoMap = new HashMap<>(); // 时刻表映射,id和名字 | ||
| 343 | -// List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>(); | ||
| 344 | -// for (ScheduleResult_output scheduleResult_output : scheduleResults_output.getResults()) { | ||
| 345 | -// // 车辆配置对应的车辆 | ||
| 346 | -// CarConfigInfo configInfo = carConfigMaps.get(Long.valueOf(scheduleResult_output.getCarConfigId())); | ||
| 347 | -// // 人员配置对应的人员,这里需要分班处理的 | ||
| 348 | -// List<EmployeeConfigInfo> employeeConfigInfoList = new ArrayList<>(); | ||
| 349 | -// String[] eids = scheduleResult_output.getEmployeeConfigId().split("-"); | ||
| 350 | -// for (String eid : eids) { | ||
| 351 | -// employeeConfigInfoList.add(employeeConfigMaps.get(Long.valueOf(eid))); | ||
| 352 | -// } | ||
| 353 | -// // 排班明细(这个要迭代的) | ||
| 354 | -// Collection<TTInfoDetail> ttInfoDetails_ = gbdTTinfoMaps.get(scheduleResult_output.getSd().toDate()).get( | ||
| 355 | -// Long.parseLong(scheduleResult_output.getGuideboardId())); | ||
| 356 | -// List<TTInfoDetail> ttInfoDetails = new ArrayList<>(ttInfoDetails_); | ||
| 357 | -// | ||
| 358 | -// // 排序ttInfoDetails | ||
| 359 | -// Collections.sort(ttInfoDetails, new Comparator<TTInfoDetail>() { | ||
| 360 | -// @Override | ||
| 361 | -// public int compare(TTInfoDetail o1, TTInfoDetail o2) { | ||
| 362 | -// return o1.getFcno().compareTo(o2.getFcno()); | ||
| 363 | -// } | ||
| 364 | -// }); | ||
| 365 | -// | ||
| 366 | -// Boolean isFb = false; // 是否分班 | ||
| 367 | -// for (int i = 0; i < ttInfoDetails.size(); i++) { | ||
| 368 | -// TTInfoDetail ttInfoDetail = ttInfoDetails.get(i); | ||
| 369 | -// | ||
| 370 | -// if (ttInfoDetail.getIsFB()) | ||
| 371 | -// isFb = ttInfoDetail.getIsFB(); | ||
| 372 | -// | ||
| 373 | -// SchedulePlanInfo schedulePlanInfo = new SchedulePlanInfo( | ||
| 374 | -// xl, | ||
| 375 | -// scheduleResult_output, | ||
| 376 | -// ttInfoDetail, | ||
| 377 | -// isFb, | ||
| 378 | -// configInfo, | ||
| 379 | -// employeeConfigInfoList, | ||
| 380 | -// schedulePlan, | ||
| 381 | -// i == 0, | ||
| 382 | -// i == ttInfoDetails.size() - 1); | ||
| 383 | -// | ||
| 384 | -// // 获取公司,分公司信息 | ||
| 385 | -// String gsbm = xl.getCompany(); | ||
| 386 | -// String fgsbm = xl.getBrancheCompany(); | ||
| 387 | -// Business gs = null; | ||
| 388 | -// Business fgs = null; | ||
| 389 | -// | ||
| 390 | -// Map<String, Object> param = new HashMap<>(); | ||
| 391 | -// | ||
| 392 | -// if (StringUtils.isNotEmpty(gsbm)) { | ||
| 393 | -// param.clear(); | ||
| 394 | -// param.put("businessCode_eq", gsbm); | ||
| 395 | -// Iterator<Business> businessIterator = businessService.list(param).iterator(); | ||
| 396 | -// if (businessIterator.hasNext()) { | ||
| 397 | -// gs = businessIterator.next(); | ||
| 398 | -// } | ||
| 399 | -// } | ||
| 400 | -// if (StringUtils.isNotEmpty(gsbm) && StringUtils.isNotEmpty(fgsbm)) { | ||
| 401 | -// param.clear();; | ||
| 402 | -// param.put("upCode_eq", gsbm); | ||
| 403 | -// param.put("businessCode_eq", fgsbm); | ||
| 404 | -// Iterator<Business> businessIterator = businessService.list(param).iterator(); | ||
| 405 | -// if (businessIterator.hasNext()) { | ||
| 406 | -// fgs = businessIterator.next(); | ||
| 407 | -// } | ||
| 408 | -// } | ||
| 409 | -// | ||
| 410 | -// if (gs != null) { | ||
| 411 | -// schedulePlanInfo.setGsBm(gs.getBusinessCode()); | ||
| 412 | -// schedulePlanInfo.setGsName(gs.getBusinessName()); | ||
| 413 | -// } | ||
| 414 | -// if (fgs != null) { | ||
| 415 | -// schedulePlanInfo.setFgsBm(fgs.getBusinessCode()); | ||
| 416 | -// schedulePlanInfo.setFgsName(fgs.getBusinessName()); | ||
| 417 | -// } | ||
| 418 | -// | ||
| 419 | -// // 操作人,操作时间 | ||
| 420 | -// schedulePlanInfo.setCreateBy(schedulePlan.getCreateBy()); | ||
| 421 | -// schedulePlanInfo.setCreateDate(schedulePlan.getCreateDate()); | ||
| 422 | -// schedulePlanInfo.setUpdateBy(schedulePlan.getUpdateBy()); | ||
| 423 | -// schedulePlanInfo.setUpdateDate(schedulePlan.getUpdateDate()); | ||
| 424 | -// | ||
| 425 | -// schedulePlanInfos.add(schedulePlanInfo); | ||
| 426 | -// ttInfoMap.put(ttInfoDetail.getTtinfo().getId(), ttInfoDetail.getTtinfo().getName()); | ||
| 427 | -// | ||
| 428 | -// } | ||
| 429 | -// | ||
| 430 | -// } | ||
| 431 | -// | ||
| 432 | -// schedulePlan.setTtInfoId(StringUtils.join(ttInfoMap.keySet(), ",")); | ||
| 433 | -// schedulePlan.setTtInfoNames(StringUtils.join(ttInfoMap.values(), ",")); | ||
| 434 | -// | ||
| 435 | -// // 3-2、保存生成的排班和明细 | ||
| 436 | -// schedulePlan.getSchedulePlanInfoList().addAll(schedulePlanInfos); // 关联的排班明细信息 | ||
| 437 | -// super.save(schedulePlan); | ||
| 438 | -// | ||
| 439 | -// return new SchedulePlan(); | ||
| 440 | - } | ||
| 441 | - | ||
| 442 | @Override | 235 | @Override |
| 443 | public SchedulePlan findSchedulePlanTommorw() { | 236 | public SchedulePlan findSchedulePlanTommorw() { |
| 444 | DateTime today = new DateTime(new Date()); | 237 | DateTime today = new DateTime(new Date()); |
| @@ -460,8 +253,8 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -460,8 +253,8 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 460 | KieSession session = kieBase.newKieSession(); | 253 | KieSession session = kieBase.newKieSession(); |
| 461 | // 设置gloable对象,在drl中通过别名使用 | 254 | // 设置gloable对象,在drl中通过别名使用 |
| 462 | session.setGlobal("log", logger); | 255 | session.setGlobal("log", logger); |
| 463 | - session.setGlobal("lineService", lineService); | ||
| 464 | - session.setGlobal("ttInfoDetailService", ttInfoDetailService); | 256 | + session.setGlobal("lineRepository", lineRepository); |
| 257 | + session.setGlobal("tTInfoDetailRepository", ttInfoDetailRepository); | ||
| 465 | 258 | ||
| 466 | Result rs = new Result(); // 输出gloable对象 | 259 | Result rs = new Result(); // 输出gloable对象 |
| 467 | session.setGlobal("rs", rs); | 260 | session.setGlobal("rs", rs); |
| @@ -470,11 +263,10 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -470,11 +263,10 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 470 | CalcuParam calcuParam = new CalcuParam( | 263 | CalcuParam calcuParam = new CalcuParam( |
| 471 | new DateTime(from), new DateTime(to), xlid); | 264 | new DateTime(from), new DateTime(to), xlid); |
| 472 | session.insert(calcuParam); | 265 | session.insert(calcuParam); |
| 473 | - List<TTInfo> ttInfos = ttInfoService.findAll(); | 266 | + List<TTInfo> ttInfos = (List<TTInfo>) ttInfoRepository.findAll(); |
| 474 | for (TTInfo ttInfo: ttInfos) | 267 | for (TTInfo ttInfo: ttInfos) |
| 475 | session.insert(ttInfo); | 268 | session.insert(ttInfo); |
| 476 | 269 | ||
| 477 | - | ||
| 478 | // 执行rule | 270 | // 执行rule |
| 479 | session.fireAllRules(); | 271 | session.fireAllRules(); |
| 480 | 272 |
src/main/java/com/bsth/service/schedule/rules/Message.java deleted
100644 → 0
| 1 | -package com.bsth.service.schedule.rules; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * Created by xu on 16/6/15. | ||
| 5 | - */ | ||
| 6 | -public class Message { | ||
| 7 | - public static final int HELLO = 0; | ||
| 8 | - public static final int GOODBYE = 1; | ||
| 9 | - | ||
| 10 | - private String message; | ||
| 11 | - private int status; | ||
| 12 | - public String getMessage() { | ||
| 13 | - return message; | ||
| 14 | - } | ||
| 15 | - public void setMessage(String message) { | ||
| 16 | - this.message = message; | ||
| 17 | - } | ||
| 18 | - public int getStatus() { | ||
| 19 | - return status; | ||
| 20 | - } | ||
| 21 | - public void setStatus(int status) { | ||
| 22 | - this.status = status; | ||
| 23 | - } | ||
| 24 | -} |
src/main/java/com/bsth/service/schedule/rules/MyDroolsConfiguration.java
| @@ -55,9 +55,6 @@ public class MyDroolsConfiguration { | @@ -55,9 +55,6 @@ public class MyDroolsConfiguration { | ||
| 55 | kfs.write("src/main/resources/functions.drl", kieServices.getResources() | 55 | kfs.write("src/main/resources/functions.drl", kieServices.getResources() |
| 56 | .newInputStreamResource(this.getClass().getResourceAsStream( | 56 | .newInputStreamResource(this.getClass().getResourceAsStream( |
| 57 | "/rules/functions.drl"), "UTF-8")); | 57 | "/rules/functions.drl"), "UTF-8")); |
| 58 | - kfs.write("src/main/resources/HelloWorld.drl", kieServices.getResources() | ||
| 59 | - .newInputStreamResource(this.getClass().getResourceAsStream( | ||
| 60 | - "/rules/HelloWorld.drl"), "UTF-8")); | ||
| 61 | kfs.write("src/main/resources/shiftloop_fb_2.drl", kieServices.getResources() | 58 | kfs.write("src/main/resources/shiftloop_fb_2.drl", kieServices.getResources() |
| 62 | .newInputStreamResource(this.getClass().getResourceAsStream( | 59 | .newInputStreamResource(this.getClass().getResourceAsStream( |
| 63 | "/rules/shiftloop_fb_2.drl"), "UTF-8")); | 60 | "/rules/shiftloop_fb_2.drl"), "UTF-8")); |
src/main/resources/rules/HelloWorld.drl deleted
100644 → 0
| 1 | -package com.bsth.service.schedule | ||
| 2 | - | ||
| 3 | -//list any import classes here. | ||
| 4 | - | ||
| 5 | -import com.bsth.service.schedule.rules.Message; | ||
| 6 | - | ||
| 7 | -//declare any global variables here | ||
| 8 | - | ||
| 9 | -global java.util.List list | ||
| 10 | - | ||
| 11 | - | ||
| 12 | -rule "Hello World" | ||
| 13 | - dialect "mvel" | ||
| 14 | - when | ||
| 15 | - $m : Message( status == Message.HELLO, $message : message ) | ||
| 16 | - then | ||
| 17 | - System.out.println($message); | ||
| 18 | - $m.status = com.bsth.service.schedule.rules.Message.GOODBYE; | ||
| 19 | - $m.message = "Goodbye cruel world"; | ||
| 20 | - update($m); | ||
| 21 | -end | ||
| 22 | - | ||
| 23 | -rule "Good bye" | ||
| 24 | - dialect "mvel" | ||
| 25 | - when | ||
| 26 | - $m : Message( status == Message.GOODBYE, $message : message ) | ||
| 27 | - then | ||
| 28 | - System.out.println($message); | ||
| 29 | - list.add("you come on!"); | ||
| 30 | -end |
src/main/resources/rules/plan.drl
| @@ -6,12 +6,11 @@ import java.util.*; | @@ -6,12 +6,11 @@ import java.util.*; | ||
| 6 | import com.bsth.service.schedule.rules.plan.PlanCalcuParam_input; | 6 | import com.bsth.service.schedule.rules.plan.PlanCalcuParam_input; |
| 7 | import com.bsth.service.schedule.rules.plan.PlanResult; | 7 | import com.bsth.service.schedule.rules.plan.PlanResult; |
| 8 | 8 | ||
| 9 | -import com.bsth.service.schedule.TTInfoService; | ||
| 10 | -import com.bsth.service.schedule.TTInfoDetailService; | ||
| 11 | -import com.bsth.service.schedule.CarConfigInfoService; | ||
| 12 | -import com.bsth.service.schedule.EmployeeConfigInfoService; | ||
| 13 | -import com.bsth.service.LineService; | ||
| 14 | -import com.bsth.service.BusinessService; | 9 | +import com.bsth.repository.schedule.TTInfoDetailRepository; |
| 10 | +import com.bsth.repository.schedule.CarConfigInfoRepository; | ||
| 11 | +import com.bsth.repository.schedule.EmployeeConfigInfoRepository; | ||
| 12 | +import com.bsth.repository.LineRepository; | ||
| 13 | +import com.bsth.repository.BusinessRepository; | ||
| 15 | 14 | ||
| 16 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output; | 15 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output; |
| 17 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; | 16 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; |
| @@ -33,33 +32,27 @@ import org.apache.commons.lang3.StringUtils; | @@ -33,33 +32,27 @@ import org.apache.commons.lang3.StringUtils; | ||
| 33 | 32 | ||
| 34 | // 全局日志类(一般使用调用此规则的service类) | 33 | // 全局日志类(一般使用调用此规则的service类) |
| 35 | global Logger log; | 34 | global Logger log; |
| 36 | -global TTInfoDetailService tTInfoDetailService; | ||
| 37 | -global TTInfoService tTInfoService; | ||
| 38 | -global CarConfigInfoService carConfigInfoService; | ||
| 39 | -global EmployeeConfigInfoService employeeConfigInfoService; | ||
| 40 | -global LineService lineService; | ||
| 41 | -global BusinessService businessService; | 35 | + |
| 36 | +global TTInfoDetailRepository tTInfoDetailRepository; | ||
| 37 | +global CarConfigInfoRepository carConfigInfoRepository; | ||
| 38 | +global EmployeeConfigInfoRepository employeeConfigInfoRepository; | ||
| 39 | +global LineRepository lineRepository; | ||
| 40 | +global BusinessRepository businessRepository; | ||
| 42 | 41 | ||
| 43 | // 输出 | 42 | // 输出 |
| 44 | global PlanResult planResult; | 43 | global PlanResult planResult; |
| 45 | 44 | ||
| 46 | -function Map ttidParams(String ttid) { | ||
| 47 | - Map param = new HashMap(); | ||
| 48 | - param.put("ttinfo.id_eq", Long.parseLong(ttid)); | ||
| 49 | - return param; | ||
| 50 | -} | ||
| 51 | - | ||
| 52 | function Map xlidParams(String xlid) { | 45 | function Map xlidParams(String xlid) { |
| 53 | Map param = new HashMap(); | 46 | Map param = new HashMap(); |
| 54 | param.put("xl.id_eq", Integer.valueOf(xlid)); | 47 | param.put("xl.id_eq", Integer.valueOf(xlid)); |
| 55 | return param; | 48 | return param; |
| 56 | } | 49 | } |
| 57 | 50 | ||
| 58 | -function List ecList(EmployeeConfigInfoService service, String ecids) { | 51 | +function List ecList(EmployeeConfigInfoRepository repo, String ecids) { |
| 59 | List<String> ids = Arrays.asList(ecids.split("-")); | 52 | List<String> ids = Arrays.asList(ecids.split("-")); |
| 60 | List rst = new ArrayList(); | 53 | List rst = new ArrayList(); |
| 61 | for (int i = 0; i < ids.size(); i++) { | 54 | for (int i = 0; i < ids.size(); i++) { |
| 62 | - rst.add(service.findById(Long.parseLong(ids.get(i)))); | 55 | + rst.add(repo.findOne(Long.parseLong(ids.get(i)))); |
| 63 | } | 56 | } |
| 64 | return rst; | 57 | return rst; |
| 65 | } | 58 | } |
| @@ -149,7 +142,7 @@ rule "calcu_CarConfig_Wrap" | @@ -149,7 +142,7 @@ rule "calcu_CarConfig_Wrap" | ||
| 149 | salience 800 | 142 | salience 800 |
| 150 | when | 143 | when |
| 151 | $lr: Loop_result($xlId: xlId) | 144 | $lr: Loop_result($xlId: xlId) |
| 152 | - $ccf: CarConfigInfo() from carConfigInfoService.list(xlidParams($xlId)) | 145 | + $ccf: CarConfigInfo() from carConfigInfoRepository.findByXlId(Integer.parseInt($xlId)) |
| 153 | then | 146 | then |
| 154 | CarConfig_Wrap carConfig_wrap = new CarConfig_Wrap(); | 147 | CarConfig_Wrap carConfig_wrap = new CarConfig_Wrap(); |
| 155 | carConfig_wrap.setId(String.valueOf($ccf.getId())); | 148 | carConfig_wrap.setId(String.valueOf($ccf.getId())); |
| @@ -169,7 +162,7 @@ rule "calcu_EmployeeConfig_Wrap" | @@ -169,7 +162,7 @@ rule "calcu_EmployeeConfig_Wrap" | ||
| 169 | salience 800 | 162 | salience 800 |
| 170 | when | 163 | when |
| 171 | $lr: Loop_result($xlId: xlId) | 164 | $lr: Loop_result($xlId: xlId) |
| 172 | - $eci: EmployeeConfigInfo() from employeeConfigInfoService.list(xlidParams($xlId)) | 165 | + $eci: EmployeeConfigInfo() from employeeConfigInfoRepository.findByXlId(Integer.parseInt($xlId)) |
| 173 | then | 166 | then |
| 174 | EmployeeConfig_Wrap employeeConfig_wrap = new EmployeeConfig_Wrap(); | 167 | EmployeeConfig_Wrap employeeConfig_wrap = new EmployeeConfig_Wrap(); |
| 175 | employeeConfig_wrap.setId(String.valueOf($eci.getId())); | 168 | employeeConfig_wrap.setId(String.valueOf($eci.getId())); |
| @@ -194,10 +187,10 @@ rule "calcu_TTInfo_gid_stat" | @@ -194,10 +187,10 @@ rule "calcu_TTInfo_gid_stat" | ||
| 194 | when | 187 | when |
| 195 | $lr: Loop_result($xlId: xlId) | 188 | $lr: Loop_result($xlId: xlId) |
| 196 | $ttInfoId: String() from $lr.getTtInfoMap().keySet() | 189 | $ttInfoId: String() from $lr.getTtInfoMap().keySet() |
| 197 | - $gids: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailService.list(ttidParams($ttInfoId)), gidscount($ttd)) | 190 | + $gids: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailRepository.findByTtinfoId(Long.parseLong($ttInfoId)), gidscount($ttd)) |
| 198 | $gid: String() from $gids | 191 | $gid: String() from $gids |
| 199 | - $fbtime_str: String() from accumulate ($ttd: TTInfoDetail(lp.id.toString() == $gid) from tTInfoDetailService.list(ttidParams($ttInfoId)), gidfbtime($ttd)) | ||
| 200 | - $maxfcno: Double() from accumulate ($ttd: TTInfoDetail(lp.id.toString() == $gid) from tTInfoDetailService.list(ttidParams($ttInfoId)), max($ttd.getFcno())) | 192 | + $fbtime_str: String() from accumulate ($ttd: TTInfoDetail(lp.id.toString() == $gid) from tTInfoDetailRepository.findByTtinfoId(Long.parseLong($ttInfoId)), gidfbtime($ttd)) |
| 193 | + $maxfcno: Double() from accumulate ($ttd: TTInfoDetail(lp.id.toString() == $gid) from tTInfoDetailRepository.findByTtinfoId(Long.parseLong($ttInfoId)), max($ttd.getFcno())) | ||
| 201 | then | 194 | then |
| 202 | TTInfo_gid_stat ttInfo_gid_stat = new TTInfo_gid_stat(); | 195 | TTInfo_gid_stat ttInfo_gid_stat = new TTInfo_gid_stat(); |
| 203 | ttInfo_gid_stat.setXlId($xlId); | 196 | ttInfo_gid_stat.setXlId($xlId); |
| @@ -234,7 +227,7 @@ rule "calcu_TTInfoDetail_Wrap" | @@ -234,7 +227,7 @@ rule "calcu_TTInfoDetail_Wrap" | ||
| 234 | $ttInfoStat: TTInfo_gid_stat( | 227 | $ttInfoStat: TTInfo_gid_stat( |
| 235 | ttInfoId == $ttInfoId, | 228 | ttInfoId == $ttInfoId, |
| 236 | $gid: gid, $maxFcno: maxFcno) | 229 | $gid: gid, $maxFcno: maxFcno) |
| 237 | - $ttInfoDetail: TTInfoDetail(lp.id.toString() == $gid) from tTInfoDetailService.list(ttidParams($ttInfoId)) | 230 | + $ttInfoDetail: TTInfoDetail(lp.id.toString() == $gid) from tTInfoDetailRepository.findByTtinfoId(Long.parseLong($ttInfoId)) |
| 238 | then | 231 | then |
| 239 | TTInfoDetail_Wrap ttInfoDetail_wrap = new TTInfoDetail_Wrap(); | 232 | TTInfoDetail_Wrap ttInfoDetail_wrap = new TTInfoDetail_Wrap(); |
| 240 | ttInfoDetail_wrap.setXlId($xlId); | 233 | ttInfoDetail_wrap.setXlId($xlId); |
| @@ -276,7 +269,7 @@ rule "Calcu_SchedulePlanInfo" | @@ -276,7 +269,7 @@ rule "Calcu_SchedulePlanInfo" | ||
| 276 | ) | 269 | ) |
| 277 | then | 270 | then |
| 278 | // 线路 | 271 | // 线路 |
| 279 | - Line xl = lineService.findById(Integer.valueOf($xlId)); | 272 | + Line xl = lineRepository.findOne(Integer.parseInt($xlId)); |
| 280 | 273 | ||
| 281 | SchedulePlanInfo schedulePlanInfo = new SchedulePlanInfo( | 274 | SchedulePlanInfo schedulePlanInfo = new SchedulePlanInfo( |
| 282 | xl, | 275 | xl, |
| @@ -284,7 +277,7 @@ rule "Calcu_SchedulePlanInfo" | @@ -284,7 +277,7 @@ rule "Calcu_SchedulePlanInfo" | ||
| 284 | $ttInfoDetail, | 277 | $ttInfoDetail, |
| 285 | $isFb, | 278 | $isFb, |
| 286 | $cc, | 279 | $cc, |
| 287 | - ecList(employeeConfigInfoService, $sro.getEmployeeConfigId()), | 280 | + ecList(employeeConfigInfoRepository, $sro.getEmployeeConfigId()), |
| 288 | $param.getSchedulePlan(), | 281 | $param.getSchedulePlan(), |
| 289 | $isFirstBc, | 282 | $isFirstBc, |
| 290 | $isLastBc | 283 | $isLastBc |
| @@ -296,23 +289,16 @@ rule "Calcu_SchedulePlanInfo" | @@ -296,23 +289,16 @@ rule "Calcu_SchedulePlanInfo" | ||
| 296 | Business gs = null; | 289 | Business gs = null; |
| 297 | Business fgs = null; | 290 | Business fgs = null; |
| 298 | 291 | ||
| 299 | - Map<String, Object> param = new HashMap<>(); | ||
| 300 | - | ||
| 301 | if (StringUtils.isNotEmpty(gsbm)) { | 292 | if (StringUtils.isNotEmpty(gsbm)) { |
| 302 | - param.clear(); | ||
| 303 | - param.put("businessCode_eq", gsbm); | ||
| 304 | - Iterator<Business> businessIterator = businessService.list(param).iterator(); | ||
| 305 | - if (businessIterator.hasNext()) { | ||
| 306 | - gs = businessIterator.next(); | 293 | + Iterator<Business> businessIterator1 = businessRepository.findByBusinessCode(gsbm).iterator(); |
| 294 | + if (businessIterator1.hasNext()) { | ||
| 295 | + gs = (Business) businessIterator1.next(); | ||
| 307 | } | 296 | } |
| 308 | } | 297 | } |
| 309 | if (StringUtils.isNotEmpty(gsbm) && StringUtils.isNotEmpty(fgsbm)) { | 298 | if (StringUtils.isNotEmpty(gsbm) && StringUtils.isNotEmpty(fgsbm)) { |
| 310 | - param.clear();; | ||
| 311 | - param.put("upCode_eq", gsbm); | ||
| 312 | - param.put("businessCode_eq", fgsbm); | ||
| 313 | - Iterator<Business> businessIterator = businessService.list(param).iterator(); | ||
| 314 | - if (businessIterator.hasNext()) { | ||
| 315 | - fgs = businessIterator.next(); | 299 | + Iterator<Business> businessIterator2 = businessRepository.findByUpCodeAndBusinessCode(gsbm, fgsbm).iterator(); |
| 300 | + if (businessIterator2.hasNext()) { | ||
| 301 | + fgs = (Business) businessIterator2.next(); | ||
| 316 | } | 302 | } |
| 317 | } | 303 | } |
| 318 | 304 | ||
| @@ -331,14 +317,11 @@ rule "Calcu_SchedulePlanInfo" | @@ -331,14 +317,11 @@ rule "Calcu_SchedulePlanInfo" | ||
| 331 | schedulePlanInfo.setUpdateBy($param.getSchedulePlan().getUpdateBy()); | 317 | schedulePlanInfo.setUpdateBy($param.getSchedulePlan().getUpdateBy()); |
| 332 | schedulePlanInfo.setUpdateDate($param.getSchedulePlan().getUpdateDate()); | 318 | schedulePlanInfo.setUpdateDate($param.getSchedulePlan().getUpdateDate()); |
| 333 | 319 | ||
| 334 | - // TODO: | ||
| 335 | - $param.getSchedulePlan().setTtInfo($ttInfoDetail.getTtinfo()); | ||
| 336 | - | ||
| 337 | // result 输出 | 320 | // result 输出 |
| 338 | planResult.getSchedulePlanInfos().add(schedulePlanInfo); | 321 | planResult.getSchedulePlanInfos().add(schedulePlanInfo); |
| 339 | 322 | ||
| 340 | log.info("gid={},ecid={},ttInfoId={}", | 323 | log.info("gid={},ecid={},ttInfoId={}", |
| 341 | - $gid, ecList(employeeConfigInfoService, $sro.getEmployeeConfigId()), | 324 | + $gid, ecList(employeeConfigInfoRepository, $sro.getEmployeeConfigId()), |
| 342 | ttInfoId_sd($lr.getTtInfoMapLoop(), $sd)); | 325 | ttInfoId_sd($lr.getTtInfoMapLoop(), $sd)); |
| 343 | 326 | ||
| 344 | end | 327 | end |
src/main/resources/rules/ttinfo.drl
| @@ -12,7 +12,7 @@ import com.bsth.service.schedule.rules.ttinfo.LpInfoResults_output; | @@ -12,7 +12,7 @@ import com.bsth.service.schedule.rules.ttinfo.LpInfoResults_output; | ||
| 12 | 12 | ||
| 13 | import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input; | 13 | import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input; |
| 14 | 14 | ||
| 15 | -import com.bsth.service.schedule.TTInfoDetailService; | 15 | +import com.bsth.repository.schedule.TTInfoDetailRepository; |
| 16 | 16 | ||
| 17 | import com.bsth.entity.schedule.TTInfo; | 17 | import com.bsth.entity.schedule.TTInfo; |
| 18 | import com.bsth.entity.schedule.TTInfoDetail; | 18 | import com.bsth.entity.schedule.TTInfoDetail; |
| @@ -21,21 +21,18 @@ import org.slf4j.Logger | @@ -21,21 +21,18 @@ import org.slf4j.Logger | ||
| 21 | 21 | ||
| 22 | // 全局日志 | 22 | // 全局日志 |
| 23 | global Logger log; | 23 | global Logger log; |
| 24 | -// service | ||
| 25 | -global TTInfoDetailService tTInfoDetailService; | 24 | +// repostory |
| 25 | +global TTInfoDetailRepository tTInfoDetailRepository; | ||
| 26 | // return输出 | 26 | // return输出 |
| 27 | global TTInfoResults_output results | 27 | global TTInfoResults_output results |
| 28 | global LpInfoResults_output lpInfoResults_output | 28 | global LpInfoResults_output lpInfoResults_output |
| 29 | 29 | ||
| 30 | -function Map ttidParams(List ttinfolist) { | 30 | +function Long ttidParams(List ttinfolist) { |
| 31 | // 获取第一张时刻表id | 31 | // 获取第一张时刻表id |
| 32 | TTInfo_input ttInfo_input = (TTInfo_input) ttinfolist.get(0); | 32 | TTInfo_input ttInfo_input = (TTInfo_input) ttinfolist.get(0); |
| 33 | - Map param = new HashMap(); | ||
| 34 | - param.put("ttinfo.id_eq", Long.parseLong(ttInfo_input.getTtInfoId())); | ||
| 35 | - return param; | 33 | + return Long.parseLong(ttInfo_input.getTtInfoId()); |
| 36 | } | 34 | } |
| 37 | 35 | ||
| 38 | - | ||
| 39 | /* | 36 | /* |
| 40 | TODO:规则说明,以后待说明 | 37 | TODO:规则说明,以后待说明 |
| 41 | */ | 38 | */ |
| @@ -124,7 +121,7 @@ rule "calcu_ttinfo_special_day" // 特殊日期匹配 | @@ -124,7 +121,7 @@ rule "calcu_ttinfo_special_day" // 特殊日期匹配 | ||
| 124 | $calcu_ttinfo_enable_result : Calcu_ttinfo_enable_result($xlId : xlId, $calcu_date : calcu_date, $ttInfo_input_list : ttInfo_input_list) | 121 | $calcu_ttinfo_enable_result : Calcu_ttinfo_enable_result($xlId : xlId, $calcu_date : calcu_date, $ttInfo_input_list : ttInfo_input_list) |
| 125 | $calcu_days_result : Calcu_days_result(calcu_date == $calcu_date, xlId == $xlId, $calcu_day : calcu_day) | 122 | $calcu_days_result : Calcu_days_result(calcu_date == $calcu_date, xlId == $xlId, $calcu_day : calcu_day) |
| 126 | $ttinfolist : ArrayList(size >= 1) from collect (TTInfo_input(specialDays contains $calcu_date) from $ttInfo_input_list) | 123 | $ttinfolist : ArrayList(size >= 1) from collect (TTInfo_input(specialDays contains $calcu_date) from $ttInfo_input_list) |
| 127 | - $lpInfoResults: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailService.list(ttidParams($ttinfolist)), lpinforesult($ttd)) | 124 | + $lpInfoResults: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailRepository.findByTtinfoId(ttidParams($ttinfolist)), lpinforesult($ttd)) |
| 128 | then | 125 | then |
| 129 | // 更新Calcu_days_result对象 | 126 | // 更新Calcu_days_result对象 |
| 130 | int new_calcu_day = $calcu_day + 1; | 127 | int new_calcu_day = $calcu_day + 1; |
| @@ -155,7 +152,7 @@ rule "calcu_ttinfo_normal_day" // 平日匹配 | @@ -155,7 +152,7 @@ rule "calcu_ttinfo_normal_day" // 平日匹配 | ||
| 155 | $calcu_ttinfo_enable_result : Calcu_ttinfo_enable_result($xlId : xlId, $calcu_date : calcu_date, $ttInfo_input_list : ttInfo_input_list) | 152 | $calcu_ttinfo_enable_result : Calcu_ttinfo_enable_result($xlId : xlId, $calcu_date : calcu_date, $ttInfo_input_list : ttInfo_input_list) |
| 156 | $calcu_days_result : Calcu_days_result(calcu_date == $calcu_date, xlId == $xlId, $calcu_day : calcu_day, $calcu_weekday : calcu_weekday) | 153 | $calcu_days_result : Calcu_days_result(calcu_date == $calcu_date, xlId == $xlId, $calcu_day : calcu_day, $calcu_weekday : calcu_weekday) |
| 157 | $ttinfolist : ArrayList(size >= 1) from collect (TTInfo_input(specialDays not contains $calcu_date, weekdays[$calcu_weekday - 1] == true) from $ttInfo_input_list) | 154 | $ttinfolist : ArrayList(size >= 1) from collect (TTInfo_input(specialDays not contains $calcu_date, weekdays[$calcu_weekday - 1] == true) from $ttInfo_input_list) |
| 158 | - $lpInfoResults: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailService.list(ttidParams($ttinfolist)), lpinforesult($ttd)) | 155 | + $lpInfoResults: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailRepository.findByTtinfoId(ttidParams($ttinfolist)), lpinforesult($ttd)) |
| 159 | then | 156 | then |
| 160 | // 更新Calcu_days_result对象 | 157 | // 更新Calcu_days_result对象 |
| 161 | int new_calcu_day = $calcu_day + 1; | 158 | int new_calcu_day = $calcu_day + 1; |
| @@ -186,7 +183,7 @@ rule "calcu_ttinfo_other_day" // 都没有的情况下,匹配 | @@ -186,7 +183,7 @@ rule "calcu_ttinfo_other_day" // 都没有的情况下,匹配 | ||
| 186 | $calcu_ttinfo_enable_result : Calcu_ttinfo_enable_result($xlId : xlId, $calcu_date : calcu_date, $ttInfo_input_list : ttInfo_input_list) | 183 | $calcu_ttinfo_enable_result : Calcu_ttinfo_enable_result($xlId : xlId, $calcu_date : calcu_date, $ttInfo_input_list : ttInfo_input_list) |
| 187 | $calcu_days_result : Calcu_days_result(calcu_date == $calcu_date, xlId == $xlId, $calcu_day : calcu_day, $calcu_weekday : calcu_weekday) | 184 | $calcu_days_result : Calcu_days_result(calcu_date == $calcu_date, xlId == $xlId, $calcu_day : calcu_day, $calcu_weekday : calcu_weekday) |
| 188 | $ttinfolist : ArrayList(size >= 1) from collect (TTInfo_input(specialDays not contains $calcu_date, weekdays[$calcu_weekday - 1] == false) from $ttInfo_input_list) | 185 | $ttinfolist : ArrayList(size >= 1) from collect (TTInfo_input(specialDays not contains $calcu_date, weekdays[$calcu_weekday - 1] == false) from $ttInfo_input_list) |
| 189 | - $lpInfoResults: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailService.list(ttidParams($ttinfolist)), lpinforesult($ttd)) | 186 | + $lpInfoResults: List() from accumulate ($ttd: TTInfoDetail() from tTInfoDetailRepository.findByTtinfoId(ttidParams($ttinfolist)), lpinforesult($ttd)) |
| 190 | then | 187 | then |
| 191 | // 更新Calcu_days_result对象 | 188 | // 更新Calcu_days_result对象 |
| 192 | int new_calcu_day = $calcu_day + 1; | 189 | int new_calcu_day = $calcu_day + 1; |
src/main/resources/rules/ttinfo2.drl
| @@ -12,8 +12,8 @@ import com.bsth.entity.schedule.TTInfo; | @@ -12,8 +12,8 @@ import com.bsth.entity.schedule.TTInfo; | ||
| 12 | import com.bsth.entity.schedule.TTInfoDetail; | 12 | import com.bsth.entity.schedule.TTInfoDetail; |
| 13 | import com.bsth.entity.Line; | 13 | import com.bsth.entity.Line; |
| 14 | 14 | ||
| 15 | -import com.bsth.service.LineService; | ||
| 16 | -import com.bsth.service.schedule.TTInfoDetailService; | 15 | +import com.bsth.repository.LineRepository; |
| 16 | +import com.bsth.repository.schedule.TTInfoDetailRepository; | ||
| 17 | 17 | ||
| 18 | import org.slf4j.Logger | 18 | import org.slf4j.Logger |
| 19 | import org.joda.time.format.DateTimeFormat | 19 | import org.joda.time.format.DateTimeFormat |
| @@ -23,8 +23,8 @@ import java.lang.Object; | @@ -23,8 +23,8 @@ import java.lang.Object; | ||
| 23 | 23 | ||
| 24 | // 全局日志类(一般使用调用此规则的service类) | 24 | // 全局日志类(一般使用调用此规则的service类) |
| 25 | global Logger log; | 25 | global Logger log; |
| 26 | -global LineService lineService; | ||
| 27 | -global TTInfoDetailService ttInfoDetailService; | 26 | +global LineRepository lineRepository; |
| 27 | +global TTInfoDetailRepository tTInfoDetailRepository; | ||
| 28 | 28 | ||
| 29 | // 输出 | 29 | // 输出 |
| 30 | global Result rs; | 30 | global Result rs; |
| @@ -68,7 +68,7 @@ rule "calcu_iter_days" | @@ -68,7 +68,7 @@ rule "calcu_iter_days" | ||
| 68 | Calcu_iter_days_result cidr = new Calcu_iter_days_result(); | 68 | Calcu_iter_days_result cidr = new Calcu_iter_days_result(); |
| 69 | Period p = new Period($fromDate, $toDate, PeriodType.days()); | 69 | Period p = new Period($fromDate, $toDate, PeriodType.days()); |
| 70 | 70 | ||
| 71 | - Line line = (Line) lineService.findById($xlId); | 71 | + Line line = (Line) lineRepository.findOne($xlId); |
| 72 | 72 | ||
| 73 | cidr.setXlId($xlId); | 73 | cidr.setXlId($xlId); |
| 74 | cidr.setXlName(line.getName()); | 74 | cidr.setXlName(line.getName()); |
| @@ -192,9 +192,7 @@ rule "Calcu_iter_days_special_day" // 特殊日期匹配 | @@ -192,9 +192,7 @@ rule "Calcu_iter_days_special_day" // 特殊日期匹配 | ||
| 192 | 192 | ||
| 193 | TTInfoDetails_wrap ttInfoDetails_wrap = new TTInfoDetails_wrap(); | 193 | TTInfoDetails_wrap ttInfoDetails_wrap = new TTInfoDetails_wrap(); |
| 194 | ttInfoDetails_wrap.setTtInfoId($tid); | 194 | ttInfoDetails_wrap.setTtInfoId($tid); |
| 195 | - Map<String, Object> param = new HashMap<String, Object>(); | ||
| 196 | - param.put("ttinfo.id_eq", $tid); | ||
| 197 | - ttInfoDetails_wrap.setBcInfoList(ttInfoDetailService.list(param)); | 195 | + ttInfoDetails_wrap.setBcInfoList(tTInfoDetailRepository.findByTtinfoId($tid)); |
| 198 | insert(ttInfoDetails_wrap); | 196 | insert(ttInfoDetails_wrap); |
| 199 | } | 197 | } |
| 200 | update($cid); | 198 | update($cid); |
| @@ -239,9 +237,7 @@ rule "Calcu_iter_days_normal_day" // 平日匹配 | @@ -239,9 +237,7 @@ rule "Calcu_iter_days_normal_day" // 平日匹配 | ||
| 239 | 237 | ||
| 240 | TTInfoDetails_wrap ttInfoDetails_wrap = new TTInfoDetails_wrap(); | 238 | TTInfoDetails_wrap ttInfoDetails_wrap = new TTInfoDetails_wrap(); |
| 241 | ttInfoDetails_wrap.setTtInfoId($tid); | 239 | ttInfoDetails_wrap.setTtInfoId($tid); |
| 242 | - Map<String, Object> param = new HashMap<String, Object>(); | ||
| 243 | - param.put("ttinfo.id_eq", $tid); | ||
| 244 | - ttInfoDetails_wrap.setBcInfoList(ttInfoDetailService.list(param)); | 240 | + ttInfoDetails_wrap.setBcInfoList(tTInfoDetailRepository.findByTtinfoId($tid)); |
| 245 | insert(ttInfoDetails_wrap); | 241 | insert(ttInfoDetails_wrap); |
| 246 | } | 242 | } |
| 247 | update($cid); | 243 | update($cid); |
| @@ -286,8 +282,7 @@ rule "Calcu_iter_days_other_day" // 都没有的情况下,匹配 | @@ -286,8 +282,7 @@ rule "Calcu_iter_days_other_day" // 都没有的情况下,匹配 | ||
| 286 | TTInfoDetails_wrap ttInfoDetails_wrap = new TTInfoDetails_wrap(); | 282 | TTInfoDetails_wrap ttInfoDetails_wrap = new TTInfoDetails_wrap(); |
| 287 | ttInfoDetails_wrap.setTtInfoId($tid); | 283 | ttInfoDetails_wrap.setTtInfoId($tid); |
| 288 | Map<String, Object> param = new HashMap<String, Object>(); | 284 | Map<String, Object> param = new HashMap<String, Object>(); |
| 289 | - param.put("ttinfo.id_eq", $tid); | ||
| 290 | - ttInfoDetails_wrap.setBcInfoList(ttInfoDetailService.list(param)); | 285 | + ttInfoDetails_wrap.setBcInfoList(tTInfoDetailRepository.findByTtinfoId($tid)); |
| 291 | insert(ttInfoDetails_wrap); | 286 | insert(ttInfoDetails_wrap); |
| 292 | } | 287 | } |
| 293 | update($cid); | 288 | update($cid); |
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saScpdate.js
| @@ -21,6 +21,8 @@ angular.module('ScheduleApp').directive( | @@ -21,6 +21,8 @@ angular.module('ScheduleApp').directive( | ||
| 21 | to: '=', | 21 | to: '=', |
| 22 | xlid: '=', | 22 | xlid: '=', |
| 23 | xlname: '=', | 23 | xlname: '=', |
| 24 | + ttinfonames: '=', | ||
| 25 | + ttinfoids: '=', | ||
| 24 | error: '=' | 26 | error: '=' |
| 25 | }, | 27 | }, |
| 26 | controllerAs: '$saScpdateCtrl', | 28 | controllerAs: '$saScpdateCtrl', |
| @@ -116,6 +118,8 @@ angular.module('ScheduleApp').directive( | @@ -116,6 +118,8 @@ angular.module('ScheduleApp').directive( | ||
| 116 | } | 118 | } |
| 117 | 119 | ||
| 118 | var QClass = service.ttinfo; | 120 | var QClass = service.ttinfo; |
| 121 | + var ttinfonames = []; | ||
| 122 | + var ttinfoids = []; | ||
| 119 | QClass.val({xlid: xl_id, from: from_date, to: to_date}, | 123 | QClass.val({xlid: xl_id, from: from_date, to: to_date}, |
| 120 | function(result) { | 124 | function(result) { |
| 121 | scope[ctrlAs].$$ds = []; | 125 | scope[ctrlAs].$$ds = []; |
| @@ -141,6 +145,9 @@ angular.module('ScheduleApp').directive( | @@ -141,6 +145,9 @@ angular.module('ScheduleApp').directive( | ||
| 141 | 145 | ||
| 142 | if (obj.errorbc > 0) { | 146 | if (obj.errorbc > 0) { |
| 143 | errorTTInfos ++; | 147 | errorTTInfos ++; |
| 148 | + } else { | ||
| 149 | + ttinfonames.push(obj.ttname); | ||
| 150 | + ttinfoids.push(obj.ttid); | ||
| 144 | } | 151 | } |
| 145 | }); | 152 | }); |
| 146 | 153 | ||
| @@ -148,8 +155,9 @@ angular.module('ScheduleApp').directive( | @@ -148,8 +155,9 @@ angular.module('ScheduleApp').directive( | ||
| 148 | scope[ctrlAs].$$internalmodel = undefined; | 155 | scope[ctrlAs].$$internalmodel = undefined; |
| 149 | scope[ctrlAs].error = "时刻表有错误班次"; | 156 | scope[ctrlAs].error = "时刻表有错误班次"; |
| 150 | } else { | 157 | } else { |
| 151 | - | ||
| 152 | scope[ctrlAs].$$internalmodel = "ok"; | 158 | scope[ctrlAs].$$internalmodel = "ok"; |
| 159 | + scope[ctrlAs].ttinfonames = ttinfonames.join(","); | ||
| 160 | + scope[ctrlAs].ttinfoids = ttinfoids.join(","); | ||
| 153 | } | 161 | } |
| 154 | 162 | ||
| 155 | } else { | 163 | } else { |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
| @@ -3688,354 +3688,362 @@ angular.module('ScheduleApp').directive('saBcgroup', [ | @@ -3688,354 +3688,362 @@ angular.module('ScheduleApp').directive('saBcgroup', [ | ||
| 3688 | } | 3688 | } |
| 3689 | } | 3689 | } |
| 3690 | ]); | 3690 | ]); |
| 3691 | -/** | ||
| 3692 | - * saTimeTable指令,时刻表显示指令,excel表格形式,支持菜单,事件处理。 | ||
| 3693 | - * name(必须),控件的名字 | ||
| 3694 | - * celldbclickFn,单元格双击事件 | ||
| 3695 | - * ds,外部数据源 | ||
| 3696 | - * | ||
| 3697 | - * TODO:优化开发中 | ||
| 3698 | - * | ||
| 3699 | - */ | ||
| 3700 | -angular.module('ScheduleApp').directive('saTimetable', ['$compile', '$window', | ||
| 3701 | - function($compile, $window) { | ||
| 3702 | - return { | ||
| 3703 | - restrict: 'E', | ||
| 3704 | - templateUrl: '/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTableTemplate.html', | ||
| 3705 | - scope: { // 独立作用域 | ||
| 3706 | - // 注意:数据暂时从外部ngModel里获取,以后内部自己处理 | ||
| 3707 | - ds: "=ngModel", | ||
| 3708 | - celldbclickFn: "&celldbclick" | ||
| 3709 | - | ||
| 3710 | - // TODO: | ||
| 3711 | - | ||
| 3712 | - }, | ||
| 3713 | - controllerAs: "$saTimeTableCtrl", | ||
| 3714 | - bindToController: true, | ||
| 3715 | - controller: function() { | ||
| 3716 | - var self = this; | ||
| 3717 | - this.$$headToolTip = ""; // 表头tooltip信息 | ||
| 3718 | - | ||
| 3719 | - // TODO: | ||
| 3720 | - }, | ||
| 3721 | - | ||
| 3722 | - /**, | ||
| 3723 | - * compile阶段,angular还没有编译模版,根据需要可以修改模版dom | ||
| 3724 | - * @param tElem | ||
| 3725 | - * @param tAttrs | ||
| 3726 | - * @returns {{pre: Function, post: Function}} | ||
| 3727 | - */ | ||
| 3728 | - compile: function(tElem, tAttrs) { | ||
| 3729 | - // 获取属性 | ||
| 3730 | - var $attr_name = tAttrs["name"]; // 控件的名字 | ||
| 3731 | - if (!$attr_name) { | ||
| 3732 | - throw new Error("saTimeTable指令 name属性required"); | ||
| 3733 | - } | ||
| 3734 | - var $attr_celldbclick = tAttrs["celldbclick"]; // 单元格双击事件名 | ||
| 3735 | - | ||
| 3736 | - // 内部controlAs名字 | ||
| 3737 | - var ctrlAs = '$saTimeTableCtrl'; | ||
| 3738 | - | ||
| 3739 | - // 当前选中的cell | ||
| 3740 | - var startRowIndex = undefined; | ||
| 3741 | - var startColIndex = undefined; | ||
| 3742 | - var shiftKey = false; // shift键是否被按住 | ||
| 3743 | - var ctrlKey = false; // ctrl是否被按住 | ||
| 3744 | - // shift选中的cell | ||
| 3745 | - var shiftCells = []; | ||
| 3746 | - | ||
| 3747 | - // TODO: | ||
| 3748 | - | ||
| 3749 | - return { | ||
| 3750 | - pre: function(scope, element, attr) { | ||
| 3751 | - // TODO: | ||
| 3752 | - //alert(element.find("#tooltipTest").html()); | ||
| 3753 | - //$compile(element.find("#tooltipTest"))(scope); | ||
| 3754 | - | ||
| 3755 | - }, | ||
| 3756 | - post: function(scope, element, attr) { | ||
| 3757 | - // TODO: | ||
| 3758 | - | ||
| 3759 | - // ------------------- dom事件处理function -----------------// | ||
| 3760 | - scope[ctrlAs].$$cell_click = function(rowindex, colindex, cell) { | ||
| 3761 | - console.log("click " + "row=" + rowindex + ",col=" + colindex); | ||
| 3762 | - var internal_ds = scope[ctrlAs].ds.detailInfos; | ||
| 3763 | - | ||
| 3764 | - if (cell.ttdid) { // 是班次的单元格才能操作 | ||
| 3765 | - cell.sel = !cell.sel; | ||
| 3766 | - } | ||
| 3767 | - | ||
| 3768 | - }; | ||
| 3769 | - scope[ctrlAs].$$cell_dbclick = function(rowindex, colindex, cell) { | ||
| 3770 | - if (cell.ttdid) { // 是班次的单元格才能操作 | ||
| 3771 | - if ($attr_celldbclick) { | ||
| 3772 | - // 注意调用方法 | ||
| 3773 | - scope[ctrlAs].celldbclickFn()(rowindex, colindex); | ||
| 3774 | - } | ||
| 3775 | - } | ||
| 3776 | - }; | ||
| 3777 | - | ||
| 3778 | - // ------------------- 监控function ------------------// | ||
| 3779 | - // 监控明细数据,生成表头的tooltip | ||
| 3780 | - scope.$watch( | ||
| 3781 | - function() { | ||
| 3782 | - return scope[ctrlAs].ds; | ||
| 3783 | - }, | ||
| 3784 | - function(newValue, oldValue) { | ||
| 3785 | - if (newValue && | ||
| 3786 | - newValue.detailHeads && | ||
| 3787 | - newValue.detailHeads.length > 0) { | ||
| 3788 | - var tooltip = []; | ||
| 3789 | - tooltip.push("出场"); | ||
| 3790 | - angular.forEach(newValue.detailHeads, function(value) { | ||
| 3791 | - if (value != "出场" && | ||
| 3792 | - value != "路牌" && | ||
| 3793 | - value != "进场" && | ||
| 3794 | - value != "空驶班次/空驶里程" && | ||
| 3795 | - value != "运营班次/运营里程" ) { | ||
| 3796 | - var exist = false; | ||
| 3797 | - angular.forEach(tooltip, function(tip) { | ||
| 3798 | - if (tip == value) { | ||
| 3799 | - exist = true; | ||
| 3800 | - } | ||
| 3801 | - }); | ||
| 3802 | - if (!exist) { | ||
| 3803 | - tooltip.push(value); | ||
| 3804 | - } | ||
| 3805 | - } | ||
| 3806 | - }); | ||
| 3807 | - tooltip.push("进场"); | ||
| 3808 | - scope[ctrlAs].$$headToolTip = tooltip.join(","); | ||
| 3809 | - } | ||
| 3810 | - }, | ||
| 3811 | - true | ||
| 3812 | - ) | ||
| 3813 | - } | ||
| 3814 | - }; | ||
| 3815 | - } | ||
| 3816 | - | ||
| 3817 | - }; | ||
| 3818 | - } | ||
| 3819 | -]); | ||
| 3820 | - | ||
| 3821 | -/** | ||
| 3822 | - * saScpdate指令(非通用指令,只在排版计划form中使用)。 | ||
| 3823 | - * 属性如下: | ||
| 3824 | - * name(必须):控件的名字 | ||
| 3825 | - * xlid(必须):线路id | ||
| 3826 | - * xlname(必须):线路名字 | ||
| 3827 | - * from(必须):独立作用域-绑定的开始时间属性名 | ||
| 3828 | - * to(必须):独立作用域-绑定的结束时间属性名 | ||
| 3829 | - * error(必须):独立作用域-绑定的错误描述属性名 | ||
| 3830 | - */ | ||
| 3831 | -angular.module('ScheduleApp').directive( | ||
| 3832 | - 'saScpdate', | ||
| 3833 | - [ | ||
| 3834 | - 'SchedulePlanManageService_g', | ||
| 3835 | - function(service) { | ||
| 3836 | - return { | ||
| 3837 | - restrict: 'E', | ||
| 3838 | - templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saScpdateTemplate.html', | ||
| 3839 | - scope: { | ||
| 3840 | - from: '=', | ||
| 3841 | - to: '=', | ||
| 3842 | - xlid: '=', | ||
| 3843 | - xlname: '=', | ||
| 3844 | - error: '=' | ||
| 3845 | - }, | ||
| 3846 | - controllerAs: '$saScpdateCtrl', | ||
| 3847 | - bindToController: true, | ||
| 3848 | - controller: function() { | ||
| 3849 | - var self = this; | ||
| 3850 | - | ||
| 3851 | - // 内部ng-model值,用于和required配对 | ||
| 3852 | - self.$$internalmodel = undefined; | ||
| 3853 | - | ||
| 3854 | - // 内部数据源(时刻表的一些信息) | ||
| 3855 | - self.$$ds = []; | ||
| 3856 | - | ||
| 3857 | - }, | ||
| 3858 | - compile: function(tElem, tAttrs) { | ||
| 3859 | - // 获取所有属性,并验证 | ||
| 3860 | - var $name_attr = tAttrs['name']; // 控件的名字 | ||
| 3861 | - if (!$name_attr) { | ||
| 3862 | - throw "必须有名称属性"; | ||
| 3863 | - } | ||
| 3864 | - | ||
| 3865 | - // controlAs名字 | ||
| 3866 | - var ctrlAs = '$saScpdateCtrl'; | ||
| 3867 | - | ||
| 3868 | - // 线路id | ||
| 3869 | - var xl_id = undefined; | ||
| 3870 | - // 线路名字 | ||
| 3871 | - var xl_name = undefined; | ||
| 3872 | - // 开始时间 | ||
| 3873 | - var from_date = undefined; | ||
| 3874 | - // 结束时间 | ||
| 3875 | - var to_date = undefined; | ||
| 3876 | - | ||
| 3877 | - // 内部添加required验证,将所有的错误应用到required验证上去 | ||
| 3878 | - tElem.find("div").attr("required", ""); | ||
| 3879 | - | ||
| 3880 | - return { | ||
| 3881 | - pre: function(scope, element, attr) { | ||
| 3882 | - | ||
| 3883 | - }, | ||
| 3884 | - | ||
| 3885 | - post: function(scope, element, attr) { | ||
| 3886 | - // 属性值 | ||
| 3887 | - if ($name_attr) { | ||
| 3888 | - scope[ctrlAs]["$name_attr"] = $name_attr; | ||
| 3889 | - } | ||
| 3890 | - | ||
| 3891 | - // 开始日期open属性,及方法 | ||
| 3892 | - scope[ctrlAs].$$fromDateOpen = false; | ||
| 3893 | - scope[ctrlAs].$$fromDate_open = function() { | ||
| 3894 | - scope[ctrlAs].$$fromDateOpen = true; | ||
| 3895 | - }; | ||
| 3896 | - | ||
| 3897 | - // 结束日期open属性,及方法 | ||
| 3898 | - scope[ctrlAs].$$toDateOpen = false; | ||
| 3899 | - scope[ctrlAs].$$toDate_open = function() { | ||
| 3900 | - scope[ctrlAs].$$toDateOpen = true; | ||
| 3901 | - }; | ||
| 3902 | - | ||
| 3903 | - | ||
| 3904 | - // 内部模型刷新 | ||
| 3905 | - scope[ctrlAs].$$internal_model_refresh = function() { | ||
| 3906 | - if (!xl_id) { | ||
| 3907 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3908 | - scope[ctrlAs].error = "线路必须选择"; | ||
| 3909 | - return; | ||
| 3910 | - } | ||
| 3911 | - if (!xl_name) { | ||
| 3912 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3913 | - scope[ctrlAs].error = "线路必须选择"; | ||
| 3914 | - return; | ||
| 3915 | - } | ||
| 3916 | - | ||
| 3917 | - if (!from_date) { | ||
| 3918 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3919 | - scope[ctrlAs].error = "开始日期必须选择"; | ||
| 3920 | - return; | ||
| 3921 | - } | ||
| 3922 | - if (!to_date) { | ||
| 3923 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3924 | - scope[ctrlAs].error = "结束日期必须选择"; | ||
| 3925 | - return; | ||
| 3926 | - } | ||
| 3927 | - if (from_date > to_date) { | ||
| 3928 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3929 | - scope[ctrlAs].error = "开始日期必须在结束日期之前"; | ||
| 3930 | - return; | ||
| 3931 | - } | ||
| 3932 | - | ||
| 3933 | - if (!scope[ctrlAs].$$ds || scope[ctrlAs].$$ds.length == 0) { | ||
| 3934 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3935 | - scope[ctrlAs].error = "无可用时刻表"; | ||
| 3936 | - } | ||
| 3937 | - | ||
| 3938 | - var QClass = service.ttinfo; | ||
| 3939 | - QClass.val({xlid: xl_id, from: from_date, to: to_date}, | ||
| 3940 | - function(result) { | ||
| 3941 | - scope[ctrlAs].$$ds = []; | ||
| 3942 | - | ||
| 3943 | - var errorTTInfos = 0; | ||
| 3944 | - | ||
| 3945 | - if (result && result.data && result.data.infos && result.data.infos.length > 0) { | ||
| 3946 | - angular.forEach(result.data.infos, function(obj) { | ||
| 3947 | - scope[ctrlAs].$$ds.push({ | ||
| 3948 | - xlid: xl_id, | ||
| 3949 | - ttid: obj.ttid, | ||
| 3950 | - xlname: xl_name, | ||
| 3951 | - ttname: obj.ttname, | ||
| 3952 | - | ||
| 3953 | - allbc: obj.allbc, | ||
| 3954 | - inbc: obj.inbc, | ||
| 3955 | - outbc: obj.outbc, | ||
| 3956 | - yybc: obj.yybc, | ||
| 3957 | - | ||
| 3958 | - errorbc: obj.errorbc | ||
| 3959 | - | ||
| 3960 | - }); | ||
| 3961 | - | ||
| 3962 | - if (obj.errorbc > 0) { | ||
| 3963 | - errorTTInfos ++; | ||
| 3964 | - } | ||
| 3965 | - }); | ||
| 3966 | - | ||
| 3967 | - if (errorTTInfos > 0) { | ||
| 3968 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3969 | - scope[ctrlAs].error = "时刻表有错误班次"; | ||
| 3970 | - } else { | ||
| 3971 | - | ||
| 3972 | - scope[ctrlAs].$$internalmodel = "ok"; | ||
| 3973 | - } | ||
| 3974 | - | ||
| 3975 | - } else { | ||
| 3976 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3977 | - scope[ctrlAs].error = "无可用时刻表"; | ||
| 3978 | - } | ||
| 3979 | - }, | ||
| 3980 | - function() { | ||
| 3981 | - scope[ctrlAs].$$internalmodel = undefined; | ||
| 3982 | - scope[ctrlAs].error = "获取时刻表数据失败!"; | ||
| 3983 | - } | ||
| 3984 | - ); | ||
| 3985 | - | ||
| 3986 | - | ||
| 3987 | - scope[ctrlAs].$$internalmodel = "ok"; | ||
| 3988 | - }; | ||
| 3989 | - | ||
| 3990 | - scope[ctrlAs].$$internal_model_refresh(); // 初始执行 | ||
| 3991 | - | ||
| 3992 | - //--------------------- 监控属性方法 -------------------// | ||
| 3993 | - // 监控线路id模型值变化 | ||
| 3994 | - scope.$watch( | ||
| 3995 | - function() { | ||
| 3996 | - return scope[ctrlAs].xlid; | ||
| 3997 | - }, | ||
| 3998 | - function(newValue, oldValue) { | ||
| 3999 | - xl_id = newValue; | ||
| 4000 | - scope[ctrlAs].$$internal_model_refresh(); | ||
| 4001 | - } | ||
| 4002 | - ); | ||
| 4003 | - // 监控线路name模型值变化 | ||
| 4004 | - scope.$watch( | ||
| 4005 | - function() { | ||
| 4006 | - return scope[ctrlAs].xlname; | ||
| 4007 | - }, | ||
| 4008 | - function(newValue, oldValue) { | ||
| 4009 | - xl_name = newValue; | ||
| 4010 | - scope[ctrlAs].$$internal_model_refresh(); | ||
| 4011 | - } | ||
| 4012 | - ); | ||
| 4013 | - | ||
| 4014 | - // 监控开始时间模型值变化 | ||
| 4015 | - scope.$watch( | ||
| 4016 | - function() { | ||
| 4017 | - return scope[ctrlAs].from; | ||
| 4018 | - }, | ||
| 4019 | - function(newValue, oldValue) { | ||
| 4020 | - from_date = newValue; | ||
| 4021 | - scope[ctrlAs].$$internal_model_refresh(); | ||
| 4022 | - } | ||
| 4023 | - ); | ||
| 4024 | - // 监控结束时间模型值变化 | ||
| 4025 | - scope.$watch( | ||
| 4026 | - function() { | ||
| 4027 | - return scope[ctrlAs].to; | ||
| 4028 | - }, | ||
| 4029 | - function(newValue, oldValue) { | ||
| 4030 | - to_date = newValue; | ||
| 4031 | - scope[ctrlAs].$$internal_model_refresh(); | ||
| 4032 | - } | ||
| 4033 | - ); | 3691 | +/** |
| 3692 | + * saTimeTable指令,时刻表显示指令,excel表格形式,支持菜单,事件处理。 | ||
| 3693 | + * name(必须),控件的名字 | ||
| 3694 | + * celldbclickFn,单元格双击事件 | ||
| 3695 | + * ds,外部数据源 | ||
| 3696 | + * | ||
| 3697 | + * TODO:优化开发中 | ||
| 3698 | + * | ||
| 3699 | + */ | ||
| 3700 | +angular.module('ScheduleApp').directive('saTimetable', ['$compile', '$window', | ||
| 3701 | + function($compile, $window) { | ||
| 3702 | + return { | ||
| 3703 | + restrict: 'E', | ||
| 3704 | + templateUrl: '/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTableTemplate.html', | ||
| 3705 | + scope: { // 独立作用域 | ||
| 3706 | + // 注意:数据暂时从外部ngModel里获取,以后内部自己处理 | ||
| 3707 | + ds: "=ngModel", | ||
| 3708 | + celldbclickFn: "&celldbclick" | ||
| 3709 | + | ||
| 3710 | + // TODO: | ||
| 3711 | + | ||
| 3712 | + }, | ||
| 3713 | + controllerAs: "$saTimeTableCtrl", | ||
| 3714 | + bindToController: true, | ||
| 3715 | + controller: function() { | ||
| 3716 | + var self = this; | ||
| 3717 | + this.$$headToolTip = ""; // 表头tooltip信息 | ||
| 3718 | + | ||
| 3719 | + // TODO: | ||
| 3720 | + }, | ||
| 3721 | + | ||
| 3722 | + /**, | ||
| 3723 | + * compile阶段,angular还没有编译模版,根据需要可以修改模版dom | ||
| 3724 | + * @param tElem | ||
| 3725 | + * @param tAttrs | ||
| 3726 | + * @returns {{pre: Function, post: Function}} | ||
| 3727 | + */ | ||
| 3728 | + compile: function(tElem, tAttrs) { | ||
| 3729 | + // 获取属性 | ||
| 3730 | + var $attr_name = tAttrs["name"]; // 控件的名字 | ||
| 3731 | + if (!$attr_name) { | ||
| 3732 | + throw new Error("saTimeTable指令 name属性required"); | ||
| 3733 | + } | ||
| 3734 | + var $attr_celldbclick = tAttrs["celldbclick"]; // 单元格双击事件名 | ||
| 3735 | + | ||
| 3736 | + // 内部controlAs名字 | ||
| 3737 | + var ctrlAs = '$saTimeTableCtrl'; | ||
| 3738 | + | ||
| 3739 | + // 当前选中的cell | ||
| 3740 | + var startRowIndex = undefined; | ||
| 3741 | + var startColIndex = undefined; | ||
| 3742 | + var shiftKey = false; // shift键是否被按住 | ||
| 3743 | + var ctrlKey = false; // ctrl是否被按住 | ||
| 3744 | + // shift选中的cell | ||
| 3745 | + var shiftCells = []; | ||
| 3746 | + | ||
| 3747 | + // TODO: | ||
| 3748 | + | ||
| 3749 | + return { | ||
| 3750 | + pre: function(scope, element, attr) { | ||
| 3751 | + // TODO: | ||
| 3752 | + //alert(element.find("#tooltipTest").html()); | ||
| 3753 | + //$compile(element.find("#tooltipTest"))(scope); | ||
| 3754 | + | ||
| 3755 | + }, | ||
| 3756 | + post: function(scope, element, attr) { | ||
| 3757 | + // TODO: | ||
| 3758 | + | ||
| 3759 | + // ------------------- dom事件处理function -----------------// | ||
| 3760 | + scope[ctrlAs].$$cell_click = function(rowindex, colindex, cell) { | ||
| 3761 | + console.log("click " + "row=" + rowindex + ",col=" + colindex); | ||
| 3762 | + var internal_ds = scope[ctrlAs].ds.detailInfos; | ||
| 3763 | + | ||
| 3764 | + if (cell.ttdid) { // 是班次的单元格才能操作 | ||
| 3765 | + cell.sel = !cell.sel; | ||
| 3766 | + } | ||
| 3767 | + | ||
| 3768 | + }; | ||
| 3769 | + scope[ctrlAs].$$cell_dbclick = function(rowindex, colindex, cell) { | ||
| 3770 | + if (cell.ttdid) { // 是班次的单元格才能操作 | ||
| 3771 | + if ($attr_celldbclick) { | ||
| 3772 | + // 注意调用方法 | ||
| 3773 | + scope[ctrlAs].celldbclickFn()(rowindex, colindex); | ||
| 3774 | + } | ||
| 3775 | + } | ||
| 3776 | + }; | ||
| 3777 | + | ||
| 3778 | + // ------------------- 监控function ------------------// | ||
| 3779 | + // 监控明细数据,生成表头的tooltip | ||
| 3780 | + scope.$watch( | ||
| 3781 | + function() { | ||
| 3782 | + return scope[ctrlAs].ds; | ||
| 3783 | + }, | ||
| 3784 | + function(newValue, oldValue) { | ||
| 3785 | + if (newValue && | ||
| 3786 | + newValue.detailHeads && | ||
| 3787 | + newValue.detailHeads.length > 0) { | ||
| 3788 | + var tooltip = []; | ||
| 3789 | + tooltip.push("出场"); | ||
| 3790 | + angular.forEach(newValue.detailHeads, function(value) { | ||
| 3791 | + if (value != "出场" && | ||
| 3792 | + value != "路牌" && | ||
| 3793 | + value != "进场" && | ||
| 3794 | + value != "空驶班次/空驶里程" && | ||
| 3795 | + value != "运营班次/运营里程" ) { | ||
| 3796 | + var exist = false; | ||
| 3797 | + angular.forEach(tooltip, function(tip) { | ||
| 3798 | + if (tip == value) { | ||
| 3799 | + exist = true; | ||
| 3800 | + } | ||
| 3801 | + }); | ||
| 3802 | + if (!exist) { | ||
| 3803 | + tooltip.push(value); | ||
| 3804 | + } | ||
| 3805 | + } | ||
| 3806 | + }); | ||
| 3807 | + tooltip.push("进场"); | ||
| 3808 | + scope[ctrlAs].$$headToolTip = tooltip.join(","); | ||
| 3809 | + } | ||
| 3810 | + }, | ||
| 3811 | + true | ||
| 3812 | + ) | ||
| 3813 | + } | ||
| 3814 | + }; | ||
| 3815 | + } | ||
| 3816 | + | ||
| 3817 | + }; | ||
| 3818 | + } | ||
| 3819 | +]); | ||
| 4034 | 3820 | ||
| 4035 | - } | ||
| 4036 | - }; | ||
| 4037 | - } | ||
| 4038 | - }; | ||
| 4039 | - } | ||
| 4040 | - ] | 3821 | +/** |
| 3822 | + * saScpdate指令(非通用指令,只在排版计划form中使用)。 | ||
| 3823 | + * 属性如下: | ||
| 3824 | + * name(必须):控件的名字 | ||
| 3825 | + * xlid(必须):线路id | ||
| 3826 | + * xlname(必须):线路名字 | ||
| 3827 | + * from(必须):独立作用域-绑定的开始时间属性名 | ||
| 3828 | + * to(必须):独立作用域-绑定的结束时间属性名 | ||
| 3829 | + * error(必须):独立作用域-绑定的错误描述属性名 | ||
| 3830 | + */ | ||
| 3831 | +angular.module('ScheduleApp').directive( | ||
| 3832 | + 'saScpdate', | ||
| 3833 | + [ | ||
| 3834 | + 'SchedulePlanManageService_g', | ||
| 3835 | + function(service) { | ||
| 3836 | + return { | ||
| 3837 | + restrict: 'E', | ||
| 3838 | + templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saScpdateTemplate.html', | ||
| 3839 | + scope: { | ||
| 3840 | + from: '=', | ||
| 3841 | + to: '=', | ||
| 3842 | + xlid: '=', | ||
| 3843 | + xlname: '=', | ||
| 3844 | + ttinfonames: '=', | ||
| 3845 | + ttinfoids: '=', | ||
| 3846 | + error: '=' | ||
| 3847 | + }, | ||
| 3848 | + controllerAs: '$saScpdateCtrl', | ||
| 3849 | + bindToController: true, | ||
| 3850 | + controller: function() { | ||
| 3851 | + var self = this; | ||
| 3852 | + | ||
| 3853 | + // 内部ng-model值,用于和required配对 | ||
| 3854 | + self.$$internalmodel = undefined; | ||
| 3855 | + | ||
| 3856 | + // 内部数据源(时刻表的一些信息) | ||
| 3857 | + self.$$ds = []; | ||
| 3858 | + | ||
| 3859 | + }, | ||
| 3860 | + compile: function(tElem, tAttrs) { | ||
| 3861 | + // 获取所有属性,并验证 | ||
| 3862 | + var $name_attr = tAttrs['name']; // 控件的名字 | ||
| 3863 | + if (!$name_attr) { | ||
| 3864 | + throw "必须有名称属性"; | ||
| 3865 | + } | ||
| 3866 | + | ||
| 3867 | + // controlAs名字 | ||
| 3868 | + var ctrlAs = '$saScpdateCtrl'; | ||
| 3869 | + | ||
| 3870 | + // 线路id | ||
| 3871 | + var xl_id = undefined; | ||
| 3872 | + // 线路名字 | ||
| 3873 | + var xl_name = undefined; | ||
| 3874 | + // 开始时间 | ||
| 3875 | + var from_date = undefined; | ||
| 3876 | + // 结束时间 | ||
| 3877 | + var to_date = undefined; | ||
| 3878 | + | ||
| 3879 | + // 内部添加required验证,将所有的错误应用到required验证上去 | ||
| 3880 | + tElem.find("div").attr("required", ""); | ||
| 3881 | + | ||
| 3882 | + return { | ||
| 3883 | + pre: function(scope, element, attr) { | ||
| 3884 | + | ||
| 3885 | + }, | ||
| 3886 | + | ||
| 3887 | + post: function(scope, element, attr) { | ||
| 3888 | + // 属性值 | ||
| 3889 | + if ($name_attr) { | ||
| 3890 | + scope[ctrlAs]["$name_attr"] = $name_attr; | ||
| 3891 | + } | ||
| 3892 | + | ||
| 3893 | + // 开始日期open属性,及方法 | ||
| 3894 | + scope[ctrlAs].$$fromDateOpen = false; | ||
| 3895 | + scope[ctrlAs].$$fromDate_open = function() { | ||
| 3896 | + scope[ctrlAs].$$fromDateOpen = true; | ||
| 3897 | + }; | ||
| 3898 | + | ||
| 3899 | + // 结束日期open属性,及方法 | ||
| 3900 | + scope[ctrlAs].$$toDateOpen = false; | ||
| 3901 | + scope[ctrlAs].$$toDate_open = function() { | ||
| 3902 | + scope[ctrlAs].$$toDateOpen = true; | ||
| 3903 | + }; | ||
| 3904 | + | ||
| 3905 | + | ||
| 3906 | + // 内部模型刷新 | ||
| 3907 | + scope[ctrlAs].$$internal_model_refresh = function() { | ||
| 3908 | + if (!xl_id) { | ||
| 3909 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3910 | + scope[ctrlAs].error = "线路必须选择"; | ||
| 3911 | + return; | ||
| 3912 | + } | ||
| 3913 | + if (!xl_name) { | ||
| 3914 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3915 | + scope[ctrlAs].error = "线路必须选择"; | ||
| 3916 | + return; | ||
| 3917 | + } | ||
| 3918 | + | ||
| 3919 | + if (!from_date) { | ||
| 3920 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3921 | + scope[ctrlAs].error = "开始日期必须选择"; | ||
| 3922 | + return; | ||
| 3923 | + } | ||
| 3924 | + if (!to_date) { | ||
| 3925 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3926 | + scope[ctrlAs].error = "结束日期必须选择"; | ||
| 3927 | + return; | ||
| 3928 | + } | ||
| 3929 | + if (from_date > to_date) { | ||
| 3930 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3931 | + scope[ctrlAs].error = "开始日期必须在结束日期之前"; | ||
| 3932 | + return; | ||
| 3933 | + } | ||
| 3934 | + | ||
| 3935 | + if (!scope[ctrlAs].$$ds || scope[ctrlAs].$$ds.length == 0) { | ||
| 3936 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3937 | + scope[ctrlAs].error = "无可用时刻表"; | ||
| 3938 | + } | ||
| 3939 | + | ||
| 3940 | + var QClass = service.ttinfo; | ||
| 3941 | + var ttinfonames = []; | ||
| 3942 | + var ttinfoids = []; | ||
| 3943 | + QClass.val({xlid: xl_id, from: from_date, to: to_date}, | ||
| 3944 | + function(result) { | ||
| 3945 | + scope[ctrlAs].$$ds = []; | ||
| 3946 | + | ||
| 3947 | + var errorTTInfos = 0; | ||
| 3948 | + | ||
| 3949 | + if (result && result.data && result.data.infos && result.data.infos.length > 0) { | ||
| 3950 | + angular.forEach(result.data.infos, function(obj) { | ||
| 3951 | + scope[ctrlAs].$$ds.push({ | ||
| 3952 | + xlid: xl_id, | ||
| 3953 | + ttid: obj.ttid, | ||
| 3954 | + xlname: xl_name, | ||
| 3955 | + ttname: obj.ttname, | ||
| 3956 | + | ||
| 3957 | + allbc: obj.allbc, | ||
| 3958 | + inbc: obj.inbc, | ||
| 3959 | + outbc: obj.outbc, | ||
| 3960 | + yybc: obj.yybc, | ||
| 3961 | + | ||
| 3962 | + errorbc: obj.errorbc | ||
| 3963 | + | ||
| 3964 | + }); | ||
| 3965 | + | ||
| 3966 | + if (obj.errorbc > 0) { | ||
| 3967 | + errorTTInfos ++; | ||
| 3968 | + } else { | ||
| 3969 | + ttinfonames.push(obj.ttname); | ||
| 3970 | + ttinfoids.push(obj.ttid); | ||
| 3971 | + } | ||
| 3972 | + }); | ||
| 3973 | + | ||
| 3974 | + if (errorTTInfos > 0) { | ||
| 3975 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3976 | + scope[ctrlAs].error = "时刻表有错误班次"; | ||
| 3977 | + } else { | ||
| 3978 | + scope[ctrlAs].$$internalmodel = "ok"; | ||
| 3979 | + scope[ctrlAs].ttinfonames = ttinfonames.join(","); | ||
| 3980 | + scope[ctrlAs].ttinfoids = ttinfoids.join(","); | ||
| 3981 | + } | ||
| 3982 | + | ||
| 3983 | + } else { | ||
| 3984 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3985 | + scope[ctrlAs].error = "无可用时刻表"; | ||
| 3986 | + } | ||
| 3987 | + }, | ||
| 3988 | + function() { | ||
| 3989 | + scope[ctrlAs].$$internalmodel = undefined; | ||
| 3990 | + scope[ctrlAs].error = "获取时刻表数据失败!"; | ||
| 3991 | + } | ||
| 3992 | + ); | ||
| 3993 | + | ||
| 3994 | + | ||
| 3995 | + scope[ctrlAs].$$internalmodel = "ok"; | ||
| 3996 | + }; | ||
| 3997 | + | ||
| 3998 | + scope[ctrlAs].$$internal_model_refresh(); // 初始执行 | ||
| 3999 | + | ||
| 4000 | + //--------------------- 监控属性方法 -------------------// | ||
| 4001 | + // 监控线路id模型值变化 | ||
| 4002 | + scope.$watch( | ||
| 4003 | + function() { | ||
| 4004 | + return scope[ctrlAs].xlid; | ||
| 4005 | + }, | ||
| 4006 | + function(newValue, oldValue) { | ||
| 4007 | + xl_id = newValue; | ||
| 4008 | + scope[ctrlAs].$$internal_model_refresh(); | ||
| 4009 | + } | ||
| 4010 | + ); | ||
| 4011 | + // 监控线路name模型值变化 | ||
| 4012 | + scope.$watch( | ||
| 4013 | + function() { | ||
| 4014 | + return scope[ctrlAs].xlname; | ||
| 4015 | + }, | ||
| 4016 | + function(newValue, oldValue) { | ||
| 4017 | + xl_name = newValue; | ||
| 4018 | + scope[ctrlAs].$$internal_model_refresh(); | ||
| 4019 | + } | ||
| 4020 | + ); | ||
| 4021 | + | ||
| 4022 | + // 监控开始时间模型值变化 | ||
| 4023 | + scope.$watch( | ||
| 4024 | + function() { | ||
| 4025 | + return scope[ctrlAs].from; | ||
| 4026 | + }, | ||
| 4027 | + function(newValue, oldValue) { | ||
| 4028 | + from_date = newValue; | ||
| 4029 | + scope[ctrlAs].$$internal_model_refresh(); | ||
| 4030 | + } | ||
| 4031 | + ); | ||
| 4032 | + // 监控结束时间模型值变化 | ||
| 4033 | + scope.$watch( | ||
| 4034 | + function() { | ||
| 4035 | + return scope[ctrlAs].to; | ||
| 4036 | + }, | ||
| 4037 | + function(newValue, oldValue) { | ||
| 4038 | + to_date = newValue; | ||
| 4039 | + scope[ctrlAs].$$internal_model_refresh(); | ||
| 4040 | + } | ||
| 4041 | + ); | ||
| 4042 | + | ||
| 4043 | + } | ||
| 4044 | + }; | ||
| 4045 | + } | ||
| 4046 | + }; | ||
| 4047 | + } | ||
| 4048 | + ] | ||
| 4041 | ); | 4049 | ); |
| 4042 | \ No newline at end of file | 4050 | \ No newline at end of file |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/form.html
| @@ -114,6 +114,8 @@ | @@ -114,6 +114,8 @@ | ||
| 114 | xlname="ctrl.schedulePlanManageForSave.xl.name" | 114 | xlname="ctrl.schedulePlanManageForSave.xl.name" |
| 115 | from="ctrl.schedulePlanManageForSave.scheduleFromTime" | 115 | from="ctrl.schedulePlanManageForSave.scheduleFromTime" |
| 116 | to="ctrl.schedulePlanManageForSave.scheduleToTime" | 116 | to="ctrl.schedulePlanManageForSave.scheduleToTime" |
| 117 | + ttinfonames="ctrl.schedulePlanManageForSave.ttInfoNames" | ||
| 118 | + ttinfoids="ctrl.schedulePlanManageForSave.ttInfoIds" | ||
| 117 | error="ctrl.scperror" | 119 | error="ctrl.scperror" |
| 118 | required | 120 | required |
| 119 | > | 121 | > |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list.html
| @@ -81,7 +81,11 @@ | @@ -81,7 +81,11 @@ | ||
| 81 | <span ng-bind="info.xl.name"></span> | 81 | <span ng-bind="info.xl.name"></span> |
| 82 | </td> | 82 | </td> |
| 83 | <td> | 83 | <td> |
| 84 | - <span ng-bind="info.ttInfoNames"></span> | 84 | + <div ng-repeat="tinfo in info.rst"> |
| 85 | + <a ui-sref="ttInfoDetailManage_edit3({xlid: info.xl.id, ttid : tinfo.ttInfoId, xlname: info.xl.name, ttname : tinfo.ttInfoName, rflag : true})"> | ||
| 86 | + {{tinfo.ttInfoName}} | ||
| 87 | + </a> | ||
| 88 | + </div> | ||
| 85 | </td> | 89 | </td> |
| 86 | <td> | 90 | <td> |
| 87 | <span ng-bind="info.scheduleFromTime | date: 'yyyy-MM-dd '"></span> | 91 | <span ng-bind="info.scheduleFromTime | date: 'yyyy-MM-dd '"></span> |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/module.js
| @@ -96,12 +96,61 @@ angular.module('ScheduleApp').controller( | @@ -96,12 +96,61 @@ angular.module('ScheduleApp').controller( | ||
| 96 | self.doPage = function() { | 96 | self.doPage = function() { |
| 97 | var page = SPlan.list(self.searchCondition(), function() { | 97 | var page = SPlan.list(self.searchCondition(), function() { |
| 98 | service.getPage(page); | 98 | service.getPage(page); |
| 99 | + | ||
| 100 | + // 重新组装关联时刻表信息 | ||
| 101 | + if (page.content) { | ||
| 102 | + angular.forEach(page.content, function(ttinfo) { | ||
| 103 | + var rst = []; | ||
| 104 | + var temp1 = []; | ||
| 105 | + var temp2 = []; | ||
| 106 | + if (ttinfo.ttInfoNames && ttinfo.ttInfoIds) { | ||
| 107 | + temp1 = ttinfo.ttInfoNames.split(","); | ||
| 108 | + temp2 = ttinfo.ttInfoIds.split(","); | ||
| 109 | + } | ||
| 110 | + | ||
| 111 | + if (temp1.length == temp2.length) { | ||
| 112 | + for (var i = 0; i < temp1.length; i++) { | ||
| 113 | + rst.push({ | ||
| 114 | + ttInfoName: temp1[i], | ||
| 115 | + ttInfoId: temp2[i] | ||
| 116 | + }); | ||
| 117 | + } | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + ttinfo.rst = rst; | ||
| 121 | + }); | ||
| 122 | + } | ||
| 99 | }); | 123 | }); |
| 100 | }; | 124 | }; |
| 125 | + | ||
| 101 | self.reset = function() { | 126 | self.reset = function() { |
| 102 | service.resetStatus(); | 127 | service.resetStatus(); |
| 103 | var page = SPlan.list(self.searchCondition(), function() { | 128 | var page = SPlan.list(self.searchCondition(), function() { |
| 104 | service.getPage(page); | 129 | service.getPage(page); |
| 130 | + | ||
| 131 | + // 重新组装关联时刻表信息 | ||
| 132 | + if (page.content) { | ||
| 133 | + angular.forEach(page.content, function(ttinfo) { | ||
| 134 | + var rst = []; | ||
| 135 | + var temp1 = []; | ||
| 136 | + var temp2 = []; | ||
| 137 | + if (ttinfo.ttInfoNames && ttinfo.ttInfoIds) { | ||
| 138 | + temp1 = ttinfo.ttInfoNames.split(","); | ||
| 139 | + temp2 = ttinfo.ttInfoIds.split(","); | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + if (temp1.length == temp2.length) { | ||
| 143 | + for (var i = 0; i < temp1.length; i++) { | ||
| 144 | + rst.push({ | ||
| 145 | + ttInfoName: temp1[i], | ||
| 146 | + ttInfoId: temp2[i] | ||
| 147 | + }); | ||
| 148 | + } | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + ttinfo.rst = rst; | ||
| 152 | + }); | ||
| 153 | + } | ||
| 105 | }); | 154 | }); |
| 106 | }; | 155 | }; |
| 107 | 156 |
src/test/java/com/bsth/service/schedule/rules/DroolsRulesTest.java
| @@ -18,9 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -18,9 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
| 18 | import org.springframework.boot.test.SpringApplicationConfiguration; | 18 | import org.springframework.boot.test.SpringApplicationConfiguration; |
| 19 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | 19 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; |
| 20 | 20 | ||
| 21 | -import java.util.ArrayList; | ||
| 22 | import java.util.Arrays; | 21 | import java.util.Arrays; |
| 23 | -import java.util.List; | ||
| 24 | 22 | ||
| 25 | @RunWith(SpringJUnit4ClassRunner.class) | 23 | @RunWith(SpringJUnit4ClassRunner.class) |
| 26 | @SpringApplicationConfiguration(classes = {Application.class}) | 24 | @SpringApplicationConfiguration(classes = {Application.class}) |
| @@ -33,30 +31,30 @@ public class DroolsRulesTest { | @@ -33,30 +31,30 @@ public class DroolsRulesTest { | ||
| 33 | private KieBase kieBase; | 31 | private KieBase kieBase; |
| 34 | 32 | ||
| 35 | // @Test | 33 | // @Test |
| 36 | - public void helloWorldDrlTest() throws Exception { | ||
| 37 | - // 1、创建session,内部配置的是stateful | ||
| 38 | - KieSession session = kieBase.newKieSession(); | ||
| 39 | - | ||
| 40 | - // 1.1 设置gloable对象,在drl中通过别名使用 | ||
| 41 | - List<String> gloableList = new ArrayList<String>(); | ||
| 42 | - session.setGlobal("list", gloableList); | ||
| 43 | - | ||
| 44 | - // 1.2 可以设置一些监听器,再议 | ||
| 45 | - | ||
| 46 | - // 2、创建fact对象 | ||
| 47 | - Message message = new Message(); | ||
| 48 | - message.setMessage("Hello World"); | ||
| 49 | - message.setStatus(Message.HELLO); | ||
| 50 | - session.insert(message); | ||
| 51 | - | ||
| 52 | - // 3、执行rule | ||
| 53 | - session.fireAllRules(); | ||
| 54 | - | ||
| 55 | - System.out.println(gloableList); | ||
| 56 | - | ||
| 57 | - // 4、执行完毕销毁,有日志的也要关闭 | ||
| 58 | - session.dispose(); | ||
| 59 | - } | 34 | +// public void helloWorldDrlTest() throws Exception { |
| 35 | +// // 1、创建session,内部配置的是stateful | ||
| 36 | +// KieSession session = kieBase.newKieSession(); | ||
| 37 | +// | ||
| 38 | +// // 1.1 设置gloable对象,在drl中通过别名使用 | ||
| 39 | +// List<String> gloableList = new ArrayList<String>(); | ||
| 40 | +// session.setGlobal("list", gloableList); | ||
| 41 | +// | ||
| 42 | +// // 1.2 可以设置一些监听器,再议 | ||
| 43 | +// | ||
| 44 | +// // 2、创建fact对象 | ||
| 45 | +// Message message = new Message(); | ||
| 46 | +// message.setMessage("Hello World"); | ||
| 47 | +// message.setStatus(Message.HELLO); | ||
| 48 | +// session.insert(message); | ||
| 49 | +// | ||
| 50 | +// // 3、执行rule | ||
| 51 | +// session.fireAllRules(); | ||
| 52 | +// | ||
| 53 | +// System.out.println(gloableList); | ||
| 54 | +// | ||
| 55 | +// // 4、执行完毕销毁,有日志的也要关闭 | ||
| 56 | +// session.dispose(); | ||
| 57 | +// } | ||
| 60 | 58 | ||
| 61 | // @Test | 59 | // @Test |
| 62 | public void ttinfoDrlTest() throws Exception { | 60 | public void ttinfoDrlTest() throws Exception { |