Commit 3c5c09aad19d438c7f8bb5064e196190d43e59cc
Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing
64 changed files
with
2543 additions
and
568 deletions
src/main/java/com/bsth/controller/SectionRouteController.java
| ... | ... | @@ -35,6 +35,16 @@ public class SectionRouteController extends BaseController<SectionRoute, Integer |
| 35 | 35 | @Autowired |
| 36 | 36 | SectionRouteService routeService; |
| 37 | 37 | |
| 38 | + /** | |
| 39 | + * @param String | |
| 40 | + * @throws | |
| 41 | + * @Description: TODO(批量撤销路段) | |
| 42 | + */ | |
| 43 | + @RequestMapping(value = "/batchDestroy", method = RequestMethod.GET) | |
| 44 | + public Map<String, Object> updateBatch(@RequestParam Map<String, Object> map) { | |
| 45 | + return routeService.updateSectionRouteInfoFormId(map); | |
| 46 | + } | |
| 47 | + | |
| 38 | 48 | /** |
| 39 | 49 | * @param @param map |
| 40 | 50 | * @throws | ... | ... |
src/main/java/com/bsth/controller/StationRouteController.java
| ... | ... | @@ -47,6 +47,16 @@ public class StationRouteController extends BaseController<StationRoute, Integer |
| 47 | 47 | return service.list(map); |
| 48 | 48 | } |
| 49 | 49 | |
| 50 | + /** | |
| 51 | + * @param String | |
| 52 | + * @throws | |
| 53 | + * @Description: TODO(批量撤销站点) | |
| 54 | + */ | |
| 55 | + @RequestMapping(value = "/batchDestroy", method = RequestMethod.GET) | |
| 56 | + public Map<String, Object> updateBatch(@RequestParam Map<String, Object> map) { | |
| 57 | + return service.updateStationRouteInfoFormId(map); | |
| 58 | + } | |
| 59 | + | |
| 50 | 60 | /** |
| 51 | 61 | * @Description :TODO(查询树站点与路段数据) |
| 52 | 62 | * | ... | ... |
src/main/java/com/bsth/controller/forms/ExportController.java
| ... | ... | @@ -87,6 +87,7 @@ public class ExportController { |
| 87 | 87 | public List<Map<String, Object>> shifdayExport(@RequestParam Map<String, Object> map) { |
| 88 | 88 | SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), sdfSimple = new SimpleDateFormat("yyyyMMdd"); |
| 89 | 89 | List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); |
| 90 | + Map<String, Object> map2 = new HashMap<String, Object>(); | |
| 90 | 91 | ReportUtils ee = new ReportUtils(); |
| 91 | 92 | List<Shifday> shifday = formsService.shifday(map); |
| 92 | 93 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| ... | ... | @@ -110,11 +111,15 @@ public class ExportController { |
| 110 | 111 | m.put("sjbc", l.getSjbc()); |
| 111 | 112 | resList.add(m); |
| 112 | 113 | } |
| 114 | + if(resList.size() > 0){ | |
| 115 | + map2 = resList.get(resList.size() - 1); | |
| 116 | + resList.remove(map2); | |
| 117 | + } | |
| 113 | 118 | |
| 114 | 119 | try { |
| 115 | 120 | listI.add(resList.iterator()); |
| 116 | 121 | String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; |
| 117 | - ee.excelReplace(listI, new Object[] { map }, path + "mould/shifday.xls", | |
| 122 | + ee.excelReplace(listI, new Object[] { map2 }, path + "mould/shifday.xls", | |
| 118 | 123 | path + "export/班次车辆人员日报表" + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls"); |
| 119 | 124 | } catch (Exception e) { |
| 120 | 125 | e.printStackTrace(); | ... | ... |
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| ... | ... | @@ -319,8 +319,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 319 | 319 | |
| 320 | 320 | @RequestMapping(value = "/correctForm") |
| 321 | 321 | public List<SchEditInfoDto> correctForm(@RequestParam String line, @RequestParam String date, |
| 322 | + @RequestParam String endDate, | |
| 322 | 323 | @RequestParam String lpName, @RequestParam String code, @RequestParam String type) { |
| 323 | - return scheduleRealInfoService.correctForm(line, date, lpName, code, type); | |
| 324 | + return scheduleRealInfoService.correctForm(line, date, endDate, lpName, code, type); | |
| 324 | 325 | } |
| 325 | 326 | /** |
| 326 | 327 | * @Title queryListWaybill | ... | ... |
src/main/java/com/bsth/controller/report/ReportController.java
| ... | ... | @@ -110,6 +110,7 @@ public class ReportController { |
| 110 | 110 | Map<String, Object> m = new HashMap<String, Object>(); |
| 111 | 111 | m.put("i", i); |
| 112 | 112 | m.put("nbbm", a.getNbbm()); |
| 113 | + m.put("pzh", a.getPzh()); | |
| 113 | 114 | m.put("stopName", a.getStopName()); |
| 114 | 115 | m.put("jzsj", a.getJzsj()); |
| 115 | 116 | m.put("czsj", a.getCzsj()); | ... | ... |
src/main/java/com/bsth/controller/report/SheetController.java
| ... | ... | @@ -36,9 +36,21 @@ public class SheetController extends BaseController<Sheet, Integer>{ |
| 36 | 36 | List<Sheet> list=sheetService.sheetList(id); |
| 37 | 37 | return list; |
| 38 | 38 | } |
| 39 | + @RequestMapping(value = "/exportList",method = RequestMethod.GET) | |
| 40 | + public List<Sheet> exportList(@RequestParam Integer id){ | |
| 41 | + List<Sheet> list=sheetService.exportList(id); | |
| 42 | + return list; | |
| 43 | + } | |
| 44 | + | |
| 39 | 45 | @RequestMapping(value = "/countList",method = RequestMethod.GET) |
| 40 | 46 | public List<Map<String, Object>> countList(@RequestParam Map<String, Object> map){ |
| 41 | 47 | List<Map<String, Object>> list=sheetService.countList(map); |
| 42 | 48 | return list; |
| 43 | 49 | } |
| 50 | + | |
| 51 | + @RequestMapping(value = "/listSheet",method = RequestMethod.GET) | |
| 52 | + public List<Map<String, Object>> listSheet(@RequestParam Map<String, Object> map){ | |
| 53 | + List<Map<String, Object>> list=sheetService.listSheet(map); | |
| 54 | + return list; | |
| 55 | + } | |
| 44 | 56 | } | ... | ... |
src/main/java/com/bsth/entity/Line.java
| ... | ... | @@ -94,6 +94,9 @@ public class Line implements Serializable { |
| 94 | 94 | |
| 95 | 95 | /** 是否夜宵线 <1:是;0:否> bit length(50)*/ |
| 96 | 96 | private Integer supperLine; |
| 97 | + | |
| 98 | + /** 是否营运 <1:是;0:否> bit length(50)*/ | |
| 99 | + private Integer sfyy; | |
| 97 | 100 | |
| 98 | 101 | /** 起始调度电话 varchar length(50) */ |
| 99 | 102 | private String startPhone; |
| ... | ... | @@ -481,4 +484,14 @@ public class Line implements Serializable { |
| 481 | 484 | public void setCgsbm(String cgsbm) { |
| 482 | 485 | this.cgsbm = cgsbm; |
| 483 | 486 | } |
| 487 | + | |
| 488 | + public Integer getSfyy() { | |
| 489 | + return sfyy; | |
| 490 | + } | |
| 491 | + | |
| 492 | + public void setSfyy(Integer sfyy) { | |
| 493 | + this.sfyy = sfyy; | |
| 494 | + } | |
| 495 | + | |
| 496 | + | |
| 484 | 497 | } | ... | ... |
src/main/java/com/bsth/entity/excep/ArrivalInfo.java
| ... | ... | @@ -20,6 +20,8 @@ public class ArrivalInfo { |
| 20 | 20 | |
| 21 | 21 | private String nbbm; |
| 22 | 22 | |
| 23 | + | |
| 24 | + private String pzh; | |
| 23 | 25 | /** 站点名称 */ |
| 24 | 26 | private String stopName; |
| 25 | 27 | |
| ... | ... | @@ -243,6 +245,14 @@ public class ArrivalInfo { |
| 243 | 245 | public void setJzsj(String jzsj) { |
| 244 | 246 | this.jzsj = jzsj; |
| 245 | 247 | } |
| 248 | + | |
| 249 | + public String getPzh() { | |
| 250 | + return pzh; | |
| 251 | + } | |
| 252 | + | |
| 253 | + public void setPzh(String pzh) { | |
| 254 | + this.pzh = pzh; | |
| 255 | + } | |
| 246 | 256 | |
| 247 | 257 | |
| 248 | 258 | ... | ... |
src/main/java/com/bsth/entity/mcy_forms/Changetochange.java
| ... | ... | @@ -12,6 +12,8 @@ public class Changetochange { |
| 12 | 12 | @GeneratedValue |
| 13 | 13 | private Integer id; |
| 14 | 14 | |
| 15 | + private Long sId; | |
| 16 | + | |
| 15 | 17 | private String rq;//日期 |
| 16 | 18 | |
| 17 | 19 | private String gs;//公司 |
| ... | ... | @@ -171,7 +173,15 @@ public class Changetochange { |
| 171 | 173 | public void setXgr(String xgr) { |
| 172 | 174 | this.xgr = xgr; |
| 173 | 175 | } |
| 174 | - | |
| 175 | 176 | |
| 177 | + public Long getsId() { | |
| 178 | + return sId; | |
| 179 | + } | |
| 180 | + | |
| 181 | + public void setsId(Long sId) { | |
| 182 | + this.sId = sId; | |
| 183 | + } | |
| 184 | + | |
| 185 | + | |
| 176 | 186 | |
| 177 | 187 | } | ... | ... |
src/main/java/com/bsth/repository/SectionRouteRepository.java
| ... | ... | @@ -175,6 +175,10 @@ public interface SectionRouteRepository extends BaseRepository<SectionRoute, Int |
| 175 | 175 | @Query(value="UPDATE bsth_c_sectionroute set sectionroute_code = (sectionroute_code+10) where line = ?1 and directions = ?2 and sectionroute_code >=?3 and destroy = 0", nativeQuery=true) |
| 176 | 176 | public void sectionUpdSectionRouteCode(Integer line,Integer dir,Integer routeCod); |
| 177 | 177 | |
| 178 | + @Modifying | |
| 179 | + @Query(value="UPDATE bsth_c_sectionroute set destroy = 1 where id = ?1", nativeQuery=true) | |
| 180 | + public void sectionRouteIsDestroyUpdBatch(Integer ids); | |
| 181 | + | |
| 178 | 182 | @Modifying |
| 179 | 183 | @Query(value="update bsth_c_sectionroute set directions = case directions when 1 then 0 when 0 then 1 end where line_code = ?1 ", nativeQuery=true) |
| 180 | 184 | public void sectionRouteDir(Integer line); | ... | ... |
src/main/java/com/bsth/repository/StationRouteRepository.java
| ... | ... | @@ -282,4 +282,8 @@ public interface StationRouteRepository extends BaseRepository<StationRoute, Int |
| 282 | 282 | @Modifying |
| 283 | 283 | @Query(value="UPDATE bsth_c_stationroute set station_route_code = (station_route_code+10) where line = ?1 and directions = ?2 and station_route_code >=?3 and destroy = 0", nativeQuery=true) |
| 284 | 284 | public void stationUpdStationRouteCode(Integer line,Integer dir,Integer routeCod); |
| 285 | + | |
| 286 | + @Modifying | |
| 287 | + @Query(value="UPDATE bsth_c_stationroute set destroy = 1 where id = ?1", nativeQuery=true) | |
| 288 | + public void stationRouteIsDestroyUpdBatch(Integer ids); | |
| 285 | 289 | } | ... | ... |
src/main/java/com/bsth/service/SectionRouteService.java
| ... | ... | @@ -33,6 +33,15 @@ public interface SectionRouteService extends BaseService<SectionRoute, Integer> |
| 33 | 33 | List<Map<String, Object>> getSectionRoute(Map<String, Object> map); |
| 34 | 34 | |
| 35 | 35 | /** |
| 36 | + * @Description : TODO(根据路段路由Id批量撤销路段) | |
| 37 | + * | |
| 38 | + * @param map <id:路段路由ID> | |
| 39 | + * | |
| 40 | + * @return List<Map<String, Object>> | |
| 41 | + */ | |
| 42 | + Map<String, Object> updateSectionRouteInfoFormId(Map<String, Object> map); | |
| 43 | + | |
| 44 | + /** | |
| 36 | 45 | * @Description : TODO(根据路段路由Id查询详情) |
| 37 | 46 | * |
| 38 | 47 | * @param map <id:路段路由ID> | ... | ... |
src/main/java/com/bsth/service/StationRouteService.java
| ... | ... | @@ -31,6 +31,15 @@ public interface StationRouteService extends BaseService<StationRoute, Integer> |
| 31 | 31 | Iterable<StationRoute> list(Map<String, Object> map); |
| 32 | 32 | |
| 33 | 33 | /** |
| 34 | + * @Description : TODO(根据路段站点Id批量撤销站点) | |
| 35 | + * | |
| 36 | + * @param map <id:站点路由ID> | |
| 37 | + * | |
| 38 | + * @return List<Map<String, Object>> | |
| 39 | + */ | |
| 40 | + Map<String, Object> updateStationRouteInfoFormId(Map<String, Object> map); | |
| 41 | + | |
| 42 | + /** | |
| 34 | 43 | * @Description :TODO(查询树站点与路段数据) |
| 35 | 44 | * |
| 36 | 45 | * @param map <line.id_eq:线路ID; directions_eq:方向> |
| ... | ... | @@ -92,4 +101,5 @@ public interface StationRouteService extends BaseService<StationRoute, Integer> |
| 92 | 101 | Map<String, Object> updSwitchDir(String lineIds); |
| 93 | 102 | |
| 94 | 103 | Map<String, Object> upddis(Map<String, Object> map); |
| 104 | + | |
| 95 | 105 | } | ... | ... |
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
| ... | ... | @@ -806,23 +806,38 @@ public class FormsServiceImpl implements FormsService { |
| 806 | 806 | return d; |
| 807 | 807 | } |
| 808 | 808 | }); |
| 809 | + | |
| 810 | + Set<String> lineSet = new HashSet<String>(); | |
| 811 | + List<String> strList = new ArrayList<>(); | |
| 812 | + sql = "select name from bsth_c_line where sfyy = 0"; | |
| 813 | + strList = jdbcTemplate.query(sql, | |
| 814 | + new RowMapper<String>(){ | |
| 815 | + @Override | |
| 816 | + public String mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 817 | + return rs.getString("name"); | |
| 818 | + } | |
| 819 | + }); | |
| 820 | + lineSet.addAll(strList); | |
| 821 | + | |
| 809 | 822 | List<ScheduleRealInfo> listReal; |
| 810 | 823 | if(xlbm.equals("")){ |
| 811 | 824 | listReal=scheduleRealInfoRepository.scheduleByDateAndLineTj(xlbm, startDate, endDate, gsdm, fgsdm); |
| 812 | 825 | }else{ |
| 813 | 826 | listReal=scheduleRealInfoRepository.scheduleByDateAndLineTj2(xlbm, startDate, endDate); |
| 814 | 827 | } |
| 815 | - | |
| 828 | + List<Operationservice> resList = new ArrayList<Operationservice>(); | |
| 816 | 829 | for (int i = 0; i < list.size(); i++) { |
| 817 | 830 | Operationservice o=list.get(i); |
| 818 | 831 | String line=o.getXlBm(); |
| 819 | 832 | String xlname=BasicData.lineCode2NameMap.get(line); |
| 833 | + if(lineSet.contains(xlname)) | |
| 834 | + continue; | |
| 820 | 835 | o.setXlName(xlname); |
| 821 | 836 | |
| 822 | 837 | List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); |
| 823 | 838 | for (int j = 0; j < listReal.size(); j++) { |
| 824 | 839 | ScheduleRealInfo s=listReal.get(j); |
| 825 | - if(s.getXlBm().equals(line)){ | |
| 840 | + if(s.getXlBm().equals(line) && !lineSet.contains(s.getXlName())){ | |
| 826 | 841 | newList.add(s); |
| 827 | 842 | } |
| 828 | 843 | } |
| ... | ... | @@ -858,8 +873,10 @@ public class FormsServiceImpl implements FormsService { |
| 858 | 873 | |
| 859 | 874 | o.setJzl(String.valueOf(jzl)); |
| 860 | 875 | o.setXhl(String.valueOf(xhl)); |
| 876 | + | |
| 877 | + resList.add(o); | |
| 861 | 878 | } |
| 862 | - return list; | |
| 879 | + return resList; | |
| 863 | 880 | } |
| 864 | 881 | |
| 865 | 882 | |
| ... | ... | @@ -949,6 +966,7 @@ public class FormsServiceImpl implements FormsService { |
| 949 | 966 | |
| 950 | 967 | List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); |
| 951 | 968 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 969 | + Set<String> lineSet = new HashSet<String>(); | |
| 952 | 970 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| 953 | 971 | SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日"); |
| 954 | 972 | NumberFormat numberFormat = NumberFormat.getInstance(); |
| ... | ... | @@ -1002,9 +1020,21 @@ public class FormsServiceImpl implements FormsService { |
| 1002 | 1020 | } |
| 1003 | 1021 | |
| 1004 | 1022 | }); |
| 1005 | - | |
| 1023 | + sql = "select name from bsth_c_line where sfyy = 0"; | |
| 1024 | + List<String> strList = new ArrayList<>(); | |
| 1025 | + strList = jdbcTemplate.query(sql, | |
| 1026 | + new RowMapper<String>(){ | |
| 1027 | + @Override | |
| 1028 | + public String mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 1029 | + return rs.getString("name"); | |
| 1030 | + } | |
| 1031 | + }); | |
| 1032 | + lineSet.addAll(strList); | |
| 1006 | 1033 | |
| 1007 | 1034 | for(Line line1 : lineList){ |
| 1035 | + if(lineSet.contains(line1.getName())){ | |
| 1036 | + continue; | |
| 1037 | + } | |
| 1008 | 1038 | if(line.trim().length() == 0 || line1.getLineCode().equals(line)){ |
| 1009 | 1039 | Map<String, Object> m = new HashMap<String, Object>(); |
| 1010 | 1040 | m.put("rq", rq); | ... | ... |
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
| ... | ... | @@ -460,7 +460,6 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 460 | 460 | if(!keyList.contains(key)) |
| 461 | 461 | keyList.add(key); |
| 462 | 462 | } |
| 463 | - System.out.println("key:"+key+" fcsj2:"+fcsj2+" fcsj1:"+fcsj2+" temp1:"+temp1.get(key)+" tem0:"+temp0.get(key)); | |
| 464 | 463 | temp1.get(key).add(fcsj2 - fcsj1); |
| 465 | 464 | } |
| 466 | 465 | } |
| ... | ... | @@ -562,7 +561,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 562 | 561 | if(l < 90) |
| 563 | 562 | fcsjs.add(l); |
| 564 | 563 | } |
| 565 | - if(temp0.containsKey(key)) | |
| 564 | + if(temp1.containsKey(key)) | |
| 566 | 565 | for(Long l : temp1.get(key)){ |
| 567 | 566 | if(l < 90) |
| 568 | 567 | fcsjAs.add(l); |
| ... | ... | @@ -1701,8 +1700,10 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1701 | 1700 | lc = schedule.getJhlc(); |
| 1702 | 1701 | } |
| 1703 | 1702 | |
| 1704 | - jhbc++; | |
| 1705 | - jhlc += lc; | |
| 1703 | + if(!schedule.isSflj()){ | |
| 1704 | + jhbc++; | |
| 1705 | + jhlc += lc; | |
| 1706 | + } | |
| 1706 | 1707 | if(schedule.getStatus() != -1){ |
| 1707 | 1708 | sjbc++; |
| 1708 | 1709 | sjlc += lc; |
| ... | ... | @@ -1928,7 +1929,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1928 | 1929 | int sjbc = 0, sddf = 0, zddf = 0, |
| 1929 | 1930 | dxtz = 0, lbtz = 0; |
| 1930 | 1931 | for(ScheduleRealInfo schedule : keyMap.get(key)){ |
| 1931 | - if(schedule.getFcsjActual() != null){ | |
| 1932 | + if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){ | |
| 1932 | 1933 | boolean flag = false; |
| 1933 | 1934 | sjbc++; |
| 1934 | 1935 | if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){ | ... | ... |
src/main/java/com/bsth/service/impl/SectionRouteServiceImpl.java
| ... | ... | @@ -5,10 +5,15 @@ import java.util.HashMap; |
| 5 | 5 | import java.util.List; |
| 6 | 6 | import java.util.Map; |
| 7 | 7 | |
| 8 | +import javax.persistence.EntityManager; | |
| 9 | +import javax.transaction.Transactional; | |
| 10 | + | |
| 8 | 11 | import org.springframework.beans.factory.annotation.Autowired; |
| 12 | +import org.springframework.beans.factory.annotation.Value; | |
| 9 | 13 | import org.springframework.data.domain.Sort; |
| 10 | 14 | import org.springframework.data.domain.Sort.Direction; |
| 11 | 15 | import org.springframework.stereotype.Service; |
| 16 | +import org.springframework.web.bind.annotation.RequestParam; | |
| 12 | 17 | |
| 13 | 18 | import com.bsth.common.ResponseCode; |
| 14 | 19 | import com.bsth.entity.Line; |
| ... | ... | @@ -49,6 +54,12 @@ public class SectionRouteServiceImpl extends BaseServiceImpl<SectionRoute, Integ |
| 49 | 54 | @Autowired |
| 50 | 55 | LineRepository lineRepository; |
| 51 | 56 | |
| 57 | + @Autowired | |
| 58 | + private EntityManager entityManager; | |
| 59 | + | |
| 60 | + @Value("${hibernate.jdbc.batch_size}") | |
| 61 | + private int batchSize; | |
| 62 | + | |
| 52 | 63 | @Override |
| 53 | 64 | public Iterable<SectionRoute> list(Map<String, Object> map) { |
| 54 | 65 | List<Sort.Order> orderList = new ArrayList<>(); |
| ... | ... | @@ -106,6 +117,9 @@ public class SectionRouteServiceImpl extends BaseServiceImpl<SectionRoute, Integ |
| 106 | 117 | return resultList; |
| 107 | 118 | } |
| 108 | 119 | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 109 | 123 | /** |
| 110 | 124 | * @Description : TODO(根据路段路由Id查询详情) |
| 111 | 125 | * |
| ... | ... | @@ -297,4 +311,33 @@ public class SectionRouteServiceImpl extends BaseServiceImpl<SectionRoute, Integ |
| 297 | 311 | } |
| 298 | 312 | return resultMap; |
| 299 | 313 | } |
| 314 | + | |
| 315 | + /** | |
| 316 | + * @Description : TODO(根据路段路由Id批量撤销路段) | |
| 317 | + * | |
| 318 | + * @param map <id:路段路由ID> | |
| 319 | + */ | |
| 320 | + @Override | |
| 321 | + @Transactional | |
| 322 | + public Map<String, Object> updateSectionRouteInfoFormId(Map<String, Object> map) { | |
| 323 | + Map<String, Object> resultMap = new HashMap<String, Object>(); | |
| 324 | + try { | |
| 325 | + //int i = 0; | |
| 326 | + String[] idsStr = map.get("ids").toString().split(",") ; | |
| 327 | + for (String id : idsStr) { | |
| 328 | + /* entityManager.persist(Integer.parseInt(id));*/ | |
| 329 | + repository.sectionRouteIsDestroyUpdBatch(Integer.parseInt(id)); | |
| 330 | +/* i++; | |
| 331 | + if (i % batchSize == 0) { | |
| 332 | + entityManager.flush(); | |
| 333 | + entityManager.clear(); | |
| 334 | + }*/ | |
| 335 | + } | |
| 336 | + resultMap.put("status", ResponseCode.SUCCESS); | |
| 337 | + } catch (Exception e) { | |
| 338 | + resultMap.put("status", ResponseCode.ERROR); | |
| 339 | + logger.error("save erro.", e); | |
| 340 | + } | |
| 341 | + return resultMap; | |
| 342 | + } | |
| 300 | 343 | } |
| 301 | 344 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
| ... | ... | @@ -24,7 +24,6 @@ import org.springframework.transaction.annotation.Transactional; |
| 24 | 24 | |
| 25 | 25 | import java.io.ByteArrayInputStream; |
| 26 | 26 | import java.io.File; |
| 27 | -import java.io.FileOutputStream; | |
| 28 | 27 | import java.io.InputStream; |
| 29 | 28 | import java.text.DecimalFormat; |
| 30 | 29 | import java.util.*; |
| ... | ... | @@ -68,6 +67,29 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 68 | 67 | return repository.findAll(new CustomerSpecs<StationRoute>(map), new Sort(orderList)); |
| 69 | 68 | } |
| 70 | 69 | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * @Description : TODO(根据路段路由Id批量撤销路段) | |
| 73 | + * | |
| 74 | + * @param map <id:路段路由ID> | |
| 75 | + */ | |
| 76 | + @Override | |
| 77 | + @Transactional | |
| 78 | + public Map<String, Object> updateStationRouteInfoFormId(Map<String, Object> map) { | |
| 79 | + Map<String, Object> resultMap = new HashMap<String, Object>(); | |
| 80 | + try { | |
| 81 | + String[] idsStr = map.get("ids").toString().split(",") ; | |
| 82 | + for (String id : idsStr) { | |
| 83 | + repository.stationRouteIsDestroyUpdBatch(Integer.parseInt(id)); | |
| 84 | + } | |
| 85 | + resultMap.put("status", ResponseCode.SUCCESS); | |
| 86 | + } catch (Exception e) { | |
| 87 | + resultMap.put("status", ResponseCode.ERROR); | |
| 88 | + logger.error("save erro.", e); | |
| 89 | + } | |
| 90 | + return resultMap; | |
| 91 | + } | |
| 92 | + | |
| 71 | 93 | /** |
| 72 | 94 | * @Description :TODO(查询树站点与路段数据) |
| 73 | 95 | * |
| ... | ... | @@ -512,38 +534,57 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 512 | 534 | */ |
| 513 | 535 | @Override |
| 514 | 536 | public Map<String, Object> usingSingle(Map<String, Object> map) { |
| 537 | + | |
| 515 | 538 | // 返回值map |
| 516 | 539 | Map<String, Object> resultMap = new HashMap<String,Object>(); |
| 540 | + | |
| 517 | 541 | try { |
| 542 | + | |
| 518 | 543 | // 获取线路ID |
| 519 | 544 | Integer lineId = map.get("lineId").equals("") ? 0 : Integer.parseInt(map.get("lineId").toString()); |
| 545 | + | |
| 520 | 546 | /** 查询线路信息 @param:<lineId:线路ID> */ |
| 521 | 547 | Line line = lineRepository.findOne(lineId); |
| 548 | + | |
| 522 | 549 | /** 查询线路信息下的站点路由信息 @param:<lineId:线路ID> */ |
| 523 | 550 | List<Object[]> objects = repository.usingSingle(lineId); |
| 551 | + | |
| 524 | 552 | if (objects.size()>0) { |
| 553 | + | |
| 525 | 554 | /** 获取配置文件里的ftp登录参数 */ |
| 526 | 555 | Map<String, Object> FTPParamMap = readPropertiesGetFTPParam(); |
| 556 | + | |
| 527 | 557 | // 压缩文件名 |
| 528 | 558 | String odlGzFileName = line.getLineCode() + ".txt.gz"; |
| 559 | + | |
| 529 | 560 | // txt文件名 |
| 530 | 561 | String textFileName = line.getLineCode() + ".txt"; |
| 562 | + | |
| 531 | 563 | // 创建一个ftp上传实例 |
| 532 | 564 | FTPClientUtils clientUtils = new FTPClientUtils(); |
| 565 | + | |
| 533 | 566 | // IP |
| 534 | 567 | String url = FTPParamMap.get("url").toString(); |
| 568 | + | |
| 535 | 569 | // 端口 |
| 536 | 570 | int port = Integer.valueOf(FTPParamMap.get("port").toString()); |
| 571 | + | |
| 537 | 572 | // 用户名 |
| 538 | 573 | String username = FTPParamMap.get("username").toString(); |
| 574 | + | |
| 539 | 575 | // 密码 |
| 540 | 576 | String password = FTPParamMap.get("password").toString(); |
| 577 | + | |
| 541 | 578 | // 相对路径 |
| 542 | 579 | String remotePath = FTPParamMap.get("remotePath").toString(); |
| 580 | + | |
| 543 | 581 | /** 如果已存在相同行单文件名则先删除 */ |
| 544 | 582 | clientUtils.deleteFtpFile(url, port, username, password, remotePath, odlGzFileName); |
| 583 | + | |
| 545 | 584 | clientUtils.deleteFtpFile(url, port, username, password, remotePath, textFileName); |
| 585 | + | |
| 546 | 586 | String textStr = ""; |
| 587 | + | |
| 547 | 588 | boolean tempTag = ishxType(objects); |
| 548 | 589 | |
| 549 | 590 | if(tempTag) |
| ... | ... | @@ -557,12 +598,6 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 557 | 598 | |
| 558 | 599 | InputStream input = new ByteArrayInputStream(textStr.getBytes("gbk")); |
| 559 | 600 | |
| 560 | - // FileOutputStream fos = new FileOutputStream("test.txt"); | |
| 561 | - /*int len = 0 ; | |
| 562 | - byte[] cbuf = new byte[1024]; | |
| 563 | - while((len = input.read(cbuf)) != -1) { | |
| 564 | - fos.write(cbuf, 0, len); | |
| 565 | - }*/ | |
| 566 | 601 | /** 生成txt文件,上传ftp */ |
| 567 | 602 | clientUtils.uploadFile(url, port, username, password, remotePath, textFileName, input); |
| 568 | 603 | |
| ... | ... | @@ -633,23 +668,25 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 633 | 668 | * @return String |
| 634 | 669 | */ |
| 635 | 670 | public String newTextFileToFTP(List<Object[]> objects,Integer lineId) { |
| 671 | + | |
| 636 | 672 | // 返回值String |
| 637 | 673 | String stationRStr = ""; |
| 674 | + | |
| 638 | 675 | // windows下的文本文件换行符 |
| 639 | 676 | //String enterStr = "\r\n"; |
| 677 | + | |
| 640 | 678 | // linux/unix下的文本文件换行符 |
| 641 | 679 | String enterStr = "\r"; |
| 642 | - int defaultZdxh = 0; | |
| 680 | + | |
| 643 | 681 | if(objects.size()>0) { |
| 682 | + | |
| 644 | 683 | for(int i = 0; i<objects.size();i++) { |
| 645 | - defaultZdxh ++ ; | |
| 684 | + | |
| 646 | 685 | // 经度 |
| 647 | - String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 686 | + String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 648 | 687 | |
| 649 | 688 | // 纬度 |
| 650 | - String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 651 | - | |
| 652 | - Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 689 | + String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 653 | 690 | |
| 654 | 691 | lat = "\t" + lat; |
| 655 | 692 | |
| ... | ... | @@ -659,32 +696,23 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 659 | 696 | String stationMake = ""; |
| 660 | 697 | |
| 661 | 698 | if(stationMakeStr.equals("E")) { |
| 699 | + | |
| 662 | 700 | stationMake = "\t2"; |
| 701 | + | |
| 663 | 702 | }else { |
| 703 | + | |
| 664 | 704 | stationMake ="\t1"; |
| 705 | + | |
| 665 | 706 | } |
| 666 | 707 | |
| 667 | 708 | // 站点序号 |
| 668 | - // String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 669 | - String stationNo = String.valueOf(defaultZdxh); | |
| 709 | + String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 670 | 710 | |
| 671 | 711 | stationNo = "\t" + stationNo; |
| 672 | 712 | |
| 673 | 713 | // 站点编码 |
| 674 | 714 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 675 | 715 | |
| 676 | - int len = stationCode.length(); | |
| 677 | - if(len<8) { | |
| 678 | - int dx = 8 - len; | |
| 679 | - String addStr = ""; | |
| 680 | - for(int p =0;p<dx;p++) { | |
| 681 | - addStr = addStr + "0"; | |
| 682 | - } | |
| 683 | - stationCode = addStr + stationCode; | |
| 684 | - }else if(len>8){ | |
| 685 | - stationCode = stationCode.substring(8); | |
| 686 | - } | |
| 687 | - | |
| 688 | 716 | stationCode = "\t" +stationCode; |
| 689 | 717 | |
| 690 | 718 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| ... | ... | @@ -704,33 +732,41 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 704 | 732 | |
| 705 | 733 | // 限速 |
| 706 | 734 | String sleepStr = ""; |
| 735 | + | |
| 707 | 736 | // 方向 |
| 708 | 737 | int directions = objects.get(i)[8]==null ? null : Integer.valueOf(objects.get(i)[8].toString()); |
| 738 | + | |
| 709 | 739 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 710 | 740 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 741 | + | |
| 711 | 742 | if(sobje.size()==1) { |
| 712 | - int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 713 | - sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 743 | + | |
| 744 | + double dsleepStr = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(0)[2].toString()); | |
| 745 | + | |
| 746 | + sleepStr = "\t" + new DecimalFormat("0").format(dsleepStr); | |
| 747 | + | |
| 714 | 748 | }else if(sobje.size()>1){ |
| 749 | + | |
| 750 | + /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 715 | 751 | for(int j =0;j<sobje.size();j++) { |
| 716 | - double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 717 | - String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 718 | - pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 719 | - List<Point> ps = new ArrayList<>(); | |
| 720 | - String[] pArray = pointsStr.split(","); | |
| 721 | - for(int a = 0; a <pArray.length; a++) { | |
| 722 | - String[] tmepA = pArray[a].split(" "); | |
| 723 | - Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 724 | - ps.add(temp); | |
| 725 | - } | |
| 726 | - if(GeoUtils.isInSection(ps, point)) { | |
| 727 | - sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 728 | - break; | |
| 752 | + | |
| 753 | + String sectionName = sobje.get(j)[3].toString(); | |
| 754 | + | |
| 755 | + String sectionNameA[] = sectionName.split("至"); | |
| 756 | + | |
| 757 | + if(stationName.equals(sectionNameA[0])){ | |
| 758 | + | |
| 759 | + /*sleepStr = sobje.get(j)[2].toString();*/ | |
| 760 | + | |
| 761 | + double dsleepStrt = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 762 | + | |
| 763 | + sleepStr = "\t" + new DecimalFormat("0").format(dsleepStrt); | |
| 764 | + | |
| 729 | 765 | } |
| 766 | + | |
| 730 | 767 | } |
| 731 | 768 | } |
| 732 | - if(sleepStr.equals("")) | |
| 733 | - sleepStr = "\t" + "60"; | |
| 769 | + | |
| 734 | 770 | stationRStr = stationRStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 735 | 771 | } |
| 736 | 772 | |
| ... | ... | @@ -749,12 +785,9 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 749 | 785 | for(int i = 0; i<objects.size();i++) { |
| 750 | 786 | if(Integer.valueOf(objects.get(i)[8].toString())==0) { |
| 751 | 787 | // 经度 |
| 752 | - String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 753 | - | |
| 788 | + String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 754 | 789 | // 纬度 |
| 755 | - String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 756 | - | |
| 757 | - Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 790 | + String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 758 | 791 | lat = "\t" + lat; |
| 759 | 792 | // 站点类型 |
| 760 | 793 | String stationMakeStr = objects.get(i)[3].equals("") ? "" : objects.get(i)[3].toString(); |
| ... | ... | @@ -769,17 +802,6 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 769 | 802 | String stationNo = "\t" + xh; |
| 770 | 803 | // 站点编码 |
| 771 | 804 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 772 | - int len = stationCode.length(); | |
| 773 | - if(len<8) { | |
| 774 | - int dx = 8 - len; | |
| 775 | - String addStr = ""; | |
| 776 | - for(int p =0;p<dx;p++) { | |
| 777 | - addStr = addStr + "0"; | |
| 778 | - } | |
| 779 | - stationCode = addStr + stationCode; | |
| 780 | - }else if(len>8){ | |
| 781 | - stationCode = stationCode.substring(8); | |
| 782 | - } | |
| 783 | 805 | stationCode = "\t" +stationCode; |
| 784 | 806 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| 785 | 807 | String tempDistc = String.valueOf((int) dis); |
| ... | ... | @@ -795,28 +817,20 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 795 | 817 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 796 | 818 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 797 | 819 | if(sobje.size()==1) { |
| 798 | - int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 799 | - sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 820 | + double dsleepStr = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(0)[2].toString()); | |
| 821 | + sleepStr = "\t" + new DecimalFormat("0").format(dsleepStr); | |
| 800 | 822 | }else if(sobje.size()>1){ |
| 823 | + /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 801 | 824 | for(int j =0;j<sobje.size();j++) { |
| 802 | - double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 803 | - String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 804 | - pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 805 | - List<Point> ps = new ArrayList<>(); | |
| 806 | - String[] pArray = pointsStr.split(","); | |
| 807 | - for(int a = 0; a <pArray.length; a++) { | |
| 808 | - String[] tmepA = pArray[a].split(" "); | |
| 809 | - Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 810 | - ps.add(temp); | |
| 811 | - } | |
| 812 | - if(GeoUtils.isInSection(ps, point)) { | |
| 813 | - sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 814 | - break; | |
| 825 | + String sectionName = sobje.get(j)[3].toString(); | |
| 826 | + String sectionNameA[] = sectionName.split("至"); | |
| 827 | + if(stationName.equals(sectionNameA[0])){ | |
| 828 | + /*sleepStr = sobje.get(j)[2].toString();*/ | |
| 829 | + double dsleepStrt = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 830 | + sleepStr = "\t" + new DecimalFormat("0").format(dsleepStrt); | |
| 815 | 831 | } |
| 816 | 832 | } |
| 817 | 833 | } |
| 818 | - if(sleepStr.equals("")) | |
| 819 | - sleepStr = "\t" + "60"; | |
| 820 | 834 | xh++; |
| 821 | 835 | restStr = restStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 822 | 836 | } | ... | ... |
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
| ... | ... | @@ -316,6 +316,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 316 | 316 | // 取昨天 的日期 |
| 317 | 317 | String date = sdfnyr.format(DateUtils.addDays(new Date(), -1)); |
| 318 | 318 | StringBuffer sf = new StringBuffer(); |
| 319 | + String str; | |
| 319 | 320 | try { |
| 320 | 321 | int counter = 0; // 计数器 |
| 321 | 322 | int per = 10; // 每几条线路上传一次路单 |
| ... | ... | @@ -400,26 +401,28 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 400 | 401 | if(counter % per == per - 1){ |
| 401 | 402 | counter = 0; |
| 402 | 403 | sf.append("</DLDS>"); |
| 403 | - Results results = ssop.setLD(userNameOther, passwordOther, sf.toString()); | |
| 404 | + str = sf.toString().replace("'","");// 去掉'号 | |
| 405 | + Results results = ssop.setLD(userNameOther, passwordOther, str); | |
| 404 | 406 | if(results.isSuccess()){ |
| 405 | 407 | result = "success"; |
| 406 | 408 | }else{ |
| 407 | 409 | result = "failure"; |
| 408 | 410 | } |
| 409 | - logger.info("setLD:"+sf.toString()); | |
| 411 | + logger.info("setLD:"+str); | |
| 410 | 412 | logger.info("setLD:"+result); |
| 411 | 413 | } |
| 412 | 414 | } |
| 413 | 415 | // 每per条线路上传后剩下的数据再上传 |
| 414 | 416 | if(counter > 0){ |
| 415 | 417 | sf.append("</DLDS>"); |
| 416 | - Results results = ssop.setLD(userNameOther, passwordOther, sf.toString()); | |
| 418 | + str = sf.toString().replace("'","");// 去掉'号 | |
| 419 | + Results results = ssop.setLD(userNameOther, passwordOther, str); | |
| 417 | 420 | if(results.isSuccess()){ |
| 418 | 421 | result = "success"; |
| 419 | 422 | }else{ |
| 420 | 423 | result = "failure"; |
| 421 | 424 | } |
| 422 | - logger.info("setLD:"+sf.toString()); | |
| 425 | + logger.info("setLD:"+str); | |
| 423 | 426 | logger.info("setLD:"+result); |
| 424 | 427 | } |
| 425 | 428 | } catch (Exception e) { | ... | ... |
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
| ... | ... | @@ -105,7 +105,7 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L |
| 105 | 105 | List<Map<String,Object>> accountPx(String line,String date,String code,String xlName, String px); |
| 106 | 106 | |
| 107 | 107 | |
| 108 | - List<SchEditInfoDto> correctForm(String line,String date,String lpName,String code, String type); | |
| 108 | + List<SchEditInfoDto> correctForm(String line,String date,String endDate,String lpName,String code, String type); | |
| 109 | 109 | |
| 110 | 110 | List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName,String date,String line); |
| 111 | 111 | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -1964,7 +1964,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1964 | 1964 | }*/ |
| 1965 | 1965 | |
| 1966 | 1966 | @Override |
| 1967 | - public List<SchEditInfoDto> correctForm(String line,String date, | |
| 1967 | + public List<SchEditInfoDto> correctForm(String line,String date,String endDate, | |
| 1968 | 1968 | String lpName,String code, String type) { |
| 1969 | 1969 | |
| 1970 | 1970 | // var types = {'DFTZ': '待发调整', 'FCXXWT':'发车信息微调', 'JHLB': '计划烂班', 'CXLB': '撤销烂班', |
| ... | ... | @@ -1990,17 +1990,17 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1990 | 1990 | String sql = "select t1.*, " |
| 1991 | 1991 | + "t2.fcsj,t2.lp_name,t2.cl_zbh,t2.j_gh,t2.j_name," |
| 1992 | 1992 | + "t2.xl_dir,t2.real_exec_date from (select * from " |
| 1993 | - + "logger_sch_modify where rq=? and line_code=? )" | |
| 1993 | + + "logger_sch_modify where rq BETWEEN ? and ? and line_code=? )" | |
| 1994 | 1994 | + " t1 INNER JOIN bsth_c_s_sp_info_real t2 on " |
| 1995 | 1995 | + "t1.sch_id=t2.id where 1=1 " + cont; |
| 1996 | 1996 | |
| 1997 | 1997 | List<SchEditInfoDto> list = jdbcTemplate.query(sql, |
| 1998 | - new BeanPropertyRowMapper(SchEditInfoDto.class),date, line); | |
| 1998 | + new BeanPropertyRowMapper(SchEditInfoDto.class),date,endDate, line); | |
| 1999 | 1999 | List<SchEditInfoDto> lists=new ArrayList<SchEditInfoDto>(); |
| 2000 | 2000 | for (int i = 0; i < list.size(); i++) { |
| 2001 | 2001 | SchEditInfoDto t=list.get(i); |
| 2002 | 2002 | if(map.get(t.getType())!=null){ |
| 2003 | - t.setType2(t.getTimeStr()+":"+map.get(t.getType()).toString()); | |
| 2003 | + t.setType2(t.getUser()+"于"+t.getTimeStr()+"进行"+map.get(t.getType()).toString()+";"); | |
| 2004 | 2004 | }else{ |
| 2005 | 2005 | t.setType2(""); |
| 2006 | 2006 | } |
| ... | ... | @@ -2012,6 +2012,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2012 | 2012 | fage=false; |
| 2013 | 2013 | } |
| 2014 | 2014 | } |
| 2015 | + | |
| 2015 | 2016 | if(fage){ |
| 2016 | 2017 | lists.add(t); |
| 2017 | 2018 | } |
| ... | ... | @@ -2029,6 +2030,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2029 | 2030 | for (SchEditInfoDto d : lists) { |
| 2030 | 2031 | Map<String, Object> tempMap = new HashMap<String, Object>(); |
| 2031 | 2032 | tempMap.put("lpName", d.getLpName()); |
| 2033 | + tempMap.put("rq", d.getRq()); | |
| 2032 | 2034 | tempMap.put("clZbh", d.getClZbh()); |
| 2033 | 2035 | tempMap.put("jName", d.getjName()+"/"+d.getjGh()); |
| 2034 | 2036 | tempMap.put("fcsj", d.getFcsj()); | ... | ... |
src/main/java/com/bsth/service/report/SheetService.java
| ... | ... | @@ -10,6 +10,7 @@ public interface SheetService extends BaseService<Sheet, Integer>{ |
| 10 | 10 | public List<Map<String, Object>> bcPunctual(Map<String, Object> map); |
| 11 | 11 | public String saveSheetList(String date) throws Exception; |
| 12 | 12 | public List<Map<String, Object>> countList(Map<String, Object> map); |
| 13 | - | |
| 13 | + public List<Map<String, Object>> listSheet(Map<String, Object> map); | |
| 14 | 14 | public List<Sheet> sheetList(Integer id); |
| 15 | + public List<Sheet> exportList(Integer id); | |
| 15 | 16 | } | ... | ... |
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
| ... | ... | @@ -157,7 +157,8 @@ public class CulateMileageServiceImpl implements CulateMileageService{ |
| 157 | 157 | if(scheduleRealInfo.getStatus() == -1){ |
| 158 | 158 | lbbc++; |
| 159 | 159 | } |
| 160 | - }else{ | |
| 160 | + } | |
| 161 | + /*else{ | |
| 161 | 162 | if(scheduleRealInfo.getStatus() == -1){ |
| 162 | 163 | boolean fage=true; |
| 163 | 164 | Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); |
| ... | ... | @@ -174,7 +175,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ |
| 174 | 175 | lbbc++; |
| 175 | 176 | } |
| 176 | 177 | } |
| 177 | - } | |
| 178 | + }*/ | |
| 178 | 179 | } |
| 179 | 180 | } |
| 180 | 181 | return lbbc; | ... | ... |
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
| ... | ... | @@ -156,7 +156,9 @@ public class ReportServiceImpl implements ReportService{ |
| 156 | 156 | while(rs.next()){ |
| 157 | 157 | arr = new ArrivalInfo(); |
| 158 | 158 | arr.setDeviceId(rs.getString("device_id")); |
| 159 | - arr.setNbbm(BasicData.deviceId2NbbmMap.get(arr.getDeviceId())); | |
| 159 | + String nbbm=BasicData.deviceId2NbbmMap.get(arr.getDeviceId()); | |
| 160 | + arr.setNbbm(nbbm); | |
| 161 | + arr.setPzh(BasicData.nbbmCompanyPlateMap.get(nbbm)); | |
| 160 | 162 | if(null == arr.getNbbm()){ |
| 161 | 163 | logger.warn("未注册的设备号," + arr.getDeviceId()); |
| 162 | 164 | continue; | ... | ... |
src/main/java/com/bsth/service/report/impl/SheetServiceImpl.java
| 1 | 1 | package com.bsth.service.report.impl; |
| 2 | 2 | |
| 3 | +import java.lang.reflect.InvocationTargetException; | |
| 3 | 4 | import java.sql.ResultSet; |
| 4 | 5 | import java.sql.SQLException; |
| 5 | 6 | import java.text.DecimalFormat; |
| ... | ... | @@ -42,6 +43,7 @@ import com.bsth.service.report.SheetService; |
| 42 | 43 | import com.bsth.util.BatchSaveUtils; |
| 43 | 44 | import com.bsth.util.ComparableChild; |
| 44 | 45 | import com.bsth.util.ComparableReal; |
| 46 | +import com.bsth.util.ReportRelatedUtils; | |
| 45 | 47 | import com.google.common.util.concurrent.AbstractScheduledService.Scheduler; |
| 46 | 48 | |
| 47 | 49 | @Service |
| ... | ... | @@ -658,7 +660,8 @@ public class SheetServiceImpl extends BaseServiceImpl<Sheet, Integer> implements |
| 658 | 660 | fgs=map.get("fgs").toString(); |
| 659 | 661 | } |
| 660 | 662 | String date=map.get("date").toString(); |
| 661 | - String sql="select * from bsth_c_sheet where date='"+date+"'"; | |
| 663 | + String endDate=map.get("endDate").toString(); | |
| 664 | + String sql="select * from bsth_c_sheet where date BETWEEN '"+date+"' and '"+endDate+"'"; | |
| 662 | 665 | if(line.trim().equals("")){ |
| 663 | 666 | sql +=" and gs like '%"+gs+"%' and fgs like '%"+fgs+"%'"; |
| 664 | 667 | }else{ |
| ... | ... | @@ -721,6 +724,7 @@ public class SheetServiceImpl extends BaseServiceImpl<Sheet, Integer> implements |
| 721 | 724 | String gs=BasicData.businessCodeNameMap.get(list.get(0).getGs()); |
| 722 | 725 | String fgs=BasicData.businessFgsCodeNameMap.get(list.get(0).getFgs()+"_"+list.get(0).getGs()); |
| 723 | 726 | String line=BasicData.lineCode2NameMap.get(list.get(0).getLine()); |
| 727 | + String date=list.get(0).getDate(); | |
| 724 | 728 | Integer id=list.get(0).getId(); |
| 725 | 729 | int bcs=list.size(); |
| 726 | 730 | int zdbcs=0; |
| ... | ... | @@ -740,6 +744,7 @@ public class SheetServiceImpl extends BaseServiceImpl<Sheet, Integer> implements |
| 740 | 744 | map.put("zdbcs", zdbcs); |
| 741 | 745 | map.put("zdlv", df.format(zdlv)+"%"); |
| 742 | 746 | map.put("id", id); |
| 747 | + map.put("date", date); | |
| 743 | 748 | return map; |
| 744 | 749 | } |
| 745 | 750 | @Override |
| ... | ... | @@ -781,6 +786,128 @@ public class SheetServiceImpl extends BaseServiceImpl<Sheet, Integer> implements |
| 781 | 786 | return list; |
| 782 | 787 | } |
| 783 | 788 | |
| 789 | + @Override | |
| 790 | + public List<Sheet> exportList(Integer id) { | |
| 791 | + // TODO Auto-generated method stub | |
| 792 | + ReportRelatedUtils rru = new ReportRelatedUtils(); | |
| 793 | + Sheet sheet=sheetRepository.findOne(id); | |
| 794 | + String sql="select * from bsth_c_sheet where date='"+sheet.getDate()+"' and line = '"+sheet.getLine()+"'" | |
| 795 | + + " order by xl_dir,jhsj"; | |
| 796 | + | |
| 797 | + List<Sheet> list=jdbcTemplate.query(sql, | |
| 798 | + new RowMapper<Sheet>(){ | |
| 799 | + @Override | |
| 800 | + public Sheet mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 801 | + Sheet s=new Sheet(); | |
| 802 | + s.setId(rs.getInt("id")); | |
| 803 | + s.setGs(rs.getString("gs")); | |
| 804 | + s.setFgs(rs.getString("fgs")); | |
| 805 | + s.setLine(rs.getString("line")); | |
| 806 | + s.setDate(rs.getString("date")); | |
| 807 | + s.setJhsj(rs.getString("jhsj")); | |
| 808 | + s.setJhsjt(rs.getLong("jhsjt")); | |
| 809 | + s.setSjsj(rs.getString("sjsj")); | |
| 810 | + s.setSjsjt(rs.getLong("sjsjt")); | |
| 811 | + s.setZdname(rs.getString("zdname")); | |
| 812 | + return s; | |
| 813 | + } | |
| 814 | + }); | |
| 815 | + | |
| 816 | + List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); | |
| 817 | + for (int i = 0; i < list.size(); i++) { | |
| 818 | + Sheet t=list.get(i); | |
| 819 | + t.setLine(BasicData.lineCode2NameMap.get(t.getLine())); | |
| 820 | + Long sjc=t.getJhsjt()-t.getSjsjt(); | |
| 821 | + if(sjc>= 3*60*1000*-1 && sjc <=1*60*1000){ | |
| 822 | + t.setSfzd("准点"); | |
| 823 | + }else{ | |
| 824 | + t.setSfzd("不准点"); | |
| 825 | + } | |
| 826 | + | |
| 827 | + try { | |
| 828 | + Map<String, Object> map = rru.getMapValue(t); | |
| 829 | + listMap.add(map); | |
| 830 | + } catch (ClassNotFoundException e) { | |
| 831 | + // TODO Auto-generated catch block | |
| 832 | + e.printStackTrace(); | |
| 833 | + } catch (IllegalAccessException e) { | |
| 834 | + // TODO Auto-generated catch block | |
| 835 | + e.printStackTrace(); | |
| 836 | + } catch (InvocationTargetException e) { | |
| 837 | + // TODO Auto-generated catch block | |
| 838 | + e.printStackTrace(); | |
| 839 | + } catch (NoSuchMethodException e) { | |
| 840 | + // TODO Auto-generated catch block | |
| 841 | + e.printStackTrace(); | |
| 842 | + } catch (NoSuchFieldException e) { | |
| 843 | + // TODO Auto-generated catch block | |
| 844 | + e.printStackTrace(); | |
| 845 | + } | |
| 846 | + | |
| 847 | + } | |
| 848 | + | |
| 849 | + return list; | |
| 850 | + } | |
| 851 | + @Override | |
| 852 | + public List<Map<String, Object>> listSheet(Map<String, Object> map) { | |
| 853 | + // TODO Auto-generated method stub | |
| 854 | + List<Map<String, Object>> listmap=new ArrayList<Map<String,Object>>(); | |
| 855 | + Integer id=Integer.parseInt(map.get("id").toString()); | |
| 856 | + Sheet sheet=sheetRepository.findOne(id); | |
| 857 | + String date=map.get("date").toString(); | |
| 858 | + String endDate=map.get("endDate").toString(); | |
| 859 | + | |
| 860 | + String sqlByDate="select date from bsth_c_sheet where date BETWEEN '"+date+"' and '"+endDate+"'" | |
| 861 | + + "and line = '"+sheet.getLine()+"' group by date order by date"; | |
| 862 | + | |
| 863 | + List<String> dateList=jdbcTemplate.query(sqlByDate, | |
| 864 | + new RowMapper<String>(){ | |
| 865 | + @Override | |
| 866 | + public String mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 867 | + String date=rs.getString("date"); | |
| 868 | + | |
| 869 | + return date; | |
| 870 | + } | |
| 871 | + }); | |
| 872 | + | |
| 873 | + String sql="select * from bsth_c_sheet where date BETWEEN '"+date+"' and '"+endDate+"'" | |
| 874 | + + " and line ='"+sheet.getLine()+"' order by date"; | |
| 875 | + | |
| 876 | + List<Sheet> list=jdbcTemplate.query(sql, | |
| 877 | + new RowMapper<Sheet>(){ | |
| 878 | + @Override | |
| 879 | + public Sheet mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 880 | + Sheet s=new Sheet(); | |
| 881 | + s.setGs(rs.getString("gs")); | |
| 882 | + s.setFgs(rs.getString("fgs")); | |
| 883 | + s.setLine(rs.getString("line")); | |
| 884 | + s.setDate(rs.getString("date")); | |
| 885 | + s.setJhsj(rs.getString("jhsj")); | |
| 886 | + s.setJhsjt(rs.getLong("jhsjt")); | |
| 887 | + s.setSjsj(rs.getString("sjsj")); | |
| 888 | + s.setSjsjt(rs.getLong("sjsjt")); | |
| 889 | + s.setId(rs.getInt("id")); | |
| 890 | + return s; | |
| 891 | + } | |
| 892 | + }); | |
| 893 | + for (int i = 0; i < dateList.size(); i++) { | |
| 894 | + String s=dateList.get(i); | |
| 895 | + List<Sheet> newList=new ArrayList<Sheet>(); | |
| 896 | + for (int j = 0; j < list.size(); j++) { | |
| 897 | + Sheet t=list.get(j); | |
| 898 | + if(t.getDate().equals(s)){ | |
| 899 | + newList.add(t); | |
| 900 | + } | |
| 901 | + } | |
| 902 | + | |
| 903 | + if(newList.size()>0){ | |
| 904 | + Map<String, Object> newmap=culateByLine(newList); | |
| 905 | + listmap.add(newmap); | |
| 906 | + } | |
| 907 | + } | |
| 908 | + return listmap; | |
| 909 | + } | |
| 910 | + | |
| 784 | 911 | |
| 785 | 912 | } |
| 786 | 913 | class ComparableAcual implements Comparator<ScheduleRealInfo>{ | ... | ... |
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
| 1 | 1 | package com.bsth.service.schedule.impl; |
| 2 | 2 | |
| 3 | 3 | import java.math.BigDecimal; |
| 4 | -import java.net.URLEncoder; | |
| 5 | 4 | import java.sql.ResultSet; |
| 6 | 5 | import java.sql.SQLException; |
| 7 | 6 | import java.text.DecimalFormat; |
| ... | ... | @@ -140,6 +139,26 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 140 | 139 | return list; |
| 141 | 140 | } |
| 142 | 141 | |
| 142 | + public Set<String> getNotOperation(){ | |
| 143 | + Set<String> lineSet = new HashSet<String>(); | |
| 144 | + try { | |
| 145 | + String sql = "select name from bsth_c_line where sfyy = 0"; | |
| 146 | + List<String> lineList = new ArrayList<>(); | |
| 147 | + lineList = jdbcTemplate.query(sql, | |
| 148 | + new RowMapper<String>(){ | |
| 149 | + @Override | |
| 150 | + public String mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 151 | + return rs.getString("name"); | |
| 152 | + } | |
| 153 | + }); | |
| 154 | + lineSet.addAll(lineList); | |
| 155 | + } catch (Exception e) { | |
| 156 | + // TODO: handle exception | |
| 157 | + e.printStackTrace(); | |
| 158 | + } | |
| 159 | + return lineSet; | |
| 160 | + } | |
| 161 | + | |
| 143 | 162 | @Override |
| 144 | 163 | public List<Map<String, Object>> queryPeopleCar(Map<String, Object> map) { |
| 145 | 164 | Map<String, List<SchedulePlanInfo>> keyMap = new HashMap<String, List<SchedulePlanInfo>>(); |
| ... | ... | @@ -288,6 +307,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 288 | 307 | @Override |
| 289 | 308 | public List<Map<String, Object>> workDaily(Map<String, Object> map) { |
| 290 | 309 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 310 | + Set<String> lineSet = getNotOperation(); | |
| 291 | 311 | DecimalFormat df = new DecimalFormat("###0.##"); |
| 292 | 312 | |
| 293 | 313 | String company = map.get("company").toString(); |
| ... | ... | @@ -305,7 +325,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 305 | 325 | Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>(); |
| 306 | 326 | for(ScheduleRealInfo schedule : list){ |
| 307 | 327 | String key = schedule.getXlName(); |
| 308 | - if(key == null || key.trim().equals("")) | |
| 328 | + if(key == null || key.trim().equals("") || lineSet.contains(key)) | |
| 309 | 329 | continue; |
| 310 | 330 | if(!keyMap.containsKey(key)){ |
| 311 | 331 | keyMap.put(key, new ArrayList<ScheduleRealInfo>()); |
| ... | ... | @@ -457,8 +477,8 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 457 | 477 | tempMap.put("line", key); |
| 458 | 478 | tempMap.put("jhbc", jhbc); |
| 459 | 479 | tempMap.put("dftz", dftz); |
| 460 | - tempMap.put("dftzl", df.format(((float)dftz/jhbc)*100) + "%"); | |
| 461 | - tempMap.put("ccl", df.format(((float)sjcc/jhcc)*100) + "%"); | |
| 480 | + tempMap.put("dftzl", jhbc==0?"0%":(df.format(((float)dftz/jhbc)*100) + "%")); | |
| 481 | + tempMap.put("ccl", jhcc==0?"100%":(df.format(((float)sjcc/jhcc)*100) + "%")); | |
| 462 | 482 | tempMap.put("upfk", upfk); |
| 463 | 483 | tempMap.put("updk", updk); |
| 464 | 484 | tempMap.put("dnfk", dnfk); |
| ... | ... | @@ -1197,6 +1217,8 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1197 | 1217 | List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); |
| 1198 | 1218 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 1199 | 1219 | |
| 1220 | + Set<String> lineSet = getNotOperation(); | |
| 1221 | + | |
| 1200 | 1222 | String company = map.get("company").toString(); |
| 1201 | 1223 | String subCompany = map.get("subCompany").toString(); |
| 1202 | 1224 | String line = map.get("line").toString(); |
| ... | ... | @@ -1210,10 +1232,10 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1210 | 1232 | String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name," |
| 1211 | 1233 | + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line" |
| 1212 | 1234 | + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'" |
| 1213 | - + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; | |
| 1214 | - if(line.length() != 0) | |
| 1235 | + + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'"; | |
| 1236 | + if(line.trim().length() != 0) | |
| 1215 | 1237 | sql += " and xl_bm = '"+line+"'"; |
| 1216 | - if(company.length() != 0) | |
| 1238 | + else if(company.length() != 0) | |
| 1217 | 1239 | sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; |
| 1218 | 1240 | |
| 1219 | 1241 | list = jdbcTemplate.query(sql, |
| ... | ... | @@ -1275,6 +1297,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1275 | 1297 | String companyName = "", subCompanyName = ""; |
| 1276 | 1298 | |
| 1277 | 1299 | for(ScheduleRealInfo s : list){ |
| 1300 | + if(lineSet.contains(s.getXlName())){ | |
| 1301 | + continue; | |
| 1302 | + } | |
| 1278 | 1303 | String xlName = s.getXlName(); |
| 1279 | 1304 | if(!keyMap.containsKey(xlName)) |
| 1280 | 1305 | keyMap.put(xlName, new ArrayList<ScheduleRealInfo>()); |
| ... | ... | @@ -1398,6 +1423,8 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1398 | 1423 | nf.setMinimumFractionDigits(2); |
| 1399 | 1424 | List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); |
| 1400 | 1425 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 1426 | + | |
| 1427 | + Set<String> lineSet = getNotOperation(); | |
| 1401 | 1428 | |
| 1402 | 1429 | String company = map.get("company").toString(); |
| 1403 | 1430 | String subCompany = map.get("subCompany").toString(); |
| ... | ... | @@ -1427,7 +1454,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1427 | 1454 | String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name," |
| 1428 | 1455 | + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line" |
| 1429 | 1456 | + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'" |
| 1430 | - + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; | |
| 1457 | + + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'"; | |
| 1431 | 1458 | if(line.length() != 0) |
| 1432 | 1459 | sql += " and xl_bm = '"+line+"'"; |
| 1433 | 1460 | if(company.length() != 0) |
| ... | ... | @@ -1492,6 +1519,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1492 | 1519 | String companyName = "", subCompanyName = ""; |
| 1493 | 1520 | |
| 1494 | 1521 | for(ScheduleRealInfo s : list){ |
| 1522 | + if(lineSet.contains(s.getXlName())){ | |
| 1523 | + continue; | |
| 1524 | + } | |
| 1495 | 1525 | String xlName = s.getXlName(); |
| 1496 | 1526 | String date = s.getScheduleDateStr(); |
| 1497 | 1527 | if(!keyMap.containsKey(xlName)) | ... | ... |
src/main/java/com/bsth/service/traffic/YgcBasicDataService.java
| 1 | -package com.bsth.service.traffic; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * 运管处基础数据操作接口类 | |
| 5 | - * Created by zlz on 2017/6/16. | |
| 6 | - */ | |
| 7 | -public interface YgcBasicDataService { | |
| 8 | - /** | |
| 9 | - * 更新运管处基础数据 | |
| 10 | - */ | |
| 11 | - void updateYgcBasicData(); | |
| 12 | -} | |
| 13 | - | |
| 1 | +package com.bsth.service.traffic; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * 运管处基础数据操作接口类 | |
| 5 | + * Created by zlz on 2017/6/16. | |
| 6 | + */ | |
| 7 | +public interface YgcBasicDataService { | |
| 8 | + /** | |
| 9 | + * 更新运管处基础数据 | |
| 10 | + */ | |
| 11 | + void updateYgcBasicData(); | |
| 12 | +} | |
| 13 | + | ... | ... |
src/main/java/com/bsth/service/traffic/impl/YgcBasicDataServiceImpl.java
| 1 | -package com.bsth.service.traffic.impl; | |
| 2 | - | |
| 3 | -import com.bsth.service.impl.TrafficManageServiceImpl; | |
| 4 | -import com.bsth.service.traffic.YgcBasicDataService; | |
| 5 | -import com.bsth.util.db.DBUtils_oldSystem; | |
| 6 | -import org.apache.axiom.om.*; | |
| 7 | -import org.apache.axis2.addressing.EndpointReference; | |
| 8 | -import org.apache.axis2.client.Options; | |
| 9 | -import org.apache.axis2.client.ServiceClient; | |
| 10 | -import org.apache.commons.codec.digest.DigestUtils; | |
| 11 | -import org.slf4j.Logger; | |
| 12 | -import org.slf4j.LoggerFactory; | |
| 13 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | -import org.springframework.jdbc.core.BatchPreparedStatementSetter; | |
| 15 | -import org.springframework.jdbc.core.JdbcTemplate; | |
| 16 | -import org.springframework.stereotype.Service; | |
| 17 | -import org.w3c.dom.Document; | |
| 18 | -import org.w3c.dom.NodeList; | |
| 19 | - | |
| 20 | -import javax.activation.DataHandler; | |
| 21 | -import javax.xml.parsers.DocumentBuilder; | |
| 22 | -import javax.xml.parsers.DocumentBuilderFactory; | |
| 23 | -import java.io.*; | |
| 24 | -import java.sql.PreparedStatement; | |
| 25 | -import java.sql.SQLException; | |
| 26 | -import java.util.ArrayList; | |
| 27 | -import java.util.HashMap; | |
| 28 | -import java.util.List; | |
| 29 | -import java.util.zip.ZipEntry; | |
| 30 | -import java.util.zip.ZipFile; | |
| 31 | -import java.util.zip.ZipInputStream; | |
| 32 | - | |
| 33 | -/** | |
| 34 | - * 运管处基础数据操作类 | |
| 35 | - * Created by zq on 2017/6/15. | |
| 36 | - */ | |
| 37 | -@Service | |
| 38 | -public class YgcBasicDataServiceImpl implements YgcBasicDataService{ | |
| 39 | - Logger logger = LoggerFactory.getLogger(TrafficManageServiceImpl.class); | |
| 40 | - | |
| 41 | - @Autowired | |
| 42 | - JdbcTemplate jdbcTemplate; | |
| 43 | - | |
| 44 | - private static String IP = "218.242.195.76:9091"; | |
| 45 | - private static String targetEndpoint = "http://" + IP +"/ygc.TransManager.Basicdown?wsdl"; | |
| 46 | - private static String namespace = "http://service.shygc.com"; | |
| 47 | - private static String userName = "admin"; | |
| 48 | - private static String passWord = "000000"; | |
| 49 | - private static EndpointReference targetEPR; | |
| 50 | - { | |
| 51 | - try { | |
| 52 | - targetEPR = new EndpointReference(targetEndpoint); | |
| 53 | - } catch (Exception e) { | |
| 54 | - e.printStackTrace(); | |
| 55 | - } | |
| 56 | - } | |
| 57 | - | |
| 58 | - /** | |
| 59 | - * 更新运管处基础数据 | |
| 60 | - */ | |
| 61 | - public void updateYgcBasicData(){ | |
| 62 | - String saveFile = "ygcBasicData.zip"; | |
| 63 | - String flag = "failure"; | |
| 64 | - try { | |
| 65 | - // 调用接口下载基础数据 | |
| 66 | - if(download(userName, DigestUtils.md5Hex(passWord), saveFile)){ | |
| 67 | - // 读取基础数据zip | |
| 68 | - StringBuffer sb = readZipFile(saveFile); | |
| 69 | - // 解析xml | |
| 70 | - List<HashMap<String,String>> result = parseXml(sb); | |
| 71 | - // 插入数据库 | |
| 72 | - if(result != null && result.size() > 0){ | |
| 73 | - insertRecord(result); | |
| 74 | - } | |
| 75 | - } | |
| 76 | - flag = "success"; | |
| 77 | - }catch (Exception e){ | |
| 78 | - e.printStackTrace(); | |
| 79 | - } | |
| 80 | - finally { | |
| 81 | - // 删除文件 | |
| 82 | - File fill = new File(saveFile); | |
| 83 | - logger.info("updateYgcBasicData:"+fill.getAbsolutePath()); | |
| 84 | - logger.info("updateYgcBasicData:"+flag); | |
| 85 | - if(fill.exists()){ | |
| 86 | - fill.delete(); | |
| 87 | - } | |
| 88 | - } | |
| 89 | - } | |
| 90 | - /** | |
| 91 | - * 下载基础数据,并生成rar文件 | |
| 92 | - * @param userName | |
| 93 | - * @param password | |
| 94 | - * @param saveFile | |
| 95 | - * @return | |
| 96 | - */ | |
| 97 | - private boolean download(String userName, String password, String saveFile) | |
| 98 | - { | |
| 99 | - try | |
| 100 | - { | |
| 101 | - OMElement data = buildDownloadEnvelope(userName, password); | |
| 102 | - ServiceClient sender = new ServiceClient(); | |
| 103 | - Options options = sender.getOptions(); | |
| 104 | - options.setProperty("SO_TIMEOUT", Integer.valueOf(1800000)); | |
| 105 | - options.setTo(targetEPR); | |
| 106 | - sender.setOptions(options); | |
| 107 | - System.out.println("The data in method download: " + data); | |
| 108 | - data.build(); | |
| 109 | - OMElement ome = sender.sendReceive(data); | |
| 110 | - | |
| 111 | - OMText binaryNode = (OMText)ome.getFirstOMChild(); | |
| 112 | - binaryNode.setOptimize(true); | |
| 113 | - DataHandler actualDH = (DataHandler)binaryNode.getDataHandler(); | |
| 114 | - FileOutputStream imageOutStream = new FileOutputStream(saveFile); | |
| 115 | - InputStream is = actualDH.getInputStream(); | |
| 116 | - int read ; | |
| 117 | - byte[] buffer = new byte[1024]; | |
| 118 | - while ((read = is.read(buffer)) != -1) { | |
| 119 | - imageOutStream.write(buffer, 0, read); | |
| 120 | - } | |
| 121 | - return true; | |
| 122 | - } catch (Exception e) { | |
| 123 | - e.printStackTrace(); | |
| 124 | - }return false; | |
| 125 | - } | |
| 126 | - | |
| 127 | - /** | |
| 128 | - * 构建webservice接口参数 | |
| 129 | - * @param userName | |
| 130 | - * @param password | |
| 131 | - * @return | |
| 132 | - */ | |
| 133 | - private OMElement buildDownloadEnvelope(String userName, String password) | |
| 134 | - { | |
| 135 | - OMFactory fac = OMAbstractFactory.getOMFactory(); | |
| 136 | - OMNamespace omNs = fac.createOMNamespace(namespace, | |
| 137 | - "ser"); | |
| 138 | - OMElement data = fac.createOMElement("downloadAllDataFile", omNs); | |
| 139 | - OMElement _userName = fac.createOMElement("userName", omNs); | |
| 140 | - _userName.setText(userName); | |
| 141 | - OMElement _passWord = fac.createOMElement("passWord", omNs); | |
| 142 | - _passWord.setText(String.valueOf(password)); | |
| 143 | - | |
| 144 | - data.addChild(_userName); | |
| 145 | - data.addChild(_passWord); | |
| 146 | - | |
| 147 | - OMElement soap = fac.createOMElement("downloadAllDataFile", omNs); | |
| 148 | - soap.addChild(data); | |
| 149 | - return soap; | |
| 150 | - } | |
| 151 | - | |
| 152 | - /** | |
| 153 | - * 读取zip文件的内容 | |
| 154 | - * @param file | |
| 155 | - * @return | |
| 156 | - * @throws Exception | |
| 157 | - */ | |
| 158 | - public StringBuffer readZipFile(String file) throws Exception { | |
| 159 | - ZipFile zf = new ZipFile(file); | |
| 160 | - InputStream in = new BufferedInputStream(new FileInputStream(file)); | |
| 161 | - ZipInputStream zin = new ZipInputStream(in); | |
| 162 | - ZipEntry ze; | |
| 163 | - StringBuffer sb = new StringBuffer(); | |
| 164 | - while ((ze = zin.getNextEntry()) != null) { | |
| 165 | - System.out.print(ze); | |
| 166 | - if (ze.isDirectory()) { | |
| 167 | - } else { | |
| 168 | - System.err.println("file - " + ze.getName() + " : " | |
| 169 | - + ze.getSize() + " bytes"); | |
| 170 | - long size = ze.getSize(); | |
| 171 | - if (size > 0) { | |
| 172 | - BufferedReader br = new BufferedReader( | |
| 173 | - new InputStreamReader(zf.getInputStream(ze),"GBK")); | |
| 174 | - String line; | |
| 175 | - boolean addFlag = false; | |
| 176 | - while ((line = br.readLine()) != null) { | |
| 177 | - if(line.indexOf("BusLineList") != -1){ | |
| 178 | - addFlag = true; | |
| 179 | - } | |
| 180 | - if(addFlag){ | |
| 181 | - sb.append(line); | |
| 182 | - } | |
| 183 | - | |
| 184 | - if(line.indexOf("/BusLineList") != -1){ | |
| 185 | - break; | |
| 186 | - } | |
| 187 | - } | |
| 188 | - br.close(); | |
| 189 | - } | |
| 190 | - } | |
| 191 | - } | |
| 192 | - zin.closeEntry(); | |
| 193 | - return sb; | |
| 194 | - } | |
| 195 | - | |
| 196 | - /** | |
| 197 | - * 解析xml | |
| 198 | - * @param sb | |
| 199 | - */ | |
| 200 | - private List<HashMap<String,String>> parseXml(StringBuffer sb){ | |
| 201 | - List<HashMap<String,String>> list = new ArrayList<>(); | |
| 202 | - HashMap<String,String> map; | |
| 203 | - try { | |
| 204 | - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |
| 205 | - DocumentBuilder builder = factory.newDocumentBuilder(); | |
| 206 | - Document doc = builder.parse(new ByteArrayInputStream(sb.toString().getBytes())); | |
| 207 | - NodeList nl = doc.getElementsByTagName("BusLine"); | |
| 208 | - String lineName; //线路名称 | |
| 209 | - String lineId; // 线路ID | |
| 210 | - String abbreviation ; // 公司名称 | |
| 211 | - String ddfs ; // 调度方式 | |
| 212 | - String lineStandardCode; // 上海市线路编码 | |
| 213 | - String parentUnitName ; // 总公司 | |
| 214 | - for (int i = 0; i < nl.getLength(); i++) { | |
| 215 | - parentUnitName = doc.getElementsByTagName("ParentUnitName").item(i).getFirstChild() == null ?"": | |
| 216 | - doc.getElementsByTagName("ParentUnitName").item(i).getFirstChild().getNodeValue(); | |
| 217 | - if(parentUnitName.indexOf("浦东") != -1){// 只查找浦东的数据 | |
| 218 | - lineName = doc.getElementsByTagName("LineName").item(i).getFirstChild() == null ?"": | |
| 219 | - doc.getElementsByTagName("LineName").item(i).getFirstChild().getNodeValue(); | |
| 220 | - lineId = doc.getElementsByTagName("LineId").item(i).getFirstChild() == null ?"": | |
| 221 | - doc.getElementsByTagName("LineId").item(i).getFirstChild().getNodeValue(); | |
| 222 | - abbreviation = doc.getElementsByTagName("Abbreviation").item(i).getFirstChild() == null ?"": | |
| 223 | - doc.getElementsByTagName("Abbreviation").item(i).getFirstChild().getNodeValue(); | |
| 224 | - ddfs = doc.getElementsByTagName("DDFS").item(i).getFirstChild() == null ?"": | |
| 225 | - doc.getElementsByTagName("DDFS").item(i).getFirstChild().getNodeValue(); | |
| 226 | - lineStandardCode = doc.getElementsByTagName("LineStandardCode").item(i).getFirstChild() == null ?"": | |
| 227 | - doc.getElementsByTagName("LineStandardCode").item(i).getFirstChild().getNodeValue(); | |
| 228 | - map = new HashMap<>(); | |
| 229 | - map.put("lineName",lineName); | |
| 230 | - map.put("lineId",lineId); | |
| 231 | - map.put("abbreviation",abbreviation); | |
| 232 | - map.put("ddfs",ddfs); | |
| 233 | - map.put("lineStandardCode",lineStandardCode); | |
| 234 | - list.add(map); | |
| 235 | - } | |
| 236 | - } | |
| 237 | - }catch (Exception e){ | |
| 238 | - e.printStackTrace();; | |
| 239 | - } | |
| 240 | - return list; | |
| 241 | - } | |
| 242 | - | |
| 243 | - /** | |
| 244 | - * 批量插入用法 | |
| 245 | - * @param list | |
| 246 | - */ | |
| 247 | - public boolean insertRecord(List<HashMap<String,String>> list) | |
| 248 | - { | |
| 249 | - boolean flag = false; | |
| 250 | - final List<HashMap<String,String>> tempList=list; | |
| 251 | - String sql="INSERT INTO JJWGPS_T_SHSXLFILE(XLID,SHSXLBM,XLMC,GSMC,DDFS,CREATETIME,XLMC_ALL) VALUES (?,?,?,?,?,SYSDATE,?)"; | |
| 252 | - jdbcTemplate = new JdbcTemplate(DBUtils_oldSystem.getDataSource()); | |
| 253 | - jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() | |
| 254 | - { | |
| 255 | - public void setValues(PreparedStatement ps, int i)throws SQLException | |
| 256 | - { | |
| 257 | - String lineId =tempList.get(i).get("lineId"); | |
| 258 | - String lineStandardCode =tempList.get(i).get("lineStandardCode"); | |
| 259 | - String lineName =tempList.get(i).get("lineName"); | |
| 260 | - String abbreviation =tempList.get(i).get("abbreviation"); | |
| 261 | - String ddfs =tempList.get(i).get("ddfs"); | |
| 262 | - String lineNameAll = lineName; | |
| 263 | - if(ddfs.equals("2")){ | |
| 264 | - lineNameAll = lineName+"区间(走向部分在全程线路之外)"; | |
| 265 | - }else if(ddfs.equals("7")){ | |
| 266 | - lineNameAll = lineName+"区间(走向在全程线路之内)"; | |
| 267 | - } | |
| 268 | - ps.setString(1, lineId); | |
| 269 | - ps.setString(2, lineStandardCode); | |
| 270 | - ps.setString(3, lineName); | |
| 271 | - ps.setString(4, abbreviation); | |
| 272 | - ps.setString(5, ddfs); | |
| 273 | - ps.setString(6, lineNameAll); | |
| 274 | - } | |
| 275 | - public int getBatchSize() | |
| 276 | - { | |
| 277 | - return tempList.size(); | |
| 278 | - } | |
| 279 | - }); | |
| 280 | - flag = true; | |
| 281 | - return flag; | |
| 282 | - } | |
| 283 | -} | |
| 1 | +package com.bsth.service.traffic.impl; | |
| 2 | + | |
| 3 | +import com.bsth.service.impl.TrafficManageServiceImpl; | |
| 4 | +import com.bsth.service.traffic.YgcBasicDataService; | |
| 5 | +import com.bsth.util.db.DBUtils_oldSystem; | |
| 6 | +import org.apache.axiom.om.*; | |
| 7 | +import org.apache.axis2.addressing.EndpointReference; | |
| 8 | +import org.apache.axis2.client.Options; | |
| 9 | +import org.apache.axis2.client.ServiceClient; | |
| 10 | +import org.apache.commons.codec.digest.DigestUtils; | |
| 11 | +import org.slf4j.Logger; | |
| 12 | +import org.slf4j.LoggerFactory; | |
| 13 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | +import org.springframework.jdbc.core.BatchPreparedStatementSetter; | |
| 15 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 16 | +import org.springframework.stereotype.Service; | |
| 17 | +import org.w3c.dom.Document; | |
| 18 | +import org.w3c.dom.NodeList; | |
| 19 | + | |
| 20 | +import javax.activation.DataHandler; | |
| 21 | +import javax.xml.parsers.DocumentBuilder; | |
| 22 | +import javax.xml.parsers.DocumentBuilderFactory; | |
| 23 | +import java.io.*; | |
| 24 | +import java.sql.PreparedStatement; | |
| 25 | +import java.sql.SQLException; | |
| 26 | +import java.util.ArrayList; | |
| 27 | +import java.util.HashMap; | |
| 28 | +import java.util.List; | |
| 29 | +import java.util.zip.ZipEntry; | |
| 30 | +import java.util.zip.ZipFile; | |
| 31 | +import java.util.zip.ZipInputStream; | |
| 32 | + | |
| 33 | +/** | |
| 34 | + * 运管处基础数据操作类 | |
| 35 | + * Created by zq on 2017/6/15. | |
| 36 | + */ | |
| 37 | +@Service | |
| 38 | +public class YgcBasicDataServiceImpl implements YgcBasicDataService{ | |
| 39 | + Logger logger = LoggerFactory.getLogger(TrafficManageServiceImpl.class); | |
| 40 | + | |
| 41 | + @Autowired | |
| 42 | + JdbcTemplate jdbcTemplate; | |
| 43 | + | |
| 44 | + private static String IP = "218.242.195.76:9091"; | |
| 45 | + private static String targetEndpoint = "http://" + IP +"/ygc.TransManager.Basicdown?wsdl"; | |
| 46 | + private static String namespace = "http://service.shygc.com"; | |
| 47 | + private static String userName = "admin"; | |
| 48 | + private static String passWord = "000000"; | |
| 49 | + private static EndpointReference targetEPR; | |
| 50 | + { | |
| 51 | + try { | |
| 52 | + targetEPR = new EndpointReference(targetEndpoint); | |
| 53 | + } catch (Exception e) { | |
| 54 | + e.printStackTrace(); | |
| 55 | + } | |
| 56 | + } | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * 更新运管处基础数据 | |
| 60 | + */ | |
| 61 | + public void updateYgcBasicData(){ | |
| 62 | + String saveFile = "ygcBasicData.zip"; | |
| 63 | + String flag = "failure"; | |
| 64 | + try { | |
| 65 | + // 调用接口下载基础数据 | |
| 66 | + if(download(userName, DigestUtils.md5Hex(passWord), saveFile)){ | |
| 67 | + // 读取基础数据zip | |
| 68 | + StringBuffer sb = readZipFile(saveFile); | |
| 69 | + // 解析xml | |
| 70 | + List<HashMap<String,String>> result = parseXml(sb); | |
| 71 | + // 插入数据库 | |
| 72 | + if(result != null && result.size() > 0){ | |
| 73 | + insertRecord(result); | |
| 74 | + } | |
| 75 | + } | |
| 76 | + flag = "success"; | |
| 77 | + }catch (Exception e){ | |
| 78 | + e.printStackTrace(); | |
| 79 | + } | |
| 80 | + finally { | |
| 81 | + // 删除文件 | |
| 82 | + File fill = new File(saveFile); | |
| 83 | + logger.info("updateYgcBasicData:"+fill.getAbsolutePath()); | |
| 84 | + logger.info("updateYgcBasicData:"+flag); | |
| 85 | + if(fill.exists()){ | |
| 86 | + fill.delete(); | |
| 87 | + } | |
| 88 | + } | |
| 89 | + } | |
| 90 | + /** | |
| 91 | + * 下载基础数据,并生成rar文件 | |
| 92 | + * @param userName | |
| 93 | + * @param password | |
| 94 | + * @param saveFile | |
| 95 | + * @return | |
| 96 | + */ | |
| 97 | + private boolean download(String userName, String password, String saveFile) | |
| 98 | + { | |
| 99 | + try | |
| 100 | + { | |
| 101 | + OMElement data = buildDownloadEnvelope(userName, password); | |
| 102 | + ServiceClient sender = new ServiceClient(); | |
| 103 | + Options options = sender.getOptions(); | |
| 104 | + options.setProperty("SO_TIMEOUT", Integer.valueOf(1800000)); | |
| 105 | + options.setTo(targetEPR); | |
| 106 | + sender.setOptions(options); | |
| 107 | + System.out.println("The data in method download: " + data); | |
| 108 | + data.build(); | |
| 109 | + OMElement ome = sender.sendReceive(data); | |
| 110 | + | |
| 111 | + OMText binaryNode = (OMText)ome.getFirstOMChild(); | |
| 112 | + binaryNode.setOptimize(true); | |
| 113 | + DataHandler actualDH = (DataHandler)binaryNode.getDataHandler(); | |
| 114 | + FileOutputStream imageOutStream = new FileOutputStream(saveFile); | |
| 115 | + InputStream is = actualDH.getInputStream(); | |
| 116 | + int read ; | |
| 117 | + byte[] buffer = new byte[1024]; | |
| 118 | + while ((read = is.read(buffer)) != -1) { | |
| 119 | + imageOutStream.write(buffer, 0, read); | |
| 120 | + } | |
| 121 | + return true; | |
| 122 | + } catch (Exception e) { | |
| 123 | + e.printStackTrace(); | |
| 124 | + }return false; | |
| 125 | + } | |
| 126 | + | |
| 127 | + /** | |
| 128 | + * 构建webservice接口参数 | |
| 129 | + * @param userName | |
| 130 | + * @param password | |
| 131 | + * @return | |
| 132 | + */ | |
| 133 | + private OMElement buildDownloadEnvelope(String userName, String password) | |
| 134 | + { | |
| 135 | + OMFactory fac = OMAbstractFactory.getOMFactory(); | |
| 136 | + OMNamespace omNs = fac.createOMNamespace(namespace, | |
| 137 | + "ser"); | |
| 138 | + OMElement data = fac.createOMElement("downloadAllDataFile", omNs); | |
| 139 | + OMElement _userName = fac.createOMElement("userName", omNs); | |
| 140 | + _userName.setText(userName); | |
| 141 | + OMElement _passWord = fac.createOMElement("passWord", omNs); | |
| 142 | + _passWord.setText(String.valueOf(password)); | |
| 143 | + | |
| 144 | + data.addChild(_userName); | |
| 145 | + data.addChild(_passWord); | |
| 146 | + | |
| 147 | + OMElement soap = fac.createOMElement("downloadAllDataFile", omNs); | |
| 148 | + soap.addChild(data); | |
| 149 | + return soap; | |
| 150 | + } | |
| 151 | + | |
| 152 | + /** | |
| 153 | + * 读取zip文件的内容 | |
| 154 | + * @param file | |
| 155 | + * @return | |
| 156 | + * @throws Exception | |
| 157 | + */ | |
| 158 | + public StringBuffer readZipFile(String file) throws Exception { | |
| 159 | + ZipFile zf = new ZipFile(file); | |
| 160 | + InputStream in = new BufferedInputStream(new FileInputStream(file)); | |
| 161 | + ZipInputStream zin = new ZipInputStream(in); | |
| 162 | + ZipEntry ze; | |
| 163 | + StringBuffer sb = new StringBuffer(); | |
| 164 | + while ((ze = zin.getNextEntry()) != null) { | |
| 165 | + System.out.print(ze); | |
| 166 | + if (ze.isDirectory()) { | |
| 167 | + } else { | |
| 168 | + System.err.println("file - " + ze.getName() + " : " | |
| 169 | + + ze.getSize() + " bytes"); | |
| 170 | + long size = ze.getSize(); | |
| 171 | + if (size > 0) { | |
| 172 | + BufferedReader br = new BufferedReader( | |
| 173 | + new InputStreamReader(zf.getInputStream(ze),"GBK")); | |
| 174 | + String line; | |
| 175 | + boolean addFlag = false; | |
| 176 | + while ((line = br.readLine()) != null) { | |
| 177 | + if(line.indexOf("BusLineList") != -1){ | |
| 178 | + addFlag = true; | |
| 179 | + } | |
| 180 | + if(addFlag){ | |
| 181 | + sb.append(line); | |
| 182 | + } | |
| 183 | + | |
| 184 | + if(line.indexOf("/BusLineList") != -1){ | |
| 185 | + break; | |
| 186 | + } | |
| 187 | + } | |
| 188 | + br.close(); | |
| 189 | + } | |
| 190 | + } | |
| 191 | + } | |
| 192 | + zin.closeEntry(); | |
| 193 | + return sb; | |
| 194 | + } | |
| 195 | + | |
| 196 | + /** | |
| 197 | + * 解析xml | |
| 198 | + * @param sb | |
| 199 | + */ | |
| 200 | + private List<HashMap<String,String>> parseXml(StringBuffer sb){ | |
| 201 | + List<HashMap<String,String>> list = new ArrayList<>(); | |
| 202 | + HashMap<String,String> map; | |
| 203 | + try { | |
| 204 | + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |
| 205 | + DocumentBuilder builder = factory.newDocumentBuilder(); | |
| 206 | + Document doc = builder.parse(new ByteArrayInputStream(sb.toString().getBytes())); | |
| 207 | + NodeList nl = doc.getElementsByTagName("BusLine"); | |
| 208 | + String lineName; //线路名称 | |
| 209 | + String lineId; // 线路ID | |
| 210 | + String abbreviation ; // 公司名称 | |
| 211 | + String ddfs ; // 调度方式 | |
| 212 | + String lineStandardCode; // 上海市线路编码 | |
| 213 | + String parentUnitName ; // 总公司 | |
| 214 | + for (int i = 0; i < nl.getLength(); i++) { | |
| 215 | + parentUnitName = doc.getElementsByTagName("ParentUnitName").item(i).getFirstChild() == null ?"": | |
| 216 | + doc.getElementsByTagName("ParentUnitName").item(i).getFirstChild().getNodeValue(); | |
| 217 | + if(parentUnitName.indexOf("浦东") != -1){// 只查找浦东的数据 | |
| 218 | + lineName = doc.getElementsByTagName("LineName").item(i).getFirstChild() == null ?"": | |
| 219 | + doc.getElementsByTagName("LineName").item(i).getFirstChild().getNodeValue(); | |
| 220 | + lineId = doc.getElementsByTagName("LineId").item(i).getFirstChild() == null ?"": | |
| 221 | + doc.getElementsByTagName("LineId").item(i).getFirstChild().getNodeValue(); | |
| 222 | + abbreviation = doc.getElementsByTagName("Abbreviation").item(i).getFirstChild() == null ?"": | |
| 223 | + doc.getElementsByTagName("Abbreviation").item(i).getFirstChild().getNodeValue(); | |
| 224 | + ddfs = doc.getElementsByTagName("DDFS").item(i).getFirstChild() == null ?"": | |
| 225 | + doc.getElementsByTagName("DDFS").item(i).getFirstChild().getNodeValue(); | |
| 226 | + lineStandardCode = doc.getElementsByTagName("LineStandardCode").item(i).getFirstChild() == null ?"": | |
| 227 | + doc.getElementsByTagName("LineStandardCode").item(i).getFirstChild().getNodeValue(); | |
| 228 | + map = new HashMap<>(); | |
| 229 | + map.put("lineName",lineName); | |
| 230 | + map.put("lineId",lineId); | |
| 231 | + map.put("abbreviation",abbreviation); | |
| 232 | + map.put("ddfs",ddfs); | |
| 233 | + map.put("lineStandardCode",lineStandardCode); | |
| 234 | + list.add(map); | |
| 235 | + } | |
| 236 | + } | |
| 237 | + }catch (Exception e){ | |
| 238 | + e.printStackTrace();; | |
| 239 | + } | |
| 240 | + return list; | |
| 241 | + } | |
| 242 | + | |
| 243 | + /** | |
| 244 | + * 批量插入用法 | |
| 245 | + * @param list | |
| 246 | + */ | |
| 247 | + public boolean insertRecord(List<HashMap<String,String>> list) | |
| 248 | + { | |
| 249 | + boolean flag = false; | |
| 250 | + final List<HashMap<String,String>> tempList=list; | |
| 251 | + String sql="INSERT INTO JJWGPS_T_SHSXLFILE(XLID,SHSXLBM,XLMC,GSMC,DDFS,CREATETIME,XLMC_ALL) VALUES (?,?,?,?,?,SYSDATE,?)"; | |
| 252 | + jdbcTemplate = new JdbcTemplate(DBUtils_oldSystem.getDataSource()); | |
| 253 | + jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() | |
| 254 | + { | |
| 255 | + public void setValues(PreparedStatement ps, int i)throws SQLException | |
| 256 | + { | |
| 257 | + String lineId =tempList.get(i).get("lineId"); | |
| 258 | + String lineStandardCode =tempList.get(i).get("lineStandardCode"); | |
| 259 | + String lineName =tempList.get(i).get("lineName"); | |
| 260 | + String abbreviation =tempList.get(i).get("abbreviation"); | |
| 261 | + String ddfs =tempList.get(i).get("ddfs"); | |
| 262 | + String lineNameAll = lineName; | |
| 263 | + if(ddfs.equals("2")){ | |
| 264 | + lineNameAll = lineName+"区间(走向部分在全程线路之外)"; | |
| 265 | + }else if(ddfs.equals("7")){ | |
| 266 | + lineNameAll = lineName+"区间(走向在全程线路之内)"; | |
| 267 | + } | |
| 268 | + ps.setString(1, lineId); | |
| 269 | + ps.setString(2, lineStandardCode); | |
| 270 | + ps.setString(3, lineName); | |
| 271 | + ps.setString(4, abbreviation); | |
| 272 | + ps.setString(5, ddfs); | |
| 273 | + ps.setString(6, lineNameAll); | |
| 274 | + } | |
| 275 | + public int getBatchSize() | |
| 276 | + { | |
| 277 | + return tempList.size(); | |
| 278 | + } | |
| 279 | + }); | |
| 280 | + flag = true; | |
| 281 | + return flag; | |
| 282 | + } | |
| 283 | +} | ... | ... |
src/main/resources/static/pages/base/line/add.html
| ... | ... | @@ -199,6 +199,40 @@ |
| 199 | 199 | </div> |
| 200 | 200 | <!-- 表单分组组件 form-group END --> |
| 201 | 201 | |
| 202 | + <!-- 表单分组组件 form-group START --> | |
| 203 | + <div class="form-group"> | |
| 204 | + <!-- 是否营运START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> | |
| 205 | + <div class="col-md-6"> | |
| 206 | + <label class="control-label col-md-5"> | |
| 207 | + <span class="required"> * </span>是否营运线路 : | |
| 208 | + </label> | |
| 209 | + <div class="col-md-4"> | |
| 210 | + <div class="md-radio-inline"> | |
| 211 | + <div class="md-radio"> | |
| 212 | + <input type="radio" id="radio18" name="sfyy" class="md-radiobtn" value="1" data-title="是" checked="checked" > | |
| 213 | + <label for="radio18"> | |
| 214 | + <span></span> | |
| 215 | + <span class="check"></span> | |
| 216 | + <span class="box"></span> 是 | |
| 217 | + </label> | |
| 218 | + </div> | |
| 219 | + <div class="md-radio has-error"> | |
| 220 | + <input type="radio" id="radio19" name="sfyy" class="md-radiobtn" value="0" data-title="否" > | |
| 221 | + <label for="radio19" style="color:#FFC0CB"> | |
| 222 | + <span></span> | |
| 223 | + <span class="check"></span> | |
| 224 | + <span class="box"></span> 否 | |
| 225 | + </label> | |
| 226 | + </div> | |
| 227 | + </div> | |
| 228 | + </div> | |
| 229 | + </div> | |
| 230 | + <!-- 是否营运 END --> | |
| 231 | + | |
| 232 | + | |
| 233 | + </div> | |
| 234 | + <!-- 表单分组组件 form-group END --> | |
| 235 | + | |
| 202 | 236 | <!-- 表单分组组件 form-group START --> |
| 203 | 237 | <div class="form-group"> |
| 204 | 238 | <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) --> | ... | ... |
src/main/resources/static/pages/base/line/details.html
| ... | ... | @@ -191,7 +191,39 @@ |
| 191 | 191 | <!-- 是否撤销 START --> |
| 192 | 192 | </div> |
| 193 | 193 | <!-- 表单分组组件 form-group END --> |
| 194 | - | |
| 194 | + <!-- 表单分组组件 form-group START --> | |
| 195 | + <div class="form-group"> | |
| 196 | + <!-- 是否营运START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> | |
| 197 | + <div class="col-md-6"> | |
| 198 | + <label class="control-label col-md-5"> | |
| 199 | + <span class="required"> * </span>是否营运线路 : | |
| 200 | + </label> | |
| 201 | + <div class="col-md-4"> | |
| 202 | + <div class="md-radio-inline"> | |
| 203 | + <div class="md-radio"> | |
| 204 | + <input type="radio" id="radio18" name="sfyy" class="md-radiobtn" value="1" data-title="是" checked="checked" > | |
| 205 | + <label for="radio18"> | |
| 206 | + <span></span> | |
| 207 | + <span class="check"></span> | |
| 208 | + <span class="box"></span> 是 | |
| 209 | + </label> | |
| 210 | + </div> | |
| 211 | + <div class="md-radio has-error"> | |
| 212 | + <input type="radio" id="radio19" name="sfyy" class="md-radiobtn" value="0" data-title="否" > | |
| 213 | + <label for="radio19" style="color:#FFC0CB"> | |
| 214 | + <span></span> | |
| 215 | + <span class="check"></span> | |
| 216 | + <span class="box"></span> 否 | |
| 217 | + </label> | |
| 218 | + </div> | |
| 219 | + </div> | |
| 220 | + </div> | |
| 221 | + </div> | |
| 222 | + <!-- 是否营运 END --> | |
| 223 | + | |
| 224 | + | |
| 225 | + </div> | |
| 226 | + <!-- 表单分组组件 form-group END --> | |
| 195 | 227 | <!-- 表单分组组件 form-group START --> |
| 196 | 228 | <div class="form-group"> |
| 197 | 229 | <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) --> | ... | ... |
src/main/resources/static/pages/base/line/edit.html
| ... | ... | @@ -199,7 +199,39 @@ |
| 199 | 199 | <!-- 是否撤销 START --> |
| 200 | 200 | </div> |
| 201 | 201 | <!-- 表单分组组件 form-group END --> |
| 202 | - | |
| 202 | + <!-- 表单分组组件 form-group START --> | |
| 203 | + <div class="form-group"> | |
| 204 | + <!-- 是否营运START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> | |
| 205 | + <div class="col-md-6"> | |
| 206 | + <label class="control-label col-md-5"> | |
| 207 | + <span class="required"> * </span>是否营运线路 : | |
| 208 | + </label> | |
| 209 | + <div class="col-md-4"> | |
| 210 | + <div class="md-radio-inline"> | |
| 211 | + <div class="md-radio"> | |
| 212 | + <input type="radio" id="radio18" name="sfyy" class="md-radiobtn" value="1" data-title="是" checked="checked" > | |
| 213 | + <label for="radio18"> | |
| 214 | + <span></span> | |
| 215 | + <span class="check"></span> | |
| 216 | + <span class="box"></span> 是 | |
| 217 | + </label> | |
| 218 | + </div> | |
| 219 | + <div class="md-radio has-error"> | |
| 220 | + <input type="radio" id="radio19" name="sfyy" class="md-radiobtn" value="0" data-title="否" > | |
| 221 | + <label for="radio19" style="color:#FFC0CB"> | |
| 222 | + <span></span> | |
| 223 | + <span class="check"></span> | |
| 224 | + <span class="box"></span> 否 | |
| 225 | + </label> | |
| 226 | + </div> | |
| 227 | + </div> | |
| 228 | + </div> | |
| 229 | + </div> | |
| 230 | + <!-- 是否营运 END --> | |
| 231 | + | |
| 232 | + | |
| 233 | + </div> | |
| 234 | + <!-- 表单分组组件 form-group END --> | |
| 203 | 235 | <!-- 表单分组组件 form-group START --> |
| 204 | 236 | <div class="form-group"> |
| 205 | 237 | <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) --> | ... | ... |
src/main/resources/static/pages/base/stationroute/delete_select.html
0 → 100644
| 1 | +<!-- 批量撤销选项 --> | |
| 2 | +<div class="modal fade" id="delete_select_mobal" tabindex="-1" | |
| 3 | + role="basic" aria-hidden="true"> | |
| 4 | + <div class="modal-dialog"> | |
| 5 | + <div class="modal-content"> | |
| 6 | + <div class="modal-header"> | |
| 7 | + <button type="button" class="close" data-dismiss="modal" | |
| 8 | + aria-hidden="true"></button> | |
| 9 | + <h4 class="modal-title"> | |
| 10 | + 批量撤销选项 | |
| 11 | + </h4> | |
| 12 | + </div> | |
| 13 | + <div class="modal-body"> | |
| 14 | + <form class="form-horizontal" action="/" method="post" | |
| 15 | + id="formBootbox" role="form"> | |
| 16 | + <div class="form-group"> | |
| 17 | + <label class="col-md-3 control-label">撤销选项:</label> | |
| 18 | + <div class="col-md-9"> | |
| 19 | + <div class="icheck-list"> | |
| 20 | + <label> | |
| 21 | + <input type="radio" name="deleteOptions" value="0" checked> 批量撤销站点 | |
| 22 | + </label> | |
| 23 | + <label > | |
| 24 | + <input type="radio" name="deleteOptions" value="1" > 批量撤销路段 | |
| 25 | + </label> | |
| 26 | + </div> | |
| 27 | + </div> | |
| 28 | + </div> | |
| 29 | + </form> | |
| 30 | + </div> | |
| 31 | + <div class="modal-footer"> | |
| 32 | + <button type="button" class="btn default" data-dismiss="modal">取消</button> | |
| 33 | + <button type="button" class="btn btn-primary" | |
| 34 | + id="deleteSelectnextButton">下一步</button> | |
| 35 | + </div> | |
| 36 | + </div> | |
| 37 | + </div> | |
| 38 | +</div> | |
| 39 | +<script type="text/javascript"> | |
| 40 | + $('#delete_select_mobal').on('deleteSelectMobal.show',function(e,ajaxd,line,fun,delBatch) { | |
| 41 | + // 加载显示mobal | |
| 42 | + $('#delete_select_mobal').modal({ | |
| 43 | + show : true, | |
| 44 | + backdrop : 'static', | |
| 45 | + keyboard : false | |
| 46 | + }); | |
| 47 | + // 获取表单元素 | |
| 48 | + var form = $('#formBootbox'); | |
| 49 | + // 下一步点击事件 | |
| 50 | + $('#deleteSelectnextButton').on('click', function() { | |
| 51 | + // 获取撤销类型 | |
| 52 | + deleteOptions = $("input[name='deleteOptions']:checked").val(); | |
| 53 | + // 表单提交 | |
| 54 | + form.submit(); | |
| 55 | + }); | |
| 56 | + // 表单验证 | |
| 57 | + form.validate({ | |
| 58 | + // 表单序列化 | |
| 59 | + submitHandler : function(f) { | |
| 60 | + // 批量删除站点 (deleteOptions:0) | |
| 61 | + if(deleteOptions == 0) { | |
| 62 | + // 隐藏选项mobal | |
| 63 | + $('#delete_select_mobal').modal('hide'); | |
| 64 | + // 加载deletestation页面 | |
| 65 | + $.get('deletestation.html', function(m){ | |
| 66 | + $(pjaxContainer).append(m); | |
| 67 | + $('#delete_station_mobal').trigger('deleteStationMobal.show', [ajaxd,line,fun,delBatch]); | |
| 68 | + }); | |
| 69 | + // 批量删除路段(deleteOptions:1) | |
| 70 | + } else if(deleteOptions == 1) { | |
| 71 | + // 隐藏选项mobal | |
| 72 | + $('#delete_select_mobal').modal('hide'); | |
| 73 | + // 加载deletesection页面 | |
| 74 | + $.get('deletesection.html', function(m){ | |
| 75 | + $(pjaxContainer).append(m); | |
| 76 | + $('#delete_section_mobal').trigger('deleteSectionMobal.show', [ajaxd,line,fun,delBatch]); | |
| 77 | + }); | |
| 78 | + } | |
| 79 | + | |
| 80 | + } | |
| 81 | + }); | |
| 82 | + }); | |
| 83 | +</script> | |
| 0 | 84 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/stationroute/deletesection.html
0 → 100644
| 1 | +<!-- 编辑路段 --> | |
| 2 | +<div class="modal fade" id="delete_section_mobal" role="basic" | |
| 3 | + aria-hidden="true"> | |
| 4 | + <div style="margin:5% auto"> | |
| 5 | + <div class="modal-content"> | |
| 6 | + <div class="col-md-12"> | |
| 7 | + <div class="portlet light porttlet-fit bordered"> | |
| 8 | + <div class="portlet-title"> | |
| 9 | + <div class="tipso-animation"> | |
| 10 | + </div> | |
| 11 | + <div class="caption"> | |
| 12 | + <i class="fa fa-info-circle font-dark"></i> <span | |
| 13 | + class="caption-subject font-dark sbold uppercase">路段信息</span> | |
| 14 | + </div> | |
| 15 | + <div class="actions"> | |
| 16 | + <div class="modal-footer-left"> | |
| 17 | + <button type="button" class="btn btn-primary" id="batchDeleteSectionButton">批量撤销路段</button> | |
| 18 | + <button type="button" class="btn default" data-dismiss="modal">取消</button> | |
| 19 | + </div> | |
| 20 | + </div> | |
| 21 | + </div> | |
| 22 | + <div class="portlet-body"> | |
| 23 | + <div class="table-container" style="margin-top: 10px"> | |
| 24 | + <from class="form-horizontal" role="form" | |
| 25 | + id="batch_delete_section_form"> | |
| 26 | + <table | |
| 27 | + class="table table-striped table-bordered table-hover table-checkable" | |
| 28 | + id="datatable_section_detele"> | |
| 29 | + <thead> | |
| 30 | + <tr role="row" class="heading"> | |
| 31 | + <th width="2%"><input type="checkbox" name="scetionCheckItems" | |
| 32 | + id="scetionCheckItems"></input></th> | |
| 33 | + <th width="2%">序号</th> | |
| 34 | + <th width="5%">路段路由编号</th> | |
| 35 | + <th width="5%">线路编号</th> | |
| 36 | + <th width="11%">线路名称</th> | |
| 37 | + <th width="7%">线路方向</th> | |
| 38 | + <th width="11%">路段名称</th> | |
| 39 | + <th width="5%">路段编码</th> | |
| 40 | + <th width="5%">路段序号</th> | |
| 41 | + <th width="5%">路段限速</th> | |
| 42 | + <th width="5%">路段长度</th> | |
| 43 | + <th width="5%">路段历时</th> | |
| 44 | + <th width="5%">版本号</th> | |
| 45 | + <!-- <th width="6%">是否撤销</th> | |
| 46 | + <th width="9%">操作</th> --> | |
| 47 | + </tr> | |
| 48 | + </thead> | |
| 49 | + <tbody></tbody> | |
| 50 | + </table> | |
| 51 | + </from> | |
| 52 | + <div class="actions"> | |
| 53 | + <div style="text-align: right"> | |
| 54 | + <ul id="pagination" class="pagination"></ul> | |
| 55 | + </div> | |
| 56 | + </div> | |
| 57 | + </div> | |
| 58 | + </div> | |
| 59 | + </div> | |
| 60 | + </div> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | +</div> | |
| 64 | + | |
| 65 | +<script type="text/html" id="sectionInfo_list_table_temp_detele"> | |
| 66 | + {{each list as obj i }} | |
| 67 | + <tr> | |
| 68 | + <td style="vertical-align: middle;"> | |
| 69 | + <input type="checkbox" class="group-checkable icheck" name="items" value="{{obj.id}}" id="{{obj.id}}" > | |
| 70 | + </td> | |
| 71 | + <td style="vertical-align: middle;"> | |
| 72 | + {{(list.page*10)+(i+1)}} | |
| 73 | + </td> | |
| 74 | + <td style="vertical-align: middle;"> | |
| 75 | + {{obj.id}} | |
| 76 | + </td> | |
| 77 | + <td style="vertical-align: middle;"> | |
| 78 | + {{obj.lineCode}} | |
| 79 | + </td> | |
| 80 | + <td style="vertical-align: middle;"> | |
| 81 | + {{obj.line.name}} | |
| 82 | + </td> | |
| 83 | + <td style="vertical-align: middle;"> | |
| 84 | + {{if obj.directions == '0'}} | |
| 85 | + 上行 | |
| 86 | + {{else if obj.directions == '1'}} | |
| 87 | + 下行 | |
| 88 | + {{/if}} | |
| 89 | + </td> | |
| 90 | + <td style="vertical-align: middle;"> | |
| 91 | + {{obj.section.sectionName}} | |
| 92 | + </td> | |
| 93 | + <td style="vertical-align: middle;"> | |
| 94 | + {{obj.sectionCode}} | |
| 95 | + </td> | |
| 96 | + <td style="vertical-align: middle;"> | |
| 97 | + {{obj.sectionrouteCode}} | |
| 98 | + </td> | |
| 99 | + <td style="vertical-align: middle;"> | |
| 100 | + {{obj.speedLimit}} | |
| 101 | + </td> | |
| 102 | + <td style="vertical-align: middle;"> | |
| 103 | + {{obj.sectionDistance}} | |
| 104 | + </td> | |
| 105 | + <td style="vertical-align: middle;"> | |
| 106 | + {{obj.sectionTime}} | |
| 107 | + </td> | |
| 108 | + <td style="vertical-align: middle;"> | |
| 109 | + {{obj.versions}} | |
| 110 | + </td> | |
| 111 | + </tr> | |
| 112 | + {{/each}} | |
| 113 | + {{if list.length == 0}} | |
| 114 | + <tr> | |
| 115 | + <td colspan=13><h6 class="muted">没有找到相关数据</h6></td> | |
| 116 | + </tr> | |
| 117 | + {{/if}} | |
| 118 | +</script> | |
| 119 | +<script type="text/javascript"> | |
| 120 | +$('#delete_section_mobal').on('deleteSectionMobal.show',function(e, ajaxd, line, fun, delBatch) { | |
| 121 | + layer.closeAll(); | |
| 122 | + // 显示mobal | |
| 123 | + $('#delete_section_mobal').modal({ | |
| 124 | + show : true, | |
| 125 | + backdrop : 'static', | |
| 126 | + keyboard : false | |
| 127 | + }); | |
| 128 | + // 编辑表单元素 | |
| 129 | + var form = $('#batch_delete_section_form'); | |
| 130 | + // 提交数据按钮事件 | |
| 131 | + $('#batchDeleteSectionButton').on('click', function() { | |
| 132 | + var checked = $("[name=items]:checked"); | |
| 133 | + var ids = ""; | |
| 134 | + checked.each(function() { | |
| 135 | + ids = ids + "," + $(this).val(); | |
| 136 | + //ids.push($(this).val()); | |
| 137 | + }); | |
| 138 | + if (ids != "" && ids != null && ids != undefined) { | |
| 139 | + console.log("ids:" + ids); | |
| 140 | + ids = ids.substr(1, ids.length - 1); | |
| 141 | + var params = {}; | |
| 142 | + params.ids = ids; | |
| 143 | + $.get('/sectionroute/batchDestroy',params,function(resuntDate) { | |
| 144 | + if (resuntDate.status == 'SUCCESS') { | |
| 145 | + // 弹出添加成功提示消息 | |
| 146 | + layer.msg('修改成功...'); | |
| 147 | + /** 通知更新缓存区 */ | |
| 148 | + //$.post('http://192.168.168.171:8800/transport_server/basic/refresh',function(rs) {console.log(rs)}) | |
| 149 | + } else { | |
| 150 | + // 弹出添加失败提示消息 | |
| 151 | + layer.msg('修改失败...'); | |
| 152 | + } | |
| 153 | + initSearch(); | |
| 154 | + // 刷新左边树 | |
| 155 | + fun.resjtreeDate(line.id,delBatch.dir); | |
| 156 | + /** 查询路段信息 @param:<Line.id:线路Id;delBatch.dir:方向> @return:data:路段数据 */ | |
| 157 | + ajaxd.getSectionRouteInfo(line.id,delBatch.dir,function(data) { | |
| 158 | + /** 在地图上画出线路走向 @param:<Line.id:线路Id;delBatch.dir:方向;data:路段数据> */ | |
| 159 | + fun.linePanlThree(line.id,data,delBatch.dir); | |
| 160 | + }); | |
| 161 | + }); | |
| 162 | + } else { | |
| 163 | + layer.msg('请选择要删除的路段!!!'); | |
| 164 | + } | |
| 165 | + }); | |
| 166 | + | |
| 167 | + /** 全选框 */ | |
| 168 | + document.getElementById('scetionCheckItems').onclick = function() { | |
| 169 | + // 获取所有的复选框 | |
| 170 | + var checkElements = document.getElementsByName('items'); | |
| 171 | + if (this.checked) { | |
| 172 | + for ( var i = 0; i < checkElements.length; i++) { | |
| 173 | + var checkElement = checkElements[i]; | |
| 174 | + checkElement.checked = "checked"; | |
| 175 | + } | |
| 176 | + } else { | |
| 177 | + for ( var i = 0; i < checkElements.length; i++) { | |
| 178 | + var checkElement = checkElements[i]; | |
| 179 | + checkElement.checked = null; | |
| 180 | + } | |
| 181 | + } | |
| 182 | + } | |
| 183 | + | |
| 184 | + /** 页面加载完显示数据 */ | |
| 185 | + window.onload = initSearch(); | |
| 186 | + | |
| 187 | + /** | |
| 188 | + * @description : (TODO) 页面加载事件 | |
| 189 | + * | |
| 190 | + */ | |
| 191 | + function initSearch() { | |
| 192 | + var params = new getParams(); | |
| 193 | + page = 0; | |
| 194 | + loadTableDate(params, true); | |
| 195 | + } | |
| 196 | + function getParams() { | |
| 197 | + // 搜索参数集合 | |
| 198 | + params = {}; | |
| 199 | + params.lineCode_eq = line.id; | |
| 200 | + params.directions_eq = delBatch.dir; | |
| 201 | + params.destroy_eq = "0"; //默认查没有撤销的路段 | |
| 202 | + return params; | |
| 203 | + } | |
| 204 | + /** | |
| 205 | + * @description : (TODO) 表格数据分页加载事件 | |
| 206 | + * | |
| 207 | + * ------@param : 查询参数 | |
| 208 | + * | |
| 209 | + * ------@isPon : 是否重新分页 | |
| 210 | + * | |
| 211 | + */ | |
| 212 | + function loadTableDate(param, isPon) { | |
| 213 | + // 搜索参数 | |
| 214 | + var params = {}; | |
| 215 | + if (param) | |
| 216 | + params = param; | |
| 217 | + // 排序(按方向与序号) | |
| 218 | + params['order'] = 'directions,sectionrouteCode'; | |
| 219 | + // 排序方向. | |
| 220 | + params['direction'] = 'ASC,ASC'; | |
| 221 | + // 记录当前页数 | |
| 222 | + params['page'] = page; | |
| 223 | + // 弹出正在加载层 | |
| 224 | + var i = layer.load(2); | |
| 225 | + // 异步请求获取表格数据 | |
| 226 | + $.get('/sectionroute',params,function(result) { | |
| 227 | + // 添加序号 | |
| 228 | + result.content.page = page; | |
| 229 | + // 把数据填充到模版中 | |
| 230 | + var tbodyHtml = template('sectionInfo_list_table_temp_detele',{list : result.content}); | |
| 231 | + // 把渲染好的模版html文本追加到表格中 | |
| 232 | + $('#datatable_section_detele tbody').html(tbodyHtml); | |
| 233 | + // 是重新分页且返回数据长度大于0 | |
| 234 | + if (isPon && result.content.length > 0) { | |
| 235 | + // 重新分页 | |
| 236 | + initPag = true; | |
| 237 | + // 分页栏 | |
| 238 | + showPagination(result); | |
| 239 | + } | |
| 240 | + // 关闭弹出加载层 | |
| 241 | + layer.close(i); | |
| 242 | + }); | |
| 243 | + } | |
| 244 | + /** | |
| 245 | + * @description : (TODO) 分页栏组件 | |
| 246 | + * | |
| 247 | + */ | |
| 248 | + function showPagination(data) { | |
| 249 | + // 分页组件 | |
| 250 | + $('#pagination').jqPaginator({ | |
| 251 | + // 总页数 | |
| 252 | + totalPages : data.totalPages, | |
| 253 | + // 中间显示页数 | |
| 254 | + visiblePages : 6, | |
| 255 | + // 当前页 | |
| 256 | + urrentPage : page + 1, | |
| 257 | + first : '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>', | |
| 258 | + prev : '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>', | |
| 259 | + next : '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>', | |
| 260 | + last : '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>', | |
| 261 | + page : '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>', | |
| 262 | + onPageChange : function(num, type) { | |
| 263 | + if (initPag) { | |
| 264 | + initPag = false; | |
| 265 | + return; | |
| 266 | + } | |
| 267 | + var pData = getParams(); | |
| 268 | + page = num - 1; | |
| 269 | + loadTableDate(pData, false); | |
| 270 | + } | |
| 271 | + }); | |
| 272 | + } | |
| 273 | +}); | |
| 274 | +</script> | |
| 0 | 275 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/stationroute/deletestation.html
0 → 100644
| 1 | +<!-- 编辑路段 --> | |
| 2 | +<div class="modal fade" id="delete_station_mobal" role="basic" | |
| 3 | + aria-hidden="true"> | |
| 4 | + <div style="margin:5% auto"> | |
| 5 | + <div class="modal-content"> | |
| 6 | + <div class="col-md-12"> | |
| 7 | + <div class="portlet light porttlet-fit bordered"> | |
| 8 | + <div class="portlet-title"> | |
| 9 | + <div class="tipso-animation"> | |
| 10 | + </div> | |
| 11 | + <div class="caption"> | |
| 12 | + <i class="fa fa-info-circle font-dark"></i> | |
| 13 | + <span class="caption-subject font-dark sbold uppercase">站点信息</span> | |
| 14 | + </div> | |
| 15 | + <div class="actions"> | |
| 16 | + <div class="btn-group btn-group-devided" data-toggle="buttons"> | |
| 17 | + <button type="button" class="btn btn-primary" id="batchDeleteStationButton">批量撤销站点</button> | |
| 18 | + <button type="button" class="btn default" data-dismiss="modal">取消</button> | |
| 19 | + </div> | |
| 20 | + </div> | |
| 21 | + </div> | |
| 22 | + <div class="portlet-body"> | |
| 23 | + <div class="table-container" style="margin-top: 10px"> | |
| 24 | + <from class="form-horizontal" role="form" id="batch_delete_station_form"> | |
| 25 | + <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_station_detele"> | |
| 26 | + <thead> | |
| 27 | + <tr role="row" class="heading"> | |
| 28 | + <th width="2%"><input type="checkbox" name="checkItems" | |
| 29 | + id="stationCheckItems"></input></th> | |
| 30 | + <th width="2%">序号</th> | |
| 31 | + <th width="5%">站点路由编号</th> | |
| 32 | + <th width="5%">线路编号</th> | |
| 33 | + <th width="8%">线路名称</th> | |
| 34 | + <th width="5%">线路方向</th> | |
| 35 | + <th width="8%">站点路由名称</th> | |
| 36 | + <th width="4%">站点编码</th> | |
| 37 | + <th width="4%">站点序号</th> | |
| 38 | + <th width="4%">站点类型</th> | |
| 39 | + <th width="6%">站点距离(km)</th> | |
| 40 | + <th width="6%">站点时长(min)</th> | |
| 41 | + <th width="4%">版本号</th> | |
| 42 | + </tr> | |
| 43 | + </thead> | |
| 44 | + <tbody></tbody> | |
| 45 | + </table> | |
| 46 | + </from> | |
| 47 | + <div class="actions"> | |
| 48 | + <div style="text-align: right"> | |
| 49 | + <ul id="pagination" class="pagination"></ul> | |
| 50 | + </div> | |
| 51 | + </div> | |
| 52 | + </div> | |
| 53 | + </div> | |
| 54 | + </div> | |
| 55 | + </div> | |
| 56 | + </div> | |
| 57 | + </div> | |
| 58 | +</div> | |
| 59 | + | |
| 60 | +<script type="text/html" id="stationInfo_list_table_temp_detele"> | |
| 61 | + {{each list as obj i }} | |
| 62 | + <tr> | |
| 63 | + <td style="vertical-align: middle;"> | |
| 64 | + <input type="checkbox" class="group-checkable icheck" name="items" value="{{obj.id}}" id="{{obj.id}}" > | |
| 65 | + </td> | |
| 66 | + <td style="vertical-align: middle;"> | |
| 67 | + {{(list.page*10)+(i+1)}} | |
| 68 | + </td> | |
| 69 | + <td style="vertical-align: middle;"> | |
| 70 | + {{obj.id}} | |
| 71 | + </td> | |
| 72 | + <td> | |
| 73 | + {{obj.lineCode}} | |
| 74 | + </td> | |
| 75 | + <td> | |
| 76 | + {{obj.line.name}} | |
| 77 | + </td> | |
| 78 | + <td> | |
| 79 | + {{if obj.directions == '0'}} | |
| 80 | + 上行 | |
| 81 | + {{else if obj.directions == '1'}} | |
| 82 | + 下行 | |
| 83 | + {{/if}} | |
| 84 | + </td> | |
| 85 | + <td> | |
| 86 | + {{obj.stationName}} | |
| 87 | + </td> | |
| 88 | + <td> | |
| 89 | + {{obj.stationCode}} | |
| 90 | + </td> | |
| 91 | + <td> | |
| 92 | + {{obj.stationRouteCode}} | |
| 93 | + </td> | |
| 94 | + <td> | |
| 95 | + {{if obj.stationMark == 'B'}} | |
| 96 | + 起始站 | |
| 97 | + {{else if obj.stationMark == 'Z'}} | |
| 98 | + 中途站 | |
| 99 | + {{else if obj.stationMark== 'E'}} | |
| 100 | + 终点站 | |
| 101 | + {{/if}} | |
| 102 | + </td> | |
| 103 | + <td> | |
| 104 | + {{obj.distances}} | |
| 105 | + </td> | |
| 106 | + <td> | |
| 107 | + {{obj.toTime}} | |
| 108 | + </td> | |
| 109 | + <td> | |
| 110 | + {{obj.versions}} | |
| 111 | + </td> | |
| 112 | + </tr> | |
| 113 | + {{/each}} | |
| 114 | + {{if list.length == 0}} | |
| 115 | + <tr> | |
| 116 | + <td colspan=13><h6 class="muted">没有找到相关数据</h6></td> | |
| 117 | + </tr> | |
| 118 | + {{/if}} | |
| 119 | +</script> | |
| 120 | +<script type="text/javascript"> | |
| 121 | +$('#delete_station_mobal').on('deleteStationMobal.show',function(e, ajaxd, line, fun, delBatch) { | |
| 122 | + layer.closeAll(); | |
| 123 | + // 显示mobal | |
| 124 | + $('#delete_station_mobal').modal({ | |
| 125 | + show : true, | |
| 126 | + backdrop : 'static', | |
| 127 | + keyboard : false | |
| 128 | + }); | |
| 129 | + // 编辑表单元素 | |
| 130 | + var form = $('#batch_delete_station_form'); | |
| 131 | + // 提交数据按钮事件 | |
| 132 | + $('#batchDeleteStationButton').on('click', function() { | |
| 133 | + var checked = $("[name=items]:checked"); | |
| 134 | + var ids = ""; | |
| 135 | + checked.each(function() { | |
| 136 | + ids = ids + "," + $(this).val(); | |
| 137 | + //ids.push($(this).val()); | |
| 138 | + }); | |
| 139 | + if (ids != "" && ids != null && ids != undefined) { | |
| 140 | + console.log("ids:" + ids); | |
| 141 | + ids = ids.substr(1, ids.length - 1); | |
| 142 | + var params = {}; | |
| 143 | + params.ids = ids; | |
| 144 | + $.get('/stationroute/batchDestroy',params,function(resuntDate) { | |
| 145 | + if (resuntDate.status == 'SUCCESS') { | |
| 146 | + // 弹出添加成功提示消息 | |
| 147 | + layer.msg('修改成功...'); | |
| 148 | + /** 通知更新缓存区 */ | |
| 149 | + //$.post('http://192.168.168.171:8800/transport_server/basic/refresh',function(rs) {console.log(rs)}) | |
| 150 | + } else { | |
| 151 | + // 弹出添加失败提示消息 | |
| 152 | + layer.msg('修改失败...'); | |
| 153 | + } | |
| 154 | + initSearch(); | |
| 155 | + // 刷新左边树 | |
| 156 | + fun.resjtreeDate(line.id,delBatch.dir); | |
| 157 | + /** 查询路段信息 @param:<Line.id:线路Id;delBatch.dir:方向> @return:data:路段数据 */ | |
| 158 | + ajaxd.getSectionRouteInfo(line.id,delBatch.dir,function(data) { | |
| 159 | + /** 在地图上画出线路走向 @param:<Line.id:线路Id;delBatch.dir:方向;data:路段数据> */ | |
| 160 | + fun.linePanlThree(line.id,data,delBatch.dir); | |
| 161 | + }); | |
| 162 | + }); | |
| 163 | + } else { | |
| 164 | + layer.msg('请选择要删除的站点!!!'); | |
| 165 | + } | |
| 166 | + }); | |
| 167 | + | |
| 168 | + /** 全选框 */ | |
| 169 | + document.getElementById('stationCheckItems').onclick = function() { | |
| 170 | + // 获取所有的复选框 | |
| 171 | + var checkElements = document.getElementsByName('items'); | |
| 172 | + if (this.checked) { | |
| 173 | + for ( var i = 0; i < checkElements.length; i++) { | |
| 174 | + var checkElement = checkElements[i]; | |
| 175 | + checkElement.checked = "checked"; | |
| 176 | + } | |
| 177 | + } else { | |
| 178 | + for ( var i = 0; i < checkElements.length; i++) { | |
| 179 | + var checkElement = checkElements[i]; | |
| 180 | + checkElement.checked = null; | |
| 181 | + } | |
| 182 | + } | |
| 183 | + } | |
| 184 | + | |
| 185 | + /** 页面加载完显示数据 */ | |
| 186 | + window.onload = initSearch(); | |
| 187 | + | |
| 188 | + /** | |
| 189 | + * @description : (TODO) 页面加载事件 | |
| 190 | + * | |
| 191 | + */ | |
| 192 | + function initSearch() { | |
| 193 | + var params = new getParams(); | |
| 194 | + page = 0; | |
| 195 | + loadTableDate(params, true); | |
| 196 | + } | |
| 197 | + function getParams() { | |
| 198 | + // 搜索参数集合 | |
| 199 | + params = {}; | |
| 200 | + params.lineCode_eq = line.id; | |
| 201 | + params.directions_eq = delBatch.dir; | |
| 202 | + params.destroy_eq = "0"; //默认查没有撤销的站点 | |
| 203 | + return params; | |
| 204 | + } | |
| 205 | + /** | |
| 206 | + * @description : (TODO) 表格数据分页加载事件 | |
| 207 | + * | |
| 208 | + * ------@param : 查询参数 | |
| 209 | + * | |
| 210 | + * ------@isPon : 是否重新分页 | |
| 211 | + * | |
| 212 | + */ | |
| 213 | + function loadTableDate(param, isPon) { | |
| 214 | + // 搜索参数 | |
| 215 | + var params = {}; | |
| 216 | + if (param) | |
| 217 | + params = param; | |
| 218 | + // 排序(按方向与序号) | |
| 219 | + params['order'] = 'directions,stationRouteCode'; | |
| 220 | + // 排序方向. | |
| 221 | + params['direction'] = 'ASC,ASC'; | |
| 222 | + // 记录当前页数 | |
| 223 | + params['page'] = page; | |
| 224 | + // 弹出正在加载层 | |
| 225 | + var i = layer.load(2); | |
| 226 | + // 异步请求获取表格数据 | |
| 227 | + $.get('/stationroute',params,function(result) { | |
| 228 | + // 添加序号 | |
| 229 | + result.content.page = page; | |
| 230 | + // 把数据填充到模版中 | |
| 231 | + var tbodyHtml = template('stationInfo_list_table_temp_detele',{list : result.content}); | |
| 232 | + // 把渲染好的模版html文本追加到表格中 | |
| 233 | + $('#datatable_station_detele tbody').html(tbodyHtml); | |
| 234 | + // 是重新分页且返回数据长度大于0 | |
| 235 | + if (isPon && result.content.length > 0) { | |
| 236 | + // 重新分页 | |
| 237 | + initPag = true; | |
| 238 | + // 分页栏 | |
| 239 | + showPagination(result); | |
| 240 | + } | |
| 241 | + // 关闭弹出加载层 | |
| 242 | + layer.close(i); | |
| 243 | + }); | |
| 244 | + } | |
| 245 | + /** | |
| 246 | + * @description : (TODO) 分页栏组件 | |
| 247 | + * | |
| 248 | + */ | |
| 249 | + function showPagination(data) { | |
| 250 | + // 分页组件 | |
| 251 | + $('#pagination').jqPaginator({ | |
| 252 | + // 总页数 | |
| 253 | + totalPages : data.totalPages, | |
| 254 | + // 中间显示页数 | |
| 255 | + visiblePages : 6, | |
| 256 | + // 当前页 | |
| 257 | + urrentPage : page + 1, | |
| 258 | + first : '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>', | |
| 259 | + prev : '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>', | |
| 260 | + next : '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>', | |
| 261 | + last : '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>', | |
| 262 | + page : '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>', | |
| 263 | + onPageChange : function(num, type) { | |
| 264 | + if (initPag) { | |
| 265 | + initPag = false; | |
| 266 | + return; | |
| 267 | + } | |
| 268 | + var pData = getParams(); | |
| 269 | + page = num - 1; | |
| 270 | + loadTableDate(pData, false); | |
| 271 | + } | |
| 272 | + }); | |
| 273 | + } | |
| 274 | +}); | |
| 275 | +</script> | |
| 0 | 276 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/stationroute/js/deletebatch.js
0 → 100644
| 1 | +var DeleteBatchObj = function(){ | |
| 2 | + | |
| 3 | + /** 定义修改线路对象 */ | |
| 4 | + | |
| 5 | + var deleteBatchObj = { | |
| 6 | + /** 获取批量撤销对象 @return:<Batch:批量撤销对象> */ | |
| 7 | + getDeleteBatch : function() { | |
| 8 | + return deleteBatchObj; | |
| 9 | + }, | |
| 10 | + | |
| 11 | + /** 设置批量撤销的线路方向 @param:<dir:方向(0:上行;1:下行)> */ | |
| 12 | + setDeteleBatchDiraction : function(dir) { | |
| 13 | + | |
| 14 | + deleteBatchObj.dir = dir; | |
| 15 | + }, | |
| 16 | + } | |
| 17 | + | |
| 18 | + return deleteBatchObj; | |
| 19 | +}(); | ... | ... |
src/main/resources/static/pages/base/stationroute/js/editsection.js
src/main/resources/static/pages/base/stationroute/js/stationroute-list-events.js
| ... | ... | @@ -56,6 +56,18 @@ $(function(){ |
| 56 | 56 | PublicFunctions.stationRevoke(directionUpValue); |
| 57 | 57 | }); |
| 58 | 58 | |
| 59 | + // 上行批量撤销事件 | |
| 60 | + $('.module_tools #batchUpDelete').on('click', function() { | |
| 61 | + var Line = LineObj.getLineObj(); | |
| 62 | + /** 设置批量删除的线路方向 @param:<directionUpValue:方向(0:上行;1:下行)> */ | |
| 63 | + DeleteBatchObj.setDeteleBatchDiraction(directionUpValue); | |
| 64 | + // 加载选择新增方式mobal | |
| 65 | + $.get('delete_select.html', function(m){ | |
| 66 | + $(pjaxContainer).append(m); | |
| 67 | + $('#delete_select_mobal').trigger('deleteSelectMobal.show',[GetAjaxData,Line,PublicFunctions,DeleteBatchObj]); | |
| 68 | + }); | |
| 69 | + }); | |
| 70 | + | |
| 59 | 71 | // 切换上下行. |
| 60 | 72 | $('.retweet').on('click',function() { |
| 61 | 73 | layer.confirm('您是否确定将【上、下】行站点和路段进行对换!', { |
| ... | ... | @@ -210,6 +222,18 @@ $(function(){ |
| 210 | 222 | $('.module_tools #deleteDownStation').on('click', function() { |
| 211 | 223 | PublicFunctions.stationRevoke(directionDownValue); |
| 212 | 224 | }); |
| 225 | + | |
| 226 | + // 下行批量撤销事件 | |
| 227 | + $('.module_tools #batchDownDelete').on('click', function() { | |
| 228 | + var Line = LineObj.getLineObj(); | |
| 229 | + /** 设置批量删除的线路方向 @param:<directionDownValue:方向(0:上行;1:下行)> */ | |
| 230 | + DeleteBatchObj.setDeteleBatchDiraction(directionDownValue); | |
| 231 | + // 加载选择新增方式mobal | |
| 232 | + $.get('delete_select.html', function(m){ | |
| 233 | + $(pjaxContainer).append(m); | |
| 234 | + $('#delete_select_mobal').trigger('deleteSelectMobal.show',[GetAjaxData,Line,PublicFunctions,DeleteBatchObj]); | |
| 235 | + }); | |
| 236 | + }); | |
| 213 | 237 | |
| 214 | 238 | // 编辑线路下行走向 |
| 215 | 239 | $('.module_tools #editDownlineTrend').on('click', function() { |
| ... | ... | @@ -242,5 +266,5 @@ $(function(){ |
| 242 | 266 | $('.defeat-scroll').css('overflow','auto'); |
| 243 | 267 | }).on('mouseleave',function() { |
| 244 | 268 | $('.defeat-scroll').css('overflow','hidden'); |
| 245 | - }); | |
| 269 | + }); | |
| 246 | 270 | }); |
| 247 | 271 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/stationroute/list.html
| ... | ... | @@ -59,6 +59,10 @@ |
| 59 | 59 | </li> |
| 60 | 60 | <li class="divider"> </li> |
| 61 | 61 | <li> |
| 62 | + <a href="javascript:;" id="batchUpDelete"><i class="fa fa-trash-o"></i> 批量撤销</a> | |
| 63 | + </li> | |
| 64 | + <li class="divider"> </li> | |
| 65 | + <li> | |
| 62 | 66 | <a href="javascript:;" class="retweet"><i class="fa fa-retweet"></i> 切换上下行</a> |
| 63 | 67 | </li> |
| 64 | 68 | <li class="divider"> </li> |
| ... | ... | @@ -69,6 +73,7 @@ |
| 69 | 73 | <li> |
| 70 | 74 | <a href="javascript:;" id="quoteDown"><i class="fa fa-long-arrow-down"></i> 引用下行路段</a> |
| 71 | 75 | </li> |
| 76 | + <li class="divider"> </li> | |
| 72 | 77 | <!-- <li> |
| 73 | 78 | <a href="javascript:;" id="editUplineTrend"><i class="fa fa-edit"></i> 编辑走向</a> |
| 74 | 79 | </li> --> |
| ... | ... | @@ -154,6 +159,10 @@ |
| 154 | 159 | </li> |
| 155 | 160 | <li class="divider"> </li> |
| 156 | 161 | <li> |
| 162 | + <a href="javascript:;" id="batchDownDelete"><i class="fa fa-trash-o"></i> 批量撤销</a> | |
| 163 | + </li> | |
| 164 | + <li class="divider"> </li> | |
| 165 | + <li> | |
| 157 | 166 | <a href="javascript:;" class="retweet"><i class="fa fa-retweet"></i> 切换上下行</a> |
| 158 | 167 | </li> |
| 159 | 168 | <li class="divider"> </li> |
| ... | ... | @@ -227,6 +236,8 @@ |
| 227 | 236 | <script src="/pages/base/stationroute/js/editstationobj.js"></script> |
| 228 | 237 | <!-- 修改路段对象类 --> |
| 229 | 238 | <script src="/pages/base/stationroute/js/editsection.js"></script> |
| 239 | +<!-- 批量撤销对象类 --> | |
| 240 | +<script src="/pages/base/stationroute/js/deletebatch.js"></script> | |
| 230 | 241 | <!-- 绘图类 --> |
| 231 | 242 | <script src="/pages/base/stationroute/js/drawingManager.js"></script> |
| 232 | 243 | <!-- 地图类 --> | ... | ... |
src/main/resources/static/pages/base/timesmodel/add.html
| ... | ... | @@ -156,7 +156,7 @@ |
| 156 | 156 | </div> |
| 157 | 157 | <div class="form-actions"> |
| 158 | 158 | <div class="row"> |
| 159 | - <div class="col-md-offset-3 col-md-9"> | |
| 159 | + <div class="col-md-offset-5 col-md-9"> | |
| 160 | 160 | <a href="javascript:;" class="btn default button-previous disabled" style="display: none;"> |
| 161 | 161 | <i class="fa fa-angle-left"></i> 返回 </a> |
| 162 | 162 | <a href="javascript:;" class="btn btn-outline green button-next"> 下一步 | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/base-fun.js
| ... | ... | @@ -324,6 +324,448 @@ var BaseFun = function() { |
| 324 | 324 | 'bxrcgs':null}; |
| 325 | 325 | }, |
| 326 | 326 | |
| 327 | + /** | |
| 328 | + * @description (TODO) 剔除不在上、下行时间范围内的班次. | |
| 329 | + * | |
| 330 | + * | |
| 331 | + */ | |
| 332 | + tcbzfwndbc02 : function(jsonArray,dataMap) { | |
| 333 | + var _obj = baseF.getsxAndxxbc(jsonArray,dataMap); | |
| 334 | + // 剔除上行不在时间范围内的班次 | |
| 335 | + baseF.tcbc(_obj.sxbc,dataMap.smbcsjArr[0].kssj,dataMap.smbcsjArr[0].jssj); | |
| 336 | + // 剔除下行不在时间范围内的班次 | |
| 337 | + baseF.tcbc(_obj.xxbc,dataMap.smbcsjArr[1].kssj,dataMap.smbcsjArr[1].jssj); | |
| 338 | + return _obj.sxbc.concat(_obj.xxbc); | |
| 339 | + }, | |
| 340 | + | |
| 341 | + /** | |
| 342 | + * @description : (TODO) 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. | |
| 343 | + * @param bxlpbc 班型下的各个路牌的所有班次数组. | |
| 344 | + * @param map 表单参数信息 | |
| 345 | + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 346 | + * @param saa 封装的一些 停站时间、周转时间、行驶时间、行驶里程等. | |
| 347 | + * @param cara 路牌数组 | |
| 348 | + * @param bxrcObj 班次类型对象 | |
| 349 | + * @param dgminpcs 低谷最多配车数. | |
| 350 | + * *********************************** 业务要求 **************************************************** | |
| 351 | + * 满足单个路牌对应的标准工时、满足某班型下的所有路牌的平均工时对应的日平均工时、停站时间、路牌是否分班的班次集合. | |
| 352 | + * | |
| 353 | + * *********************************** 业务分析与思路 ********************************************** | |
| 354 | + * | |
| 355 | + * 首先判断出该路牌所属的班型,这里暂时考虑分两种情况. | |
| 356 | + * | |
| 357 | + * 第一种情况 :【五工二休】班型 | |
| 358 | + * | |
| 359 | + * 特点:一天标准工时为 : 8个小时 ; | |
| 360 | + * 一般该班型下的路牌班次出现密集的地方 是在高峰时段以及高峰时段附近。(这种路牌在模型里,我们称为短(断)路牌); | |
| 361 | + * 这种班型现象一般是晚出早归. | |
| 362 | + * | |
| 363 | + * 要求:单个路牌下的工时满足: 工时浮动范围在 标准工时【1-1.5】小时. | |
| 364 | + * 相同班型路牌下的平均工时满足: 工时浮动范围在 以表单录入的日平均工时10分钟内. | |
| 365 | + * | |
| 366 | + * 剔除规则:从最后一个班次开始剔除,遇到高峰时段则跳过。一直剔除到满足到班型的判断标准工时8小时。 | |
| 367 | + * | |
| 368 | + * 第二种情况 : 其它班型(包括 一工一休 、 二工一休 、 三工一休 、 四工一休 、 五工一休 、 六工一休) | |
| 369 | + * | |
| 370 | + * 特点:一天标准工时:以各自对应的班型工时为准。这里会有单/双档 等的概念。现在我们暂时也只考虑单/双档这种情况. | |
| 371 | + * 单:一个路牌一个人开 / 双:一个路牌两个开 ...... | |
| 372 | + * 那么一个路牌下的总工时为 各自对应的班型标准工时*档数. | |
| 373 | + * 这种情况下的路牌 | |
| 374 | + * 第一条件首先满足高峰时段。然后看情况(满足工时或者是防止工时超出)是否会产生分班。 | |
| 375 | + * 如果不产生分班:则一定为连续的,也就是说从头开到尾. | |
| 376 | + * 如果产生分班: | |
| 377 | + * 第一种情况 : 中间会断掉.一般这个断掉的时间不会太长,但至少是3小时以上。 | |
| 378 | + * 第二种情况 : 连续的。这种情况一定是双档。不然工时会超出. | |
| 379 | + * | |
| 380 | + * 要求:单个路牌下的工时满足 :工时浮动范围在 标准工时【1-1.5】小时. | |
| 381 | + * 相同班型路牌下的平均工时满足 : 工时浮动范围在 以表单录入的日平均工时10分钟内. | |
| 382 | + * | |
| 383 | + * 剔除规则:这里情况比较复杂,因为先要考虑该路牌是否分班。 | |
| 384 | + * | |
| 385 | + * 判断是否会产生分班分两种条件 | |
| 386 | + * | |
| 387 | + * 第一种情况:是双档一定有分班班次.并且是连续的班次. | |
| 388 | + * | |
| 389 | + * 第二种情况:是单档 , 但是单个路牌工时超出了要求范围 , 为了在满足工时的条件下。采取分班。 | |
| 390 | + * 判断依据:反算出低谷最少配车数. | |
| 391 | + * 计算公式:(低谷上行行驶时间 + 低谷下行行驶时间 + 低谷最大停站时间*2) / 低谷最大发车间隙 | |
| 392 | + * 这里的取整数要求:四舍五入去整。 | |
| 393 | + * | |
| 394 | + * | |
| 395 | + * 共同满足的条件 : 所有路牌下的相邻班次(前提条件是 不是分班班次)的停站时间不得超过 行业标准 行驶时间的10%~15%。如果有特殊情况,以表单录入的低谷最大停站时间为极限。 | |
| 396 | + * | |
| 397 | + * | |
| 398 | + **/ | |
| 399 | + tzlpgs02 : function(bxlpbc , map , dataMap , saa , cara , bxrcObj , dgminpcs) { | |
| 400 | + var rsultA = new Array(); | |
| 401 | + for(var a = 0 ; a < bxlpbc.length ; a++) { | |
| 402 | + // 定义该版型下对应的路牌的班次数组、班次数组长度。 | |
| 403 | + var lpbc = bxlpbc[a].lpbc, lpbclen_; | |
| 404 | + // 定义当前路牌的初始工时、班型对应的标准工时 | |
| 405 | + var initCountGs = bxlpbc[a].initCountGs ,bzgs = bxlpbc[a].bzgs; | |
| 406 | + // 定义初始工时与日平均工时差值 | |
| 407 | + var initdx = initCountGs - bxlpbc[a].gsavg; | |
| 408 | + // 定义剔除班次数、剔除的时间段. | |
| 409 | + var deletebcNum = Math.ceil((initCountGs - bxlpbc[a].gsavg) / saa[0].zzsj.dgzzsj) , tcbcgzA = new Array(); | |
| 410 | + // var deletebcNum = parseInt((initCountGs - bxlpbc[a].gsavg) / saa[0].zzsj.dgzzsj) , tcbcgzA = new Array(); | |
| 411 | + if(bxrcObj.type == '五工二休') { | |
| 412 | + if(lpbclen_>0) { | |
| 413 | + // 定义晚高峰后能剔除多少班次数. | |
| 414 | + var wgfhtcbcNum = parseInt(( dataMap.wgfzhsjd[0].ed - dataMap.wgfsjd[0].ed ) / (60000 * saa[0].zzsj.dgzzsj)); | |
| 415 | + // 定义时间段内剔除班次规则. | |
| 416 | + tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'deletebcNum' : wgfhtcbcNum}, | |
| 417 | + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dataMap.wgfsjd[0].st , 'deletebcNum' : deletebcNum - wgfhtcbcNum}); | |
| 418 | + // 逆序排序剔除. | |
| 419 | + lpbc.sort(function(r,s){return s.fcno-r.fcno}); | |
| 420 | + // 剔除不在高峰时间段内的班次. | |
| 421 | + baseF.spliceBc02(lpbc , tcbcgzA , dataMap , 'desc' , true); | |
| 422 | + } | |
| 423 | + }else { | |
| 424 | + /*console.log(bxlpbc[a].lpNo , initCountGs , bzgs , saa[0].zzsj.dgzzsj , | |
| 425 | + initCountGs - bzgs , (initCountGs - bzgs) /saa[0].zzsj.dgzzsj , | |
| 426 | + initCountGs - bxlpbc[a].gsavg , (initCountGs - bxlpbc[a].gsavg) / saa[0].zzsj.dgzzsj );*/ | |
| 427 | + // 单档 一个路牌一档劳动力 | |
| 428 | + if(bxlpbc[a].keepOff==1) { | |
| 429 | + // 如果低谷至少配车数大于零,则该班型下的路牌 存在一些 分班路牌,这里的分班 指的是 这个路牌先满足的前提条件就是 是单档。 | |
| 430 | + // 为了满足工时的要求,在低谷断开一段时间. | |
| 431 | + if(dgminpcs>0 && dgminpcs <= bxrcObj.fpcls ) { | |
| 432 | + if( (a + 1) <= dgminpcs) { | |
| 433 | + var dgzjsj = baseF.getDateTime('12:30'); | |
| 434 | + /*var zgfyh = dataMap.zgfsjd[0].ed; | |
| 435 | + zgfyh.setMinutes(zgfyh.getMinutes()+ Math.min.apply(null, dataMap.dgxxsjArr));*/ | |
| 436 | + if( a % 2 == 0) { | |
| 437 | + // 定义早高峰结束 ~ 12:30 剔除规则.如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次. | |
| 438 | + var swmaxtcbcNum = parseInt(( dgzjsj - dataMap.zgfsjd[0].ed) / (60000 * saa[0].zzsj.dgzzsj)); | |
| 439 | + if(deletebcNum < swmaxtcbcNum) { | |
| 440 | + // tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum}); | |
| 441 | + tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum}); | |
| 442 | + }else { | |
| 443 | + tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed, 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : swmaxtcbcNum}, | |
| 444 | + {'minsj': dataMap.wgfsjd[0].ed , 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc' , 'deletebcNum' : deletebcNum - swmaxtcbcNum}); | |
| 445 | + } | |
| 446 | + // tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum}); | |
| 447 | + }else { | |
| 448 | + // 定义12:30 ~ 晚高峰开始以前剔除规则. 如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次. | |
| 449 | + var xwmaxtcbcNum = parseInt(( dataMap.wgfsjd[0].st - dgzjsj) / (60000 * saa[0].zzsj.dgzzsj)); | |
| 450 | + if(deletebcNum < xwmaxtcbcNum) { | |
| 451 | + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : deletebcNum}); | |
| 452 | + }else { | |
| 453 | + tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - xwmaxtcbcNum}, | |
| 454 | + {'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : xwmaxtcbcNum}); | |
| 455 | + } | |
| 456 | + // tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : deletebcNum}); | |
| 457 | + } | |
| 458 | + // 按规则剔除班次.并且分班.路牌班次断开. | |
| 459 | + baseF.spliceBc02(lpbc , tcbcgzA , dataMap , true); | |
| 460 | + }else { | |
| 461 | + // 按规则剔除班次.不分班.路牌班次不会断开. | |
| 462 | + baseF.isdk02(lpbc , dataMap , deletebcNum , false); | |
| 463 | + } | |
| 464 | + // 该班型下的路牌 不存在分班路牌. | |
| 465 | + }else if(dgminpcs == 0){ | |
| 466 | + // 按规则剔除班次.不分班.路牌班次不会断开. | |
| 467 | + baseF.isdk02(lpbc , dataMap , deletebcNum , false); | |
| 468 | + } | |
| 469 | + // 双档 一个路牌两档劳动力 | |
| 470 | + }else if(bxlpbc[a].keepOff==2) { | |
| 471 | + // 按规则剔除班次.分班.但是路牌班次不会断开. | |
| 472 | + baseF.isdk02(lpbc , dataMap , deletebcNum , true); | |
| 473 | + } | |
| 474 | + } | |
| 475 | + rsultA = rsultA.concat(lpbc); | |
| 476 | + } | |
| 477 | + return rsultA; | |
| 478 | + }, | |
| 479 | + | |
| 480 | + /** | |
| 481 | + * @description (TODO) 定义不断开班次的路牌剔除规则. | |
| 482 | + * | |
| 483 | + * | |
| 484 | + */ | |
| 485 | + isdk02 : function(lpbc , dataMap , deletebcNum , isfb) { | |
| 486 | + if(deletebcNum > 0) { | |
| 487 | + var zgfzqtcbcNum = parseInt(( dataMap.zgfzqsjd[0].ed - dataMap.zgfzqsjd[0].st ) / (60000 * saa[0].zzsj.dgzzsj)), | |
| 488 | + wgfhtcbcNum = parseInt(( dataMap.wgfzhsjd[0].ed - dataMap.wgfzhsjd[0].st ) / (60000 * saa[0].zzsj.dgzzsj)) | |
| 489 | + tcbcgzA = new Array(); | |
| 490 | + if( wgfhtcbcNum >= deletebcNum) { | |
| 491 | + tcbcgzA.push({'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum}); | |
| 492 | + }else if(zgfzqtcbcNum >= deletebcNum){ | |
| 493 | + tcbcgzA.push({'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum}); | |
| 494 | + }else if(deletebcNum >= (zgfzqtcbcNum + wgfhtcbcNum)){ | |
| 495 | + tcbcgzA.push({'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : wgfhtcbcNum}, | |
| 496 | + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : zgfzqtcbcNum}); | |
| 497 | + } | |
| 498 | + // lpbc.sort(function(m,n){return n.fcno-m.fcno}); | |
| 499 | + baseF.spliceBc02(lpbc , tcbcgzA , dataMap , isfb); | |
| 500 | + } | |
| 501 | + }, | |
| 502 | + | |
| 503 | + /** | |
| 504 | + * @description (TODO) 根据定义规则剔除班次. | |
| 505 | + * @param arr 班次数组. | |
| 506 | + * @param tcbcgzA 剔除规则. | |
| 507 | + * @param type 剔除类型【asc -- 顺序剔除 ; desc -- 逆序剔除】 | |
| 508 | + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 509 | + * @param isfb 剔除过程中是否会产生分班. | |
| 510 | + */ | |
| 511 | + spliceBc02 : function (arr , tcbcgzA , dataMap , isfb) { | |
| 512 | + for(var t = 0 ; t < tcbcgzA.length ; t++) { | |
| 513 | + var order = tcbcgzA[t].order; | |
| 514 | + if(order == 'asc') | |
| 515 | + arr.sort(function(x,y){return x.fcno-y.fcno}); | |
| 516 | + else if(order == 'desc') | |
| 517 | + arr.sort(function(m,n){return n.fcno-m.fcno}); | |
| 518 | + for(var a = 0 ; a < arr.length ; a ++) { | |
| 519 | + var fcsj = baseF.getDateTime(arr[a].fcsj); | |
| 520 | + // 判断是否在高峰时间范围.【true--表示在,false--表示不在】. | |
| 521 | + if(!baseF.isgfsjd01(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) { | |
| 522 | + if(order == 'asc') { | |
| 523 | + arr[a-1].isfb = isfb ? 1 : 0; | |
| 524 | + arr[a-1].STOPTIME = 0; | |
| 525 | + }else if(order == 'desc') { | |
| 526 | + var index_ = a + tcbcgzA[t].deletebcNum * 2; | |
| 527 | + arr[index_].STOPTIME = 0; | |
| 528 | + arr[index_].isfb = isfb && a > 0 ? 1 : 0; | |
| 529 | + } | |
| 530 | + arr.splice( a , tcbcgzA[t].deletebcNum * 2); | |
| 531 | + break; | |
| 532 | + } | |
| 533 | + } | |
| 534 | + } | |
| 535 | + }, | |
| 536 | + | |
| 537 | + /** | |
| 538 | + * @description (TODO) 排列各个路牌下的班次. | |
| 539 | + * @param bxrclist 班型数组对象. | |
| 540 | + * @prarm jsonArray 所有路牌下的班次. | |
| 541 | + * @param cara 路牌数组. | |
| 542 | + * @prarm saa 封装的一些 停站时间、周转时间、行驶时间、行驶里程等. | |
| 543 | + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 544 | + * @map map 表单参数. | |
| 545 | + * @return 返回一个满足单个路牌对应的标准工时、满足某班型下的所有路牌的平均工时对应的日平均工时、停站时间、路牌是否分班的班次集合. | |
| 546 | + */ | |
| 547 | + jslpgsAndbcs : function(bxrclist , jsonArray , cara , saa , dataMap , map) { | |
| 548 | + // 定义低谷最大发车时间、最大停站时间来反算出低谷最少配车数. | |
| 549 | + var dgmaxfcjx = parseInt(map.dgmaxfcjx), | |
| 550 | + dgmaxtzsj = parseInt(map.dgmaxtzsj); | |
| 551 | + // 计算低谷最少配车数 (低谷上行行驶时间 + 低谷下行行驶时间 + 低谷最大停站时间*2) / 低谷最大发车间隙. | |
| 552 | + var dgminpcs = Math.round((dataMap.dgxxsjArr[0] + dataMap.dgxxsjArr[1] + dgmaxtzsj*2) / dgmaxfcjx); | |
| 553 | + // 定义返回数组. | |
| 554 | + var rs = new Array(); | |
| 555 | + for(var x = 0 ; x < bxrclist.length; x++) { | |
| 556 | + // 定义当前班型下对应的路牌、 班型下的各个路牌的所有班次数组. | |
| 557 | + var cla = bxrclist[x].sslp , bxlpbc = new Array() ; | |
| 558 | + // 根据劳动力和配车数 算出是否 单/双 档. | |
| 559 | + var keepOff = bxrclist[x].rs/bxrclist[x].fpcls; | |
| 560 | + // 定义当前班型/人次/配车数 下的标准工时. | |
| 561 | + var hoursV = bxrclist[x].hoursV * keepOff; | |
| 562 | + for(var s = 0 ; s < cla.length; s++) { | |
| 563 | + // 定义路牌编号、定义当前路牌下的所有班次. | |
| 564 | + var lpNo = cla[s].lpNo , lpbc = new Array(); | |
| 565 | + for(var i =0 ; i <jsonArray.length; i++) { | |
| 566 | + // 判断当期遍历的班次是否属于当前的路牌. | |
| 567 | + if(jsonArray[i].lpNo == lpNo) { | |
| 568 | + jsonArray[i].lpName = bxrclist[x].type + '_' + lpNo ; | |
| 569 | + lpbc.push(jsonArray[i]); | |
| 570 | + } | |
| 571 | + } | |
| 572 | + // 更新路牌数组的路牌名称. | |
| 573 | + baseF.updlpArr(cara , lpNo , (bxrclist[x].type + '_' + lpNo)); | |
| 574 | + if(lpbc.length > 0 ) { | |
| 575 | + // 按发车序号逆序排序路牌下的班次. | |
| 576 | + lpbc.sort(function(a,b){return b.fcno-a.fcno}); | |
| 577 | + lpbc[0].STOPTIME = 0; | |
| 578 | + // 因为这里路牌下的班次特点是连续性的 | |
| 579 | + // 所以求这个路牌下当前的总工时(分钟)直接用最后一个班次的到达时间 - 第一个班次的发车时间,再加上进出场时间、早晚例保时间. | |
| 580 | + var initCountGs = parseInt((baseF.getDateTime(lpbc[0].ARRIVALTIME) - baseF.getDateTime(lpbc[lpbc.length-1].fcsj)) / 60000) + | |
| 581 | + dataMap.jcsjArr[baseF.dirDmToIndex(lpbc[0].xlDir)] + | |
| 582 | + dataMap.ccsjArr[baseF.dirDmToIndex(lpbc[lpbc.length-1].xlDir)] + | |
| 583 | + saa[0].lbsj*2; | |
| 584 | + | |
| 585 | + // 如果分班路牌数超过了该班型下的路牌总数.则提示无法排列。 | |
| 586 | + if(keepOff == 1) { | |
| 587 | + if(bxrclist[x].gsavg > (hoursV + 1.5 * bxrclist[x].fpcls)) { | |
| 588 | + ErrorInfo.show('提示', | |
| 589 | + " 班型【" + bxrclist[x].type + "】 下的 " + | |
| 590 | + "日平均工时 " + bxrclist[x].gsavg + " 过大!最大值不能超过:" + | |
| 591 | + hoursV + " + " + "1.5" + "*" + bxrclist[x].fpcls + " 的和。"); | |
| 592 | + return false; | |
| 593 | + } | |
| 594 | + if(dgminpcs > bxrclist[x].fpcls && bxrclist[x].type != '五工二休') { | |
| 595 | + ErrorInfo.show('提示',"请合理的搭配【低谷的最大停站时间、最大发车间隙】 与 【劳动力】 、 【配车数】之间的数值!" + | |
| 596 | + " 在班型【" + bxrclist[x].type + " 】下会产生分班," + "而低谷最少配车数为:" + dgminpcs + | |
| 597 | + " 辆,但是在该班型下只配了:" + bxrclist[x].fpcls + "辆" ); | |
| 598 | + return false; | |
| 599 | + } | |
| 600 | + } else if(keepOff == 2) { | |
| 601 | + if(bxrclist[x].gsavg > (hoursV + 1.5*2*bxrclist[x].fpcls)) { | |
| 602 | + ErrorInfo.show('提示', | |
| 603 | + " 班型【" + bxrclist[x].type + "】 下的 " + | |
| 604 | + "日平均工时 " + bxrclist[x].gsavg + " 过大!最大值不能超过:" + | |
| 605 | + hoursV + " + " + "1.5" + "*2" + bxrclist[x].fpcls + " 的和。"); | |
| 606 | + return false; | |
| 607 | + } | |
| 608 | + } | |
| 609 | + // 'initCountGs' : parseFloat((initCountGs/60).toFixed(2)), | |
| 610 | + bxlpbc.push({'bxtyp' : bxrclist[x].type , 'lpNo' : lpNo , | |
| 611 | + 'lpbc' : lpbc , 'dygbcfcsj' : lpbc[lpbc.length-1].fcsj, | |
| 612 | + 'initCountGs' : initCountGs , | |
| 613 | + 'keepOff' : keepOff , 'bzgs' : parseInt(hoursV*60) , 'gsavg' : parseInt(bxrclist[x].gsavg*60) , | |
| 614 | + 'fcint' : baseF.getDateTime(lpbc[lpbc.length-1].fcsj).getTime()}); | |
| 615 | + } | |
| 616 | + } | |
| 617 | + if(bxlpbc.length > 0 ) { | |
| 618 | + bxlpbc.sort(function(x,y){return x.fcint-y.fcint}); | |
| 619 | + // console.log(bxlpbc); | |
| 620 | + // 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. | |
| 621 | + rs = rs.concat(baseF.tzlpgs02(bxlpbc , map , dataMap , saa , cara , bxrclist[x] , dgminpcs)); | |
| 622 | + } | |
| 623 | + } | |
| 624 | + return rs; | |
| 625 | + }, | |
| 626 | + | |
| 627 | + /** | |
| 628 | + * @description (TODO) 更新路牌数组的路牌名称. | |
| 629 | + * @param cara 路牌数组 | |
| 630 | + * @param name 路牌新名称 | |
| 631 | + */ | |
| 632 | + updlpArr : function(cara , lpNo , name) { | |
| 633 | + for(var l = 0 ; l <cara.length;l++ ) { | |
| 634 | + if(cara[l].lpNo == lpNo) { | |
| 635 | + cara[l].lpName = name; | |
| 636 | + } | |
| 637 | + } | |
| 638 | + }, | |
| 639 | + | |
| 640 | + BXPplaceClassesTime02 : function(saa , cara , map , seMap , dataMap , lpNoA) { | |
| 641 | + // 得到所有路牌下的班次数[从各路牌下的第一个班次发车时间 到 营运结束时间点并且是连续的班次数]. | |
| 642 | + var jsonArray = baseF.plgfbc01(saa , cara , map , seMap , dataMap); | |
| 643 | + // return {'json':jsonArray,'bxrcgs':null}; | |
| 644 | + | |
| 645 | + // 切割班型/人次/配车数 字符串 为 数组对象. | |
| 646 | + var list = baseF.splitBxRc02(map.bxrc); | |
| 647 | + // 把班型分配到对应的具体路牌上. | |
| 648 | + baseF.fprclp01(list,cara); | |
| 649 | + // console.log(list); | |
| 650 | + | |
| 651 | + var tempA = baseF.jslpgsAndbcs(list.data , baseF.tcbzfwndbc02(jsonArray , dataMap) , cara , saa , dataMap , map); | |
| 652 | + // return {'json':tempA,'bxrcgs':null}; | |
| 653 | + return {'json':baseF.addjcclcbc01(cara,tempA,dataMap,saa,map),'bxrcgs':null}; | |
| 654 | + var ttsmbA = baseF.tzsmbcsj01(tempA,dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap); | |
| 655 | + | |
| 656 | + baseF.jhfcjx02(ttsmbA,dataMap); | |
| 657 | + //return {'json':baseF.addjcclcbc01(cara,ttsmbA,dataMap,saa,map),'bxrcgs':null}; | |
| 658 | + //return {'json':ttsmbA,'bxrcgs':null}; | |
| 659 | + var rsjar = baseF.tzsztest02(cara,ttsmbA,dataMap); | |
| 660 | + return {'json':rsjar,'bxrcgs':null}; | |
| 661 | + return {'json':baseF.addjcclcbc01(cara,rsjar,dataMap,saa,map),'bxrcgs':null}; | |
| 662 | + }, | |
| 663 | + | |
| 664 | + tzsztest02 : function(cara,tempa,dataMap) { | |
| 665 | + var jsrs = new Array(); | |
| 666 | + for(var t = 0 ; t < cara.length; t++) { | |
| 667 | + if(t>3) | |
| 668 | + continue; | |
| 669 | + var sslpbcA = new Array(); | |
| 670 | + for(var j =0 ; j <tempa.length; j++) { | |
| 671 | + // 判断当期遍历的班次是否属于当前的路牌. | |
| 672 | + if(tempa[j].lpNo == cara[t].lpNo) | |
| 673 | + sslpbcA.push(tempa[j]); | |
| 674 | + } | |
| 675 | + sslpbcA.sort(function(a,b){return a.fcno-b.fcno}); | |
| 676 | + baseF.tztzsjInit02(sslpbcA,dataMap); | |
| 677 | + jsrs = jsrs.concat(sslpbcA); | |
| 678 | + } | |
| 679 | + return jsrs; | |
| 680 | + }, | |
| 681 | + | |
| 682 | + tztzsjInit02 : function(ar,dataMap) { | |
| 683 | + var maxXxsjA = [parseInt(dataMap.map.upTravelTime),parseInt(dataMap.map.downTravelTime)]; | |
| 684 | + var v1 = Math.max.apply(null, maxXxsjA) *1.5; | |
| 685 | + for(var r = 0 ; r< ar.length-1;r++) { | |
| 686 | + var sgbcfcsj = baseF.getDateTime(ar[r+1].fcsj),dqbcddsj = baseF.getDateTime(ar[r].ARRIVALTIME); | |
| 687 | + var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000); | |
| 688 | + if(dxmin<0 || ar[r].STOPTIME<0) { | |
| 689 | + var cctag = baseF.dirDmToIndex(ar[r].xlDir); | |
| 690 | + dxmin = ar[r].bcType == dataMap.bcTypeArr.cf ? 0 : baseF.isgfsjd01(baseF.getDateTime(ar[r].fcsj),dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; | |
| 691 | + }else if(dxmin >= v1 && dxmin < 180) { | |
| 692 | + if(r==ar.length-2 || baseF.issmbcsjArr(ar[r+1].fcsj,dataMap.smbcsjArr)) { | |
| 693 | + dxmin = dxmin; | |
| 694 | + }else { | |
| 695 | + dxmin = v1; | |
| 696 | + } | |
| 697 | + } | |
| 698 | + if(ar[r].STOPTIME >0) { | |
| 699 | + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin); | |
| 700 | + ar[r+1].fcsj = baseF.getTimeStr(dqbcddsj); | |
| 701 | + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + ar[r+1].bcsj); | |
| 702 | + ar[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj); | |
| 703 | + ar[r].STOPTIME = dxmin >= 180 ? 0 : parseInt(dxmin); | |
| 704 | + } | |
| 705 | + } | |
| 706 | + }, | |
| 707 | + | |
| 708 | + | |
| 709 | + /** | |
| 710 | + * @description : (TODO) 均匀发车间隙 | |
| 711 | + * | |
| 712 | + * @params : [arr--某个方向下的班次数组;dir--方向;zzsj--周转时间] | |
| 713 | + * | |
| 714 | + * @return : 返回一个数组.这里返回的是调整过后 发车间距均匀的班次数组 | |
| 715 | + **/ | |
| 716 | + jhfcjx02 : function(bcArr,dataMap) { | |
| 717 | + if(bcArr.length<=0) | |
| 718 | + return; | |
| 719 | + var dirA = dataMap.dira; | |
| 720 | + var clzs = parseInt(dataMap.map.clzs); | |
| 721 | + for(var d = 0 ; d < dirA.length; d++) { | |
| 722 | + var fxdm = dirA[d],fxbc = new Array(); | |
| 723 | + var cctag = baseF.dirDmToIndex(fxdm); | |
| 724 | + for(var b = 0;b<bcArr.length ; b++) { | |
| 725 | + bcArr[b].fcint = baseF.getDateTime(bcArr[b].fcsj).getTime(); | |
| 726 | + if(bcArr[b].xlDir == fxdm) | |
| 727 | + fxbc.push(bcArr[b]); | |
| 728 | + } | |
| 729 | + var kssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].kssj),// 开始时间. | |
| 730 | + jssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].jssj);// 结束时间. | |
| 731 | + fxbc.sort(function(m,n){return m.fcint - n.fcint}); | |
| 732 | + while(kssj<=jssj) { | |
| 733 | + var tagboolean = baseF.isgfsjd01(kssj,dataMap); | |
| 734 | + var zzsj = tagboolean ? dataMap.zzsj.gfzzsj : dataMap.zzsj.dgzzsj; | |
| 735 | + if(true){ | |
| 736 | + var temp = new Date(); | |
| 737 | + temp.setHours(kssj.getHours()); | |
| 738 | + temp.setMinutes(kssj.getMinutes()+zzsj); | |
| 739 | + var sjdbcArr = baseF.getObjRegion(kssj,temp,fxbc,dataMap); | |
| 740 | + var len_ = sjdbcArr.length; | |
| 741 | + var bcCount = baseF.getlpNum(sjdbcArr);// 定长度 | |
| 742 | + if(len_>0 && bcCount > 0) { | |
| 743 | + var _fcjx = parseInt(Math.ceil(zzsj/bcCount)); | |
| 744 | + console.log(_fcjx); | |
| 745 | + var fcnosj = new Date(kssj); | |
| 746 | + for(var l = 0 ; l< len_ ; l++) { | |
| 747 | + // 每个路牌的末班车发车时间不准动. | |
| 748 | + /*if(baseF.iszhclzsbc(fxbc, sjdbcArr[l].fcno , clzs)) { | |
| 749 | + continue; | |
| 750 | + }*/ | |
| 751 | + sjdbcArr[l].fcsj = baseF.getTimeStr(fcnosj); | |
| 752 | + var _xxsj = baseF.getxssj(dataMap.zgfsjd, | |
| 753 | + dataMap.wgfsjd,fcnosj,dataMap.pcxssjArr, | |
| 754 | + dataMap.gfxxsjArr,baseF.dirDmToIndex(sjdbcArr[l].xlDir));// 获取行驶时间 | |
| 755 | + sjdbcArr[l].bcsj = _xxsj; | |
| 756 | + var ddsj = new Date(); | |
| 757 | + ddsj.setHours(fcnosj.getHours()); | |
| 758 | + ddsj.setMinutes(fcnosj.getMinutes()+_xxsj); | |
| 759 | + sjdbcArr[l].ARRIVALTIME = baseF.getTimeStr(ddsj); | |
| 760 | + fcnosj.setMinutes(fcnosj.getMinutes() + _fcjx); | |
| 761 | + } | |
| 762 | + } | |
| 763 | + } | |
| 764 | + kssj = new Date(kssj.setMinutes(kssj.getMinutes() + zzsj)); | |
| 765 | + } | |
| 766 | + } | |
| 767 | + }, | |
| 768 | + | |
| 327 | 769 | BXPplaceClassesTime01 : function(saa,cara,map,seMap,dataMap,lpNoA) { |
| 328 | 770 | var jsonArray = baseF.plgfbc(saa,cara,map,seMap,dataMap); |
| 329 | 771 | var list = baseF.splitBxRc(map.bxrc); |
| ... | ... | @@ -830,6 +1272,7 @@ var BaseFun = function() { |
| 830 | 1272 | var bcCount = baseF.getlpNum(sjdbcArr);// 定长度 |
| 831 | 1273 | if(len_>0 && bcCount > 0) { |
| 832 | 1274 | var _fcjx = parseInt(Math.ceil(zzsj/bcCount)); |
| 1275 | + console.log(_fcjx); | |
| 833 | 1276 | var fcnosj = new Date(kssj); |
| 834 | 1277 | for(var l = 0 ; l< len_ ; l++) { |
| 835 | 1278 | // 每个路牌的末班车发车时间不准动. |
| ... | ... | @@ -1044,11 +1487,11 @@ var BaseFun = function() { |
| 1044 | 1487 | for(var r = 0 ; r<array.length;r++) { |
| 1045 | 1488 | tempA.push(array[r].STOPTIME + bs); |
| 1046 | 1489 | } |
| 1047 | - var v1 = Math.max.apply(null, maxXxsjA) *1.5; | |
| 1490 | + var v1 = Math.max.apply(null, maxXxsjA) * 1.5; | |
| 1048 | 1491 | var v2 = Math.max.apply(null, tempA); |
| 1049 | 1492 | if( v2 > v1) { |
| 1050 | 1493 | tag = false; |
| 1051 | - dx = parseInt(v2 -v1); | |
| 1494 | + dx = parseInt(v2 - v1); | |
| 1052 | 1495 | } |
| 1053 | 1496 | return {tag:tag,dx:dx}; |
| 1054 | 1497 | }, |
| ... | ... | @@ -1565,6 +2008,115 @@ var BaseFun = function() { |
| 1565 | 2008 | return inv; |
| 1566 | 2009 | }, |
| 1567 | 2010 | |
| 2011 | + | |
| 2012 | + /** | |
| 2013 | + * @discription : (TODO)获取所有路牌默认出场方向. | |
| 2014 | + * | |
| 2015 | + * 判定规则: | |
| 2016 | + * 下行头班车时间 + 下行行驶时间 + 下行停站时间 大于了 上行头班车时间 判定都为上行出场 否则为下行出场. | |
| 2017 | + * | |
| 2018 | + * 举例: | |
| 2019 | + * 浦东38路 上行头班车时间是7:00 下行头班车是6:30 ,下行行驶时间是25分钟 , 下行停站时间为5分钟. | |
| 2020 | + * 所以浦东38的所有路牌的第一个班次都是下行出场. | |
| 2021 | + * | |
| 2022 | + * @params : 起终点站的首末班车时间 | |
| 2023 | + * | |
| 2024 | + * @return : 返回方向结果. [0--上;1--下;2--未知]. | |
| 2025 | + * | |
| 2026 | + **/ | |
| 2027 | + getdefaultDir01 : function(list , xxsj , tzsj) { | |
| 2028 | + var sxtbcsj = baseF.getDateTime(list[0].kssj); | |
| 2029 | + var xxtbcsj = baseF.getDateTime(list[1].kssj); | |
| 2030 | + xxtbcsj.setMinutes(xxtbcsj.getMinutes() + xxsj + tzsj); | |
| 2031 | + if(xxtbcsj>sxtbcsj) { | |
| 2032 | + return 0; | |
| 2033 | + }else { | |
| 2034 | + return 1; | |
| 2035 | + } | |
| 2036 | + }, | |
| 2037 | + /** | |
| 2038 | + * @description (TODO) 得到所有路牌下的班次数[从各路牌下的第一个班次发车时间 到 营运结束时间点并且是连续的班次数]. | |
| 2039 | + * @param saa 封装的一些 停站时间、周转时间、行驶时间、行驶里程等. | |
| 2040 | + * @param cara 路牌数组 | |
| 2041 | + * @param map 表单参数 | |
| 2042 | + * @param seMap 线路营运开始 ~ 结束时间 | |
| 2043 | + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 2044 | + * @return 返回一个所有路牌下的班次数[从各路牌下的第一个班次发车时间 ~ 营运结束时间点并且是连续的班次数]. | |
| 2045 | + * | |
| 2046 | + * ******************************** 思路 ********************************************************* | |
| 2047 | + * | |
| 2048 | + * 首先,以早高峰开始时间作为开始点 , 并且作为最后一个路牌的第一个班次的发车时间展开。 | |
| 2049 | + * | |
| 2050 | + * 纵向展开: | |
| 2051 | + * 以最后一个路牌的第一个班次发车时间为开始点,以阶梯形式向上展开. | |
| 2052 | + * | |
| 2053 | + * 规则: | |
| 2054 | + * 下一个路牌的第一个班次发车时间 = 当前路牌的第一个班次发车时间 + 在某时间范围内的发车间隙。 | |
| 2055 | + * 依次类推。可以得到每一个路牌下的第一个班次发车时间。 | |
| 2056 | + * | |
| 2057 | + * 举例:以最后一个路牌第一个班次的发车时间为开始点向上展开. | |
| 2058 | + * 最后一个路牌的第一个班次的发车时间为 6:31 | |
| 2059 | + * 倒数第二个路牌的第一个班次的发车时间为 6:39 = 6:31 + 某周转时间段内的发车间隙为:8 | |
| 2060 | + * 倒数第三个路牌的第一个班次的发车时间为 6:47 = 6:39 + 某周转时间段内的发车间隙为:8 | |
| 2061 | + * 倒数第四个.... | |
| 2062 | + * 以此类推. | |
| 2063 | + * | |
| 2064 | + * 横向展开: | |
| 2065 | + * 就是以每个路牌下的第一个班次的发车时间去补全当前路牌后面并且为连续性的班次。 | |
| 2066 | + * | |
| 2067 | + * 规则: | |
| 2068 | + * 当前班次 :班次的计划发车时间 + 当前方向下并且在某时间范围内的行驶时间 = 当前班次下的计划到达时间 以此推出下个班次的发车时间. | |
| 2069 | + * 下个班次 :下个班次的发车时间 = 以上个班次的到达时间 + 上个班次方向下并且在某时间范围内的停站时间. | |
| 2070 | + * 依次类推。以营运结束时间点作为结束。铺出当前路牌下并为连续性的班次数. | |
| 2071 | + * | |
| 2072 | + * 举例:以最后一个路牌的第一个班次开始向水平方向连续性的补全. | |
| 2073 | + * 第一个班次的发车时间是 6:31 , 某放下下的高峰行驶时间 25分钟 ,得到第一个班次的到达时间 6:31 + 25 = 6:56 , | |
| 2074 | + * 第二个班次: | |
| 2075 | + * 发车时间是 7:01 = 第一个班次的到达时间 6:56 + 第一个班次方向下并且在某时间范围内的停站时间 5分钟 | |
| 2076 | + * 某放下下的高峰行驶时间 25分钟 得到到达时间 : 7:01 + 25 = 7:26 | |
| 2077 | + * 第三个班次 | |
| 2078 | + * 发车时间是 7:31 = 第二个班次的到达时间 7:26 + 第二个班次方向下并且在某时间范围内的停站时间 5分钟 | |
| 2079 | + * 某放下下的高峰行驶时间 25分钟 得到到达时间 : 7:31 + 25 = 7:56 | |
| 2080 | + * 第四个班次 | |
| 2081 | + * 第五个班次 | |
| 2082 | + * ........ | |
| 2083 | + */ | |
| 2084 | + plgfbc01 : function(saa , cara , map, seMap , dataMap) { | |
| 2085 | + // 定义路牌长度 、所有路牌默认出场方向 [0--上行出场;1--下行出场] 、营运结束时间、返回数组. | |
| 2086 | + var len = cara.length , cctag , endTime = baseF.getDateTime(seMap.e) , rs = new Array(); | |
| 2087 | + // 获取所有路牌默认出场方向.如果是环线则只有一个上行方向. | |
| 2088 | + cctag = map.linePlayType=='1' ? 0 : baseF.getdefaultDir01(dataMap.smbcsjArr,saa[0].xxsj, saa[0].dgxxtzjx); | |
| 2089 | + for(var c = 0 ; c < len ; c++) { | |
| 2090 | + // 定义当前路牌的第一个班次的开始时间. | |
| 2091 | + var kssj = baseF.getDateTime(map.earlyStartTime); | |
| 2092 | + kssj.setMinutes(kssj.getMinutes()-(len - cara[c].lpNo)*saa[0].fcjx.dgfcjx); | |
| 2093 | + // 定义当前路牌方向变量 、 是否开启方向切换变量[0 --- 表示不开启 ; 1 -- 表示开启] 、 序号. | |
| 2094 | + var fxTagDm = cctag , fxflag = 0 , xhNo = 3; | |
| 2095 | + while(kssj <= endTime) { | |
| 2096 | + // 获取当前班次方向,如果是当前路牌的第一个班次则为默认方向,否则切换方向. | |
| 2097 | + fxTagDm = baseF.getfx(fxflag,fxTagDm); | |
| 2098 | + // 开启方向切换. | |
| 2099 | + fxflag = 1; | |
| 2100 | + // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间. | |
| 2101 | + var tzsj = baseF.isgfsjd01(kssj,dataMap) ? dataMap.gftzsj[fxTagDm] : dataMap.dgtzsj[fxTagDm]; | |
| 2102 | + // 定义在某时间段内的行驶时间. | |
| 2103 | + var _xxsj = baseF.getxssj(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,fxTagDm); | |
| 2104 | + // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间. | |
| 2105 | + var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj; | |
| 2106 | + // 添加正常班次对象. | |
| 2107 | + rs.push(baseF.getbcObj(kssj , _xxsj , cara[c] , | |
| 2108 | + dataMap.bcTypeArr.normal, | |
| 2109 | + dataMap.dira[fxTagDm] , xhNo++, | |
| 2110 | + dataMap.pcxslcArr[fxTagDm] , map , 0, | |
| 2111 | + dataMap.qdzArr[fxTagDm], | |
| 2112 | + dataMap.zdzArr[fxTagDm], null , xs_tzsj , 0)); | |
| 2113 | + // 重新计算下一个班次的开始时间. | |
| 2114 | + kssj = new Date(kssj.setMinutes(kssj.getMinutes() + tzsj)); | |
| 2115 | + } | |
| 2116 | + } | |
| 2117 | + return rs; | |
| 2118 | + }, | |
| 2119 | + | |
| 1568 | 2120 | plgfbc : function(saa , cara , map, seMap ,dataMap) { |
| 1569 | 2121 | var len = cara.length,rs = new Array(); |
| 1570 | 2122 | var lbsj = map.lb=='' ? 0:parseInt(map.lb); |
| ... | ... | @@ -1610,9 +2162,10 @@ var BaseFun = function() { |
| 1610 | 2162 | return rs; |
| 1611 | 2163 | }, |
| 1612 | 2164 | |
| 1613 | - isgfsjd01 : function(kssj,dataMap,type) { | |
| 2165 | + isgfsjd01 : function(kssj,dataMap) { | |
| 1614 | 2166 | var tag = false; |
| 1615 | - if((dataMap.zgfsjd[0].st <=kssj && kssj<= dataMap.zgfsjd[0].ed ) || ( dataMap.wgfsjd[0].st <= kssj && kssj <= dataMap.wgfsjd[0].ed)) | |
| 2167 | + if((dataMap.zgfsjd[0].st <= kssj && kssj<= dataMap.zgfsjd[0].ed ) || | |
| 2168 | + ( dataMap.wgfsjd[0].st <= kssj && kssj <= dataMap.wgfsjd[0].ed)) | |
| 1616 | 2169 | tag = true; |
| 1617 | 2170 | return tag; |
| 1618 | 2171 | }, |
| ... | ... | @@ -1653,6 +2206,34 @@ var BaseFun = function() { |
| 1653 | 2206 | return result; |
| 1654 | 2207 | }, |
| 1655 | 2208 | |
| 2209 | + splitBxRc02 : function(str) { | |
| 2210 | + var list = new Array(),rsa = new Array(); | |
| 2211 | + var gsgd = baseF.getBxLs(); | |
| 2212 | + var bxrcAr = str.split(','); | |
| 2213 | + for(var s = 0 ; s< bxrcAr.length;s++) { | |
| 2214 | + var s1a = bxrcAr[s].split('/'); | |
| 2215 | + var rs = parseInt(s1a[1]); | |
| 2216 | + var fpcls = parseInt(s1a[2]); | |
| 2217 | + var gsavg = parseInt(s1a[3]); | |
| 2218 | + var gsgdIndex = 0,hoursV = 0.0,minueV='' ; | |
| 2219 | + for(var g = 0 ; g < gsgd.length; g++) { | |
| 2220 | + if(gsgd[g].type == s1a[0]) { | |
| 2221 | + gsgdIndex = g; | |
| 2222 | + hoursV = gsgd[g].hoursV; | |
| 2223 | + minueV = gsgd[g].minueV; | |
| 2224 | + } | |
| 2225 | + } | |
| 2226 | + list.push({'type':s1a[0], | |
| 2227 | + 'rs':rs, | |
| 2228 | + 'fpcls':fpcls, | |
| 2229 | + 'hoursV':hoursV, | |
| 2230 | + 'minueV':minueV, | |
| 2231 | + 'gsavg' : gsavg}); | |
| 2232 | + rsa.push(rs); | |
| 2233 | + } | |
| 2234 | + return {'data':list.sort(function(a,b){return b.rs-a.rs}),'rsa':rsa.sort().reverse()}; | |
| 2235 | + }, | |
| 2236 | + | |
| 1656 | 2237 | splitBxRc : function(str) { |
| 1657 | 2238 | var list = new Array(),rsa = new Array();; |
| 1658 | 2239 | var gsgd = baseF.getBxLs(); | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/d3.relationshipgraph.js
| ... | ... | @@ -966,9 +966,11 @@ var RelationshipGraph = function () { |
| 966 | 966 | var lpNo = array[a].lpNo; |
| 967 | 967 | var timeNum = 0 ,tempNum = 0; |
| 968 | 968 | for(var z = 0 ;z < tza.length;z++) { |
| 969 | - if(tza[z].lpNo == lpNo) { | |
| 969 | + if(tza[z].lpNo == lpNo && tza[z].bcsj >0 ) { | |
| 970 | 970 | timeNum = timeNum + tza[z].bcsj + tza[z].STOPTIME; |
| 971 | - tempNum ++; | |
| 971 | + if( tza[z].bcType !='bd' && tza[z].bcType !='lc' ) { | |
| 972 | + tempNum ++; | |
| 973 | + } | |
| 972 | 974 | } |
| 973 | 975 | } |
| 974 | 976 | var className = 'statis_container_' + lpNo; | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/gantt.js
| ... | ... | @@ -64,7 +64,8 @@ |
| 64 | 64 | }else if(map.baseRes== '1') { |
| 65 | 65 | // 采用班型人次数据获取渲染时刻表明细图形的配置参数数据. |
| 66 | 66 | // data = BaseFun.BXPplaceClassesTime(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA); |
| 67 | - data = BaseFun.BXPplaceClassesTime01(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA); | |
| 67 | + // data = BaseFun.BXPplaceClassesTime01(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA); | |
| 68 | + data = BaseFun.BXPplaceClassesTime02(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA); | |
| 68 | 69 | } |
| 69 | 70 | |
| 70 | 71 | }else { |
| ... | ... | @@ -129,7 +130,11 @@ |
| 129 | 130 | * @returns 返回一个分装发车间隙、车辆数的最大值集合. |
| 130 | 131 | * */ |
| 131 | 132 | function getMaxCarAndStopSpace1(map) { |
| 132 | - return {'gattA':null,'fcjx': {'gffcjx': Math.round(map.zzsj.gfzzsj/map.clzs) , 'dgfcjx': Math.round(map.zzsj.dgzzsj/map.clzs)},'maxCar':BaseFun.getYAxisCarArray(parseInt(map.clzs))}; | |
| 133 | + return {'gattA':null, | |
| 134 | + 'fcjx': {'gffcjx': Math.round(map.zzsj.gfzzsj/map.clzs) , | |
| 135 | + 'dgfcjx': Math.round(map.zzsj.dgzzsj/map.clzs), | |
| 136 | + 'dgmaxfcjx' : parseInt(map.dgmaxfcjx)}, | |
| 137 | + 'maxCar':BaseFun.getYAxisCarArray(parseInt(map.clzs))}; | |
| 133 | 138 | } |
| 134 | 139 | |
| 135 | 140 | /** |
| ... | ... | @@ -147,6 +152,8 @@ |
| 147 | 152 | 'pcxssjArr' : BaseFun.formatPairing(gatps.upTravelTime,gatps.downTravelTime),// 平常行驶时间。[下标0代表上;下标1代表下] |
| 148 | 153 | 'gfxxsjArr' : BaseFun.formatPairing(gatps.lateUpTime=='' ? gatps.upTravelTime : gatps.lateUpTime, |
| 149 | 154 | gatps.lateDownTime=='' ? gatps.downTravelTime : gatps.lateDownTime),// 高峰行驶时间。[下标0代表上;下标1代表下] |
| 155 | + 'dgxxsjArr' : BaseFun.formatPairing(gatps.troughUpTime=='' ? gatps.upTravelTime : gatps.troughUpTime, | |
| 156 | + gatps.troughDownTime=='' ? gatps.downTravelTime : gatps.troughDownTime),// 低谷行驶时间。[下标0代表上;下标1代表下] | |
| 150 | 157 | 'pcxslcArr' : BaseFun.formatPairing(gatps.upMileage,gatps.downMileage),// 行驶里程。[下标0代表上;下标1代表下] |
| 151 | 158 | 'qdzArr' : BaseFun.qzdz(gatps.up_s.split('_')[0],gatps.down_s.split('_')[0]),// 起始站。[下标0代表上;下标1代表下] |
| 152 | 159 | 'zdzArr':BaseFun.qzdz(gatps.up_s.split('_')[1],gatps.down_s.split('_')[1]),// 终点站。[下标0代表上;下标1代表下] |
| ... | ... | @@ -170,6 +177,8 @@ |
| 170 | 177 | // 'maxztjx' : parseInt(gatps.maxstopTime), // 最大停站时间. |
| 171 | 178 | 'gftzsj': BaseFun.formatPairing(gatps.gfupStopTime,gatps.gfdownStopTime),// 高峰停站时间. |
| 172 | 179 | 'dgtzsj' : BaseFun.formatPairing(gatps.dgupStopTime,gatps.dgdownStopTime),// 低谷停站时间. |
| 180 | + 'dgmaxtzsj' : parseInt(gatps.dgmaxtzsj),// 低谷最大停站时间. | |
| 181 | + 'dgmaxfcjx' : parseInt(gatps.dgmaxfcjx),// 低谷最大发车间隙. | |
| 173 | 182 | 'map' : gatps, |
| 174 | 183 | 'zzsj':gatps.zzsj,// 周转时间. |
| 175 | 184 | }; |
| ... | ... | @@ -191,6 +200,9 @@ |
| 191 | 200 | 'dgzzsj': parseInt(map.troughUpTime==''? map.upTravelTime : map.troughUpTime) + |
| 192 | 201 | parseInt(map.dgupStopTime) + parseInt(map.dgdownStopTime) + |
| 193 | 202 | parseInt(map.troughDownTime==''? map.downTravelTime: map.troughDownTime),// 低谷周转时间 |
| 203 | + 'dgmaxzzsj' : parseInt(map.troughUpTime==''? map.upTravelTime : map.troughUpTime) + | |
| 204 | + parseInt(map.dgmaxtzsj) + parseInt(map.dgmaxtzsj) + | |
| 205 | + parseInt(map.troughDownTime==''? map.downTravelTime: map.troughDownTime),// 低谷最大的周转时间 | |
| 194 | 206 | }; |
| 195 | 207 | } |
| 196 | 208 | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/tagsinput.js
| ... | ... | @@ -42,7 +42,8 @@ var ComponentsBootstrapTagsinput = function() { |
| 42 | 42 | var bctypeValue = $('#state_tagsinput_bctype').val(); |
| 43 | 43 | var rcnum = $('#state_tagsinput_rcsvalue').val(); |
| 44 | 44 | var clnum = $('#state_tagsinput_clsvalue').val(); |
| 45 | - if(isNull(bctypeValue,rcnum,clnum)) { | |
| 45 | + var gsvag = $('#state_tagsinput_gsavgvalue').val(); | |
| 46 | + if(isNull(bctypeValue,rcnum,clnum,gsvag)) { | |
| 46 | 47 | if(!Number.isInteger(parseInt(rcnum)/parseInt(clnum))) { |
| 47 | 48 | layer.msg('当前算法只支持【单/双挡】!请您重新输入!'); |
| 48 | 49 | $('#state_tagsinput_bctype').val(null); |
| ... | ... | @@ -56,22 +57,24 @@ var ComponentsBootstrapTagsinput = function() { |
| 56 | 57 | if(s1a[0]==bctypeValue) { |
| 57 | 58 | rcnum = parseInt(rcnum) + parseInt(s1a[1]); |
| 58 | 59 | clnum = parseInt(clnum) + parseInt(s1a[2]); |
| 60 | + gsvag = parseInt(s1a[3]); | |
| 59 | 61 | } |
| 60 | 62 | } |
| 61 | 63 | elt.tagsinput('add', { |
| 62 | - "value": bctypeValue + '/' + rcnum + '/' + clnum, | |
| 63 | - "text": bctypeValue + '/' + rcnum + '/' + clnum, | |
| 64 | + "value": bctypeValue + '/' + rcnum + '/' + clnum + '/' + gsvag, | |
| 65 | + "text": bctypeValue + '/' + rcnum + '/' + clnum + '/' + gsvag, | |
| 64 | 66 | "continent": bctypeValue, |
| 65 | 67 | }); |
| 66 | 68 | $('#state_tagsinput_bctype').val(null); |
| 67 | 69 | $('#state_tagsinput_rcsvalue').val(null); |
| 68 | 70 | $('#state_tagsinput_clsvalue').val(null); |
| 71 | + $('#state_tagsinput_gsavgvalue').val(null); | |
| 69 | 72 | } |
| 70 | 73 | }); |
| 71 | 74 | |
| 72 | - var isNull = function(v1,v2,v3) { | |
| 75 | + var isNull = function(v1,v2,v3,v4) { | |
| 73 | 76 | var tag = true; |
| 74 | - if(v1==''|| v2=='' || v3=='') | |
| 77 | + if(v1==''|| v2=='' || v3=='' || v4=='') | |
| 75 | 78 | tag = false; |
| 76 | 79 | return tag; |
| 77 | 80 | } | ... | ... |
src/main/resources/static/pages/base/timesmodel/tepms/bctype_temp.html
| ... | ... | @@ -170,56 +170,83 @@ |
| 170 | 170 | |
| 171 | 171 | <!-- 表单分组组件 form-group START --> |
| 172 | 172 | <div class="form-group"> |
| 173 | - <!-- 高峰上行停站间隙 (* 必填项) START --> | |
| 173 | + <!-- 高峰上行停站时间 (* 必填项) START --> | |
| 174 | 174 | <div class="col-md-6"> |
| 175 | 175 | <label class="control-label col-md-5"> |
| 176 | - <span class="required"> * </span> 高峰上行停站间隙: | |
| 176 | + <span class="required"> * </span> 高峰上行停站时间: | |
| 177 | 177 | </label> |
| 178 | 178 | <div class="col-md-5"> |
| 179 | 179 | <input type="text" class="form-control" name="gfupStopTime" id="gfupStopTimeInput" |
| 180 | - placeholder="请输入高峰上行停站间隙"> | |
| 180 | + placeholder="请输入高峰上行停站时间"> | |
| 181 | 181 | </div> |
| 182 | 182 | </div> |
| 183 | - <!-- 上行停站间隙 (* 必填项) END --> | |
| 183 | + <!-- 上行停站时间 (* 必填项) END --> | |
| 184 | 184 | |
| 185 | - <!-- 高峰下行停站间隙 (* 必填项) START --> | |
| 185 | + <!-- 高峰下行停站时间 (* 必填项) START --> | |
| 186 | 186 | <div class="col-md-6"> |
| 187 | 187 | <label class="control-label col-md-5"> |
| 188 | - <span class="required"> * </span> 高峰下行停站间隙: | |
| 188 | + <span class="required"> * </span> 高峰下行停站时间: | |
| 189 | 189 | </label> |
| 190 | 190 | <div class="col-md-5"> |
| 191 | 191 | <input type="text" class="form-control" name="gfdownStopTime" id="gfdownStopTimeInput" |
| 192 | - placeholder="请输入高峰下行停站间隙"> | |
| 192 | + placeholder="请输入高峰下行停站时间"> | |
| 193 | 193 | </div> |
| 194 | 194 | </div> |
| 195 | - <!-- 高峰下行停站间隙 (* 必填项) END --> | |
| 195 | + <!-- 高峰下行停站时间 (* 必填项) END --> | |
| 196 | 196 | </div> |
| 197 | 197 | <!-- 表单分组组件 form-group END --> |
| 198 | 198 | |
| 199 | 199 | <!-- 表单分组组件 form-group START --> |
| 200 | 200 | <div class="form-group"> |
| 201 | - <!-- 低谷上行停站间隙(* 必填项) START --> | |
| 201 | + <!-- 低谷上行停站时间(* 必填项) START --> | |
| 202 | 202 | <div class="col-md-6"> |
| 203 | 203 | <label class="control-label col-md-5"> |
| 204 | - <span class="required"> * </span> 低谷上行停站间隙: | |
| 204 | + <span class="required"> * </span> 低谷上行停站时间: | |
| 205 | 205 | </label> |
| 206 | 206 | <div class="col-md-5"> |
| 207 | - <input type="text" class="form-control" name="dgupStopTime" id="dgupStopTimeInput" placeholder="请输入低谷上行停站间隙"> | |
| 207 | + <input type="text" class="form-control" name="dgupStopTime" id="dgupStopTimeInput" placeholder="请输入低谷上行停站时间"> | |
| 208 | 208 | </div> |
| 209 | 209 | </div> |
| 210 | - <!-- 低谷上行停站间隙(* 必填项) END --> | |
| 210 | + <!-- 低谷上行停站时间(* 必填项) END --> | |
| 211 | 211 | |
| 212 | - <!-- 低谷下行停站间隙(* 必填项) START --> | |
| 212 | + <!-- 低谷下行停站时间(* 必填项) START --> | |
| 213 | 213 | <div class="col-md-6"> |
| 214 | 214 | <label class="control-label col-md-5"> |
| 215 | - <span class="required"> * </span> 低谷下行停站间隙: | |
| 215 | + <span class="required"> * </span> 低谷下行停站时间: | |
| 216 | 216 | </label> |
| 217 | 217 | <div class="col-md-5"> |
| 218 | 218 | <input type="text" class="form-control" name="dgdownStopTime" id="dgdownStopTimeInput" |
| 219 | - placeholder="请输入低谷下行停站间隙"> | |
| 219 | + placeholder="请输入低谷下行停站时间"> | |
| 220 | 220 | </div> |
| 221 | 221 | </div> |
| 222 | - <!-- 低谷停站间隙 (* 必填项) END --> | |
| 222 | + <!-- 低谷停站时间 (* 必填项) END --> | |
| 223 | +</div> | |
| 224 | +<!-- 表单分组组件 form-group END --> | |
| 225 | + | |
| 226 | +<!-- 表单分组组件 form-group START --> | |
| 227 | +<div class="form-group"> | |
| 228 | + <!-- 低谷最大发车间隙(* 必填项) START --> | |
| 229 | + <div class="col-md-6"> | |
| 230 | + <label class="control-label col-md-5"> | |
| 231 | + <span class="required"> * </span> 低谷最大发车间隙: | |
| 232 | + </label> | |
| 233 | + <div class="col-md-5"> | |
| 234 | + <input type="text" class="form-control" name="dgmaxfcjx" id="dgmaxfcjxInput" placeholder="请输入低谷最大发车间隙"> | |
| 235 | + </div> | |
| 236 | + </div> | |
| 237 | + <!-- 低谷最大发车间隙(* 必填项) END --> | |
| 238 | + | |
| 239 | + <!-- 低谷最大停站时间(* 必填项) START --> | |
| 240 | + <div class="col-md-6"> | |
| 241 | + <label class="control-label col-md-5"> | |
| 242 | + <span class="required"> * </span> 低谷最大停站时间: | |
| 243 | + </label> | |
| 244 | + <div class="col-md-5"> | |
| 245 | + <input type="text" class="form-control" name="dgmaxtzsj" id="dgmaxtzsjInput" | |
| 246 | + placeholder="请输入低谷最大停站时间"> | |
| 247 | + </div> | |
| 248 | + </div> | |
| 249 | + <!-- 低谷停站时间 (* 必填项) END --> | |
| 223 | 250 | </div> |
| 224 | 251 | <!-- 表单分组组件 form-group END --> |
| 225 | 252 | |
| ... | ... | @@ -523,9 +550,14 @@ |
| 523 | 550 | <div class="col-md-6 "> |
| 524 | 551 | <label class="control-label col-md-5"><span class="required"> * </span>班型/人次/车辆 :</label> |
| 525 | 552 | <div class="col-md-5 tagsDiv"> |
| 526 | - <input type="text" value="" name="bxrc" id="state_tagsinput" style="display: none;"> | |
| 527 | - <div class="margin-top-10"> | |
| 528 | - <select class="form-control" id="state_tagsinput_bctype"> | |
| 553 | + <div class="row" style="margin-left: 15px;"> | |
| 554 | + <input type="text" value="" name="bxrc" id="state_tagsinput" style="display: none;"> | |
| 555 | + </div> | |
| 556 | + | |
| 557 | + <div class="row" style="margin-top: 10px;"> | |
| 558 | + <label class="control-label col-md-4">工休类型 :</label> | |
| 559 | + <div class="col-md-8"> | |
| 560 | + <select class="form-control" id="state_tagsinput_bctype"> | |
| 529 | 561 | <option value="">请选择工休类型...</option> |
| 530 | 562 | <option value="六工一休">六工一休</option> |
| 531 | 563 | <option value="五工一休">五工一休</option> |
| ... | ... | @@ -536,14 +568,31 @@ |
| 536 | 568 | <option value="一工一休">一工一休</option> |
| 537 | 569 | <option value="无工休">无工休</option> |
| 538 | 570 | </select> |
| 571 | + </div> | |
| 572 | + </div> | |
| 573 | + | |
| 574 | + <div class="row" style="margin-top: 10px;"> | |
| 575 | + <label class="control-label col-md-4">分配人次数:</label> | |
| 576 | + <div class="col-md-8"> | |
| 577 | + <input type="number" class="form-control" placeholder="请输入分配人次数" id="state_tagsinput_rcsvalue" min="1"> | |
| 578 | + </div> | |
| 539 | 579 | </div> |
| 540 | - <div class="margin-top-10"> | |
| 541 | - <input type="number" class="form-control" placeholder="请输入分配人次数" id="state_tagsinput_rcsvalue" min="1"> | |
| 580 | + | |
| 581 | + <div class="row" style="margin-top: 10px;"> | |
| 582 | + <label class="control-label col-md-4">分配车辆数:</label> | |
| 583 | + <div class="col-md-8"> | |
| 584 | + <input type="number" class="form-control" placeholder="请输入分配车辆数" id="state_tagsinput_clsvalue" min="1"> | |
| 585 | + </div> | |
| 542 | 586 | </div> |
| 543 | - <div class="margin-top-10"> | |
| 544 | - <input type="number" class="form-control" placeholder="请输入分配车辆数" id="state_tagsinput_clsvalue" min="1"> | |
| 587 | + | |
| 588 | + <div class="row" style="margin-top: 10px;"> | |
| 589 | + <label class="control-label col-md-4">日平均工时:</label> | |
| 590 | + <div class="col-md-8"> | |
| 591 | + <input type="number" class="form-control" placeholder="请输入日平均工时" id="state_tagsinput_gsavgvalue" min="1"> | |
| 592 | + </div> | |
| 545 | 593 | </div> |
| 546 | - <div class="margin-top-10"> | |
| 594 | + | |
| 595 | + <div class="row" style="margin-top: 10px;margin-left: 116px;"> | |
| 547 | 596 | <a href="javascript:;" class="btn red" id="state_tagsinput_add">添加</a> |
| 548 | 597 | </div> |
| 549 | 598 | </div> |
| ... | ... | @@ -710,43 +759,65 @@ |
| 710 | 759 | |
| 711 | 760 | <!-- 表单分组组件 form-group START --> |
| 712 | 761 | <div class="form-group"> |
| 713 | - <!-- 高峰上行停站间隙(* 必填项) START --> | |
| 762 | + <!-- 高峰上行停站时间(* 必填项) START --> | |
| 714 | 763 | <div class="col-md-6"> |
| 715 | - <label class="control-label col-md-5"> 高峰上行停站间隙: </label> | |
| 764 | + <label class="control-label col-md-5"> 高峰上行停站时间: </label> | |
| 716 | 765 | <div class="col-md-4"> |
| 717 | 766 | <p class="form-control-static" data-display="gfupStopTime"> </p> |
| 718 | 767 | </div> |
| 719 | 768 | </div> |
| 720 | - <!-- 高峰上行停站间隙(* 必填项) END --> | |
| 721 | - <!-- 高峰下行停站间隙(* 必填项) START --> | |
| 769 | + <!-- 高峰上行停站时间(* 必填项) END --> | |
| 770 | + <!-- 高峰下行停站时间(* 必填项) START --> | |
| 722 | 771 | <div class="col-md-6"> |
| 723 | - <label class="control-label col-md-5"> 高峰下行停站间隙: </label> | |
| 772 | + <label class="control-label col-md-5"> 高峰下行停站时间: </label> | |
| 724 | 773 | <div class="col-md-4"> |
| 725 | 774 | <p class="form-control-static" data-display="gfdownStopTime"> </p> |
| 726 | 775 | </div> |
| 727 | 776 | </div> |
| 728 | - <!-- 高峰下行停站间隙(* 必填项) END --> | |
| 777 | + <!-- 高峰下行停站时间(* 必填项) END --> | |
| 729 | 778 | </div> |
| 730 | 779 | <!-- 表单分组组件 form-group END --> |
| 731 | 780 | |
| 732 | 781 | <!-- 表单分组组件 form-group START --> |
| 733 | 782 | <div class="form-group"> |
| 734 | - <!-- 低谷上行停站间隙(* 必填项) START --> | |
| 783 | + <!-- 低谷上行停站时间(* 必填项) START --> | |
| 735 | 784 | <div class="col-md-6"> |
| 736 | - <label class="control-label col-md-5"> 低谷上行停站间隙: </label> | |
| 785 | + <label class="control-label col-md-5"> 低谷上行停站时间: </label> | |
| 737 | 786 | <div class="col-md-4"> |
| 738 | 787 | <p class="form-control-static" data-display="dgupStopTime"> </p> |
| 739 | 788 | </div> |
| 740 | 789 | </div> |
| 741 | - <!-- 低谷上行停站间隙(* 必填项) END --> | |
| 742 | - <!-- 低谷下行停站间隙(* 必填项) START --> | |
| 790 | + <!-- 低谷上行停站时间(* 必填项) END --> | |
| 791 | + <!-- 低谷下行停站时间(* 必填项) START --> | |
| 743 | 792 | <div class="col-md-6"> |
| 744 | - <label class="control-label col-md-5"> 低谷下行停站间隙: </label> | |
| 793 | + <label class="control-label col-md-5"> 低谷下行停站时间: </label> | |
| 745 | 794 | <div class="col-md-4"> |
| 746 | 795 | <p class="form-control-static" data-display="dgdownStopTime"> </p> |
| 747 | 796 | </div> |
| 748 | 797 | </div> |
| 749 | - <!-- 低谷下行停站间隙(* 必填项) END --> | |
| 798 | + <!-- 低谷下行停站时间(* 必填项) END --> | |
| 799 | +</div> | |
| 800 | +<!-- 表单分组组件 form-group END --> | |
| 801 | + | |
| 802 | +<!-- 表单分组组件 form-group START --> | |
| 803 | +<div class="form-group"> | |
| 804 | + <!-- 低谷最大发车间隙(* 必填项) START --> | |
| 805 | + <div class="col-md-6"> | |
| 806 | + <label class="control-label col-md-5"> 低谷最大发车间隙: </label> | |
| 807 | + <div class="col-md-4"> | |
| 808 | + <p class="form-control-static" data-display="dgmaxfcjx"> </p> | |
| 809 | + </div> | |
| 810 | + </div> | |
| 811 | + <!-- 低谷最大发车间隙(* 必填项) END --> | |
| 812 | + | |
| 813 | + <!-- 低谷最大停站时间(* 必填项) START --> | |
| 814 | + <div class="col-md-6"> | |
| 815 | + <label class="control-label col-md-5"> 低谷最大停站时间: </label> | |
| 816 | + <div class="col-md-4"> | |
| 817 | + <p class="form-control-static" data-display="dgmaxtzsj"> </p> | |
| 818 | + </div> | |
| 819 | + </div> | |
| 820 | + <!-- 低谷最大停站时间(* 必填项) END --> | |
| 750 | 821 | </div> |
| 751 | 822 | <!-- 表单分组组件 form-group END --> |
| 752 | 823 | ... | ... |
src/main/resources/static/pages/forms/mould/correctForm.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/inoutstation.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/shifday.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/correctForm.html
| ... | ... | @@ -32,13 +32,13 @@ |
| 32 | 32 | <select class="form-control" name="line" id="line" style="width: 136px;"></select> |
| 33 | 33 | </div> |
| 34 | 34 | <div style="display: inline-block;margin-left: 15px;"> |
| 35 | - <span class="item-label" style="width: 80px;">时间: </span> | |
| 35 | + <span class="item-label" style="width: 80px;">开始时间: </span> | |
| 36 | 36 | <input class="form-control" type="text" id="date" style="width: 120px;"/> |
| 37 | 37 | </div> |
| 38 | -<!-- <div style="display: inline-block;margin-left: 15px;"> --> | |
| 39 | -<!-- <span class="item-label" style="width: 80px;">结束时间: </span> --> | |
| 40 | -<!-- <input class="form-control" type="text" id="endDate" style="width: 120px;"/> --> | |
| 41 | -<!-- </div> --> | |
| 38 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 39 | + <span class="item-label" style="width: 80px;">结束时间: </span> | |
| 40 | + <input class="form-control" type="text" id="endDate" style="width: 120px;"/> | |
| 41 | + </div> | |
| 42 | 42 | <div style="display: inline-block;margin-left: 15px"> |
| 43 | 43 | <span class="item-label" style="width: 140px;">路牌: </span> |
| 44 | 44 | <select class="form-control" name="lpName" id="lpName" style="width: 136px;"></select> |
| ... | ... | @@ -59,10 +59,11 @@ |
| 59 | 59 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 60 | 60 | <thead> |
| 61 | 61 | <tr> |
| 62 | - <th colspan="6">营运车辆修正统计表</th> | |
| 62 | + <th colspan="7">营运车辆修正统计表</th> | |
| 63 | 63 | </tr> |
| 64 | 64 | <tr> |
| 65 | 65 | <td>编号</td> |
| 66 | + <td>日期</td> | |
| 66 | 67 | <td>路牌</td> |
| 67 | 68 | <td>车号</td> |
| 68 | 69 | <td>司机</td> |
| ... | ... | @@ -96,6 +97,10 @@ |
| 96 | 97 | format : 'YYYY-MM-DD', |
| 97 | 98 | locale : 'zh-cn' |
| 98 | 99 | }); |
| 100 | + $("#endDate").datetimepicker({ | |
| 101 | + format : 'YYYY-MM-DD', | |
| 102 | + locale : 'zh-cn' | |
| 103 | + }); | |
| 99 | 104 | var d = new Date(); |
| 100 | 105 | var year = d.getFullYear(); |
| 101 | 106 | var month = d.getMonth() + 1; |
| ... | ... | @@ -105,6 +110,7 @@ |
| 105 | 110 | if(day < 10) |
| 106 | 111 | day = "0" + day; |
| 107 | 112 | $("#date").val(year + "-" + month + "-" + day); |
| 113 | + $("#endDate").val(year + "-" + month + "-" + day); | |
| 108 | 114 | |
| 109 | 115 | $.get('/basic/lineCode2Name',function(result){ |
| 110 | 116 | var data=[]; |
| ... | ... | @@ -197,16 +203,18 @@ |
| 197 | 203 | }); |
| 198 | 204 | |
| 199 | 205 | var line = $("#line").val(); |
| 200 | - var date = $("#startDate").val(); | |
| 206 | + var date = $("#date").val();endDate | |
| 201 | 207 | var lpName = $("#lpName").val(); |
| 208 | + var endDate = $("#endDate").val(); | |
| 202 | 209 | var code = $("#code").val(); |
| 203 | 210 | $("#query").on("click",function(){ |
| 204 | 211 | line = $("#line").val(); |
| 205 | 212 | date = $("#date").val(); |
| 206 | 213 | lpName = $("#lpName").val(); |
| 207 | 214 | code = $("#code").val(); |
| 215 | + endDate = $("#endDate").val(); | |
| 208 | 216 | var type = "query"; |
| 209 | - $get("/realSchedule/correctForm",{line:line,date:date,lpName:lpName,code:code,type:type},function(result){ | |
| 217 | + $get("/realSchedule/correctForm",{line:line,date:date,endDate:endDate,lpName:lpName,code:code,type:type},function(result){ | |
| 210 | 218 | var list_correctForm = template('list_correctForm',{list:result}); |
| 211 | 219 | // 把渲染好的模版html文本追加到表格中 |
| 212 | 220 | $('#forms .list_correctForm').html(list_correctForm); |
| ... | ... | @@ -224,7 +232,7 @@ |
| 224 | 232 | |
| 225 | 233 | $("#export").on("click",function(){ |
| 226 | 234 | var type = "export"; |
| 227 | - $get('/realSchedule/correctForm',{line:line,date:date,lpName:lpName,code:code,type:type},function(result){ | |
| 235 | + $get('/realSchedule/correctForm',{line:line,date:date,endDate:endDate,lpName:lpName,code:code,type:type},function(result){ | |
| 228 | 236 | window.open("/downloadFile/download?fileName=修正报表"+date); |
| 229 | 237 | }); |
| 230 | 238 | }); |
| ... | ... | @@ -234,7 +242,8 @@ |
| 234 | 242 | <script type="text/html" id="list_correctForm"> |
| 235 | 243 | {{each list as obj i}} |
| 236 | 244 | <tr> |
| 237 | - <td>{{i+1}}</td> | |
| 245 | + <td>{{i+1}}</td> | |
| 246 | + <td>{{obj.rq}}</td> | |
| 238 | 247 | <td>{{obj.lpName}}</td> |
| 239 | 248 | <td>{{obj.clZbh}}</td> |
| 240 | 249 | <td>{{obj.jName}}/{{obj.jGh}}</td> |
| ... | ... | @@ -244,7 +253,7 @@ |
| 244 | 253 | {{/each}} |
| 245 | 254 | {{if list.length == 0}} |
| 246 | 255 | <tr> |
| 247 | - <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td> | |
| 256 | + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> | |
| 248 | 257 | </tr> |
| 249 | 258 | {{/if}} |
| 250 | 259 | </script> | ... | ... |
src/main/resources/static/pages/forms/statement/firstAndLastBus.html
| ... | ... | @@ -157,35 +157,71 @@ |
| 157 | 157 | } |
| 158 | 158 | } |
| 159 | 159 | $('#subCompany').html(options); |
| 160 | - initXl(); | |
| 161 | 160 | } |
| 162 | 161 | |
| 163 | - $("#subCompany").on("change",initXl); | |
| 164 | - function initXl(){ | |
| 165 | - var data=[]; | |
| 166 | - if(fage){ | |
| 167 | - $("#line").select2("destroy").html(''); | |
| 168 | - } | |
| 169 | - var fgs=$('#subCompany').val(); | |
| 170 | - var gs=$('#company').val(); | |
| 162 | +// $("#subCompany").on("change",initXl); | |
| 163 | + | |
| 164 | +// function initXl(){ | |
| 165 | +// var data=[]; | |
| 166 | +// data.push({id: " ", text: "全部线路"}); | |
| 167 | +// if(fage){ | |
| 168 | +// $("#line").select2("destroy").html(''); | |
| 169 | +// } | |
| 170 | +// var fgs=$('#subCompany').val(); | |
| 171 | +// var gs=$('#company').val(); | |
| 172 | +// for(var i=0;i<xlList.length;i++){ | |
| 173 | +// if(gs!=""){ | |
| 174 | +// if(fgs!=""){ | |
| 175 | +// if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 176 | +// data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 177 | +// } | |
| 178 | +// }else{ | |
| 179 | +// if(xlList[i]["gsbm"]==gs){ | |
| 180 | +// data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 181 | +// } | |
| 182 | +// } | |
| 183 | +// } | |
| 184 | +// } | |
| 185 | +// initPinYinSelect2('#line',data,''); | |
| 186 | +// fage=true; | |
| 187 | +// } | |
| 188 | + | |
| 189 | + var tempData = {}; | |
| 190 | + $.get('/report/lineList',function(xlList){ | |
| 191 | + var data = []; | |
| 171 | 192 | data.push({id: " ", text: "全部线路"}); |
| 172 | - for(var i=0;i<xlList.length;i++){ | |
| 173 | - if(gs!=""){ | |
| 174 | - if(fgs!=""){ | |
| 175 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 176 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 177 | - } | |
| 178 | - }else{ | |
| 179 | - if(xlList[i]["gsbm"]==gs){ | |
| 180 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 193 | + $.get('/user/companyData', function(result){ | |
| 194 | + for(var i = 0; i < result.length; i++){ | |
| 195 | + var companyCode = result[i].companyCode; | |
| 196 | + var children = result[i].children; | |
| 197 | + for(var j = 0; j < children.length; j++){ | |
| 198 | + var code = children[j].code; | |
| 199 | + for(var k=0;k < xlList.length;k++ ){ | |
| 200 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 201 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 202 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 203 | + } | |
| 181 | 204 | } |
| 182 | 205 | } |
| 183 | 206 | } |
| 184 | - } | |
| 185 | - initPinYinSelect2('#line',data,''); | |
| 186 | - fage=true; | |
| 187 | - } | |
| 207 | + initPinYinSelect2('#line',data,''); | |
| 208 | + | |
| 209 | + }); | |
| 210 | + }); | |
| 188 | 211 | |
| 212 | + $("#line").on("change", function(){ | |
| 213 | + if($("#line").val() == " "){ | |
| 214 | + $("#company").attr("disabled", false); | |
| 215 | + $("#subCompany").attr("disabled", false); | |
| 216 | + } else { | |
| 217 | + var temp = tempData[$("#line").val()].split(":"); | |
| 218 | + $("#company").val(temp[0]); | |
| 219 | + updateCompany(); | |
| 220 | + $("#subCompany").val(temp[1]); | |
| 221 | + $("#company").attr("disabled", true); | |
| 222 | + $("#subCompany").attr("disabled", true); | |
| 223 | + } | |
| 224 | + }); | |
| 189 | 225 | |
| 190 | 226 | $("#query").on("click",jsDoQuery); |
| 191 | 227 | ... | ... |
src/main/resources/static/pages/forms/statement/firstAndLastBus_sum.html
| ... | ... | @@ -312,22 +312,50 @@ |
| 312 | 312 | <tr> |
| 313 | 313 | <td>{{obj.date}}</td> |
| 314 | 314 | <td>{{obj.line}}</td> |
| 315 | - <td>{{obj.qdzFirst0}}</td> | |
| 316 | - <td>{{obj.jhfcFirst0}}</td> | |
| 317 | - <td>{{obj.sjfcFirst0}}</td> | |
| 318 | - <td>{{obj.delayFirst0}}</td> | |
| 319 | - <td>{{obj.qdzLast0}}</td> | |
| 320 | - <td>{{obj.jhfcLast0}}</td> | |
| 321 | - <td>{{obj.sjfcLast0}}</td> | |
| 322 | - <td>{{obj.delayLast0}}</td> | |
| 323 | - <td>{{obj.qdzFirst1}}</td> | |
| 324 | - <td>{{obj.jhfcFirst1}}</td> | |
| 325 | - <td>{{obj.sjfcFirst1}}</td> | |
| 326 | - <td>{{obj.delayFirst1}}</td> | |
| 327 | - <td>{{obj.qdzLast1}}</td> | |
| 328 | - <td>{{obj.jhfcLast1}}</td> | |
| 329 | - <td>{{obj.sjfcLast1}}</td> | |
| 330 | - <td>{{obj.delayLast1}}</td> | |
| 315 | + {{if obj.delayFirst0 != '/' && (obj.delayFirst0 > 1 || obj.delayFirst0 < -2)}} | |
| 316 | + <td style="background-color: #FF9999">{{obj.qdzFirst0}}</td> | |
| 317 | + <td style="background-color: #FF9999">{{obj.jhfcFirst0}}</td> | |
| 318 | + <td style="background-color: #FF9999">{{obj.sjfcFirst0}}</td> | |
| 319 | + <td style="background-color: #FF9999">{{obj.delayFirst0}}</td> | |
| 320 | + {{else}} | |
| 321 | + <td>{{obj.qdzFirst0}}</td> | |
| 322 | + <td>{{obj.jhfcFirst0}}</td> | |
| 323 | + <td>{{obj.sjfcFirst0}}</td> | |
| 324 | + <td>{{obj.delayFirst0}}</td> | |
| 325 | + {{/if}} | |
| 326 | + {{if obj.delayLast0 != '/' && (obj.delayLast0 > 1 || obj.delayLast0 < -2)}} | |
| 327 | + <td style="background-color: #FF9999">{{obj.qdzLast0}}</td> | |
| 328 | + <td style="background-color: #FF9999">{{obj.jhfcLast0}}</td> | |
| 329 | + <td style="background-color: #FF9999">{{obj.sjfcLast0}}</td> | |
| 330 | + <td style="background-color: #FF9999">{{obj.delayLast0}}</td> | |
| 331 | + {{else}} | |
| 332 | + <td>{{obj.qdzLast0}}</td> | |
| 333 | + <td>{{obj.jhfcLast0}}</td> | |
| 334 | + <td>{{obj.sjfcLast0}}</td> | |
| 335 | + <td>{{obj.delayLast0}}</td> | |
| 336 | + {{/if}} | |
| 337 | + {{if obj.delayFirst1 != '/' && (obj.delayFirst1 > 1 || obj.delayFirst1 < -2)}} | |
| 338 | + <td style="background-color: #FF9999">{{obj.qdzFirst1}}</td> | |
| 339 | + <td style="background-color: #FF9999">{{obj.jhfcFirst1}}</td> | |
| 340 | + <td style="background-color: #FF9999">{{obj.sjfcFirst1}}</td> | |
| 341 | + <td style="background-color: #FF9999">{{obj.delayFirst1}}</td> | |
| 342 | + {{else}} | |
| 343 | + <td>{{obj.qdzFirst1}}</td> | |
| 344 | + <td>{{obj.jhfcFirst1}}</td> | |
| 345 | + <td>{{obj.sjfcFirst1}}</td> | |
| 346 | + <td>{{obj.delayFirst1}}</td> | |
| 347 | + {{/if}} | |
| 348 | + {{if obj.delayLast1 != '/' && (obj.delayLast1 > 1 || obj.delayLast1 < -2)}} | |
| 349 | + <td style="background-color: #FF9999">{{obj.qdzLast1}}</td> | |
| 350 | + <td style="background-color: #FF9999">{{obj.jhfcLast1}}</td> | |
| 351 | + <td style="background-color: #FF9999">{{obj.sjfcLast1}}</td> | |
| 352 | + <td style="background-color: #FF9999">{{obj.delayLast1}}</td> | |
| 353 | + {{else}} | |
| 354 | + <td>{{obj.qdzLast1}}</td> | |
| 355 | + <td>{{obj.jhfcLast1}}</td> | |
| 356 | + <td>{{obj.sjfcLast1}}</td> | |
| 357 | + <td>{{obj.delayLast1}}</td> | |
| 358 | + {{/if}} | |
| 331 | 359 | </tr> |
| 332 | 360 | {{/each}} |
| 333 | 361 | </script> |
| 334 | 362 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/statement/historyMessage.html
| ... | ... | @@ -46,7 +46,7 @@ |
| 46 | 46 | </form> |
| 47 | 47 | </div> |
| 48 | 48 | <div class="portlet-body"> |
| 49 | - <div class="table-container" id="table" style="margin-top: 10px;overflow:auto;min-width: 906px;"> | |
| 49 | + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px;"> | |
| 50 | 50 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 51 | 51 | <thead> |
| 52 | 52 | <tr class="hidden"> |
| ... | ... | @@ -80,7 +80,6 @@ |
| 80 | 80 | format : 'YYYY-MM-DD', |
| 81 | 81 | locale : 'zh-cn' |
| 82 | 82 | }); |
| 83 | - $("#table").height($(window).height()-280); | |
| 84 | 83 | |
| 85 | 84 | $.get('/basic/lineCode2Name',function(result){ |
| 86 | 85 | var data=[]; | ... | ... |
src/main/resources/static/pages/forms/statement/lbStatuAnaly.html
| ... | ... | @@ -93,7 +93,7 @@ |
| 93 | 93 | </form> |
| 94 | 94 | </div> |
| 95 | 95 | <div class="portlet-body"> |
| 96 | - <div class="table-container" id="table" style="margin-top: 0px;overflow:auto;min-width: 906px;height:481px;"> | |
| 96 | + <div class="table-container" id="table" style="margin-top: 0px;overflow:auto;min-width: 906px;"> | |
| 97 | 97 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 98 | 98 | <thead> |
| 99 | 99 | |
| ... | ... | @@ -135,7 +135,6 @@ |
| 135 | 135 | format : 'HH:mm', |
| 136 | 136 | locale : 'zh-cn' |
| 137 | 137 | }); |
| 138 | - $("#table").height($(window).height()-320); | |
| 139 | 138 | |
| 140 | 139 | var d = new Date(); |
| 141 | 140 | var year = d.getFullYear(); |
| ... | ... | @@ -346,7 +345,12 @@ |
| 346 | 345 | $('#export').attr('disabled', "true"); |
| 347 | 346 | else |
| 348 | 347 | $("#export").removeAttr("disabled"); |
| 349 | - | |
| 348 | + | |
| 349 | + if($("#forms").height()+70 > $(window).height()-110){ | |
| 350 | + $("#table").height($(window).height()-110); | |
| 351 | + } else { | |
| 352 | + $("#table").height($("#forms").height()+70); | |
| 353 | + } | |
| 350 | 354 | }); |
| 351 | 355 | } |
| 352 | 356 | ... | ... |
src/main/resources/static/pages/forms/statement/scheduleDaily.html
| ... | ... | @@ -294,7 +294,7 @@ word-wrap: break-word; |
| 294 | 294 | day = "0" + day; |
| 295 | 295 | $("#date").val(year + "-" + month + "-" + day); |
| 296 | 296 | |
| 297 | - $("#ddrbBody").height($(window).height()-280); | |
| 297 | + $("#ddrbBody").height($(window).height()-100); | |
| 298 | 298 | /* $.get('/basic/lineCode2Name',function(result){ |
| 299 | 299 | var data=[]; |
| 300 | 300 | |
| ... | ... | @@ -407,6 +407,7 @@ word-wrap: break-word; |
| 407 | 407 | layer.msg("请选择时间"); |
| 408 | 408 | return; |
| 409 | 409 | } |
| 410 | + $("#ddrbBody").height($(window).height()-100); | |
| 410 | 411 | $("c").html("全日"); |
| 411 | 412 | $("#export").removeAttr("disabled"); |
| 412 | 413 | $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){ | ... | ... |
src/main/resources/static/pages/forms/statement/statisticsDaily.html
| ... | ... | @@ -65,7 +65,7 @@ |
| 65 | 65 | </form> |
| 66 | 66 | </div> |
| 67 | 67 | <div class="portlet-body"> |
| 68 | - <div class="table-container" id="ddrbBody" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 68 | + <div class="table-container" id="tjrbBody" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 69 | 69 | <label>早高峰:6:31~8:30 晚高峰:16:01~18:00</label> |
| 70 | 70 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 71 | 71 | <thead> |
| ... | ... | @@ -248,6 +248,7 @@ |
| 248 | 248 | layer.msg("请选择时间范围!"); |
| 249 | 249 | return; |
| 250 | 250 | } |
| 251 | + $("#tjrbBody").height($(window).height()-100); | |
| 251 | 252 | line = $("#line").val(); |
| 252 | 253 | xlName = $("#select2-line-container").html(); |
| 253 | 254 | date = $("#date").val(); |
| ... | ... | @@ -282,7 +283,7 @@ |
| 282 | 283 | } |
| 283 | 284 | |
| 284 | 285 | }); |
| 285 | - $("#ddrbBody").height($(window).height()-280); | |
| 286 | + $("#tjrbBody").height($(window).height()-100); | |
| 286 | 287 | $("#export").on("click",function(){ |
| 287 | 288 | var params = {}; |
| 288 | 289 | params['gsdm'] = gsdm; | ... | ... |
src/main/resources/static/pages/forms/statement/waybill.html
| ... | ... | @@ -55,7 +55,7 @@ |
| 55 | 55 | <div class="portlet-body"> |
| 56 | 56 | <div class="row"> |
| 57 | 57 | <div class="col-md-3"> |
| 58 | - <div class="" style="margin-top: 10px;overflow:auto;height: 520px"> | |
| 58 | + <div class="" id="left_height" style="margin-top: 10px;overflow:auto;"> | |
| 59 | 59 | <table class="table table-bordered table-hover table-checkable pre-scrollable" id="info"> |
| 60 | 60 | <thead> |
| 61 | 61 | <tr class="hidden"> |
| ... | ... | @@ -106,7 +106,9 @@ |
| 106 | 106 | locale : 'zh-cn' |
| 107 | 107 | }); |
| 108 | 108 | |
| 109 | + $("#left_height").height($(window).height()-100); | |
| 109 | 110 | $("#xcld_height").height($(window).height()-100); |
| 111 | + | |
| 110 | 112 | var d = new Date(); |
| 111 | 113 | var year = d.getFullYear(); |
| 112 | 114 | var month = d.getMonth() + 1; |
| ... | ... | @@ -187,8 +189,9 @@ |
| 187 | 189 | fage=true; |
| 188 | 190 | } |
| 189 | 191 | var date = ''; |
| 190 | - var line =''; | |
| 192 | + var line = ''; | |
| 191 | 193 | $("#query").on("click",function(){ |
| 194 | + $("#left_height").height($(window).height()-100); | |
| 192 | 195 | line = $("#line").val(); |
| 193 | 196 | date = $("#date").val(); |
| 194 | 197 | $(".hidden").removeClass("hidden"); | ... | ... |
src/main/resources/static/pages/forms/statement/workDaily.html
| ... | ... | @@ -7,7 +7,8 @@ |
| 7 | 7 | .table-bordered > tbody > tr > td, |
| 8 | 8 | .table-bordered > tfoot > tr > th, |
| 9 | 9 | .table-bordered > tfoot > tr > td { |
| 10 | - border: 1px solid; } | |
| 10 | + border: 1px solid; | |
| 11 | + text-align: center; } | |
| 11 | 12 | .table-bordered > thead > tr > th, |
| 12 | 13 | .table-bordered > thead > tr > td { |
| 13 | 14 | border-bottom-width: 2px; } | ... | ... |
src/main/resources/static/pages/mforms/operationservices/operationservice.html
src/main/resources/static/pages/oil/add.html
| ... | ... | @@ -173,7 +173,7 @@ |
| 173 | 173 | <div class="row"> |
| 174 | 174 | <div class="col-md-offset-3 col-md-4"> |
| 175 | 175 | <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button> |
| 176 | - <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a> | |
| 176 | + <a type="button" class="btn default" href="list_ph.html" data-pjax><i class="fa fa-times"></i> 取消</a> | |
| 177 | 177 | </div> |
| 178 | 178 | </div> |
| 179 | 179 | </div> | ... | ... |
src/main/resources/static/pages/report/inoutstation.html
| ... | ... | @@ -31,7 +31,7 @@ |
| 31 | 31 | <div style="display: inline-block;margin-left: 15px;"> |
| 32 | 32 | <input class="item-label" type="radio" name="typeLx" checked="checked" value="1" /> |
| 33 | 33 | 班次执行情况 |
| 34 | - <input class="item-label" type="radio" name="typeLX" value="2" /> | |
| 34 | + <input class="item-label" type="radio" name="typeLx" value="2" /> | |
| 35 | 35 | 车辆/站点 |
| 36 | 36 | </div> |
| 37 | 37 | <div style="display: inline-block; margin-left: 33px;" id="gsdmDiv"> |
| ... | ... | @@ -116,16 +116,17 @@ |
| 116 | 116 | <thead> |
| 117 | 117 | <tr> |
| 118 | 118 | <td width="3%"></td> |
| 119 | - <td width="9%">内部编码</td> | |
| 120 | - <td width="8%">到站名称</td> | |
| 121 | - <td width="8%">到站时刻</td> | |
| 122 | - <td width="8%">离站时刻</td> | |
| 123 | - <td width="8%">是否开关门</td> | |
| 124 | - <td width="8%">上下行</td> | |
| 119 | + <td width="8%">内部编码</td> | |
| 120 | + <td width="8%">牌照号</td> | |
| 121 | + <td width="7%">到站名称</td> | |
| 122 | + <td width="7%">到站时刻</td> | |
| 123 | + <td width="7%">离站时刻</td> | |
| 124 | + <td width="7%">是否开关门</td> | |
| 125 | + <td width="7%">上下行</td> | |
| 125 | 126 | <td width="8%">开门速度(公里/小时)</td> |
| 126 | - <td width="8%">补发</td> | |
| 127 | - <td width="8%">刷卡次数</td> | |
| 128 | - <td width="8%">刷卡金额</td> | |
| 127 | + <td width="7%">补发</td> | |
| 128 | + <td width="7%">刷卡次数</td> | |
| 129 | + <td width="7%">刷卡金额</td> | |
| 129 | 130 | <td width="8%">免费刷卡次数</td> |
| 130 | 131 | <td width="8%">免费刷卡金额</td> |
| 131 | 132 | </tr> |
| ... | ... | @@ -497,6 +498,7 @@ |
| 497 | 498 | <tr> |
| 498 | 499 | <td>{{i+1}}</td> |
| 499 | 500 | <td>{{obj.nbbm}}</td> |
| 501 | + <td>{{obj.pzh}}</td> | |
| 500 | 502 | <td>{{obj.stopName}}</td> |
| 501 | 503 | <td>{{obj.jzsj}}</td> |
| 502 | 504 | <td>{{obj.czsj}}</td> | ... | ... |
src/main/resources/static/pages/report/message/message.html
| ... | ... | @@ -42,7 +42,7 @@ |
| 42 | 42 | <div class="form-group" style="display: inline-block;margin-left: 15px;"> |
| 43 | 43 | <input class="btn btn-default" type="button" id="query" value="查询"/> |
| 44 | 44 | <input class="btn btn-default" type="button" id="export" value="导出"/> |
| 45 | - <input class="btn btn-default" type="button" id="print" value="打印"/> | |
| 45 | +<!-- <input class="btn btn-default" type="button" id="print" value="打印"/> --> | |
| 46 | 46 | <!-- <input class="btn btn-default" type="button" id="exportMore" value="批量导出"/> --> |
| 47 | 47 | </div> |
| 48 | 48 | </form> |
| ... | ... | @@ -50,7 +50,7 @@ |
| 50 | 50 | <div class="portlet-body"> |
| 51 | 51 | <div class="row"> |
| 52 | 52 | <div class="col-md-3"> |
| 53 | - <div class="" style="margin-top: 10px;overflow:auto;height: 860px"> | |
| 53 | + <div class="" id="left_table" style="margin-top: 10px;overflow:auto;height: 860px"> | |
| 54 | 54 | <table class="table table-bordered table-hover table-checkable pre-scrollable" id="info_msg"> |
| 55 | 55 | <thead> |
| 56 | 56 | <tr class="hidden"> |
| ... | ... | @@ -67,7 +67,7 @@ |
| 67 | 67 | </div> |
| 68 | 68 | </div> |
| 69 | 69 | <div class="col-md-9" id="printArea"> |
| 70 | - <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 70 | + <div class="table-container" id="table" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 71 | 71 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 72 | 72 | <thead> |
| 73 | 73 | <tr class="hidden"> |
| ... | ... | @@ -106,6 +106,10 @@ |
| 106 | 106 | format : 'YYYY-MM-DD', |
| 107 | 107 | locale : 'zh-cn' |
| 108 | 108 | }); |
| 109 | + | |
| 110 | + $("#left_table").height($(window).height()-100); | |
| 111 | + $("#table").height($(window).height()-100); | |
| 112 | + | |
| 109 | 113 | var d = new Date(); |
| 110 | 114 | var year = d.getFullYear(); |
| 111 | 115 | var month = d.getMonth() + 1; |
| ... | ... | @@ -171,7 +175,8 @@ |
| 171 | 175 | if($("#date").val() == null || $("#date").val().trim().length == 0){ |
| 172 | 176 | layer.msg("请选择时间!"); |
| 173 | 177 | return; |
| 174 | - } | |
| 178 | + } | |
| 179 | + $("#left_table").height($(window).height()-100); | |
| 175 | 180 | line = $("#line").val(); |
| 176 | 181 | date = $("#date").val(); |
| 177 | 182 | var code = $("#code").val(); |
| ... | ... | @@ -194,13 +199,15 @@ |
| 194 | 199 | $("#info_msg tbody").on("click","tr",function(){ |
| 195 | 200 | if($(this).children().size() < 2){ |
| 196 | 201 | return; |
| 197 | - } | |
| 202 | + } | |
| 203 | + $("#table").height($(window).height()-100); | |
| 198 | 204 | $(this).children().each(function(index){ |
| 199 | 205 | params[index] = $(this).text(); |
| 200 | 206 | }); |
| 201 | 207 | jName = params[1]; |
| 202 | 208 | line = $("#line").val(); |
| 203 | 209 | date = $("#date").val(); |
| 210 | + var obj = $(this); | |
| 204 | 211 | $get('/realSchedule/historyMessage',{line:line,date:date,code:jName,type:"query"},function(result){ |
| 205 | 212 | var list_history_msg = template('list_history_msg',{list:result}); |
| 206 | 213 | // 把渲染好的模版html文本追加到表格中 |
| ... | ... | @@ -214,7 +221,9 @@ |
| 214 | 221 | $("#print").removeAttr("disabled"); |
| 215 | 222 | } |
| 216 | 223 | $('#printArea').show(); |
| 217 | - | |
| 224 | + | |
| 225 | + $("#info_msg tbody tr").css('background-color', ''); | |
| 226 | + obj.css('background-color', '#99CCFF'); | |
| 218 | 227 | }); |
| 219 | 228 | }); |
| 220 | 229 | ... | ... |
src/main/resources/static/pages/report/sheet/list.html
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | |
| 19 | 19 | <div class="page-head"> |
| 20 | 20 | <div class="page-title" style="margin-left: 20px"> |
| 21 | - <button>数据导出</button> | |
| 21 | + <button id="exportList">数据导出</button> | |
| 22 | 22 | </div> |
| 23 | 23 | </div> |
| 24 | 24 | |
| ... | ... | @@ -27,7 +27,7 @@ |
| 27 | 27 | <div class="portlet light porttlet-fit bordered"> |
| 28 | 28 | <div class="portlet-body"> |
| 29 | 29 | <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 600px"> |
| 30 | - <table class="table table-bordered table-hover table-checkable" id="forms_1"> | |
| 30 | + <table class="table table-bordered table-hover table-checkable" id="forms_2"> | |
| 31 | 31 | <thead> |
| 32 | 32 | <tr> |
| 33 | 33 | <td></td> |
| ... | ... | @@ -40,7 +40,7 @@ |
| 40 | 40 | </tr> |
| 41 | 41 | </thead> |
| 42 | 42 | |
| 43 | - <tbody > | |
| 43 | + <tbody> | |
| 44 | 44 | |
| 45 | 45 | </tbody> |
| 46 | 46 | </table> |
| ... | ... | @@ -55,32 +55,28 @@ |
| 55 | 55 | // 关闭左侧栏 |
| 56 | 56 | if (!$('body').hasClass('page-sidebar-closed')) |
| 57 | 57 | $('.menu-toggler.sidebar-toggler').click(); |
| 58 | - | |
| 58 | + var no=""; | |
| 59 | 59 | $("#sheetList").on('init', function (e, id) { |
| 60 | + no=id; | |
| 60 | 61 | $get('/sheet/sheetList',{id:id},function(result){ |
| 61 | - var sheetList_1 = template('sheetList_1',{list:result}); | |
| 62 | - $('#forms_1 tbody').html(sheetList_1); | |
| 62 | + var sheetList_2 = template('sheetList_2',{list:result}); | |
| 63 | + $('#forms_2 tbody').html(sheetList_2); | |
| 63 | 64 | }); |
| 64 | 65 | }) |
| 65 | - /* $("#query").on('click',function(){ | |
| 66 | - var line = $("#line").val(); | |
| 67 | - var date = $("#date").val(); | |
| 68 | - var fgs=$('#fgsdm').val(); | |
| 69 | - var gs=$('#gsdm').val(); | |
| 70 | - $get('/sheet/countList',{line:line,date:date,gs:gs,fgs:fgs},function(result){ | |
| 71 | - var sheetList = template('sheetList',{list:result}); | |
| 72 | - $('#forms tbody').html(sheetList); | |
| 73 | - $('.btn-sheetList').on('click', openSheetList); | |
| 74 | - }); | |
| 75 | - }); */ | |
| 66 | + $("#exportList").on('click',function(){ | |
| 67 | + | |
| 68 | + $get('/sheet/exportList',params,function(result){ | |
| 69 | + window.open("/downloadFile/download?fileName=班次车辆人员月报表"+moment($("#startDate").val()).format("YYYYMMDD")); | |
| 70 | + }); | |
| 71 | + }); | |
| 76 | 72 | |
| 77 | 73 | |
| 78 | 74 | }); |
| 79 | 75 | </script> |
| 80 | -<script type="text/html" id="sheetList_1"> | |
| 76 | +<script type="text/html" id="sheetList_2"> | |
| 81 | 77 | {{each list as obj i}} |
| 82 | 78 | <tr {{if obj.sfzd!="Y"}}style="color: red" {{/if}}> |
| 83 | - <td>{{i}}</td> | |
| 79 | + <td>{{i+1}}</td> | |
| 84 | 80 | <td>{{obj.date}}</td> |
| 85 | 81 | <td>{{obj.line}}</td> |
| 86 | 82 | <td>{{obj.zdname}}</td> | ... | ... |
src/main/resources/static/pages/report/sheet/sheetList.html
| ... | ... | @@ -35,14 +35,20 @@ |
| 35 | 35 | <span class="item-label" style="width: 80px;">分公司: </span> |
| 36 | 36 | <select class="form-control" name="subCompany" id="fgsdm" style="width: 180px;"></select> |
| 37 | 37 | </div> |
| 38 | - <div style="display: inline-block;margin-left: 15px;"> | |
| 38 | + <div style="margin-top: 10px"> | |
| 39 | + </div> | |
| 40 | + <div style="display: inline-block;margin-left: 33px;"> | |
| 39 | 41 | <span class="item-label" style="width: 80px;">线路: </span> |
| 40 | 42 | <select class="form-control" name="line" id="line" style="width: 180px;"></select> |
| 41 | 43 | </div> |
| 42 | 44 | <div style="display: inline-block;"> |
| 43 | - <span class="item-label" style="width: 80px;">时间: </span> | |
| 45 | + <span class="item-label" style="width: 80px;margin-left: 24px;">开始时间: </span> | |
| 44 | 46 | <input class="form-control" type="text" id="date" style="width: 180px;"/> |
| 45 | 47 | </div> |
| 48 | + <div style="display: inline-block;"> | |
| 49 | + <span class="item-label" style="width: 80px;margin-left: 24px;">结束时间: </span> | |
| 50 | + <input class="form-control" type="text" id="endDate" style="width: 180px;"/> | |
| 51 | + </div> | |
| 46 | 52 | |
| 47 | 53 | <div class="form-group"> |
| 48 | 54 | <input class="btn btn-default" type="button" id="query" value="查询"/> |
| ... | ... | @@ -65,7 +71,28 @@ |
| 65 | 71 | </tr> |
| 66 | 72 | </thead> |
| 67 | 73 | |
| 68 | - <tbody > | |
| 74 | + <tbody> | |
| 75 | + | |
| 76 | + </tbody> | |
| 77 | + </table> | |
| 78 | + </div> | |
| 79 | + | |
| 80 | + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 81 | + <table class="table table-bordered table-hover table-checkable" id="forms_1"> | |
| 82 | + <thead> | |
| 83 | + <tr class="hidden"> | |
| 84 | + <td>公司</td> | |
| 85 | + <td>分公司</td> | |
| 86 | + <td>日期</td> | |
| 87 | + <td>线路</td> | |
| 88 | + <td>班次数</td> | |
| 89 | + <td>准点班次数</td> | |
| 90 | + <td>准点率</td> | |
| 91 | + <td>查看</td> | |
| 92 | + </tr> | |
| 93 | + </thead> | |
| 94 | + | |
| 95 | + <tbody> | |
| 69 | 96 | |
| 70 | 97 | </tbody> |
| 71 | 98 | </table> |
| ... | ... | @@ -85,6 +112,10 @@ |
| 85 | 112 | format : 'YYYY-MM-DD', |
| 86 | 113 | locale : 'zh-cn' |
| 87 | 114 | }); |
| 115 | + $("#endDate").datetimepicker({ | |
| 116 | + format : 'YYYY-MM-DD', | |
| 117 | + locale : 'zh-cn' | |
| 118 | + }); | |
| 88 | 119 | var d = new Date(); |
| 89 | 120 | var year = d.getFullYear(); |
| 90 | 121 | var month = d.getMonth() + 1; |
| ... | ... | @@ -93,8 +124,10 @@ |
| 93 | 124 | day = "0"+day; |
| 94 | 125 | if(month > 9){ |
| 95 | 126 | $("#date").val(year + "-" + month + "-" + day); |
| 127 | + $("#endDate").val(year + "-" + month + "-" + day); | |
| 96 | 128 | } else { |
| 97 | 129 | $("#date").val(year + "-0" + month + "-" + day); |
| 130 | + $("#endDate").val(year + "-" + month + "-" + day); | |
| 98 | 131 | } |
| 99 | 132 | |
| 100 | 133 | var fage=false; |
| ... | ... | @@ -172,19 +205,34 @@ |
| 172 | 205 | $("#query").on('click',function(){ |
| 173 | 206 | var line = $("#line").val(); |
| 174 | 207 | var date = $("#date").val(); |
| 208 | + var endDate = $("#endDate").val(); | |
| 175 | 209 | var fgs=$('#fgsdm').val(); |
| 176 | 210 | var gs=$('#gsdm').val(); |
| 177 | - $get('/sheet/countList',{line:line,date:date,gs:gs,fgs:fgs},function(result){ | |
| 211 | + $get('/sheet/countList',{line:line,date:date,endDate:endDate,gs:gs,fgs:fgs},function(result){ | |
| 178 | 212 | var sheetList = template('sheetList',{list:result}); |
| 179 | 213 | $('#forms tbody').html(sheetList); |
| 180 | - $('.btn-sheetList').on('click', openSheetList); | |
| 214 | + $('.btn-sheetList').on('click', showSheetList); | |
| 181 | 215 | }); |
| 182 | 216 | // $post('/sheet/saveListSheet',function(result){ |
| 183 | 217 | // }); |
| 184 | 218 | }); |
| 185 | - | |
| 219 | + function showSheetList(){ | |
| 220 | + var id = $(this).data('id'); | |
| 221 | + var date = $("#date").val(); | |
| 222 | + var endDate = $("#endDate").val(); | |
| 223 | + $get('/sheet/listSheet',{id:id,date:date,endDate:endDate},function(result){ | |
| 224 | + var sheetList = template('sheetList_1',{list:result}); | |
| 225 | + | |
| 226 | + $('#forms_1 tbody').html(sheetList); | |
| 227 | + $('.btn-sheetList_1').on('click', openSheetList); | |
| 228 | + $("#forms_1 .hidden").removeClass("hidden"); | |
| 229 | + $("html,body").animate({scrollTop:$("#forms_1").offset().top},1000); | |
| 230 | + | |
| 231 | + }); | |
| 232 | + } | |
| 186 | 233 | function openSheetList(){ |
| 187 | 234 | var id = $(this).data('id'); |
| 235 | + console.log(id); | |
| 188 | 236 | $.get('/pages/report/sheet/list.html', function (content) { |
| 189 | 237 | layer.open({ |
| 190 | 238 | type: 1, |
| ... | ... | @@ -221,4 +269,27 @@ |
| 221 | 269 | <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> |
| 222 | 270 | </tr> |
| 223 | 271 | {{/if}} |
| 272 | +</script> | |
| 273 | + | |
| 274 | +<script type="text/html" id="sheetList_1"> | |
| 275 | + {{each list as obj i}} | |
| 276 | + <tr> | |
| 277 | + <td>{{obj.gs}}</td> | |
| 278 | + <td>{{obj.fgs}}</td> | |
| 279 | + <td>{{obj.date}}</td> | |
| 280 | + <td>{{obj.line}}</td> | |
| 281 | + <td>{{obj.bcs}}</td> | |
| 282 | + <td>{{obj.zdbcs}}</td> | |
| 283 | + <td>{{obj.zdlv}}</td> | |
| 284 | + <td> | |
| 285 | + <button type="button" class="btn btn-sm blue btn-sheetList_1" | |
| 286 | + data-id="{{obj.id}}">详细</button> | |
| 287 | + </td> | |
| 288 | + </tr> | |
| 289 | + {{/each}} | |
| 290 | + {{if list.length == 0}} | |
| 291 | + <tr> | |
| 292 | + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> | |
| 293 | + </tr> | |
| 294 | + {{/if}} | |
| 224 | 295 | </script> |
| 225 | 296 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
| ... | ... | @@ -520,7 +520,7 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService_g', ['$reso |
| 520 | 520 | return { |
| 521 | 521 | rest : $resource( |
| 522 | 522 | '/spic/:id', |
| 523 | - {order: 'scheduleDate,lp,fcno', direction: 'ASC,ASC,ASC', id: '@id'}, | |
| 523 | + {order: 'xl,scheduleDate,lp,xlDir,fcno', direction: 'ASC,ASC,ASC,ASC,ASC', id: '@id'}, | |
| 524 | 524 | { |
| 525 | 525 | list: { |
| 526 | 526 | method: 'GET', | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/list_info.html
| ... | ... | @@ -84,10 +84,20 @@ |
| 84 | 84 | <span ng-bind="info.bcType | dict:'ScheduleType':'未知' "></span> |
| 85 | 85 | </td> |
| 86 | 86 | <td> |
| 87 | - <span ng-bind="info.xlDir | dict:'LineTrend2':'未知' "></span> | |
| 87 | + <a href="#" ng-if="info.xlDir == '0'"> | |
| 88 | + <i class="fa fa-arrow-up" aria-hidden="true"></i> | |
| 89 | + <span ng-bind="info.xlDir | dict:'LineTrend2':'未知' "></span> | |
| 90 | + </a> | |
| 91 | + <a href="#" ng-if="info.xlDir == '1'"> | |
| 92 | + <i class="fa fa-arrow-circle-down" aria-hidden="true"></i> | |
| 93 | + <span ng-bind="info.xlDir | dict:'LineTrend2':'未知' "></span> | |
| 94 | + </a> | |
| 88 | 95 | </td> |
| 89 | 96 | <td> |
| 90 | - <span ng-bind="info.fcsj"></span> | |
| 97 | + <a href="#"> | |
| 98 | + <i class="fa fa-clock-o" aria-hidden="true"></i> | |
| 99 | + <span ng-bind="info.fcsj"></span> | |
| 100 | + </a> | |
| 91 | 101 | </td> |
| 92 | 102 | <td> |
| 93 | 103 | <a href="#" | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/service.js
| ... | ... | @@ -64,7 +64,7 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService_g', ['$reso |
| 64 | 64 | return { |
| 65 | 65 | rest : $resource( |
| 66 | 66 | '/spic/:id', |
| 67 | - {order: 'scheduleDate,lp,fcno', direction: 'ASC,ASC,ASC', id: '@id'}, | |
| 67 | + {order: 'xl,scheduleDate,lp,xlDir,fcno', direction: 'ASC,ASC,ASC,ASC,ASC', id: '@id'}, | |
| 68 | 68 | { |
| 69 | 69 | list: { |
| 70 | 70 | method: 'GET', | ... | ... |