Commit 8a6e4a7572d1c9f869b5324c37fdbd2a87aa2913
1 parent
a5753f0b
1、修改调度值勤日报,添加预览视图可编辑班次信息功能(具体查看相关代码)
Showing
21 changed files
with
617 additions
and
96 deletions
src/main/java/com/bsth/repository/schedule/SchedulePlanInfoRepository.java
| @@ -20,10 +20,13 @@ import org.springframework.stereotype.Repository; | @@ -20,10 +20,13 @@ import org.springframework.stereotype.Repository; | ||
| 20 | */ | 20 | */ |
| 21 | @Repository | 21 | @Repository |
| 22 | public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanInfo, Long> { | 22 | public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanInfo, Long> { |
| 23 | - | 23 | + |
| 24 | + @Query(value = "select max(info.fcno) as mx from bsth_c_s_sp_info info where info.xl =?1 and info.schedule_date =?2", nativeQuery = true) | ||
| 25 | + Long findMaxFcno(Integer xlid, Date scheduleDate); | ||
| 26 | + | ||
| 24 | @Query(value = "select s from SchedulePlanInfo s where scheduleDate=?1") | 27 | @Query(value = "select s from SchedulePlanInfo s where scheduleDate=?1") |
| 25 | List<SchedulePlanInfo> findByDate(Date date); | 28 | List<SchedulePlanInfo> findByDate(Date date); |
| 26 | - | 29 | + |
| 27 | @Query(value = "select s from SchedulePlanInfo s where scheduleDate >= ?1 and scheduleDate <= ?2 order by scheduleDate, xl_name, lp_name, bcs") | 30 | @Query(value = "select s from SchedulePlanInfo s where scheduleDate >= ?1 and scheduleDate <= ?2 order by scheduleDate, xl_name, lp_name, bcs") |
| 28 | List<SchedulePlanInfo> findByDates(Date date1, Date date2); | 31 | List<SchedulePlanInfo> findByDates(Date date1, Date date2); |
| 29 | 32 | ||
| @@ -124,7 +127,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | @@ -124,7 +127,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | ||
| 124 | @Param("p5") Date scheduleDate, | 127 | @Param("p5") Date scheduleDate, |
| 125 | @Param("p6") String lpName, | 128 | @Param("p6") String lpName, |
| 126 | @Param("p7") Integer spyId_src); | 129 | @Param("p7") Integer spyId_src); |
| 127 | - | 130 | + |
| 128 | @Query(value="select s from SchedulePlanInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 order by s.xlBm,clZbh,lp,xlDir") | 131 | @Query(value="select s from SchedulePlanInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 order by s.xlBm,clZbh,lp,xlDir") |
| 129 | List<SchedulePlanInfo> findLineScheduleBc(String scheduleDate); | 132 | List<SchedulePlanInfo> findLineScheduleBc(String scheduleDate); |
| 130 | 133 | ||
| @@ -136,7 +139,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | @@ -136,7 +139,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | ||
| 136 | ")a group by schedule_date, gs_bm, xl_bm " + | 139 | ")a group by schedule_date, gs_bm, xl_bm " + |
| 137 | ")b group by gs_bm, xl_bm ", nativeQuery = true) | 140 | ")b group by gs_bm, xl_bm ", nativeQuery = true) |
| 138 | List<Object[]> findPlanGroupCar(Date date1, Date date2); | 141 | List<Object[]> findPlanGroupCar(Date date1, Date date2); |
| 139 | - | 142 | + |
| 140 | @Query(value = " select gs_bm, xl_bm, max(num) num from ( " + | 143 | @Query(value = " select gs_bm, xl_bm, max(num) num from ( " + |
| 141 | "select schedule_date, gs_bm, xl_bm, count(*) num from ( " + | 144 | "select schedule_date, gs_bm, xl_bm, count(*) num from ( " + |
| 142 | "select schedule_date, gs_bm, xl_bm, j_gh from bsth_c_s_sp_info " + | 145 | "select schedule_date, gs_bm, xl_bm, j_gh from bsth_c_s_sp_info " + |
| @@ -145,7 +148,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | @@ -145,7 +148,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | ||
| 145 | ")a group by schedule_date, gs_bm, xl_bm " + | 148 | ")a group by schedule_date, gs_bm, xl_bm " + |
| 146 | ")b group by gs_bm, xl_bm ", nativeQuery = true) | 149 | ")b group by gs_bm, xl_bm ", nativeQuery = true) |
| 147 | List<Object[]> findPlanGroupDriver(Date date1, Date date2); | 150 | List<Object[]> findPlanGroupDriver(Date date1, Date date2); |
| 148 | - | 151 | + |
| 149 | @Query(value = " select gs_bm, xl_bm, max(num) num from ( " + | 152 | @Query(value = " select gs_bm, xl_bm, max(num) num from ( " + |
| 150 | "select schedule_date, gs_bm, xl_bm, count(*) num from ( " + | 153 | "select schedule_date, gs_bm, xl_bm, count(*) num from ( " + |
| 151 | "select schedule_date, gs_bm, xl_bm, s_gh from bsth_c_s_sp_info " + | 154 | "select schedule_date, gs_bm, xl_bm, s_gh from bsth_c_s_sp_info " + |
| @@ -155,16 +158,16 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | @@ -155,16 +158,16 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | ||
| 155 | ")a group by schedule_date, gs_bm, xl_bm " + | 158 | ")a group by schedule_date, gs_bm, xl_bm " + |
| 156 | ")b group by gs_bm, xl_bm ", nativeQuery = true) | 159 | ")b group by gs_bm, xl_bm ", nativeQuery = true) |
| 157 | List<Object[]> findPlanGroupBusConductor(Date date1, Date date2); | 160 | List<Object[]> findPlanGroupBusConductor(Date date1, Date date2); |
| 158 | - | 161 | + |
| 159 | @Query(value = " select schedule_date, xl_bm, j_gh, s_gh from bsth_c_s_sp_info " + | 162 | @Query(value = " select schedule_date, xl_bm, j_gh, s_gh from bsth_c_s_sp_info " + |
| 160 | "where schedule_date >= ?1 and schedule_date <= ?2 " + | 163 | "where schedule_date >= ?1 and schedule_date <= ?2 " + |
| 161 | "group by schedule_date, xl_bm, j_gh, s_gh ", nativeQuery = true) | 164 | "group by schedule_date, xl_bm, j_gh, s_gh ", nativeQuery = true) |
| 162 | List<Object[]> findPersonnelSchedule(Date date1, Date date2); | 165 | List<Object[]> findPersonnelSchedule(Date date1, Date date2); |
| 163 | - | 166 | + |
| 164 | @Query(value="select s from SchedulePlanInfo s where s.xlBm = ?1 and s.ttInfo = ?2 " | 167 | @Query(value="select s from SchedulePlanInfo s where s.xlBm = ?1 and s.ttInfo = ?2 " |
| 165 | + "and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?3 order by s.lpName,bcs") | 168 | + "and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?3 order by s.lpName,bcs") |
| 166 | List<SchedulePlanInfo> findPlanByTTinfo(String xlBm, Long ttInfo, String scheduleDate); | 169 | List<SchedulePlanInfo> findPlanByTTinfo(String xlBm, Long ttInfo, String scheduleDate); |
| 167 | - | 170 | + |
| 168 | @Query(value="select s from SchedulePlanInfo s where s.xlBm = ?1 " | 171 | @Query(value="select s from SchedulePlanInfo s where s.xlBm = ?1 " |
| 169 | + "and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.lpName,bcs") | 172 | + "and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.lpName,bcs") |
| 170 | List<SchedulePlanInfo> findPlanByXlAndDate(String xlBm, String scheduleDate); | 173 | List<SchedulePlanInfo> findPlanByXlAndDate(String xlBm, String scheduleDate); |
src/main/java/com/bsth/service/schedule/SchedulePlanInfoService.java
| 1 | package com.bsth.service.schedule; | 1 | package com.bsth.service.schedule; |
| 2 | 2 | ||
| 3 | import com.bsth.entity.schedule.SchedulePlanInfo; | 3 | import com.bsth.entity.schedule.SchedulePlanInfo; |
| 4 | -import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | ||
| 5 | import com.bsth.service.schedule.exception.ScheduleException; | 4 | import com.bsth.service.schedule.exception.ScheduleException; |
| 5 | +import com.bsth.service.schedule.timetable.strategy.TimetableExcelWithPlanInfoViewStrategy; | ||
| 6 | import com.bsth.service.schedule.utils.DataToolsFile; | 6 | import com.bsth.service.schedule.utils.DataToolsFile; |
| 7 | import org.apache.commons.lang3.StringUtils; | 7 | import org.apache.commons.lang3.StringUtils; |
| 8 | import org.joda.time.DateTime; | 8 | import org.joda.time.DateTime; |
| @@ -35,7 +35,7 @@ public interface SchedulePlanInfoService extends BService<SchedulePlanInfo, Long | @@ -35,7 +35,7 @@ public interface SchedulePlanInfoService extends BService<SchedulePlanInfo, Long | ||
| 35 | * @return | 35 | * @return |
| 36 | * @throws ScheduleException | 36 | * @throws ScheduleException |
| 37 | */ | 37 | */ |
| 38 | - TTInfoDetailForEdit.EditInfo getDirectiveDataWithPlanInfo( | 38 | + TimetableExcelWithPlanInfoViewStrategy.PlanInfoEditInfo getDirectiveDataWithPlanInfo( |
| 39 | Integer xlId, Date scheduleDate) throws ScheduleException; | 39 | Integer xlId, Date scheduleDate) throws ScheduleException; |
| 40 | 40 | ||
| 41 | /** | 41 | /** |
src/main/java/com/bsth/service/schedule/impl/SchedulePlanInfoServiceImpl.java
| @@ -4,9 +4,9 @@ import com.bsth.entity.schedule.SchedulePlanInfo; | @@ -4,9 +4,9 @@ import com.bsth.entity.schedule.SchedulePlanInfo; | ||
| 4 | import com.bsth.repository.LineRepository; | 4 | import com.bsth.repository.LineRepository; |
| 5 | import com.bsth.repository.schedule.SchedulePlanInfoRepository; | 5 | import com.bsth.repository.schedule.SchedulePlanInfoRepository; |
| 6 | import com.bsth.service.schedule.SchedulePlanInfoService; | 6 | import com.bsth.service.schedule.SchedulePlanInfoService; |
| 7 | -import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | ||
| 8 | import com.bsth.service.schedule.exception.ScheduleException; | 7 | import com.bsth.service.schedule.exception.ScheduleException; |
| 9 | import com.bsth.service.schedule.timetable.TimetableExcelData; | 8 | import com.bsth.service.schedule.timetable.TimetableExcelData; |
| 9 | +import com.bsth.service.schedule.timetable.strategy.TimetableExcelWithPlanInfoViewStrategy; | ||
| 10 | import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelWithPlanInfoExportStrategyImpl; | 10 | import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelWithPlanInfoExportStrategyImpl; |
| 11 | import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelWithPlanInfoViewStrategyImpl; | 11 | import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelWithPlanInfoViewStrategyImpl; |
| 12 | import com.bsth.service.schedule.utils.DataToolsFile; | 12 | import com.bsth.service.schedule.utils.DataToolsFile; |
| @@ -59,13 +59,14 @@ public class SchedulePlanInfoServiceImpl extends BServiceImpl<SchedulePlanInfo, | @@ -59,13 +59,14 @@ public class SchedulePlanInfoServiceImpl extends BServiceImpl<SchedulePlanInfo, | ||
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | @Override | 61 | @Override |
| 62 | - public TTInfoDetailForEdit.EditInfo getDirectiveDataWithPlanInfo(Integer xlId, Date scheduleDate) throws ScheduleException { | 62 | + public TimetableExcelWithPlanInfoViewStrategy.PlanInfoEditInfo getDirectiveDataWithPlanInfo(Integer xlId, Date scheduleDate) throws ScheduleException { |
| 63 | TimetableExcelData timetableExcelData = TimetableExcelData.withPlanInfoExcelViewBuilder() | 63 | TimetableExcelData timetableExcelData = TimetableExcelData.withPlanInfoExcelViewBuilder() |
| 64 | .setXlId(xlId) | 64 | .setXlId(xlId) |
| 65 | .setScheduleDate(scheduleDate) | 65 | .setScheduleDate(scheduleDate) |
| 66 | .setLineRepository(this.lineRepository) | 66 | .setLineRepository(this.lineRepository) |
| 67 | .setDataToolsService(this.dataToolsService) | 67 | .setDataToolsService(this.dataToolsService) |
| 68 | .setDataToolsProperties(this.dataToolsProperties) | 68 | .setDataToolsProperties(this.dataToolsProperties) |
| 69 | + .setSchedulePlanInfoRepository(this.schedulePlanInfoRepository) | ||
| 69 | .setTimetableExcelWithPlanInfoViewStrategy(new TimetableExcelWithPlanInfoViewStrategyImpl()) | 70 | .setTimetableExcelWithPlanInfoViewStrategy(new TimetableExcelWithPlanInfoViewStrategyImpl()) |
| 70 | .build(); | 71 | .build(); |
| 71 | return timetableExcelData.doGetDirectiveDataWithPlanInfo(); | 72 | return timetableExcelData.doGetDirectiveDataWithPlanInfo(); |
src/main/java/com/bsth/service/schedule/plan/strategy/说明.txt
0 → 100644
src/main/java/com/bsth/service/schedule/timetable/TimetableExcelData.java
| @@ -6,12 +6,12 @@ import com.bsth.entity.schedule.GuideboardInfo; | @@ -6,12 +6,12 @@ import com.bsth.entity.schedule.GuideboardInfo; | ||
| 6 | import com.bsth.entity.schedule.TTInfo; | 6 | import com.bsth.entity.schedule.TTInfo; |
| 7 | import com.bsth.entity.schedule.TTInfoDetail; | 7 | import com.bsth.entity.schedule.TTInfoDetail; |
| 8 | import com.bsth.repository.LineRepository; | 8 | import com.bsth.repository.LineRepository; |
| 9 | +import com.bsth.repository.schedule.SchedulePlanInfoRepository; | ||
| 9 | import com.bsth.repository.schedule.TTInfoDetailRepository; | 10 | import com.bsth.repository.schedule.TTInfoDetailRepository; |
| 10 | import com.bsth.repository.schedule.TTInfoRepository; | 11 | import com.bsth.repository.schedule.TTInfoRepository; |
| 11 | import com.bsth.service.LineService; | 12 | import com.bsth.service.LineService; |
| 12 | import com.bsth.service.LsStationRouteService; | 13 | import com.bsth.service.LsStationRouteService; |
| 13 | import com.bsth.service.schedule.GuideboardInfoService; | 14 | import com.bsth.service.schedule.GuideboardInfoService; |
| 14 | -import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | ||
| 15 | import com.bsth.service.schedule.exception.ScheduleException; | 15 | import com.bsth.service.schedule.exception.ScheduleException; |
| 16 | import com.bsth.service.schedule.timetable.strategy.*; | 16 | import com.bsth.service.schedule.timetable.strategy.*; |
| 17 | import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelWithPlanInfoViewStrategyImpl; | 17 | import com.bsth.service.schedule.timetable.strategy.impl.TimetableExcelWithPlanInfoViewStrategyImpl; |
| @@ -198,17 +198,21 @@ public class TimetableExcelData { | @@ -198,17 +198,21 @@ public class TimetableExcelData { | ||
| 198 | * 注意:dataToolsService和dataToolsProperties共用导入相关属性 | 198 | * 注意:dataToolsService和dataToolsProperties共用导入相关属性 |
| 199 | */ | 199 | */ |
| 200 | 200 | ||
| 201 | + /** 指定线路,排班日期最大发车顺序号 */ | ||
| 202 | + private Long maxfcno; | ||
| 203 | + | ||
| 201 | /** 获取显示数据策略 */ | 204 | /** 获取显示数据策略 */ |
| 202 | private TimetableExcelWithPlanInfoViewStrategy timetableExcelWithPlanInfoViewStrategy; | 205 | private TimetableExcelWithPlanInfoViewStrategy timetableExcelWithPlanInfoViewStrategy; |
| 203 | /** | 206 | /** |
| 204 | * 获取前端angular指令用数据。 | 207 | * 获取前端angular指令用数据。 |
| 205 | */ | 208 | */ |
| 206 | - public TTInfoDetailForEdit.EditInfo doGetDirectiveDataWithPlanInfo() throws ScheduleException { | 209 | + public TimetableExcelWithPlanInfoViewStrategy.PlanInfoEditInfo doGetDirectiveDataWithPlanInfo() throws ScheduleException { |
| 207 | return this.timetableExcelWithPlanInfoViewStrategy.doGetDirectiveDataWithPlanInfo( | 210 | return this.timetableExcelWithPlanInfoViewStrategy.doGetDirectiveDataWithPlanInfo( |
| 208 | this.line, | 211 | this.line, |
| 209 | this.scheduleDate, | 212 | this.scheduleDate, |
| 210 | this.dataToolsService, | 213 | this.dataToolsService, |
| 211 | - this.dataToolsProperties); | 214 | + this.dataToolsProperties, |
| 215 | + maxfcno); | ||
| 212 | } | 216 | } |
| 213 | 217 | ||
| 214 | // ----------- 构造函数 ---------- // | 218 | // ----------- 构造函数 ---------- // |
| @@ -274,6 +278,7 @@ public class TimetableExcelData { | @@ -274,6 +278,7 @@ public class TimetableExcelData { | ||
| 274 | this.scheduleDate = planInfoExcelViewBuilder.scheduleDate; | 278 | this.scheduleDate = planInfoExcelViewBuilder.scheduleDate; |
| 275 | this.dataToolsService = planInfoExcelViewBuilder.dataToolsService; | 279 | this.dataToolsService = planInfoExcelViewBuilder.dataToolsService; |
| 276 | this.dataToolsProperties = planInfoExcelViewBuilder.dataToolsProperties; | 280 | this.dataToolsProperties = planInfoExcelViewBuilder.dataToolsProperties; |
| 281 | + this.maxfcno = planInfoExcelViewBuilder.maxfcno; | ||
| 277 | // 获取显示数据策略 | 282 | // 获取显示数据策略 |
| 278 | this.timetableExcelWithPlanInfoViewStrategy = | 283 | this.timetableExcelWithPlanInfoViewStrategy = |
| 279 | planInfoExcelViewBuilder.timetableExcelWithPlanInfoViewStrategy; | 284 | planInfoExcelViewBuilder.timetableExcelWithPlanInfoViewStrategy; |
| @@ -727,6 +732,8 @@ public class TimetableExcelData { | @@ -727,6 +732,8 @@ public class TimetableExcelData { | ||
| 727 | private DataToolsService dataToolsService; | 732 | private DataToolsService dataToolsService; |
| 728 | /** 配置数据导入导出用到的配置信息 */ | 733 | /** 配置数据导入导出用到的配置信息 */ |
| 729 | private DataToolsProperties dataToolsProperties; | 734 | private DataToolsProperties dataToolsProperties; |
| 735 | + /** 排班计划明细Repo */ | ||
| 736 | + private SchedulePlanInfoRepository schedulePlanInfoRepository; | ||
| 730 | /** view策略 */ | 737 | /** view策略 */ |
| 731 | private TimetableExcelWithPlanInfoViewStrategyImpl timetableExcelWithPlanInfoViewStrategy; | 738 | private TimetableExcelWithPlanInfoViewStrategyImpl timetableExcelWithPlanInfoViewStrategy; |
| 732 | 739 | ||
| @@ -755,6 +762,11 @@ public class TimetableExcelData { | @@ -755,6 +762,11 @@ public class TimetableExcelData { | ||
| 755 | return this; | 762 | return this; |
| 756 | } | 763 | } |
| 757 | 764 | ||
| 765 | + public PlanInfoExcelViewBuilder setSchedulePlanInfoRepository(SchedulePlanInfoRepository schedulePlanInfoRepository) { | ||
| 766 | + this.schedulePlanInfoRepository = schedulePlanInfoRepository; | ||
| 767 | + return this; | ||
| 768 | + } | ||
| 769 | + | ||
| 758 | public PlanInfoExcelViewBuilder setTimetableExcelWithPlanInfoViewStrategy(TimetableExcelWithPlanInfoViewStrategyImpl timetableExcelWithPlanInfoViewStrategy) { | 770 | public PlanInfoExcelViewBuilder setTimetableExcelWithPlanInfoViewStrategy(TimetableExcelWithPlanInfoViewStrategyImpl timetableExcelWithPlanInfoViewStrategy) { |
| 759 | this.timetableExcelWithPlanInfoViewStrategy = timetableExcelWithPlanInfoViewStrategy; | 771 | this.timetableExcelWithPlanInfoViewStrategy = timetableExcelWithPlanInfoViewStrategy; |
| 760 | return this; | 772 | return this; |
| @@ -763,6 +775,8 @@ public class TimetableExcelData { | @@ -763,6 +775,8 @@ public class TimetableExcelData { | ||
| 763 | // ---------------- 内部生成的属性 ---------------- // | 775 | // ---------------- 内部生成的属性 ---------------- // |
| 764 | /** 线路信息 */ | 776 | /** 线路信息 */ |
| 765 | private Line line; | 777 | private Line line; |
| 778 | + /** 指定线路,排班日期最大发车顺序号 */ | ||
| 779 | + private Long maxfcno; | ||
| 766 | 780 | ||
| 767 | public TimetableExcelData build() { | 781 | public TimetableExcelData build() { |
| 768 | // 1、参数验证 | 782 | // 1、参数验证 |
| @@ -771,12 +785,18 @@ public class TimetableExcelData { | @@ -771,12 +785,18 @@ public class TimetableExcelData { | ||
| 771 | Assert.notNull(this.lineRepository, "线路repo为空!"); | 785 | Assert.notNull(this.lineRepository, "线路repo为空!"); |
| 772 | Assert.notNull(this.dataToolsService, "数据工具服务为空!"); | 786 | Assert.notNull(this.dataToolsService, "数据工具服务为空!"); |
| 773 | Assert.notNull(this.dataToolsProperties, "配置数据导入导出用到的配置信息为空!"); | 787 | Assert.notNull(this.dataToolsProperties, "配置数据导入导出用到的配置信息为空!"); |
| 788 | + Assert.notNull(this.schedulePlanInfoRepository, "排班明细Repo为空!"); | ||
| 774 | Assert.notNull(this.timetableExcelWithPlanInfoViewStrategy, "获取显示数据策略为空!"); | 789 | Assert.notNull(this.timetableExcelWithPlanInfoViewStrategy, "获取显示数据策略为空!"); |
| 775 | 790 | ||
| 776 | // 2、获取线路信息 | 791 | // 2、获取线路信息 |
| 777 | Optional<Line> optionalLine = this.lineRepository.findById(this.xlId); | 792 | Optional<Line> optionalLine = this.lineRepository.findById(this.xlId); |
| 778 | Assert.isTrue(optionalLine.isPresent(), "线路[id=" + this.xlId + "]为空!"); | 793 | Assert.isTrue(optionalLine.isPresent(), "线路[id=" + this.xlId + "]为空!"); |
| 779 | this.line = optionalLine.get(); | 794 | this.line = optionalLine.get(); |
| 795 | + // 3、获取maxfcno | ||
| 796 | + Long maxfcno = this.schedulePlanInfoRepository.findMaxFcno(this.xlId, this.scheduleDate); | ||
| 797 | + Assert.notNull(maxfcno, "maxfcno为空,排班信息可能为空!"); | ||
| 798 | + Assert.isTrue(maxfcno > 0L, "maxfcno <= 0,排班信息可能为空!"); | ||
| 799 | + this.maxfcno = maxfcno; | ||
| 780 | 800 | ||
| 781 | return new TimetableExcelData(this); | 801 | return new TimetableExcelData(this); |
| 782 | } | 802 | } |
src/main/java/com/bsth/service/schedule/timetable/strategy/TimetableExcelWithPlanInfoViewStrategy.java
| 1 | package com.bsth.service.schedule.timetable.strategy; | 1 | package com.bsth.service.schedule.timetable.strategy; |
| 2 | 2 | ||
| 3 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | -import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | 4 | +import com.bsth.entity.schedule.SchedulePlanInfo; |
| 5 | import com.bsth.service.schedule.exception.ScheduleException; | 5 | import com.bsth.service.schedule.exception.ScheduleException; |
| 6 | import com.bsth.service.schedule.utils.DataToolsProperties; | 6 | import com.bsth.service.schedule.utils.DataToolsProperties; |
| 7 | import com.bsth.service.schedule.utils.DataToolsService; | 7 | import com.bsth.service.schedule.utils.DataToolsService; |
| 8 | 8 | ||
| 9 | +import java.util.ArrayList; | ||
| 9 | import java.util.Date; | 10 | import java.util.Date; |
| 11 | +import java.util.List; | ||
| 10 | 12 | ||
| 11 | /** | 13 | /** |
| 12 | * 排班时刻数据(时刻表的格式,附加驾驶员,车牌信息)前端angular指令数据策略接口。 | 14 | * 排班时刻数据(时刻表的格式,附加驾驶员,车牌信息)前端angular指令数据策略接口。 |
| @@ -19,11 +21,39 @@ public interface TimetableExcelWithPlanInfoViewStrategy { | @@ -19,11 +21,39 @@ public interface TimetableExcelWithPlanInfoViewStrategy { | ||
| 19 | * @param scheduleDate 排班日期 | 21 | * @param scheduleDate 排班日期 |
| 20 | * @param dataToolsService dataToolsService | 22 | * @param dataToolsService dataToolsService |
| 21 | * @param dataToolsProperties dataToolsProperties | 23 | * @param dataToolsProperties dataToolsProperties |
| 24 | + * @param maxfcno 指定线路,排班日期最大发车顺序号 | ||
| 22 | */ | 25 | */ |
| 23 | - TTInfoDetailForEdit.EditInfo doGetDirectiveDataWithPlanInfo( | 26 | + PlanInfoEditInfo doGetDirectiveDataWithPlanInfo( |
| 24 | Line xl, | 27 | Line xl, |
| 25 | Date scheduleDate, | 28 | Date scheduleDate, |
| 26 | DataToolsService dataToolsService, | 29 | DataToolsService dataToolsService, |
| 27 | - DataToolsProperties dataToolsProperties | 30 | + DataToolsProperties dataToolsProperties, |
| 31 | + Long maxfcno | ||
| 28 | ) throws ScheduleException; | 32 | ) throws ScheduleException; |
| 33 | + | ||
| 34 | + /** | ||
| 35 | + * 排班信息编辑用的返回数据。 | ||
| 36 | + */ | ||
| 37 | + class PlanInfoEditInfo { | ||
| 38 | + /** 标题数据 */ | ||
| 39 | + private List<String> header = new ArrayList<>(); | ||
| 40 | + /** 内容数据 */ | ||
| 41 | + private List<List<SchedulePlanInfo>> contents = new ArrayList<>(); | ||
| 42 | + | ||
| 43 | + public List<String> getHeader() { | ||
| 44 | + return header; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + public void setHeader(List<String> header) { | ||
| 48 | + this.header = header; | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + public List<List<SchedulePlanInfo>> getContents() { | ||
| 52 | + return contents; | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + public void setContents(List<List<SchedulePlanInfo>> contents) { | ||
| 56 | + this.contents = contents; | ||
| 57 | + } | ||
| 58 | + } | ||
| 29 | } | 59 | } |
src/main/java/com/bsth/service/schedule/timetable/strategy/impl/TimetableExcelWithPlanInfoViewStrategyImpl.java
| 1 | package com.bsth.service.schedule.timetable.strategy.impl; | 1 | package com.bsth.service.schedule.timetable.strategy.impl; |
| 2 | 2 | ||
| 3 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | -import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | 4 | +import com.bsth.entity.schedule.SchedulePlanInfo; |
| 5 | import com.bsth.service.schedule.exception.ScheduleException; | 5 | import com.bsth.service.schedule.exception.ScheduleException; |
| 6 | import com.bsth.service.schedule.timetable.strategy.TimetableExcelWithPlanInfoViewStrategy; | 6 | import com.bsth.service.schedule.timetable.strategy.TimetableExcelWithPlanInfoViewStrategy; |
| 7 | import com.bsth.service.schedule.utils.*; | 7 | import com.bsth.service.schedule.utils.*; |
| 8 | -import org.apache.poi.ss.usermodel.Row; | 8 | +import org.apache.commons.lang3.StringUtils; |
| 9 | +import org.joda.time.DateTime; | ||
| 9 | import org.slf4j.Logger; | 10 | import org.slf4j.Logger; |
| 10 | import org.slf4j.LoggerFactory; | 11 | import org.slf4j.LoggerFactory; |
| 11 | 12 | ||
| @@ -22,11 +23,12 @@ public class TimetableExcelWithPlanInfoViewStrategyImpl implements TimetableExce | @@ -22,11 +23,12 @@ public class TimetableExcelWithPlanInfoViewStrategyImpl implements TimetableExce | ||
| 22 | private final static Logger LOG = LoggerFactory.getLogger(TimetableExcelWithPlanInfoViewStrategyImpl.class); | 23 | private final static Logger LOG = LoggerFactory.getLogger(TimetableExcelWithPlanInfoViewStrategyImpl.class); |
| 23 | 24 | ||
| 24 | @Override | 25 | @Override |
| 25 | - public TTInfoDetailForEdit.EditInfo doGetDirectiveDataWithPlanInfo( | 26 | + public PlanInfoEditInfo doGetDirectiveDataWithPlanInfo( |
| 26 | Line xl, | 27 | Line xl, |
| 27 | Date scheduleDate, | 28 | Date scheduleDate, |
| 28 | DataToolsService dataToolsService, | 29 | DataToolsService dataToolsService, |
| 29 | - DataToolsProperties dataToolsProperties) throws ScheduleException { | 30 | + DataToolsProperties dataToolsProperties, |
| 31 | + Long maxfcno) throws ScheduleException { | ||
| 30 | 32 | ||
| 31 | LOG.info("---------------- 开始获取显示数据 线路=[{}],日期=[{}]排班时刻信息... --------------", xl.getName(), scheduleDate); | 33 | LOG.info("---------------- 开始获取显示数据 线路=[{}],日期=[{}]排班时刻信息... --------------", xl.getName(), scheduleDate); |
| 32 | 34 | ||
| @@ -34,31 +36,31 @@ public class TimetableExcelWithPlanInfoViewStrategyImpl implements TimetableExce | @@ -34,31 +36,31 @@ public class TimetableExcelWithPlanInfoViewStrategyImpl implements TimetableExce | ||
| 34 | // ---------- 1、ktr生成的导出文件 --------- // | 36 | // ---------- 1、ktr生成的导出文件 --------- // |
| 35 | // ---------- 1-1、创建ktr参数 --------- // | 37 | // ---------- 1-1、创建ktr参数 --------- // |
| 36 | Map<String, Object> ktrParams = new HashMap<>(); | 38 | Map<String, Object> ktrParams = new HashMap<>(); |
| 37 | - // 导出用元数据ktr | ||
| 38 | - File ktrMetaFile = new File(this.getClass().getResource( | ||
| 39 | - dataToolsProperties.getTtinfodetailPlaninfoMetaoutput()).toURI()); | ||
| 40 | - // 导出ktr | 39 | + // 导出edit数据ktr |
| 41 | File ktrFile = new File(this.getClass().getResource( | 40 | File ktrFile = new File(this.getClass().getResource( |
| 42 | - dataToolsProperties.getTtinfodetailPlaninfoOutput()).toURI()); | 41 | + dataToolsProperties.getTtinfodetailPlaninfoOutputEdit()).toURI()); |
| 43 | 42 | ||
| 44 | // 通用参数,转换文件路径,excel输出文件名 | 43 | // 通用参数,转换文件路径,excel输出文件名 |
| 45 | - ktrParams.put("transpath", ktrMetaFile.getAbsolutePath()); | ||
| 46 | - ktrParams.put("filename", "排班时刻表导出数据temp"); | 44 | + ktrParams.put("transpath", ktrFile.getAbsolutePath()); |
| 45 | + ktrParams.put("filename", "排班时刻表导出edit数据"); | ||
| 47 | // ktr附加命名参数 | 46 | // ktr附加命名参数 |
| 48 | ktrParams.put("xlid", xl.getId()); // 线路Id | 47 | ktrParams.put("xlid", xl.getId()); // 线路Id |
| 49 | - ktrParams.put("injectktrfile", ktrFile.getAbsolutePath()); // 注入元数据的ktr文件 | ||
| 50 | ktrParams.put("sdate", scheduleDate.toInstant() | 48 | ktrParams.put("sdate", scheduleDate.toInstant() |
| 51 | .atZone(ZoneId.systemDefault()).toLocalDate() | 49 | .atZone(ZoneId.systemDefault()).toLocalDate() |
| 52 | .format(DateTimeFormatter.ISO_DATE)); // 排班日期 | 50 | .format(DateTimeFormatter.ISO_DATE)); // 排班日期 |
| 53 | 51 | ||
| 52 | + String outputFilePath = String.format("schedulePlanInfoForTtinfoDetail_(xlid=%s)_foredit-%s", | ||
| 53 | + String.valueOf(xl.getId()), new DateTime().toString("yyyyMMddHHmmss")); | ||
| 54 | + ktrParams.put("filepath", dataToolsProperties.getTransTempdir() + File.separator + outputFilePath); // 数据输出文件路径 | ||
| 55 | + | ||
| 56 | + | ||
| 54 | // ---------- 1-2、执行ktr --------- // | 57 | // ---------- 1-2、执行ktr --------- // |
| 55 | DataToolsFile exportFile = dataToolsService.exportData(ktrParams); | 58 | DataToolsFile exportFile = dataToolsService.exportData(ktrParams); |
| 56 | 59 | ||
| 57 | // ---------- 2、处理生成的导出文件 --------- // | 60 | // ---------- 2、处理生成的导出文件 --------- // |
| 58 | - TTInfoDetailForEdit.EditInfo viewData = new TTInfoDetailForEdit.EditInfo(); | 61 | + PlanInfoEditInfo viewData = new PlanInfoEditInfo(); |
| 59 | 62 | ||
| 60 | - // 将导出的数据表头重新处理一遍,祛除->数字 | ||
| 61 | - // poi api,并读取第一行数据 | 63 | + // ---------- 2-1、获取sheet ------------ // |
| 62 | org.apache.poi.ss.usermodel.Workbook poi_workbook; | 64 | org.apache.poi.ss.usermodel.Workbook poi_workbook; |
| 63 | org.apache.poi.ss.usermodel.Sheet poi_sheet; | 65 | org.apache.poi.ss.usermodel.Sheet poi_sheet; |
| 64 | if (DataToolsFileType.XLS.isThisType(exportFile.getFile())) { | 66 | if (DataToolsFileType.XLS.isThisType(exportFile.getFile())) { |
| @@ -68,35 +70,74 @@ public class TimetableExcelWithPlanInfoViewStrategyImpl implements TimetableExce | @@ -68,35 +70,74 @@ public class TimetableExcelWithPlanInfoViewStrategyImpl implements TimetableExce | ||
| 68 | } else { | 70 | } else { |
| 69 | throw new Exception("不是xls xlsx文件!"); | 71 | throw new Exception("不是xls xlsx文件!"); |
| 70 | } | 72 | } |
| 71 | - poi_sheet = poi_workbook.getSheet("Sheet1"); | 73 | + poi_sheet = poi_workbook.getSheetAt(0); // 获取第一个Sheet值 |
| 72 | if (poi_sheet == null || poi_sheet.getRow(0) == null) { // 空sheet | 74 | if (poi_sheet == null || poi_sheet.getRow(0) == null) { // 空sheet |
| 73 | return viewData; | 75 | return viewData; |
| 74 | } | 76 | } |
| 75 | 77 | ||
| 76 | - int rownums = poi_sheet.getLastRowNum() + 1; | ||
| 77 | - int colnums = poi_sheet.getRow(0).getLastCellNum(); | ||
| 78 | - Row firstrow = poi_sheet.getRow(0); | ||
| 79 | - for (int i = 0; i < colnums; i++) { | ||
| 80 | - org.apache.poi.ss.usermodel.Cell cell = firstrow.getCell(i); | ||
| 81 | - viewData.getHeader().add( | ||
| 82 | - PoiUtils.getStringValueFromCell(cell).trim().replaceAll("(->\\d+)", "")); | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - for (int i = 1; i < rownums; i++) { // 第二行开始 | ||
| 86 | - List<TTInfoDetailForEdit.FcInfo> fcInfoList = new ArrayList<>(); | ||
| 87 | - for (int j = 0; j < colnums; j++) { | 78 | + // ---------- 2-2、处理sheet ------------ // |
| 79 | + String[] headarrays = new String[maxfcno.intValue() + 4]; | ||
| 80 | + headarrays[0] = "路牌"; // 第一列 | ||
| 81 | + headarrays[1] = "驾驶员"; // 第二列 | ||
| 82 | + headarrays[2] = "自编号"; // 第三列 | ||
| 83 | + headarrays[3] = "车牌号"; // 第四列 | ||
| 84 | + | ||
| 85 | + int rows = poi_sheet.getLastRowNum() + 1; // 总行数 | ||
| 86 | + for (int r = 1; r < rows; r++) { // 从第二行开始 | ||
| 87 | + List<SchedulePlanInfo> schedulePlanInfoList = new ArrayList<>(); | ||
| 88 | + for (int c = 0; c < headarrays.length; c++) { | ||
| 88 | // poi读 | 89 | // poi读 |
| 89 | - String cellContent = PoiUtils.getStringValueFromCell( | ||
| 90 | - poi_sheet.getRow(i).getCell(j) | ||
| 91 | - ).replaceAll("\\s*", ""); | 90 | + String content_str = PoiUtils.getStringValueFromCell( |
| 91 | + poi_sheet.getRow(r).getCell(c) | ||
| 92 | + ); | ||
| 93 | + | ||
| 94 | + if (c == 0) { // 路牌列 | ||
| 95 | + SchedulePlanInfo lpCol = new SchedulePlanInfo(); | ||
| 96 | + lpCol.setLpName(content_str); | ||
| 97 | + schedulePlanInfoList.add(lpCol); | ||
| 98 | + } else if (c == 1) { // 驾驶员列 | ||
| 99 | + SchedulePlanInfo jsyCol = new SchedulePlanInfo(); | ||
| 100 | + jsyCol.setjName(content_str); | ||
| 101 | + schedulePlanInfoList.add(jsyCol); | ||
| 102 | + } else if (c == 2) { // 自编号列 | ||
| 103 | + SchedulePlanInfo zbhCol = new SchedulePlanInfo(); | ||
| 104 | + zbhCol.setClZbh(content_str); | ||
| 105 | + schedulePlanInfoList.add(zbhCol); | ||
| 106 | + } else if (c == 3) { // 车牌号列 | ||
| 107 | + SchedulePlanInfo cphCol = new SchedulePlanInfo(); | ||
| 108 | + cphCol.setClZbh(content_str); // 注意:车牌号也放在自编号字段中 | ||
| 109 | + schedulePlanInfoList.add(cphCol); | ||
| 110 | + } else { | ||
| 111 | + if (StringUtils.isEmpty(content_str)) { | ||
| 112 | + // content_str为空,说明当前发车顺序号对应的班次为空,插入一个字段为空的对象 | ||
| 113 | + SchedulePlanInfo emptyCol = new SchedulePlanInfo(); | ||
| 114 | + schedulePlanInfoList.add(emptyCol); | ||
| 115 | + } else { | ||
| 116 | + String[] content = content_str.split(","); | ||
| 117 | + | ||
| 118 | + SchedulePlanInfo schedulePlanInfo = new SchedulePlanInfo(); | ||
| 119 | + schedulePlanInfo.setId(Long.parseLong(content[0])); // 排班明细Id | ||
| 120 | + schedulePlanInfo.setXlDir(content[1]); // 上下行 | ||
| 121 | + schedulePlanInfo.setQdzName(content[2]); // 起点站名字 | ||
| 122 | + schedulePlanInfo.setZdzName(content[3]); // 终点站名字 | ||
| 123 | + schedulePlanInfo.setFcsj(content[4]); // 发车时间 | ||
| 124 | + schedulePlanInfo.setJhlc(Double.valueOf(content[5])); // 计划里程 | ||
| 125 | + schedulePlanInfo.setBcsj(Integer.valueOf(content[6])); // 班次时间 | ||
| 126 | + schedulePlanInfo.setBcType(content[7]); // 班次类型 | ||
| 127 | + | ||
| 128 | + if (headarrays[c] == null) { | ||
| 129 | + headarrays[c] = content[8]; // 计算的发车站名 | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + schedulePlanInfoList.add(schedulePlanInfo); | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + } | ||
| 92 | 136 | ||
| 93 | - TTInfoDetailForEdit.FcInfo fcInfo = new TTInfoDetailForEdit.FcInfo(); | ||
| 94 | - fcInfo.setFcsj(cellContent); | ||
| 95 | - fcInfoList.add(fcInfo); | ||
| 96 | } | 137 | } |
| 97 | - viewData.getContents().add(fcInfoList); | 138 | + viewData.getContents().add(schedulePlanInfoList); |
| 98 | } | 139 | } |
| 99 | - | 140 | + viewData.getHeader().addAll(Arrays.asList(headarrays)); |
| 100 | 141 | ||
| 101 | return viewData; | 142 | return viewData; |
| 102 | } catch (Exception exp) { | 143 | } catch (Exception exp) { |
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
| @@ -127,6 +127,8 @@ public class DataToolsProperties { | @@ -127,6 +127,8 @@ public class DataToolsProperties { | ||
| 127 | @NotNull | 127 | @NotNull |
| 128 | /** 时刻表导出数据(带排班信息)ktr转换 */ | 128 | /** 时刻表导出数据(带排班信息)ktr转换 */ |
| 129 | private String ttinfodetailPlaninfoOutput; | 129 | private String ttinfodetailPlaninfoOutput; |
| 130 | + /** 时刻表导出数据(带排班信息)编辑用ktr转换 */ | ||
| 131 | + private String ttinfodetailPlaninfoOutputEdit; | ||
| 130 | 132 | ||
| 131 | //------------------------ 数据同步ktr -----------------------// | 133 | //------------------------ 数据同步ktr -----------------------// |
| 132 | @NotNull | 134 | @NotNull |
| @@ -425,4 +427,12 @@ public class DataToolsProperties { | @@ -425,4 +427,12 @@ public class DataToolsProperties { | ||
| 425 | public void setTtinfodetailPlaninfoOutput(String ttinfodetailPlaninfoOutput) { | 427 | public void setTtinfodetailPlaninfoOutput(String ttinfodetailPlaninfoOutput) { |
| 426 | this.ttinfodetailPlaninfoOutput = ttinfodetailPlaninfoOutput; | 428 | this.ttinfodetailPlaninfoOutput = ttinfodetailPlaninfoOutput; |
| 427 | } | 429 | } |
| 430 | + | ||
| 431 | + public String getTtinfodetailPlaninfoOutputEdit() { | ||
| 432 | + return ttinfodetailPlaninfoOutputEdit; | ||
| 433 | + } | ||
| 434 | + | ||
| 435 | + public void setTtinfodetailPlaninfoOutputEdit(String ttinfodetailPlaninfoOutputEdit) { | ||
| 436 | + this.ttinfodetailPlaninfoOutputEdit = ttinfodetailPlaninfoOutputEdit; | ||
| 437 | + } | ||
| 428 | } | 438 | } |
src/main/resources/datatools/config-cloud.properties
| @@ -83,6 +83,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | @@ -83,6 +83,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | ||
| 83 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr | 83 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr |
| 84 | # 时刻表导出数据(带排班信息)ktr转换 | 84 | # 时刻表导出数据(带排班信息)ktr转换 |
| 85 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr | 85 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr |
| 86 | +# 时刻表导出数据(带排班信息)编辑用ktr转换 | ||
| 87 | +datatools.ttinfodetail_planinfo_output_edit=/datatools/ktrs/planWithScheduleTypeOutputForEdit.ktr | ||
| 86 | 88 | ||
| 87 | ##--------------------------- 数据同步ktr ------------------------## | 89 | ##--------------------------- 数据同步ktr ------------------------## |
| 88 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr | 90 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr |
src/main/resources/datatools/config-dev.properties
| @@ -82,7 +82,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | @@ -82,7 +82,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | ||
| 82 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr | 82 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr |
| 83 | # 时刻表导出数据(带排班信息)ktr转换 | 83 | # 时刻表导出数据(带排班信息)ktr转换 |
| 84 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr | 84 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr |
| 85 | - | 85 | +# 时刻表导出数据(带排班信息)编辑用ktr转换 |
| 86 | +datatools.ttinfodetail_planinfo_output_edit=/datatools/ktrs/planWithScheduleTypeOutputForEdit.ktr | ||
| 86 | 87 | ||
| 87 | ##--------------------------- 数据同步ktr ------------------------## | 88 | ##--------------------------- 数据同步ktr ------------------------## |
| 88 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr | 89 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr |
src/main/resources/datatools/config-prod.properties
| @@ -83,6 +83,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | @@ -83,6 +83,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | ||
| 83 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr | 83 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr |
| 84 | # 时刻表导出数据(带排班信息)ktr转换 | 84 | # 时刻表导出数据(带排班信息)ktr转换 |
| 85 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr | 85 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr |
| 86 | +# 时刻表导出数据(带排班信息)编辑用ktr转换 | ||
| 87 | +datatools.ttinfodetail_planinfo_output_edit=/datatools/ktrs/planWithScheduleTypeOutputForEdit.ktr | ||
| 86 | 88 | ||
| 87 | ##--------------------------- 数据同步ktr ------------------------## | 89 | ##--------------------------- 数据同步ktr ------------------------## |
| 88 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr | 90 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr |
src/main/resources/datatools/config-test.properties
| @@ -83,6 +83,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | @@ -83,6 +83,8 @@ datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr | ||
| 83 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr | 83 | datatools.ttinfodetail_planinfo_metaoutput=/datatools/ktrs/planWithScheduleTypeOutputMetaData.ktr |
| 84 | # 时刻表导出数据(带排班信息)ktr转换 | 84 | # 时刻表导出数据(带排班信息)ktr转换 |
| 85 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr | 85 | datatools.ttinfodetail_planinfo_output=/datatools/ktrs/planWithScheduleTypeOutput.ktr |
| 86 | +# 时刻表导出数据(带排班信息)编辑用ktr转换 | ||
| 87 | +datatools.ttinfodetail_planinfo_output_edit=/datatools/ktrs/planWithScheduleTypeOutputForEdit.ktr | ||
| 86 | 88 | ||
| 87 | ##--------------------------- 数据同步ktr ------------------------## | 89 | ##--------------------------- 数据同步ktr ------------------------## |
| 88 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr | 90 | datatools.vehicle_datasyncktr=/datatools/ktrs/vehicleDataSync.ktr |
src/main/resources/datatools/ktrs/planWithScheduleTypeOutput.ktr
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <transformation> | 2 | <transformation> |
| 3 | <info> | 3 | <info> |
| 4 | - <name>排班计划明细(时刻表格式)</name> | 4 | + <name>排班计划明细(时刻表格式)导出</name> |
| 5 | <description/> | 5 | <description/> |
| 6 | <extended_description/> | 6 | <extended_description/> |
| 7 | <trans_version/> | 7 | <trans_version/> |
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoView.js
| @@ -12,7 +12,8 @@ angular.module('ScheduleApp').directive( | @@ -12,7 +12,8 @@ angular.module('ScheduleApp').directive( | ||
| 12 | restrict: 'E', | 12 | restrict: 'E', |
| 13 | templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoViewTemplate.html', | 13 | templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoViewTemplate.html', |
| 14 | scope: { // 独立作用域 | 14 | scope: { // 独立作用域 |
| 15 | - ds: "=ngModel" | 15 | + ds: "=ngModel", |
| 16 | + celldbclickFn: "&celldbclick", | ||
| 16 | }, | 17 | }, |
| 17 | controllerAs: "$saPlanInfoViewCtrl", | 18 | controllerAs: "$saPlanInfoViewCtrl", |
| 18 | bindToController: true, | 19 | bindToController: true, |
| @@ -34,8 +35,10 @@ angular.module('ScheduleApp').directive( | @@ -34,8 +35,10 @@ angular.module('ScheduleApp').directive( | ||
| 34 | throw new Error("saPlanInfoView指令 name属性required"); | 35 | throw new Error("saPlanInfoView指令 name属性required"); |
| 35 | } | 36 | } |
| 36 | 37 | ||
| 38 | + var $attr_celldbclick = tAttrs["celldbclick"]; // 单元格双击事件名 | ||
| 39 | + | ||
| 37 | // 内部controlAs名字 | 40 | // 内部controlAs名字 |
| 38 | - var ctrlAs = '$saTimeTableCtrl'; | 41 | + var ctrlAs = '$saPlanInfoViewCtrl'; |
| 39 | 42 | ||
| 40 | return { | 43 | return { |
| 41 | pre: function(scope, element, attr) { | 44 | pre: function(scope, element, attr) { |
| @@ -44,6 +47,23 @@ angular.module('ScheduleApp').directive( | @@ -44,6 +47,23 @@ angular.module('ScheduleApp').directive( | ||
| 44 | }, | 47 | }, |
| 45 | post: function(scope, element, attr) { | 48 | post: function(scope, element, attr) { |
| 46 | // TODO: | 49 | // TODO: |
| 50 | + | ||
| 51 | + // ------------------- dom事件处理function -----------------// | ||
| 52 | + scope[ctrlAs].$$cell_click = function(rowindex, colindex, cell) { | ||
| 53 | + console.log("click " + "row=" + rowindex + ",col=" + colindex); | ||
| 54 | + if (cell.id) { // 有排班明细id的cell才能操作 | ||
| 55 | + cell.sel = !cell.sel; // 是否选中toggle | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + }; | ||
| 59 | + scope[ctrlAs].$$cell_dbclick = function(rowindex, colindex, cell) { | ||
| 60 | + if (cell.id) { // 有排班明细id的cell才能操作 | ||
| 61 | + if ($attr_celldbclick) { | ||
| 62 | + // 注意调用方法 | ||
| 63 | + scope[ctrlAs].celldbclickFn()(rowindex, colindex); | ||
| 64 | + } | ||
| 65 | + } | ||
| 66 | + }; | ||
| 47 | } | 67 | } |
| 48 | 68 | ||
| 49 | }; | 69 | }; |
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoViewTemplate.html
| @@ -402,14 +402,24 @@ | @@ -402,14 +402,24 @@ | ||
| 402 | 402 | ||
| 403 | <dd ng-repeat="cell in info track by $index" | 403 | <dd ng-repeat="cell in info track by $index" |
| 404 | ng-init="colIndex = $index" | 404 | ng-init="colIndex = $index" |
| 405 | - ng-if="$index <= 2" > | ||
| 406 | - {{cell.fcsj}} | 405 | + ng-if="$index == 0" > |
| 406 | + {{cell.lpName}} | ||
| 407 | + </dd> | ||
| 408 | + <dd ng-repeat="cell in info track by $index" | ||
| 409 | + ng-init="colIndex = $index" | ||
| 410 | + ng-if="$index == 1" > | ||
| 411 | + {{cell.jName}} | ||
| 412 | + </dd> | ||
| 413 | + <dd ng-repeat="cell in info track by $index" | ||
| 414 | + ng-init="colIndex = $index" | ||
| 415 | + ng-if="$index == 2" > | ||
| 416 | + {{cell.clZbh}} | ||
| 407 | </dd> | 417 | </dd> |
| 408 | 418 | ||
| 409 | <dd ng-repeat="cell in info track by $index" | 419 | <dd ng-repeat="cell in info track by $index" |
| 410 | ng-init="colIndex = $index" | 420 | ng-init="colIndex = $index" |
| 411 | ng-if="$index == 3" style="border-right: 2px solid #96b9d7;"> | 421 | ng-if="$index == 3" style="border-right: 2px solid #96b9d7;"> |
| 412 | - {{cell.fcsj}} | 422 | + {{cell.clZbh}} |
| 413 | </dd> | 423 | </dd> |
| 414 | 424 | ||
| 415 | </dl> | 425 | </dl> |
| @@ -438,16 +448,18 @@ | @@ -438,16 +448,18 @@ | ||
| 438 | 448 | ||
| 439 | <dd ng-repeat="cell in info track by $index" | 449 | <dd ng-repeat="cell in info track by $index" |
| 440 | ng-init="colIndex = $index" | 450 | ng-init="colIndex = $index" |
| 451 | + ng-click="$saPlanInfoViewCtrl.$$cell_click(rowIndex, colIndex, cell)" | ||
| 452 | + ng-dblclick="$saPlanInfoViewCtrl.$$cell_dbclick(rowIndex, colIndex, cell)" | ||
| 441 | ng-if="$index > 3" | 453 | ng-if="$index > 3" |
| 442 | ng-class="{ | 454 | ng-class="{ |
| 443 | lpName: true, | 455 | lpName: true, |
| 444 | error: false, | 456 | error: false, |
| 445 | - active: false, | 457 | + active: cell.sel, |
| 446 | ists: false, | 458 | ists: false, |
| 447 | region: false, | 459 | region: false, |
| 448 | isfb: false, | 460 | isfb: false, |
| 449 | - outbc: cell.bc_type == 'out', | ||
| 450 | - inbc: cell.bc_type == 'in' | 461 | + outbc: cell.bcType == 'out', |
| 462 | + inbc: cell.bcType == 'in' | ||
| 451 | }"> | 463 | }"> |
| 452 | {{cell.fcsj}} | 464 | {{cell.fcsj}} |
| 453 | </dd> | 465 | </dd> |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
| @@ -6622,7 +6622,8 @@ angular.module('ScheduleApp').directive( | @@ -6622,7 +6622,8 @@ angular.module('ScheduleApp').directive( | ||
| 6622 | restrict: 'E', | 6622 | restrict: 'E', |
| 6623 | templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoViewTemplate.html', | 6623 | templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoViewTemplate.html', |
| 6624 | scope: { // 独立作用域 | 6624 | scope: { // 独立作用域 |
| 6625 | - ds: "=ngModel" | 6625 | + ds: "=ngModel", |
| 6626 | + celldbclickFn: "&celldbclick", | ||
| 6626 | }, | 6627 | }, |
| 6627 | controllerAs: "$saPlanInfoViewCtrl", | 6628 | controllerAs: "$saPlanInfoViewCtrl", |
| 6628 | bindToController: true, | 6629 | bindToController: true, |
| @@ -6644,8 +6645,10 @@ angular.module('ScheduleApp').directive( | @@ -6644,8 +6645,10 @@ angular.module('ScheduleApp').directive( | ||
| 6644 | throw new Error("saPlanInfoView指令 name属性required"); | 6645 | throw new Error("saPlanInfoView指令 name属性required"); |
| 6645 | } | 6646 | } |
| 6646 | 6647 | ||
| 6648 | + var $attr_celldbclick = tAttrs["celldbclick"]; // 单元格双击事件名 | ||
| 6649 | + | ||
| 6647 | // 内部controlAs名字 | 6650 | // 内部controlAs名字 |
| 6648 | - var ctrlAs = '$saTimeTableCtrl'; | 6651 | + var ctrlAs = '$saPlanInfoViewCtrl'; |
| 6649 | 6652 | ||
| 6650 | return { | 6653 | return { |
| 6651 | pre: function(scope, element, attr) { | 6654 | pre: function(scope, element, attr) { |
| @@ -6654,6 +6657,23 @@ angular.module('ScheduleApp').directive( | @@ -6654,6 +6657,23 @@ angular.module('ScheduleApp').directive( | ||
| 6654 | }, | 6657 | }, |
| 6655 | post: function(scope, element, attr) { | 6658 | post: function(scope, element, attr) { |
| 6656 | // TODO: | 6659 | // TODO: |
| 6660 | + | ||
| 6661 | + // ------------------- dom事件处理function -----------------// | ||
| 6662 | + scope[ctrlAs].$$cell_click = function(rowindex, colindex, cell) { | ||
| 6663 | + console.log("click " + "row=" + rowindex + ",col=" + colindex); | ||
| 6664 | + if (cell.id) { // 有排班明细id的cell才能操作 | ||
| 6665 | + cell.sel = !cell.sel; // 是否选中toggle | ||
| 6666 | + } | ||
| 6667 | + | ||
| 6668 | + }; | ||
| 6669 | + scope[ctrlAs].$$cell_dbclick = function(rowindex, colindex, cell) { | ||
| 6670 | + if (cell.id) { // 有排班明细id的cell才能操作 | ||
| 6671 | + if ($attr_celldbclick) { | ||
| 6672 | + // 注意调用方法 | ||
| 6673 | + scope[ctrlAs].celldbclickFn()(rowindex, colindex); | ||
| 6674 | + } | ||
| 6675 | + } | ||
| 6676 | + }; | ||
| 6657 | } | 6677 | } |
| 6658 | 6678 | ||
| 6659 | }; | 6679 | }; |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-ui-route-state.js
| @@ -970,7 +970,7 @@ ScheduleApp.config([ | @@ -970,7 +970,7 @@ ScheduleApp.config([ | ||
| 970 | }] | 970 | }] |
| 971 | } | 971 | } |
| 972 | }) | 972 | }) |
| 973 | - .state("schedulePlanInfoExtFormManage_edit", { // 修改套跑form | 973 | + .state("schedulePlanInfoExtFormManage_edit", { // 调整路牌班次人员 |
| 974 | url: '/schedulePlanInfoExtFormManage_edit/:xlId/:xlName/:sd/:lpId/:lpName', | 974 | url: '/schedulePlanInfoExtFormManage_edit/:xlId/:xlName/:sd/:lpId/:lpName', |
| 975 | views: { | 975 | views: { |
| 976 | "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit.html'} | 976 | "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit.html'} |
| @@ -988,10 +988,30 @@ ScheduleApp.config([ | @@ -988,10 +988,30 @@ ScheduleApp.config([ | ||
| 988 | }); | 988 | }); |
| 989 | }] | 989 | }] |
| 990 | } | 990 | } |
| 991 | + }) | ||
| 992 | + .state("schedulePlanReportExtManageListEdit", { // 修改班次信息 | ||
| 993 | + url: '/schedulePlanReportExtManageListEdit/:spInfoId', | ||
| 994 | + views: { | ||
| 995 | + "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit-detail.html'} | ||
| 996 | + }, | ||
| 997 | + resolve: { | ||
| 998 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | ||
| 999 | + return $ocLazyLoad.load({ | ||
| 1000 | + name: 'schedulePlanManage_module', | ||
| 1001 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | ||
| 1002 | + files: [ | ||
| 1003 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | ||
| 1004 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | ||
| 1005 | + "pages/scheduleApp/module/core/schedulePlanManage/report/ext/module.js" | ||
| 1006 | + ] | ||
| 1007 | + }); | ||
| 1008 | + }] | ||
| 1009 | + } | ||
| 991 | }); | 1010 | }); |
| 992 | 1011 | ||
| 993 | } | 1012 | } |
| 994 | -]); | 1013 | +]); |
| 1014 | + | ||
| 995 | // ui route 配置 | 1015 | // ui route 配置 |
| 996 | 1016 | ||
| 997 | /** 排班规则模块配置route */ | 1017 | /** 排班规则模块配置route */ |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit-detail.html
0 → 100644
| 1 | +<div ng-controller="SchedulePlanReportExtManageListEditCtrl as ctrl"> | ||
| 2 | + <div class="page-head"> | ||
| 3 | + <div class="page-title"> | ||
| 4 | + <h1>修改班次信息</h1> | ||
| 5 | + </div> | ||
| 6 | + </div> | ||
| 7 | + | ||
| 8 | + <ul class="page-breadcrumb breadcrumb"> | ||
| 9 | + <li> | ||
| 10 | + <a href="/pages/home.html" data-pjax>首页</a> | ||
| 11 | + <i class="fa fa-circle"></i> | ||
| 12 | + </li> | ||
| 13 | + <li> | ||
| 14 | + <span class="active">运营计划管理</span> | ||
| 15 | + <i class="fa fa-circle"></i> | ||
| 16 | + </li> | ||
| 17 | + <li> | ||
| 18 | + <a ui-sref="schedulePlanReportExtManage">调度值勤日报</a> | ||
| 19 | + <i class="fa fa-circle"></i> | ||
| 20 | + </li> | ||
| 21 | + <li> | ||
| 22 | + <span class="active">修改班次信息</span> | ||
| 23 | + </li> | ||
| 24 | + </ul> | ||
| 25 | + | ||
| 26 | + <div class="portlet light bordered"> | ||
| 27 | + <div class="portlet-title"> | ||
| 28 | + <div class="caption caption-subject font-red-sunglo bold uppercase"> | ||
| 29 | + <span ng-bind="ctrl.headInfo.xlName"></span> | ||
| 30 | + 当前排班日期 | ||
| 31 | + <span ng-bind="ctrl.schedulePlanInfoForSave.scheduleDate | date: 'yyyy年MM月dd日'"></span> | ||
| 32 | + </div> | ||
| 33 | + </div> | ||
| 34 | + | ||
| 35 | + <div class="portlet-body form"> | ||
| 36 | + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm"> | ||
| 37 | + <div class="form-body"> | ||
| 38 | + <div class="form-group has-success has-feedback"> | ||
| 39 | + <label class="col-md-2 control-label">线路:</label> | ||
| 40 | + <div class="col-md-3"> | ||
| 41 | + <input type="text" class="form-control" | ||
| 42 | + ng-value="ctrl.headInfo.xlName" | ||
| 43 | + readonly/> | ||
| 44 | + </div> | ||
| 45 | + | ||
| 46 | + </div> | ||
| 47 | + <div class="form-group has-success has-feedback"> | ||
| 48 | + <label class="col-md-2 control-label">路牌:</label> | ||
| 49 | + <div class="col-md-3"> | ||
| 50 | + <input type="text" class="form-control" | ||
| 51 | + ng-value="ctrl.headInfo.lpName" | ||
| 52 | + readonly/> | ||
| 53 | + </div> | ||
| 54 | + | ||
| 55 | + </div> | ||
| 56 | + <div class="form-group has-success has-feedback"> | ||
| 57 | + <label class="col-md-2 control-label">驾驶员:</label> | ||
| 58 | + <div class="col-md-3"> | ||
| 59 | + <input type="text" class="form-control" | ||
| 60 | + ng-value="ctrl.headInfo.jName" | ||
| 61 | + readonly/> | ||
| 62 | + </div> | ||
| 63 | + | ||
| 64 | + </div> | ||
| 65 | + | ||
| 66 | + <div class="form-group has-success has-feedback"> | ||
| 67 | + <label class="col-md-2 control-label">自编号:</label> | ||
| 68 | + <div class="col-md-3"> | ||
| 69 | + <input type="text" class="form-control" | ||
| 70 | + ng-value="ctrl.headInfo.clZbh" | ||
| 71 | + readonly/> | ||
| 72 | + </div> | ||
| 73 | + | ||
| 74 | + </div> | ||
| 75 | + | ||
| 76 | + <div class="form-group has-success has-feedback"> | ||
| 77 | + <label class="col-md-2 control-label">车牌号:</label> | ||
| 78 | + <div class="col-md-3"> | ||
| 79 | + <input type="text" class="form-control" | ||
| 80 | + ng-value="ctrl.headInfo.clCph" | ||
| 81 | + readonly/> | ||
| 82 | + </div> | ||
| 83 | + | ||
| 84 | + </div> | ||
| 85 | + | ||
| 86 | + <!--<div class="form-group has-success has-feedback">--> | ||
| 87 | + <!--<label class="col-md-2 control-label">方向*:</label>--> | ||
| 88 | + <!--<div class="col-md-3">--> | ||
| 89 | + <!--<sa-Radiogroup model="ctrl.TimeTableDetailForSave.xlDir" dicgroup="LineTrend" name="xlDir" required></sa-Radiogroup>--> | ||
| 90 | + <!--</div>--> | ||
| 91 | + <!--<!– 隐藏块,显示验证信息 –>--> | ||
| 92 | + <!--<div class="alert alert-danger well-sm" ng-show="myForm.xlDir.$error.required">--> | ||
| 93 | + <!--请选择线路上下行--> | ||
| 94 | + <!--</div>--> | ||
| 95 | + | ||
| 96 | + <!--</div>--> | ||
| 97 | + | ||
| 98 | + <div class="form-group has-success has-feedback"> | ||
| 99 | + <label class="col-md-2 control-label">起点站:</label> | ||
| 100 | + <div class="col-md-3"> | ||
| 101 | + <input type="text" class="form-control" | ||
| 102 | + ng-value="ctrl.schedulePlanInfoForSave.qdzName" | ||
| 103 | + readonly/> | ||
| 104 | + </div> | ||
| 105 | + | ||
| 106 | + </div> | ||
| 107 | + | ||
| 108 | + <div class="form-group has-success has-feedback"> | ||
| 109 | + <label class="col-md-2 control-label">终点站:</label> | ||
| 110 | + <div class="col-md-3"> | ||
| 111 | + <input type="text" class="form-control" | ||
| 112 | + ng-value="ctrl.schedulePlanInfoForSave.zdzName" | ||
| 113 | + readonly/> | ||
| 114 | + </div> | ||
| 115 | + | ||
| 116 | + </div> | ||
| 117 | + | ||
| 118 | + <div class="form-group has-success has-feedback"> | ||
| 119 | + <label class="col-md-2 control-label">发车时间*:</label> | ||
| 120 | + <div class="col-md-3"> | ||
| 121 | + <input type="text" class="form-control" name="fcsj" | ||
| 122 | + ng-model="ctrl.schedulePlanInfoForSave.fcsj" | ||
| 123 | + ng-pattern="ctrl.time_regex" | ||
| 124 | + required /> | ||
| 125 | + </div> | ||
| 126 | + <!-- 隐藏块,显示验证信息 --> | ||
| 127 | + <div class="alert alert-danger well-sm" ng-show="myForm.fcsj.$error.required"> | ||
| 128 | + 发车时间必须填写 | ||
| 129 | + </div> | ||
| 130 | + <div class="alert alert-danger well-sm" ng-show="myForm.fcsj.$error.pattern"> | ||
| 131 | + 时间格式错误,应该是格式hh:mm,如:06:39 | ||
| 132 | + </div> | ||
| 133 | + | ||
| 134 | + </div> | ||
| 135 | + | ||
| 136 | + <div class="form-group has-success has-feedback"> | ||
| 137 | + <label class="col-md-2 control-label">计划里程*:</label> | ||
| 138 | + <div class="col-md-3"> | ||
| 139 | + <input type="text" class="form-control" name="jhlc" | ||
| 140 | + ng-model="ctrl.schedulePlanInfoForSave.jhlc" required ng-pattern="ctrl.float_regex" | ||
| 141 | + /> | ||
| 142 | + </div> | ||
| 143 | + <!-- 隐藏块,显示验证信息 --> | ||
| 144 | + <div class="alert alert-danger well-sm" ng-show="myForm.jhlc.$error.required"> | ||
| 145 | + 计划里程必须填写 | ||
| 146 | + </div> | ||
| 147 | + <div class="alert alert-danger well-sm" ng-show="myForm.jhlc.$error.pattern"> | ||
| 148 | + 输入数字 | ||
| 149 | + </div> | ||
| 150 | + | ||
| 151 | + </div> | ||
| 152 | + <div class="form-group has-success has-feedback"> | ||
| 153 | + <label class="col-md-2 control-label">班次历时*:</label> | ||
| 154 | + <div class="col-md-3"> | ||
| 155 | + <input type="text" class="form-control" name="bcsj" | ||
| 156 | + ng-model="ctrl.schedulePlanInfoForSave.bcsj" required ng-pattern="ctrl.number_regex" | ||
| 157 | + /> | ||
| 158 | + </div> | ||
| 159 | + <!-- 隐藏块,显示验证信息 --> | ||
| 160 | + <div class="alert alert-danger well-sm" ng-show="myForm.bcsj.$error.required"> | ||
| 161 | + 班次时间必须填写 | ||
| 162 | + </div> | ||
| 163 | + <div class="alert alert-danger well-sm" ng-show="myForm.bcsj.$error.pattern"> | ||
| 164 | + 输入整数 | ||
| 165 | + </div> | ||
| 166 | + | ||
| 167 | + </div> | ||
| 168 | + | ||
| 169 | + <div class="form-group has-success has-feedback"> | ||
| 170 | + <label class="col-md-2 control-label">班次类型*:</label> | ||
| 171 | + <div class="col-md-3"> | ||
| 172 | + <sa-Select5 name="bcType" | ||
| 173 | + model="ctrl.schedulePlanInfoForSave" | ||
| 174 | + cmaps="{'bcType': 'code'}" | ||
| 175 | + dcname="bcType" | ||
| 176 | + icname="code" | ||
| 177 | + dsparams="{{ {type: 'dic', param: 'ScheduleType' } | json }}" | ||
| 178 | + iterobjname="item" | ||
| 179 | + iterobjexp="item.name" | ||
| 180 | + searchph="请选择班次类型..." | ||
| 181 | + searchexp="this.name" | ||
| 182 | + required | ||
| 183 | + > | ||
| 184 | + </sa-Select5> | ||
| 185 | + </div> | ||
| 186 | + <!-- 隐藏块,显示验证信息 --> | ||
| 187 | + <div class="alert alert-danger well-sm" ng-show="myForm.bcType.$error.required"> | ||
| 188 | + 班次类型必须选择 | ||
| 189 | + </div> | ||
| 190 | + | ||
| 191 | + </div> | ||
| 192 | + | ||
| 193 | + </div> | ||
| 194 | + | ||
| 195 | + <div class="form-actions"> | ||
| 196 | + <div class="row"> | ||
| 197 | + <div class="col-md-offset-3 col-md-4"> | ||
| 198 | + <button type="submit" class="btn green" | ||
| 199 | + ng-disabled="!myForm.$valid"><i class="fa fa-check"></i> 提交</button> | ||
| 200 | + <a type="button" class="btn default" | ||
| 201 | + href="javascript:" ng-click="ctrl.cancel()" ><i class="fa fa-times"></i> 取消</a> | ||
| 202 | + </div> | ||
| 203 | + </div> | ||
| 204 | + </div> | ||
| 205 | + </form> | ||
| 206 | + | ||
| 207 | + </div> | ||
| 208 | + </div> | ||
| 209 | + | ||
| 210 | + | ||
| 211 | + | ||
| 212 | + | ||
| 213 | +</div> |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/list.html
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | </div> | 32 | </div> |
| 33 | </div> | 33 | </div> |
| 34 | 34 | ||
| 35 | - <sa-Planinfoview name="saPlanView" ng-model="ctrl.saPlanInfoViewData.infos" ng-model-options="{ getterSetter: true }" > | 35 | + <sa-Planinfoview name="saPlanView" ng-model="ctrl.saPlanInfoViewData.infos" ng-model-options="{ getterSetter: true }" celldbclick="ctrl.singleEditBcDetail"> |
| 36 | </sa-Planinfoview> | 36 | </sa-Planinfoview> |
| 37 | </div> | 37 | </div> |
| 38 | 38 |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/module.js
| @@ -9,11 +9,27 @@ angular.module('ScheduleApp').factory( | @@ -9,11 +9,27 @@ angular.module('ScheduleApp').factory( | ||
| 9 | function(service, service2, $q) { | 9 | function(service, service2, $q) { |
| 10 | /** 当前的查询条件信息 */ | 10 | /** 当前的查询条件信息 */ |
| 11 | var currentSearchCondition = {}; | 11 | var currentSearchCondition = {}; |
| 12 | + /** 当前视图Id 0:值勤日报视图 1:预览编辑视图 */ | ||
| 13 | + var viewId = 0; | ||
| 12 | 14 | ||
| 13 | // 查询对象 | 15 | // 查询对象 |
| 14 | var queryClass = service.rest; | 16 | var queryClass = service.rest; |
| 15 | 17 | ||
| 16 | return { | 18 | return { |
| 19 | + getViewId: function() { | ||
| 20 | + return viewId; | ||
| 21 | + }, | ||
| 22 | + // callbackFun回调函数,参数1:上一个视图id,参数2:当前视图Id | ||
| 23 | + switchView: function(callbackFun) { | ||
| 24 | + if (viewId === 0) { | ||
| 25 | + viewId = 1; | ||
| 26 | + callbackFun(0, 1); | ||
| 27 | + } else { | ||
| 28 | + viewId = 0; | ||
| 29 | + callbackFun(1, 0); | ||
| 30 | + } | ||
| 31 | + }, | ||
| 32 | + | ||
| 17 | getQueryClass: function() { | 33 | getQueryClass: function() { |
| 18 | return queryClass; | 34 | return queryClass; |
| 19 | }, | 35 | }, |
| @@ -290,32 +306,35 @@ angular.module('ScheduleApp').controller( | @@ -290,32 +306,35 @@ angular.module('ScheduleApp').controller( | ||
| 290 | self.saPlanInfoViewData = { | 306 | self.saPlanInfoViewData = { |
| 291 | infos: {} | 307 | infos: {} |
| 292 | }; | 308 | }; |
| 293 | - self.viewId = 0; | 309 | + self.viewId = service.getViewId(); |
| 310 | + | ||
| 311 | + if (self.viewId === 1) { // 是从其他state转换过来的,数据也需要初始化一次 | ||
| 312 | + service.getSaPlanInfoViewData().then( | ||
| 313 | + function(rst) { | ||
| 314 | + self.saPlanInfoViewData.infos = rst; | ||
| 315 | + | ||
| 316 | + console.log(self.saPlanInfoViewData.infos); | ||
| 317 | + }, | ||
| 318 | + function(err) { | ||
| 319 | + | ||
| 320 | + } | ||
| 321 | + ); | ||
| 322 | + } | ||
| 323 | + | ||
| 294 | self.switchView = function() { | 324 | self.switchView = function() { |
| 295 | - if (self.viewId === 0) { | ||
| 296 | - self.viewId = 1; | ||
| 297 | - if (service.getSaPlanInfoViewData() != null) { | ||
| 298 | - service.getSaPlanInfoViewData().then( | 325 | + var saPlanInfoViewDataPromise = service.getSaPlanInfoViewData(); |
| 326 | + if (saPlanInfoViewDataPromise == null) { | ||
| 327 | + alert("请选择线路和排班日期!"); | ||
| 328 | + return; | ||
| 329 | + } | ||
| 330 | + | ||
| 331 | + service.switchView(function(preViewId, currentViewId) { | ||
| 332 | + self.viewId = currentViewId; | ||
| 333 | + if (currentViewId === 1) { | ||
| 334 | + saPlanInfoViewDataPromise.then( | ||
| 299 | function(rst) { | 335 | function(rst) { |
| 300 | self.saPlanInfoViewData.infos = rst; | 336 | self.saPlanInfoViewData.infos = rst; |
| 301 | 337 | ||
| 302 | - /* | ||
| 303 | - 注意:后台是没有传过来班次类型,这里通过head来判定是否进出场班次 | ||
| 304 | - TODO:如果以后要标识新的班次类型,甚至要修改班次内容,后台可能要大改(可能要改回时刻表编辑的做法) | ||
| 305 | - TODO:注意,调度执勤日报时刻表视图后台etl用的是导出的etl,所以要加复杂功能的话可能还得拆成2个etl | ||
| 306 | - */ | ||
| 307 | - var _headers = rst.header; | ||
| 308 | - for (var i = 0; i < rst.contents.length; i++) { | ||
| 309 | - for (var j = 0; j < rst.contents[i].length; j++) { | ||
| 310 | - if (_headers[j].indexOf("出场") >= 0) { | ||
| 311 | - self.saPlanInfoViewData.infos.contents[i][j].bc_type = "out"; | ||
| 312 | - } | ||
| 313 | - if (_headers[j].indexOf("进场") >= 0) { | ||
| 314 | - self.saPlanInfoViewData.infos.contents[i][j].bc_type = "in"; | ||
| 315 | - } | ||
| 316 | - } | ||
| 317 | - } | ||
| 318 | - | ||
| 319 | console.log(self.saPlanInfoViewData.infos); | 338 | console.log(self.saPlanInfoViewData.infos); |
| 320 | }, | 339 | }, |
| 321 | function(err) { | 340 | function(err) { |
| @@ -323,19 +342,103 @@ angular.module('ScheduleApp').controller( | @@ -323,19 +342,103 @@ angular.module('ScheduleApp').controller( | ||
| 323 | } | 342 | } |
| 324 | ); | 343 | ); |
| 325 | } | 344 | } |
| 326 | - } else { | ||
| 327 | - self.viewId = 0; | ||
| 328 | - } | 345 | + }); |
| 329 | }; | 346 | }; |
| 330 | 347 | ||
| 331 | self.ttHeight = 500; // sa-Planinfoview组件的高度 | 348 | self.ttHeight = 500; // sa-Planinfoview组件的高度 |
| 332 | 349 | ||
| 333 | 350 | ||
| 351 | + | ||
| 352 | + /** | ||
| 353 | + * 单独修改班次明细。 | ||
| 354 | + */ | ||
| 355 | + self.singleEditBcDetail = function(rowNum, colNum) { | ||
| 356 | + | ||
| 357 | + console.log(rowNum + "," + colNum); | ||
| 358 | + | ||
| 359 | + $state.go('schedulePlanReportExtManageListEdit', | ||
| 360 | + { | ||
| 361 | + spInfoId: self.saPlanInfoViewData.infos.contents[rowNum][colNum]["id"] | ||
| 362 | + }); | ||
| 363 | + }; | ||
| 364 | + | ||
| 334 | } | 365 | } |
| 335 | 366 | ||
| 336 | ] | 367 | ] |
| 337 | ); | 368 | ); |
| 338 | 369 | ||
| 370 | +// edit.detail页面 | ||
| 371 | +angular.module('ScheduleApp').controller( | ||
| 372 | + 'SchedulePlanReportExtManageListEditCtrl', | ||
| 373 | + [ | ||
| 374 | + 'SchedulePlanInfoManageService_g', | ||
| 375 | + 'BusInfoManageService_g', | ||
| 376 | + '$stateParams', | ||
| 377 | + '$state', | ||
| 378 | + 'SaTimeTableUtils', | ||
| 379 | + function(spInfoservice, carService, $stateParams, $state, SaTimeTableUtils) { | ||
| 380 | + var self = this; | ||
| 381 | + | ||
| 382 | + console.log($stateParams.spInfoId); | ||
| 383 | + | ||
| 384 | + // 其他的显示数据 | ||
| 385 | + self.headInfo = { | ||
| 386 | + xlName: '', // 线路名称 | ||
| 387 | + lpName: '', // 路牌名称 | ||
| 388 | + jName: '', // 驾驶员 | ||
| 389 | + clZbh: '', // 自编号 | ||
| 390 | + clCph: '', // 车牌号 | ||
| 391 | + }; | ||
| 392 | + | ||
| 393 | + // 排班明细对象 | ||
| 394 | + var SchedulePlanInfo = spInfoservice.rest; | ||
| 395 | + // 车辆信息对象 | ||
| 396 | + var Cars = carService.rest; | ||
| 397 | + | ||
| 398 | + // 保存的排班明细数据 | ||
| 399 | + self.schedulePlanInfoForSave = {}; | ||
| 400 | + // 获取数据 | ||
| 401 | + SchedulePlanInfo.get({id: $stateParams.spInfoId}, function(value) { | ||
| 402 | + self.schedulePlanInfoForSave = value; | ||
| 403 | + | ||
| 404 | + self.headInfo['xlName'] = value['xlName']; | ||
| 405 | + self.headInfo['lpName'] = value['lpName']; | ||
| 406 | + self.headInfo['jName'] = value['jName']; | ||
| 407 | + self.headInfo['clZbh'] = value['clZbh']; | ||
| 408 | + | ||
| 409 | + Cars.get({id: value.cl}, function(value2) { | ||
| 410 | + self.headInfo['clCph'] = value2['carPlate']; | ||
| 411 | + }); | ||
| 412 | + }); | ||
| 413 | + | ||
| 414 | + // 时间正则表达式(格式hh:mm,如:06:39) | ||
| 415 | + self.time_regex = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/; | ||
| 416 | + // 整数 | ||
| 417 | + self.number_regex = /^-?\d+$/; | ||
| 418 | + // 小数 | ||
| 419 | + self.float_regex = /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/; | ||
| 420 | + | ||
| 421 | + // 提交方法 | ||
| 422 | + self.submit = function() { | ||
| 423 | + self.schedulePlanInfoForSave.$save(function() { | ||
| 424 | + $state.go("schedulePlanReportExtManage"); | ||
| 425 | + }); | ||
| 426 | + }; | ||
| 427 | + // 取消方法 | ||
| 428 | + self.cancel = function() { | ||
| 429 | + $state.go("schedulePlanReportExtManage"); | ||
| 430 | + }; | ||
| 431 | + | ||
| 432 | + } | ||
| 433 | + ] | ||
| 434 | +); | ||
| 435 | + | ||
| 436 | + | ||
| 437 | + | ||
| 438 | + | ||
| 439 | + | ||
| 440 | + | ||
| 441 | + | ||
| 339 | // edit.html页面 | 442 | // edit.html页面 |
| 340 | angular.module('ScheduleApp').controller( | 443 | angular.module('ScheduleApp').controller( |
| 341 | 'ScheduleRuleManageExtFormCtrl', | 444 | 'ScheduleRuleManageExtFormCtrl', |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/route.js
| @@ -34,7 +34,7 @@ ScheduleApp.config([ | @@ -34,7 +34,7 @@ ScheduleApp.config([ | ||
| 34 | }] | 34 | }] |
| 35 | } | 35 | } |
| 36 | }) | 36 | }) |
| 37 | - .state("schedulePlanInfoExtFormManage_edit", { // 修改套跑form | 37 | + .state("schedulePlanInfoExtFormManage_edit", { // 调整路牌班次人员 |
| 38 | url: '/schedulePlanInfoExtFormManage_edit/:xlId/:xlName/:sd/:lpId/:lpName', | 38 | url: '/schedulePlanInfoExtFormManage_edit/:xlId/:xlName/:sd/:lpId/:lpName', |
| 39 | views: { | 39 | views: { |
| 40 | "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit.html'} | 40 | "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit.html'} |
| @@ -52,7 +52,26 @@ ScheduleApp.config([ | @@ -52,7 +52,26 @@ ScheduleApp.config([ | ||
| 52 | }); | 52 | }); |
| 53 | }] | 53 | }] |
| 54 | } | 54 | } |
| 55 | + }) | ||
| 56 | + .state("schedulePlanReportExtManageListEdit", { // 修改班次信息 | ||
| 57 | + url: '/schedulePlanReportExtManageListEdit/:spInfoId', | ||
| 58 | + views: { | ||
| 59 | + "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit-detail.html'} | ||
| 60 | + }, | ||
| 61 | + resolve: { | ||
| 62 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | ||
| 63 | + return $ocLazyLoad.load({ | ||
| 64 | + name: 'schedulePlanManage_module', | ||
| 65 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | ||
| 66 | + files: [ | ||
| 67 | + "assets/bower_components/angular-ui-select/dist/select.min.css", | ||
| 68 | + "assets/bower_components/angular-ui-select/dist/select.min.js", | ||
| 69 | + "pages/scheduleApp/module/core/schedulePlanManage/report/ext/module.js" | ||
| 70 | + ] | ||
| 71 | + }); | ||
| 72 | + }] | ||
| 73 | + } | ||
| 55 | }); | 74 | }); |
| 56 | 75 | ||
| 57 | } | 76 | } |
| 58 | -]); | ||
| 59 | \ No newline at end of file | 77 | \ No newline at end of file |
| 78 | +]); |