Commit 5e8f8ffa67765ac81f709aa4883b73dbaf161ebc
Merge branch 'minhang' of git@192.168.168.201:panzhaov5/bsth_control.git
into minhang
Showing
115 changed files
with
6442 additions
and
1768 deletions
src/main/java/com/bsth/controller/gps/GpsController.java
| ... | ... | @@ -3,8 +3,10 @@ package com.bsth.controller.gps; |
| 3 | 3 | import com.bsth.data.BasicData; |
| 4 | 4 | import com.bsth.data.gpsdata.GpsEntity; |
| 5 | 5 | import com.bsth.data.gpsdata.GpsRealData; |
| 6 | +import com.bsth.entity.excep.Speeding; | |
| 6 | 7 | import com.bsth.service.gps.GpsService; |
| 7 | 8 | import com.bsth.service.gps.entity.GpsSpeed; |
| 9 | +import com.bsth.util.PageObject; | |
| 8 | 10 | import com.google.common.base.Splitter; |
| 9 | 11 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | 12 | import org.springframework.web.bind.annotation.*; |
| ... | ... | @@ -95,11 +97,12 @@ public class GpsController { |
| 95 | 97 | |
| 96 | 98 | /** |
| 97 | 99 | * gps补全 |
| 100 | + * type 0 : 实时GPS 1:走补传 | |
| 98 | 101 | * @return |
| 99 | 102 | */ |
| 100 | 103 | @RequestMapping(value = "/gpsCompletion", method = RequestMethod.POST) |
| 101 | - public Map<String, Object> gpsCompletion(@RequestParam long schId) { | |
| 102 | - return gpsService.gpsCompletion(schId); | |
| 104 | + public Map<String, Object> gpsCompletion(@RequestParam long schId, @RequestParam int type) { | |
| 105 | + return gpsService.gpsCompletion(schId, type); | |
| 103 | 106 | } |
| 104 | 107 | |
| 105 | 108 | /** |
| ... | ... | @@ -191,4 +194,13 @@ public class GpsController { |
| 191 | 194 | return listGpsSpeed; |
| 192 | 195 | } |
| 193 | 196 | |
| 197 | + @RequestMapping(value = "/pagequery",method = RequestMethod.GET) | |
| 198 | + public PageObject<GpsSpeed> pagequery(@RequestParam Map<String, Object> map){ | |
| 199 | + PageObject<GpsSpeed> pageObject = null; | |
| 200 | + map.put("curPage", map.get("page").toString()); | |
| 201 | + map.put("pageData","10"); | |
| 202 | + pageObject=gpsService.Pagequery(map); | |
| 203 | + return pageObject; | |
| 204 | + } | |
| 205 | + | |
| 194 | 206 | } | ... | ... |
src/main/java/com/bsth/controller/realcontrol/BasicDataController.java
| ... | ... | @@ -4,7 +4,9 @@ import com.alibaba.fastjson.JSON; |
| 4 | 4 | import com.alibaba.fastjson.serializer.PropertyFilter; |
| 5 | 5 | import com.bsth.common.ResponseCode; |
| 6 | 6 | import com.bsth.data.BasicData; |
| 7 | +import com.bsth.data.Station2ParkBuffer; | |
| 7 | 8 | import com.bsth.entity.Line; |
| 9 | +import com.bsth.entity.realcontrol.StationToPark; | |
| 8 | 10 | import com.google.common.base.Splitter; |
| 9 | 11 | import com.google.common.collect.ArrayListMultimap; |
| 10 | 12 | import com.google.common.collect.BiMap; |
| ... | ... | @@ -29,6 +31,9 @@ public class BasicDataController { |
| 29 | 31 | BasicData basicData; |
| 30 | 32 | |
| 31 | 33 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 34 | + | |
| 35 | + @Autowired | |
| 36 | + Station2ParkBuffer station2ParkBuffer; | |
| 32 | 37 | |
| 33 | 38 | @RequestMapping("/cars") |
| 34 | 39 | public Iterable<String> findAllNbbm(Map<String, Object> map){ |
| ... | ... | @@ -180,4 +185,25 @@ public class BasicDataController { |
| 180 | 185 | |
| 181 | 186 | return rs; |
| 182 | 187 | } |
| 188 | + | |
| 189 | + /** | |
| 190 | + * 获取站点和停车场对照表 | |
| 191 | + * @param idx | |
| 192 | + * @return | |
| 193 | + */ | |
| 194 | + @RequestMapping("/station2ParkData") | |
| 195 | + public Map<String, Collection<StationToPark>> findStation2ParkData(@RequestParam String idx){ | |
| 196 | + List<String> lines = Splitter.on(",").splitToList(idx); | |
| 197 | + ArrayListMultimap<String, StationToPark> rs = ArrayListMultimap.create(); | |
| 198 | + | |
| 199 | + for(String lineCode : lines){ | |
| 200 | + rs.putAll(lineCode, Station2ParkBuffer.get(lineCode)); | |
| 201 | + } | |
| 202 | + return rs.asMap(); | |
| 203 | + } | |
| 204 | + | |
| 205 | + @RequestMapping(value = "/deleteStation2Park", method = RequestMethod.POST) | |
| 206 | + public Map<String, Object> deleteStation2Park(@RequestParam String lineCode,@RequestParam Integer id){ | |
| 207 | + return station2ParkBuffer.delete(lineCode, id); | |
| 208 | + } | |
| 183 | 209 | } | ... | ... |
src/main/java/com/bsth/controller/schedule/TrafficManageController.java
| ... | ... | @@ -8,8 +8,6 @@ import org.springframework.web.bind.annotation.RequestMethod; |
| 8 | 8 | import org.springframework.web.bind.annotation.RequestParam; |
| 9 | 9 | import org.springframework.web.bind.annotation.RestController; |
| 10 | 10 | |
| 11 | -import java.util.Map; | |
| 12 | - | |
| 13 | 11 | /** |
| 14 | 12 | * |
| 15 | 13 | * @author BSTH |
| ... | ... | @@ -24,9 +22,9 @@ public class TrafficManageController { |
| 24 | 22 | |
| 25 | 23 | |
| 26 | 24 | @RequestMapping(value = "/setXL", method = RequestMethod.GET) |
| 27 | - public String setXL(@RequestParam Map<String, Object> param) throws Exception { | |
| 25 | + public String setXL(@RequestParam("ids") String ids) throws Exception { | |
| 28 | 26 | try { |
| 29 | - return trManageService.setXL(param); | |
| 27 | + return trManageService.setXL(ids); | |
| 30 | 28 | } catch (Exception exp) { |
| 31 | 29 | throw new Exception(exp.getCause()); |
| 32 | 30 | } | ... | ... |
src/main/java/com/bsth/data/BasicData.java
| ... | ... | @@ -134,6 +134,9 @@ public class BasicData implements CommandLineRunner { |
| 134 | 134 | @Autowired |
| 135 | 135 | GeoCacheData geoCacheData; |
| 136 | 136 | |
| 137 | + @Autowired | |
| 138 | + Station2ParkBuffer station2ParkBuffer; | |
| 139 | + | |
| 137 | 140 | |
| 138 | 141 | @Override |
| 139 | 142 | public void run() { |
| ... | ... | @@ -160,6 +163,7 @@ public class BasicData implements CommandLineRunner { |
| 160 | 163 | loadBusinessInfo(); |
| 161 | 164 | |
| 162 | 165 | geoCacheData.loadData(); |
| 166 | + station2ParkBuffer.saveAll(); | |
| 163 | 167 | logger.info("加载基础数据成功!,"); |
| 164 | 168 | } catch (Exception e) { |
| 165 | 169 | logger.error("加载基础数据时出现异常,", e); | ... | ... |
src/main/java/com/bsth/data/Station2ParkBuffer.java
0 → 100644
| 1 | +package com.bsth.data; | |
| 2 | + | |
| 3 | +import com.bsth.common.ResponseCode; | |
| 4 | +import com.bsth.entity.realcontrol.ChildTaskPlan; | |
| 5 | +import com.bsth.entity.realcontrol.StationToPark; | |
| 6 | +import com.bsth.repository.realcontrol.StationToParkRepository; | |
| 7 | +import com.bsth.util.Arith; | |
| 8 | +import com.google.common.collect.ArrayListMultimap; | |
| 9 | +import org.joda.time.format.DateTimeFormat; | |
| 10 | +import org.joda.time.format.DateTimeFormatter; | |
| 11 | +import org.slf4j.Logger; | |
| 12 | +import org.slf4j.LoggerFactory; | |
| 13 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | +import org.springframework.boot.CommandLineRunner; | |
| 15 | +import org.springframework.stereotype.Component; | |
| 16 | + | |
| 17 | +import java.util.*; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * 站到场 历时、公里 数据缓存 | |
| 21 | + * Created by panzhao on 2017/7/10. | |
| 22 | + */ | |
| 23 | +@Component | |
| 24 | +public class Station2ParkBuffer implements CommandLineRunner { | |
| 25 | + | |
| 26 | + @Autowired | |
| 27 | + StationToParkRepository stationToParkRepository; | |
| 28 | + | |
| 29 | + private static ArrayListMultimap listMultimap; | |
| 30 | + | |
| 31 | + private static Set<StationToPark> pstBuff; | |
| 32 | + | |
| 33 | + static Logger log = LoggerFactory.getLogger(Station2ParkBuffer.class); | |
| 34 | + | |
| 35 | + @Override | |
| 36 | + public void run(String... strings) throws Exception { | |
| 37 | + listMultimap = ArrayListMultimap.create(); | |
| 38 | + pstBuff = new HashSet<>(); | |
| 39 | + Iterator<StationToPark> iterator = stationToParkRepository.findAll().iterator(); | |
| 40 | + StationToPark stp; | |
| 41 | + while (iterator.hasNext()) { | |
| 42 | + stp = iterator.next(); | |
| 43 | + listMultimap.put(stp.getLineCode(), stp); | |
| 44 | + } | |
| 45 | + } | |
| 46 | + | |
| 47 | + public static List<StationToPark> get(String lineCode) { | |
| 48 | + return listMultimap.get(lineCode); | |
| 49 | + } | |
| 50 | + | |
| 51 | + public static StationToPark get(String lineCode, String sName, String eName) { | |
| 52 | + List<StationToPark> list = get(lineCode); | |
| 53 | + StationToPark stp = null; | |
| 54 | + for (StationToPark s : list) { | |
| 55 | + if (s.getStationName().equals(sName) && s.getParkName().equals(eName)) { | |
| 56 | + stp = s; | |
| 57 | + break; | |
| 58 | + } | |
| 59 | + } | |
| 60 | + return stp; | |
| 61 | + } | |
| 62 | + | |
| 63 | + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); | |
| 64 | + | |
| 65 | + public static void put(ChildTaskPlan ctask) { | |
| 66 | + try{ | |
| 67 | + String type2 = ctask.getType2(); | |
| 68 | + String lineCode = ctask.getSchedule().getXlBm(), sName, eName; | |
| 69 | + | |
| 70 | + if (type2.equals("2")) { | |
| 71 | + sName = ctask.getStartStationName(); | |
| 72 | + eName = ctask.getEndStationName(); | |
| 73 | + } else if (type2.equals("3")) { | |
| 74 | + eName = ctask.getStartStationName(); | |
| 75 | + sName = ctask.getEndStationName(); | |
| 76 | + } else | |
| 77 | + return; | |
| 78 | + | |
| 79 | + Float time = calcMinute(ctask); | |
| 80 | + Float mileage = ctask.getMileage(); | |
| 81 | + | |
| 82 | + StationToPark stp = get(lineCode, sName, eName); | |
| 83 | + if (stp == null) { | |
| 84 | + stp = new StationToPark(); | |
| 85 | + stp.setLineCode(lineCode); | |
| 86 | + stp.setStationName(sName); | |
| 87 | + stp.setParkName(eName); | |
| 88 | + listMultimap.put(lineCode, stp); | |
| 89 | + } | |
| 90 | + | |
| 91 | + if (type2.equals("2")) { | |
| 92 | + stp.setTime1(time); | |
| 93 | + stp.setMileage1(mileage); | |
| 94 | + } else { | |
| 95 | + stp.setTime2(time); | |
| 96 | + stp.setMileage2(mileage); | |
| 97 | + } | |
| 98 | + | |
| 99 | + pstBuff.add(stp); | |
| 100 | + }catch (Exception e){ | |
| 101 | + log.error("", e); | |
| 102 | + } | |
| 103 | + } | |
| 104 | + | |
| 105 | + public static Float calcMinute(ChildTaskPlan ctask) { | |
| 106 | + long t = 0; | |
| 107 | + | |
| 108 | + try { | |
| 109 | + long st = fmtHHmm.parseMillis(ctask.getStartDate()); | |
| 110 | + long et = fmtHHmm.parseMillis(ctask.getEndDate()); | |
| 111 | + | |
| 112 | + t = et - st; | |
| 113 | + } catch (Exception e) { | |
| 114 | + e.printStackTrace(); | |
| 115 | + } | |
| 116 | + return Float.parseFloat(String.valueOf(Arith.div(Arith.div(t, 1000), 60))); | |
| 117 | + } | |
| 118 | + | |
| 119 | + public void saveAll(){ | |
| 120 | + if(pstBuff.size()==0) | |
| 121 | + return; | |
| 122 | + Set<StationToPark> pstBuffCopy = pstBuff; | |
| 123 | + pstBuff = new HashSet<>(); | |
| 124 | + //持久化到数据库 | |
| 125 | + stationToParkRepository.save(pstBuffCopy); | |
| 126 | + } | |
| 127 | + | |
| 128 | + public Map<String, Object> delete(String lineCode, Integer id) { | |
| 129 | + Map<String, Object> rs = new HashMap<>(); | |
| 130 | + try { | |
| 131 | + List<StationToPark> list = listMultimap.get(lineCode); | |
| 132 | + | |
| 133 | + StationToPark stp = null; | |
| 134 | + for(StationToPark temp : list){ | |
| 135 | + if(temp.getId().equals(id)){ | |
| 136 | + stp=temp; | |
| 137 | + break; | |
| 138 | + } | |
| 139 | + } | |
| 140 | + | |
| 141 | + if(stp != null){ | |
| 142 | + listMultimap.remove(lineCode, stp); | |
| 143 | + stationToParkRepository.delete(id); | |
| 144 | + rs.put("status", ResponseCode.SUCCESS); | |
| 145 | + } | |
| 146 | + else{ | |
| 147 | + rs.put("status", ResponseCode.SUCCESS); | |
| 148 | + rs.put("msg", "操作失败,可能数据已经被删除!"); | |
| 149 | + } | |
| 150 | + | |
| 151 | + }catch (Exception e){ | |
| 152 | + rs.put("status", ResponseCode.ERROR); | |
| 153 | + rs.put("msg", e.getMessage()); | |
| 154 | + log.error("", e); | |
| 155 | + } | |
| 156 | + return rs; | |
| 157 | + } | |
| 158 | +} | ... | ... |
src/main/java/com/bsth/data/gpsdata/recovery/GpsDataRecovery.java
| ... | ... | @@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { |
| 84 | 84 | Calendar calendar = Calendar.getInstance(); |
| 85 | 85 | int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); |
| 86 | 86 | |
| 87 | - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=173";// + dayOfYear; | |
| 87 | + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=" + dayOfYear; | |
| 88 | 88 | JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); |
| 89 | 89 | |
| 90 | 90 | List<GpsEntity> list = | ... | ... |
src/main/java/com/bsth/data/pilot80/PilotReport.java
| ... | ... | @@ -2,7 +2,6 @@ package com.bsth.data.pilot80; |
| 2 | 2 | |
| 3 | 3 | import com.bsth.data.BasicData; |
| 4 | 4 | import com.bsth.data.LineConfigData; |
| 5 | -import com.bsth.data.gpsdata.GpsEntity; | |
| 6 | 5 | import com.bsth.data.gpsdata.GpsRealData; |
| 7 | 6 | import com.bsth.data.msg_queue.DirectivePushQueue; |
| 8 | 7 | import com.bsth.data.schedule.DayOfSchedule; |
| ... | ... | @@ -16,7 +15,6 @@ import com.bsth.repository.directive.D80Repository; |
| 16 | 15 | import com.bsth.repository.directive.DC0A4Repository; |
| 17 | 16 | import com.bsth.service.directive.DirectiveService; |
| 18 | 17 | import com.bsth.websocket.handler.SendUtils; |
| 19 | -import com.google.common.collect.ArrayListMultimap; | |
| 20 | 18 | import org.apache.commons.lang3.StringUtils; |
| 21 | 19 | import org.slf4j.Logger; |
| 22 | 20 | import org.slf4j.LoggerFactory; |
| ... | ... | @@ -26,289 +24,278 @@ import org.springframework.stereotype.Component; |
| 26 | 24 | import java.util.ArrayList; |
| 27 | 25 | import java.util.Collection; |
| 28 | 26 | import java.util.List; |
| 27 | +import java.util.concurrent.ConcurrentHashMap; | |
| 29 | 28 | |
| 30 | 29 | /** |
| 31 | - * | |
| 32 | - * @ClassName: PilotReport | |
| 33 | - * @Description: TODO(设备80协议上报处理) | |
| 34 | 30 | * @author PanZhao |
| 35 | - * @date 2016年8月14日 下午11:37:51 | |
| 36 | - * | |
| 31 | + * @ClassName: PilotReport | |
| 32 | + * @Description: TODO(设备80协议上报处理) | |
| 33 | + * @date 2016年8月14日 下午11:37:51 | |
| 37 | 34 | */ |
| 38 | 35 | @Component |
| 39 | 36 | public class PilotReport { |
| 40 | - | |
| 41 | - @Autowired | |
| 42 | - D80Repository d80Repository; | |
| 43 | - @Autowired | |
| 44 | - DayOfSchedule dayOfSchedule; | |
| 45 | - @Autowired | |
| 46 | - LineConfigData lineConfigData; | |
| 47 | - @Autowired | |
| 48 | - DirectiveService directiveService; | |
| 49 | - @Autowired | |
| 50 | - GpsRealData gpsRealData; | |
| 51 | - @Autowired | |
| 52 | - SendUtils sendUtils; | |
| 53 | - | |
| 54 | - @Autowired | |
| 55 | - DC0A4Repository dc0A4Repository; | |
| 56 | - | |
| 57 | - private static ArrayListMultimap<String, D80> d80MultiMap; | |
| 58 | - | |
| 59 | - Logger logger = LoggerFactory.getLogger(PilotReport.class); | |
| 60 | - | |
| 61 | - static{ | |
| 62 | - d80MultiMap = ArrayListMultimap.create(); | |
| 63 | - } | |
| 64 | - | |
| 65 | - public void report(D80 d80){ | |
| 66 | - //入库 | |
| 67 | - d80Repository.save(d80); | |
| 68 | - //入缓存 | |
| 69 | - d80MultiMap.put(d80.getData().getLineId().toString(), d80); | |
| 70 | - | |
| 71 | - String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 72 | - //处理 | |
| 73 | - switch (d80.getData().getRequestCode()) { | |
| 74 | - case 0xA3: | |
| 75 | - //出场请求 | |
| 76 | - ScheduleRealInfo outSch = dayOfSchedule.searchNearByBcType(nbbm, "out"); | |
| 77 | - //如果有对应出场班次 | |
| 78 | - if(outSch != null){ | |
| 79 | - //没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令 | |
| 80 | - if(outSch.getJhlc() == null) | |
| 81 | - outSch = dayOfSchedule.next(outSch); | |
| 82 | - | |
| 83 | - //下发调度指令 | |
| 84 | - DirectivePushQueue.put6002(outSch, dayOfSchedule.doneSum(nbbm), "请出@系统"); | |
| 85 | - //directiveService.send60Dispatch(outSch, dayOfSchedule.doneSum(nbbm), "请出@系统"); | |
| 86 | - //下发线路切换指令 | |
| 87 | - DirectivePushQueue.put64(outSch.getClZbh(), outSch.getXlBm(), "请出@系统"); | |
| 88 | - //directiveService.lineChange(outSch.getClZbh(), outSch.getXlBm(), "请出@系统"); | |
| 89 | - }else | |
| 90 | - d80.setRemarks("没有出场计划"); | |
| 91 | - | |
| 92 | - break; | |
| 93 | - | |
| 94 | - case 0xA5: | |
| 95 | - //进场请求 | |
| 96 | - //ScheduleRealInfo inSch = dayOfSchedule.nextByBcType(nbbm, "in"); | |
| 97 | - //如果有对应出场班次 | |
| 98 | - //if(inSch != null){ | |
| 99 | - /*d80.setRemarks("计划进场时间:" + inSch.getDfsj()); | |
| 100 | - //当前GPS位置 | |
| 101 | - GpsEntity gps = gpsRealData.get(d80.getDeviceId()); | |
| 102 | - if(null != gps) | |
| 103 | - d80.addRemarks("<br> 位置:" + coordHtmlStr(gps));*/ | |
| 104 | - //}/*else | |
| 105 | - // d80.setRemarks("没有进场计划");*/ | |
| 106 | - break; | |
| 107 | - } | |
| 108 | - | |
| 109 | - //推送到页面 | |
| 110 | - sendUtils.send80ToPage(d80); | |
| 111 | - } | |
| 112 | - | |
| 113 | - public void report(DC0_A4 c0a4){ | |
| 114 | - String deviceId = c0a4.getData().getDeviceId(); | |
| 115 | - if(StringUtils.isNotEmpty(deviceId)) | |
| 116 | - c0a4.setId(deviceId); | |
| 117 | - | |
| 118 | - //入库 | |
| 119 | - dc0A4Repository.save(c0a4); | |
| 120 | - } | |
| 121 | - | |
| 122 | - /** | |
| 123 | - * | |
| 124 | - * @Title: reply | |
| 125 | - * @Description: TODO(调度员回复) | |
| 126 | - */ | |
| 127 | - public void reply(D80 d80){ | |
| 128 | - String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 129 | - Short reqCode = d80.getData().getRequestCode(); | |
| 130 | - //默认短语回复 | |
| 131 | - //defaultReply(nbbm, reqCode, d80.getConfirmRs() == 0?true:false); | |
| 132 | - | |
| 133 | - switch (reqCode) { | |
| 134 | - case 0xA3: | |
| 135 | - //出场请求回复 | |
| 136 | - applyOutReply(d80); | |
| 137 | - break; | |
| 138 | - case 0xA5: | |
| 139 | - //进场请求回复 | |
| 140 | - applyInReply(d80); | |
| 141 | - break; | |
| 142 | - } | |
| 143 | - } | |
| 144 | - | |
| 145 | - /** | |
| 146 | - * | |
| 147 | - * @Title: applyOutReply | |
| 148 | - * @Description: TODO(出场请求回复) | |
| 149 | - */ | |
| 150 | - public void applyOutReply(D80 d80){ | |
| 151 | - //同意 | |
| 152 | - if(d80.getConfirmRs() == 0){ | |
| 153 | - String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 154 | - | |
| 155 | - ScheduleRealInfo sch = dayOfSchedule.nextByBcType(nbbm, "out"); | |
| 156 | - if(null == sch) | |
| 157 | - return; | |
| 158 | - | |
| 159 | - LineConfig conf = lineConfigData.get(sch.getXlBm()); | |
| 160 | - if(conf.getOutConfig() == 1){ | |
| 161 | - //为相关班次写入请求出场时间 | |
| 162 | - sch.setFcsjActualAll(d80.getTimestamp()); | |
| 163 | - | |
| 164 | - dayOfSchedule.save(sch); | |
| 165 | - //通知页面 | |
| 166 | - sendUtils.refreshSch(sch); | |
| 167 | - } | |
| 168 | - } | |
| 169 | - } | |
| 170 | - | |
| 171 | - /** | |
| 172 | - * | |
| 173 | - * @Title: applyInReply | |
| 174 | - * @Description: TODO(进场请求回复) | |
| 175 | - */ | |
| 176 | - public void applyInReply(D80 d80){ | |
| 177 | - //同意 | |
| 178 | - if(d80.getConfirmRs() == 0){ | |
| 179 | - String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 180 | - | |
| 181 | - ScheduleRealInfo sch = dayOfSchedule.nextByBcType(nbbm, "in"); | |
| 182 | - if(null == sch) | |
| 183 | - return; | |
| 184 | - | |
| 185 | - LineConfig conf = lineConfigData.get(sch.getXlBm()); | |
| 186 | - if(conf.getOutConfig() == 1){ | |
| 187 | - //为相关班次写入进场时间 | |
| 188 | - sch.setZdsjActualAll(d80.getTimestamp()); | |
| 189 | - | |
| 190 | - //没有里程的进场班次 | |
| 191 | - if(isEmpty(sch.getBcsj()) && isEmpty(sch.getJhlc())) | |
| 192 | - sch.setFcsjActualAll(d80.getTimestamp()); | |
| 193 | - | |
| 194 | - dayOfSchedule.save(sch); | |
| 195 | - //通知页面 | |
| 196 | - sendUtils.refreshSch(sch); | |
| 197 | - } | |
| 198 | - } | |
| 199 | - } | |
| 200 | - | |
| 201 | - public boolean isEmpty(Integer v){ | |
| 202 | - return v == null || v.equals(0); | |
| 203 | - } | |
| 204 | - | |
| 205 | - public boolean isEmpty(Double v){ | |
| 206 | - return v == null || v.equals(0); | |
| 207 | - } | |
| 208 | - | |
| 209 | - public void defaultReply(String nbbm, short requestCode, boolean agree){ | |
| 210 | - Line line = BasicData.nbbm2LineMap.get(nbbm); | |
| 211 | - String lineCode = null; | |
| 212 | - | |
| 213 | - if(line != null) | |
| 214 | - lineCode = line.getLineCode(); | |
| 215 | - else{ | |
| 216 | - try{ | |
| 217 | - lineCode = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)).getLineId().toString(); | |
| 218 | - }catch(Exception e){ | |
| 219 | - logger.error("", e); | |
| 220 | - } | |
| 221 | - } | |
| 222 | - | |
| 223 | - if(null == lineCode) | |
| 224 | - return; | |
| 225 | - | |
| 226 | - LineConfig conf = lineConfigData.get(lineCode); | |
| 227 | - D80ReplyTemp temp = conf.findByCode(requestCode); | |
| 228 | - | |
| 229 | - if(null == temp) | |
| 230 | - return; | |
| 231 | - | |
| 232 | - String text; | |
| 233 | - if(agree) | |
| 234 | - text = temp.getAgreeText(); | |
| 235 | - else | |
| 236 | - text = temp.getRejectText(); | |
| 237 | - | |
| 238 | - directiveService.send60Phrase(nbbm, text, "系统"); | |
| 239 | - } | |
| 240 | - | |
| 241 | - /** | |
| 242 | - * | |
| 243 | - * @Title: resumeOperation | |
| 244 | - * @Description: TODO(恢复营运) | |
| 245 | - */ | |
| 246 | - public void resumeOperation(D80 d80){ | |
| 247 | - | |
| 248 | - } | |
| 249 | - | |
| 250 | - /** | |
| 251 | - * | |
| 252 | - * @Title: applyTiaodang | |
| 253 | - * @Description: TODO(申请调档) | |
| 254 | - */ | |
| 255 | - public void applyTiaodang(D80 d80){ | |
| 256 | - | |
| 257 | - } | |
| 258 | - | |
| 259 | - /** | |
| 260 | - * | |
| 261 | - * @Title: unconfirmed80 | |
| 262 | - * @Description: TODO(根据lineCode 获取未处理的80数据) | |
| 263 | - */ | |
| 264 | - public List<D80> unconfirmed80(Integer lineCode){ | |
| 265 | - List<D80> lineAll = d80MultiMap.get(lineCode.toString()) | |
| 266 | - ,rs = new ArrayList<>(); | |
| 267 | - | |
| 268 | - for(D80 d80 : lineAll) | |
| 269 | - if(!d80.isConfirm()) | |
| 270 | - rs.add(d80); | |
| 271 | - | |
| 272 | - return rs; | |
| 273 | - } | |
| 274 | - | |
| 275 | - public D80 findById(int id){ | |
| 276 | - Collection<D80> all = d80MultiMap.values(); | |
| 277 | - | |
| 278 | - for(D80 d80 : all){ | |
| 279 | - if(d80.getId() == id) | |
| 280 | - return d80; | |
| 281 | - } | |
| 282 | - | |
| 283 | - return null; | |
| 284 | - } | |
| 285 | - | |
| 286 | - public String coordHtmlStr(GpsEntity gps){ | |
| 287 | - | |
| 288 | - return "<span class=\"nt-coord\" data-lon=\""+gps.getLon()+"\" data-lat=\""+gps.getLat()+"\"></span>"; | |
| 289 | - } | |
| 290 | - | |
| 291 | - public Collection<D80> findAll(){ | |
| 292 | - return d80MultiMap.values(); | |
| 293 | - } | |
| 294 | - | |
| 295 | - public void clear(String lineCode){ | |
| 296 | - logger.info("清除 80数据 before: " + d80MultiMap.size()); | |
| 297 | - d80MultiMap.removeAll(lineCode); | |
| 298 | - logger.info("清除 80数据 after: " + d80MultiMap.size()); | |
| 299 | - } | |
| 300 | - | |
| 301 | - public Collection<? extends D80> findByCar(String nbbm) { | |
| 302 | - List<D80> rs = new ArrayList<>(); | |
| 303 | - String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm); | |
| 304 | - if(null == deviceId) | |
| 305 | - return rs; | |
| 306 | - | |
| 307 | - Collection<D80> all = findAll(); | |
| 308 | - for(D80 d80 : all){ | |
| 309 | - if(d80.getDeviceId().equals(deviceId)) | |
| 310 | - rs.add(d80); | |
| 311 | - } | |
| 312 | - return rs; | |
| 313 | - } | |
| 37 | + | |
| 38 | + @Autowired | |
| 39 | + D80Repository d80Repository; | |
| 40 | + @Autowired | |
| 41 | + DayOfSchedule dayOfSchedule; | |
| 42 | + @Autowired | |
| 43 | + LineConfigData lineConfigData; | |
| 44 | + @Autowired | |
| 45 | + DirectiveService directiveService; | |
| 46 | + @Autowired | |
| 47 | + GpsRealData gpsRealData; | |
| 48 | + @Autowired | |
| 49 | + SendUtils sendUtils; | |
| 50 | + | |
| 51 | + @Autowired | |
| 52 | + DC0A4Repository dc0A4Repository; | |
| 53 | + | |
| 54 | + //private static ArrayListMultimap<String, D80> d80MultiMap; | |
| 55 | + | |
| 56 | + private static ConcurrentHashMap<Integer, D80> d80Maps; | |
| 57 | + | |
| 58 | + Logger logger = LoggerFactory.getLogger(PilotReport.class); | |
| 59 | + | |
| 60 | + static { | |
| 61 | + //d80MultiMap = ArrayListMultimap.create(); | |
| 62 | + d80Maps = new ConcurrentHashMap<>(); | |
| 63 | + } | |
| 64 | + | |
| 65 | + public void report(D80 d80) { | |
| 66 | + if (d80 == null) | |
| 67 | + return; | |
| 68 | + try { | |
| 69 | + //入库 | |
| 70 | + d80Repository.save(d80); | |
| 71 | + //入缓存 | |
| 72 | + d80Maps.put(d80.getId(), d80); | |
| 73 | + //d80MultiMap.put(d80.getData().getLineId().toString(), d80); | |
| 74 | + | |
| 75 | + String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 76 | + //处理 | |
| 77 | + switch (d80.getData().getRequestCode()) { | |
| 78 | + //出场请求 | |
| 79 | + case 0xA3: | |
| 80 | + ScheduleRealInfo outSch = dayOfSchedule.searchNearByBcType(nbbm, "out"); | |
| 81 | + //如果有对应出场班次 | |
| 82 | + if (outSch != null) { | |
| 83 | + //没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令 | |
| 84 | + if (outSch.getJhlc() == null) | |
| 85 | + outSch = dayOfSchedule.next(outSch); | |
| 86 | + | |
| 87 | + //下发调度指令 | |
| 88 | + DirectivePushQueue.put6002(outSch, dayOfSchedule.doneSum(nbbm), "请出@系统"); | |
| 89 | + //下发线路切换指令 | |
| 90 | + DirectivePushQueue.put64(outSch.getClZbh(), outSch.getXlBm(), "请出@系统"); | |
| 91 | + } | |
| 92 | + break; | |
| 93 | + } | |
| 94 | + | |
| 95 | + //推送到页面 | |
| 96 | + sendUtils.send80ToPage(d80); | |
| 97 | + } catch (Exception e) { | |
| 98 | + logger.error("", e); | |
| 99 | + } | |
| 100 | + } | |
| 101 | + | |
| 102 | + public void report(DC0_A4 c0a4) { | |
| 103 | + String deviceId = c0a4.getData().getDeviceId(); | |
| 104 | + if (StringUtils.isNotEmpty(deviceId)) | |
| 105 | + c0a4.setId(deviceId); | |
| 106 | + | |
| 107 | + //入库 | |
| 108 | + dc0A4Repository.save(c0a4); | |
| 109 | + } | |
| 110 | + | |
| 111 | + /** | |
| 112 | + * @Title: reply | |
| 113 | + * @Description: TODO(调度员回复) | |
| 114 | + */ | |
| 115 | + public void reply(D80 d80) { | |
| 116 | + String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 117 | + Short reqCode = d80.getData().getRequestCode(); | |
| 118 | + //默认短语回复 | |
| 119 | + //defaultReply(nbbm, reqCode, d80.getConfirmRs() == 0?true:false); | |
| 120 | + | |
| 121 | + switch (reqCode) { | |
| 122 | + case 0xA3: | |
| 123 | + //出场请求回复 | |
| 124 | + applyOutReply(d80); | |
| 125 | + break; | |
| 126 | + case 0xA5: | |
| 127 | + //进场请求回复 | |
| 128 | + applyInReply(d80); | |
| 129 | + break; | |
| 130 | + } | |
| 131 | + } | |
| 132 | + | |
| 133 | + /** | |
| 134 | + * @Title: applyOutReply | |
| 135 | + * @Description: TODO(出场请求回复) | |
| 136 | + */ | |
| 137 | + public void applyOutReply(D80 d80) { | |
| 138 | + //同意 | |
| 139 | + if (d80.getConfirmRs() == 0) { | |
| 140 | + String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 141 | + | |
| 142 | + ScheduleRealInfo sch = dayOfSchedule.nextByBcType(nbbm, "out"); | |
| 143 | + if (null == sch) | |
| 144 | + return; | |
| 145 | + | |
| 146 | + LineConfig conf = lineConfigData.get(sch.getXlBm()); | |
| 147 | + if (conf.getOutConfig() == 1) { | |
| 148 | + //为相关班次写入请求出场时间 | |
| 149 | + sch.setFcsjActualAll(d80.getTimestamp()); | |
| 150 | + | |
| 151 | + dayOfSchedule.save(sch); | |
| 152 | + //通知页面 | |
| 153 | + sendUtils.refreshSch(sch); | |
| 154 | + } | |
| 155 | + } | |
| 156 | + } | |
| 157 | + | |
| 158 | + /** | |
| 159 | + * @Title: applyInReply | |
| 160 | + * @Description: TODO(进场请求回复) | |
| 161 | + */ | |
| 162 | + public void applyInReply(D80 d80) { | |
| 163 | + //同意 | |
| 164 | + if (d80.getConfirmRs() == 0) { | |
| 165 | + String nbbm = BasicData.deviceId2NbbmMap.get(d80.getDeviceId()); | |
| 166 | + | |
| 167 | + ScheduleRealInfo sch = dayOfSchedule.nextByBcType(nbbm, "in"); | |
| 168 | + if (null == sch) | |
| 169 | + return; | |
| 170 | + | |
| 171 | + LineConfig conf = lineConfigData.get(sch.getXlBm()); | |
| 172 | + if (conf.getOutConfig() == 1) { | |
| 173 | + //为相关班次写入进场时间 | |
| 174 | + sch.setZdsjActualAll(d80.getTimestamp()); | |
| 175 | + | |
| 176 | + //没有里程的进场班次 | |
| 177 | + if (isEmpty(sch.getBcsj()) && isEmpty(sch.getJhlc())) | |
| 178 | + sch.setFcsjActualAll(d80.getTimestamp()); | |
| 179 | + | |
| 180 | + dayOfSchedule.save(sch); | |
| 181 | + //通知页面 | |
| 182 | + sendUtils.refreshSch(sch); | |
| 183 | + } | |
| 184 | + } | |
| 185 | + } | |
| 186 | + | |
| 187 | + public boolean isEmpty(Integer v) { | |
| 188 | + return v == null || v.equals(0); | |
| 189 | + } | |
| 190 | + | |
| 191 | + public boolean isEmpty(Double v) { | |
| 192 | + return v == null || v.equals(0); | |
| 193 | + } | |
| 194 | + | |
| 195 | + public void defaultReply(String nbbm, short requestCode, boolean agree) { | |
| 196 | + Line line = BasicData.nbbm2LineMap.get(nbbm); | |
| 197 | + String lineCode = null; | |
| 198 | + | |
| 199 | + if (line != null) | |
| 200 | + lineCode = line.getLineCode(); | |
| 201 | + else { | |
| 202 | + try { | |
| 203 | + lineCode = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)).getLineId().toString(); | |
| 204 | + } catch (Exception e) { | |
| 205 | + logger.error("", e); | |
| 206 | + } | |
| 207 | + } | |
| 208 | + | |
| 209 | + if (null == lineCode) | |
| 210 | + return; | |
| 211 | + | |
| 212 | + LineConfig conf = lineConfigData.get(lineCode); | |
| 213 | + D80ReplyTemp temp = conf.findByCode(requestCode); | |
| 214 | + | |
| 215 | + if (null == temp) | |
| 216 | + return; | |
| 217 | + | |
| 218 | + String text; | |
| 219 | + if (agree) | |
| 220 | + text = temp.getAgreeText(); | |
| 221 | + else | |
| 222 | + text = temp.getRejectText(); | |
| 223 | + | |
| 224 | + directiveService.send60Phrase(nbbm, text, "系统"); | |
| 225 | + } | |
| 226 | + | |
| 227 | + /** | |
| 228 | + * @Title: resumeOperation | |
| 229 | + * @Description: TODO(恢复营运) | |
| 230 | + */ | |
| 231 | + public void resumeOperation(D80 d80) { | |
| 232 | + | |
| 233 | + } | |
| 234 | + | |
| 235 | + /** | |
| 236 | + * @Title: applyTiaodang | |
| 237 | + * @Description: TODO(申请调档) | |
| 238 | + */ | |
| 239 | + public void applyTiaodang(D80 d80) { | |
| 240 | + | |
| 241 | + } | |
| 242 | + | |
| 243 | + /** | |
| 244 | + * @Title: unconfirmed80 | |
| 245 | + * @Description: TODO(根据lineCode 获取未处理的80数据) | |
| 246 | + */ | |
| 247 | + public List<D80> unconfirmed80(String lineCode) { | |
| 248 | + List<D80> lineAll = findByLine(lineCode), rs = new ArrayList<>(); | |
| 249 | + | |
| 250 | + for (D80 d80 : lineAll) | |
| 251 | + if (!d80.isConfirm()) | |
| 252 | + rs.add(d80); | |
| 253 | + | |
| 254 | + return rs; | |
| 255 | + } | |
| 256 | + | |
| 257 | + public List<D80> findByLine(String lineCode) { | |
| 258 | + List<D80> rs = new ArrayList<>(); | |
| 259 | + for (D80 d80 : d80Maps.values()) { | |
| 260 | + if (d80 != null && d80.getData().getLineId().equals(lineCode)) | |
| 261 | + rs.add(d80); | |
| 262 | + } | |
| 263 | + return rs; | |
| 264 | + } | |
| 265 | + | |
| 266 | + public D80 findById(int id) { | |
| 267 | + return d80Maps.get(id); | |
| 268 | + } | |
| 269 | + | |
| 270 | +/* public String coordHtmlStr(GpsEntity gps) { | |
| 271 | + | |
| 272 | + return "<span class=\"nt-coord\" data-lon=\"" + gps.getLon() + "\" data-lat=\"" + gps.getLat() + "\"></span>"; | |
| 273 | + }*/ | |
| 274 | + | |
| 275 | + public Collection<D80> findAll() { | |
| 276 | + return d80Maps.values(); | |
| 277 | + } | |
| 278 | + | |
| 279 | + public void clear(String lineCode) { | |
| 280 | + logger.info("清除 80数据 before: " + d80Maps.size()); | |
| 281 | + List<D80> rems = findByLine(lineCode); | |
| 282 | + for (D80 d80 : rems) { | |
| 283 | + d80Maps.remove(d80.getId()); | |
| 284 | + } | |
| 285 | + logger.info("清除 80数据 after: " + d80Maps.size()); | |
| 286 | + } | |
| 287 | + | |
| 288 | + public Collection<? extends D80> findByCar(String nbbm) { | |
| 289 | + List<D80> rs = new ArrayList<>(); | |
| 290 | + String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm); | |
| 291 | + if (null == deviceId) | |
| 292 | + return rs; | |
| 293 | + | |
| 294 | + Collection<D80> all = findAll(); | |
| 295 | + for (D80 d80 : all) { | |
| 296 | + if (d80.getDeviceId().equals(deviceId)) | |
| 297 | + rs.add(d80); | |
| 298 | + } | |
| 299 | + return rs; | |
| 300 | + } | |
| 314 | 301 | } | ... | ... |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| ... | ... | @@ -944,6 +944,8 @@ public class DayOfSchedule { |
| 944 | 944 | ScheduleRealInfo sch = schAttrCalculator.calcCurrentExecSch(list); |
| 945 | 945 | carExecutePlanMap.put(nbbm, sch); |
| 946 | 946 | |
| 947 | + if(sch==null) | |
| 948 | + return; | |
| 947 | 949 | try { |
| 948 | 950 | GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)); |
| 949 | 951 | if(gps != null && gps.isOnline()){ | ... | ... |
src/main/java/com/bsth/data/schedule/edit_logs/ScheduleModifyLogger.java
| ... | ... | @@ -231,4 +231,20 @@ public class ScheduleModifyLogger { |
| 231 | 231 | public static void put(SchEditInfo sei) { |
| 232 | 232 | list.add(sei); |
| 233 | 233 | } |
| 234 | + | |
| 235 | + public static void afterEdit(ScheduleRealInfo sch, String remarks, JSONArray jsonArray) { | |
| 236 | + try { | |
| 237 | + if (jsonArray == null || jsonArray.size() == 0) | |
| 238 | + return; | |
| 239 | + | |
| 240 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | |
| 241 | + sei.setRemarks(remarks); | |
| 242 | + sei.setJsonArray(jsonArray.toJSONString()); | |
| 243 | + sei.setType(EditType.LSBCTZ); | |
| 244 | + | |
| 245 | + put(sei); | |
| 246 | + } catch (Exception e) { | |
| 247 | + log.error("", e); | |
| 248 | + } | |
| 249 | + } | |
| 234 | 250 | } | ... | ... |
src/main/java/com/bsth/data/schedule/edit_logs/entity/EditType.java
src/main/java/com/bsth/data/schedule/edit_logs/loggers/AfterwardsLogger.java
0 → 100644
| 1 | +package com.bsth.data.schedule.edit_logs.loggers; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSONArray; | |
| 4 | +import com.alibaba.fastjson.JSONObject; | |
| 5 | +import com.bsth.data.schedule.edit_logs.ScheduleModifyLogger; | |
| 6 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 7 | +import org.slf4j.Logger; | |
| 8 | +import org.slf4j.LoggerFactory; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * 事后历史班次编辑 | |
| 12 | + * Created by panzhao on 2017/5/19. | |
| 13 | + */ | |
| 14 | +public class AfterwardsLogger { | |
| 15 | + | |
| 16 | + static Logger log = LoggerFactory.getLogger(AfterwardsLogger.class); | |
| 17 | + | |
| 18 | + private JSONArray jsonArray = new JSONArray(); | |
| 19 | + private String remarks; | |
| 20 | + private ScheduleRealInfo sch; | |
| 21 | + | |
| 22 | + public void log(String title, Object old, Object now){ | |
| 23 | + try { | |
| 24 | + | |
| 25 | + JSONObject jsonObject = new JSONObject(); | |
| 26 | + jsonObject.put("title", title); | |
| 27 | + jsonObject.put("old", old); | |
| 28 | + jsonObject.put("now", now); | |
| 29 | + | |
| 30 | + jsonArray.add(jsonObject); | |
| 31 | + }catch (Exception e){ | |
| 32 | + log.error("", e); | |
| 33 | + } | |
| 34 | + } | |
| 35 | + | |
| 36 | + public void log(String text){ | |
| 37 | + try { | |
| 38 | + JSONObject jsonObject = new JSONObject(); | |
| 39 | + jsonObject.put("title", text); | |
| 40 | + | |
| 41 | + jsonArray.add(jsonObject); | |
| 42 | + }catch (Exception e){ | |
| 43 | + log.error("", e); | |
| 44 | + } | |
| 45 | + } | |
| 46 | + | |
| 47 | + public static AfterwardsLogger start(ScheduleRealInfo sch, String remarks){ | |
| 48 | + AfterwardsLogger fLog = new AfterwardsLogger(); | |
| 49 | + fLog.setSch(sch); | |
| 50 | + fLog.setRemarks(remarks); | |
| 51 | + return fLog; | |
| 52 | + } | |
| 53 | + | |
| 54 | + public void end(){ | |
| 55 | + ScheduleModifyLogger.afterEdit(sch, this.remarks, jsonArray); | |
| 56 | + } | |
| 57 | + | |
| 58 | + public String getRemarks() { | |
| 59 | + return remarks; | |
| 60 | + } | |
| 61 | + | |
| 62 | + public void setRemarks(String remarks) { | |
| 63 | + this.remarks = remarks; | |
| 64 | + } | |
| 65 | + | |
| 66 | + public ScheduleRealInfo getSch() { | |
| 67 | + return sch; | |
| 68 | + } | |
| 69 | + | |
| 70 | + public void setSch(ScheduleRealInfo sch) { | |
| 71 | + this.sch = sch; | |
| 72 | + } | |
| 73 | +} | ... | ... |
src/main/java/com/bsth/data/schedule/edit_logs/service/SchEditInfoServiceImpl.java
| ... | ... | @@ -41,7 +41,7 @@ public class SchEditInfoServiceImpl extends BaseServiceImpl<SchEditInfo, Long> i |
| 41 | 41 | for(String k : ks){ |
| 42 | 42 | v =map.get(k); |
| 43 | 43 | if(StringUtils.isNotEmpty(v)) |
| 44 | - cont += " and t2." + BatchSaveUtils.propertyToField(k) + "='" + v + "'"; | |
| 44 | + cont += " and " + BatchSaveUtils.propertyToField(k) + "='" + v + "'"; | |
| 45 | 45 | } |
| 46 | 46 | String sql = "select t1.*, t2.fcsj,t2.lp_name,t2.cl_zbh,t2.j_gh,t2.j_name,t2.xl_dir,t2.real_exec_date from (select * from logger_sch_modify where rq=? and line_code=? ) t1 INNER JOIN bsth_c_s_sp_info_real t2 on t1.sch_id=t2.id where 1=1 " + cont; |
| 47 | 47 | ... | ... |
src/main/java/com/bsth/data/utils/CustomStringUtils.java
0 → 100644
| 1 | +package com.bsth.data.utils; | |
| 2 | + | |
| 3 | +import org.apache.commons.lang3.StringUtils; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Created by panzhao on 2017/7/10. | |
| 7 | + */ | |
| 8 | +public class CustomStringUtils { | |
| 9 | + | |
| 10 | + public static boolean equals(String s1, String s2){ | |
| 11 | + if(s1 == null){ | |
| 12 | + if(StringUtils.isNotEmpty(s2)) | |
| 13 | + return false; | |
| 14 | + else | |
| 15 | + return true; | |
| 16 | + } | |
| 17 | + return s1.equals(s2); | |
| 18 | + } | |
| 19 | +} | ... | ... |
src/main/java/com/bsth/entity/directive/D80.java
| 1 | 1 | package com.bsth.entity.directive; |
| 2 | 2 | |
| 3 | -import java.util.Date; | |
| 4 | - | |
| 5 | -import javax.persistence.CascadeType; | |
| 6 | -import javax.persistence.Embeddable; | |
| 7 | -import javax.persistence.Entity; | |
| 8 | -import javax.persistence.FetchType; | |
| 9 | -import javax.persistence.GeneratedValue; | |
| 10 | -import javax.persistence.Id; | |
| 11 | -import javax.persistence.NamedAttributeNode; | |
| 12 | -import javax.persistence.NamedEntityGraph; | |
| 13 | -import javax.persistence.NamedEntityGraphs; | |
| 14 | -import javax.persistence.OneToOne; | |
| 15 | -import javax.persistence.Table; | |
| 16 | -import javax.persistence.Transient; | |
| 17 | - | |
| 18 | 3 | import com.bsth.entity.directive.DC0.DC0Data; |
| 19 | 4 | |
| 5 | +import javax.persistence.*; | |
| 6 | +import java.util.Date; | |
| 7 | + | |
| 20 | 8 | /** |
| 21 | 9 | * |
| 22 | 10 | * @ClassName: D80 |
| ... | ... | @@ -92,7 +80,7 @@ public class D80 { |
| 92 | 80 | /** |
| 93 | 81 | * 线路编码 |
| 94 | 82 | */ |
| 95 | - private Integer lineId; | |
| 83 | + private String lineId; | |
| 96 | 84 | |
| 97 | 85 | /** |
| 98 | 86 | * 车辆内部编码 |
| ... | ... | @@ -116,13 +104,6 @@ public class D80 { |
| 116 | 104 | this.requestCode = requestCode; |
| 117 | 105 | } |
| 118 | 106 | |
| 119 | - public Integer getLineId() { | |
| 120 | - return lineId; | |
| 121 | - } | |
| 122 | - | |
| 123 | - public void setLineId(Integer lineId) { | |
| 124 | - this.lineId = lineId; | |
| 125 | - } | |
| 126 | 107 | |
| 127 | 108 | public String getNbbm() { |
| 128 | 109 | return nbbm; |
| ... | ... | @@ -131,6 +112,14 @@ public class D80 { |
| 131 | 112 | public void setNbbm(String nbbm) { |
| 132 | 113 | this.nbbm = nbbm; |
| 133 | 114 | } |
| 115 | + | |
| 116 | + public String getLineId() { | |
| 117 | + return lineId; | |
| 118 | + } | |
| 119 | + | |
| 120 | + public void setLineId(String lineId) { | |
| 121 | + this.lineId = lineId; | |
| 122 | + } | |
| 134 | 123 | } |
| 135 | 124 | |
| 136 | 125 | @Transient | ... | ... |
src/main/java/com/bsth/entity/realcontrol/ChildTaskPlan.java
| ... | ... | @@ -84,10 +84,25 @@ public class ChildTaskPlan { |
| 84 | 84 | private boolean destroy; |
| 85 | 85 | |
| 86 | 86 | /** |
| 87 | - * 烂班原因 | |
| 87 | + * 烂班原因 -烂班时,该字段仍有值并 =reason | |
| 88 | 88 | */ |
| 89 | 89 | private String destroyReason; |
| 90 | 90 | |
| 91 | + /** | |
| 92 | + * 包括 烂班原因、进出场原因、换车原因 等 | |
| 93 | + */ | |
| 94 | + private String reason; | |
| 95 | + | |
| 96 | + /** | |
| 97 | + * 车辆 如果为空,继承主任务 | |
| 98 | + */ | |
| 99 | + private String nbbm; | |
| 100 | + | |
| 101 | + /** | |
| 102 | + * 为true 则无售票员, 否则继承主任务 | |
| 103 | + */ | |
| 104 | + private boolean noClerk; | |
| 105 | + | |
| 91 | 106 | /** 创建日期 */ |
| 92 | 107 | @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") |
| 93 | 108 | private Date createDate; |
| ... | ... | @@ -238,4 +253,28 @@ public class ChildTaskPlan { |
| 238 | 253 | public void setCreateDate(Date createDate) { |
| 239 | 254 | this.createDate = createDate; |
| 240 | 255 | } |
| 256 | + | |
| 257 | + public String getReason() { | |
| 258 | + return reason; | |
| 259 | + } | |
| 260 | + | |
| 261 | + public void setReason(String reason) { | |
| 262 | + this.reason = reason; | |
| 263 | + } | |
| 264 | + | |
| 265 | + public String getNbbm() { | |
| 266 | + return nbbm; | |
| 267 | + } | |
| 268 | + | |
| 269 | + public void setNbbm(String nbbm) { | |
| 270 | + this.nbbm = nbbm; | |
| 271 | + } | |
| 272 | + | |
| 273 | + public boolean isNoClerk() { | |
| 274 | + return noClerk; | |
| 275 | + } | |
| 276 | + | |
| 277 | + public void setNoClerk(boolean noClerk) { | |
| 278 | + this.noClerk = noClerk; | |
| 279 | + } | |
| 241 | 280 | } | ... | ... |
src/main/java/com/bsth/entity/realcontrol/StationToPark.java
0 → 100644
| 1 | +package com.bsth.entity.realcontrol; | |
| 2 | + | |
| 3 | +import javax.persistence.Entity; | |
| 4 | +import javax.persistence.GeneratedValue; | |
| 5 | +import javax.persistence.Id; | |
| 6 | +import javax.persistence.Table; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * 站 到 场 | |
| 10 | + * Created by panzhao on 2017/7/10. | |
| 11 | + */ | |
| 12 | +@Entity | |
| 13 | +@Table(name = "bsth_c_station_to_park") | |
| 14 | +public class StationToPark { | |
| 15 | + | |
| 16 | + @Id | |
| 17 | + @GeneratedValue | |
| 18 | + private Integer id; | |
| 19 | + | |
| 20 | + /** 线路编码 */ | |
| 21 | + private String lineCode; | |
| 22 | + | |
| 23 | + /** 站点名称 */ | |
| 24 | + private String stationName; | |
| 25 | + | |
| 26 | + /** 停车场编码 */ | |
| 27 | + private String parkName; | |
| 28 | + | |
| 29 | + /** 站到场时间(分钟) */ | |
| 30 | + private Float time1; | |
| 31 | + | |
| 32 | + /** 站到场公里 */ | |
| 33 | + private Float mileage1; | |
| 34 | + | |
| 35 | + /** 场到站时间(分钟) */ | |
| 36 | + private Float time2; | |
| 37 | + | |
| 38 | + /** 场到站公里 */ | |
| 39 | + private Float mileage2; | |
| 40 | + | |
| 41 | + /** 排序字段 */ | |
| 42 | + private int orderNo; | |
| 43 | + | |
| 44 | + public String getLineCode() { | |
| 45 | + return lineCode; | |
| 46 | + } | |
| 47 | + | |
| 48 | + public void setLineCode(String lineCode) { | |
| 49 | + this.lineCode = lineCode; | |
| 50 | + } | |
| 51 | + | |
| 52 | + public String getStationName() { | |
| 53 | + return stationName; | |
| 54 | + } | |
| 55 | + | |
| 56 | + public void setStationName(String stationName) { | |
| 57 | + this.stationName = stationName; | |
| 58 | + } | |
| 59 | + | |
| 60 | + | |
| 61 | + public Float getTime1() { | |
| 62 | + return time1; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public void setTime1(Float time1) { | |
| 66 | + this.time1 = time1; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public Float getMileage1() { | |
| 70 | + return mileage1; | |
| 71 | + } | |
| 72 | + | |
| 73 | + public void setMileage1(Float mileage1) { | |
| 74 | + this.mileage1 = mileage1; | |
| 75 | + } | |
| 76 | + | |
| 77 | + public Float getTime2() { | |
| 78 | + return time2; | |
| 79 | + } | |
| 80 | + | |
| 81 | + public void setTime2(Float time2) { | |
| 82 | + this.time2 = time2; | |
| 83 | + } | |
| 84 | + | |
| 85 | + public Float getMileage2() { | |
| 86 | + return mileage2; | |
| 87 | + } | |
| 88 | + | |
| 89 | + public void setMileage2(Float mileage2) { | |
| 90 | + this.mileage2 = mileage2; | |
| 91 | + } | |
| 92 | + | |
| 93 | + public Integer getId() { | |
| 94 | + return id; | |
| 95 | + } | |
| 96 | + | |
| 97 | + public void setId(Integer id) { | |
| 98 | + this.id = id; | |
| 99 | + } | |
| 100 | + | |
| 101 | + public int getOrderNo() { | |
| 102 | + return orderNo; | |
| 103 | + } | |
| 104 | + | |
| 105 | + public void setOrderNo(int orderNo) { | |
| 106 | + this.orderNo = orderNo; | |
| 107 | + } | |
| 108 | + | |
| 109 | + public String getParkName() { | |
| 110 | + return parkName; | |
| 111 | + } | |
| 112 | + | |
| 113 | + public void setParkName(String parkName) { | |
| 114 | + this.parkName = parkName; | |
| 115 | + } | |
| 116 | + | |
| 117 | + @Override | |
| 118 | + public int hashCode() { | |
| 119 | + return ("stp_" + this.toString()).hashCode(); | |
| 120 | + } | |
| 121 | + | |
| 122 | + @Override | |
| 123 | + public boolean equals(Object obj) { | |
| 124 | + return this.toString().equals(((StationToPark)obj).toString()); | |
| 125 | + } | |
| 126 | + | |
| 127 | + @Override | |
| 128 | + public String toString() { | |
| 129 | + return this.lineCode + "_" + this.getStationName() + "_" + this.getParkName(); | |
| 130 | + } | |
| 131 | +} | ... | ... |
src/main/java/com/bsth/repository/LineRepository.java
| ... | ... | @@ -39,6 +39,6 @@ public interface LineRepository extends BaseRepository<Line, Integer> { |
| 39 | 39 | |
| 40 | 40 | public Line findByLineCode(String string); |
| 41 | 41 | |
| 42 | - @Query(value = " SELECT l FROM Line l where l.company like ?1 and l.brancheCompany like ?2 and l.lineCode like ?3") | |
| 42 | + @Query(value = " SELECT l FROM Line l where l.company like %?1% and l.brancheCompany like %?2% and l.lineCode like ?3") | |
| 43 | 43 | public List<Line> findLineBygsBm(String gsBm, String fgsBm, String line); |
| 44 | 44 | } | ... | ... |
src/main/java/com/bsth/repository/StationRepository.java
| ... | ... | @@ -40,10 +40,17 @@ public interface StationRepository extends BaseRepository<Station, Integer> { |
| 40 | 40 | /*@Query(value = "SELECT s.b_jwpoints,s.id FROM bsth_c_station s where s.station_name like ?1" |
| 41 | 41 | , nativeQuery=true) |
| 42 | 42 | List<Object[]> findStationName(String stationName);*/ |
| 43 | - @Query(value = " SELECT t.b_jwpoints,t.id FROM (" + | |
| 43 | + /*@Query(value = " SELECT t.b_jwpoints,t.id FROM (" + | |
| 44 | 44 | " SELECT b.id,b.b_jwpoints,b.station_name,a.directions FROM (" + |
| 45 | 45 | " SELECT s.station,s.station_name,s.directions FROM bsth_c_stationroute s where s.destroy = 0 and s.directions = ?1) a " + |
| 46 | 46 | " LEFT JOIN bsth_c_station b on a.station = b. id) t where t.station_name LIKE ?2" |
| 47 | + , nativeQuery=true)*/ | |
| 48 | + @Query(value = " SELECT t.b_jwpoints,t.id FROM (" + | |
| 49 | + " SELECT b.id,b.b_jwpoints,b.station_name,a.directions FROM (" + | |
| 50 | + " SELECT s.station,s.station_name,s.directions FROM bsth_c_stationroute s where s.destroy = 0 and s.directions = ?1) a " + | |
| 51 | + " LEFT JOIN " + | |
| 52 | + " (SELECT r.id,r.b_jwpoints,r.station_name from bsth_c_station r where r.destroy = 0 and r.station_name LIKE ?2 ) " + | |
| 53 | + " b on a.station = b. id) t where t.station_name LIKE ?2 " | |
| 47 | 54 | , nativeQuery=true) |
| 48 | 55 | List<Object[]> findStationName(Integer dir , String stationName); |
| 49 | 56 | |
| ... | ... | @@ -101,18 +108,24 @@ public interface StationRepository extends BaseRepository<Station, Integer> { |
| 101 | 108 | "y = ?9 , " + |
| 102 | 109 | "b_polygon_grid = ST_GeomFromText(?10) , " + |
| 103 | 110 | "g_polygon_grid = ST_GeomFromText(?11) , " + |
| 104 | - "destroy = ?12 , " + | |
| 105 | - "radius = ?13 , " + | |
| 106 | - "shapes_type = ?14 , " + | |
| 107 | - "versions = ?15 , " + | |
| 108 | - "descriptions = ?16 " + | |
| 109 | - " WHERE id = ?17 ", nativeQuery=true) | |
| 111 | + /*"destroy = ?12 , " +*/ | |
| 112 | + "radius = ?12 , " + | |
| 113 | + "shapes_type = ?13 , " + | |
| 114 | + "versions = ?14 , " + | |
| 115 | + "descriptions = ?15 " + | |
| 116 | + " WHERE id = ?16 ", nativeQuery=true) | |
| 110 | 117 | public void stationUpdate(String stationCod,String stationName,String roadCoding,String dbType,String bJwpoints, |
| 118 | + | |
| 119 | + Float gLonx,Float gLaty,Float x,Float y, String bPolygonGrid,String gPolygonGrid, | |
| 120 | + | |
| 121 | + Integer radius,String shapesType, Integer versions,String descriptions,Integer stationId); | |
| 122 | + | |
| 123 | + /*public void stationUpdate(String stationCod,String stationName,String roadCoding,String dbType,String bJwpoints, | |
| 111 | 124 | |
| 112 | 125 | Float gLonx,Float gLaty,Float x,Float y, String bPolygonGrid,String gPolygonGrid, |
| 113 | 126 | |
| 114 | 127 | Integer destroy, Integer radius,String shapesType, Integer versions,String descriptions,Integer stationId); |
| 115 | - | |
| 128 | + */ | |
| 116 | 129 | |
| 117 | 130 | @Query(value = "select st_astext(g_polygon_grid) as g_polygon_grid, shapes_type,concat(g_lonx, ' ', g_laty) as g_center_point ,radius, station_cod,station_name from bsth_c_station where station_cod=?1", nativeQuery = true) |
| 118 | 131 | public Object[][] bufferAera(String stationCode); | ... | ... |
src/main/java/com/bsth/repository/StationRouteRepository.java
| ... | ... | @@ -266,7 +266,6 @@ public interface StationRouteRepository extends BaseRepository<StationRoute, Int |
| 266 | 266 | "StationRoute s " + |
| 267 | 267 | "WHERE " + |
| 268 | 268 | "s.destroy = 0 " + |
| 269 | - "and s.lineCode in(select lineCode from Line where inUse = 1) " + | |
| 270 | 269 | "ORDER BY " + |
| 271 | 270 | "lineCode,directions,stationRouteCode") |
| 272 | 271 | List<Map<String, String>> findAllLineWithYgc(); | ... | ... |
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
| ... | ... | @@ -81,7 +81,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI |
| 81 | 81 | @Query(value="select count(jName) from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and sflj != 0") |
| 82 | 82 | int findLjbc(String jName,String clZbh,String lpName); |
| 83 | 83 | |
| 84 | - @Query(value="SELECT c.company,r.request_code,FROM_UNIXTIME(r.timestamp/1000,'%Y-%m-%d %T'),c.inside_code FROM bsth_v_report_80 r LEFT JOIN bsth_c_cars c ON c.equipment_code = r.device_id where FROM_UNIXTIME(r.timestamp/1000,'%Y-%m-%d') = ?2 and r.line_id = ?1 and c.inside_code like %?3%",nativeQuery=true) | |
| 84 | + @Query(value="SELECT request_code,FROM_UNIXTIME(TIMESTAMP / 1000,'%Y-%m-%d %T') as TIMESTAMP ,device_id FROM bsth_v_report_80 WHERE FROM_UNIXTIME( TIMESTAMP / 1000,'%Y-%m-%d') = ?2 AND line_id = ?1 and device_id like %?3%",nativeQuery=true) | |
| 85 | 85 | List<Object[]> account(String line,String date,String code); |
| 86 | 86 | |
| 87 | 87 | @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDate >= str_to_date(?2,'%Y-%m-%d') " | ... | ... |
src/main/java/com/bsth/repository/realcontrol/StationToParkRepository.java
0 → 100644
| 1 | +package com.bsth.repository.realcontrol; | |
| 2 | + | |
| 3 | +import com.bsth.entity.realcontrol.StationToPark; | |
| 4 | +import com.bsth.repository.BaseRepository; | |
| 5 | +import org.springframework.stereotype.Repository; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * Created by panzhao on 2017/7/10. | |
| 9 | + */ | |
| 10 | +@Repository | |
| 11 | +public interface StationToParkRepository extends BaseRepository<StationToPark, Integer>{ | |
| 12 | +} | ... | ... |
src/main/java/com/bsth/service/TrafficManageService.java
src/main/java/com/bsth/service/directive/DirectiveServiceImpl.java
| ... | ... | @@ -114,10 +114,8 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen |
| 114 | 114 | + sch.getQdzName() + "发往" + sch.getZdzName(); |
| 115 | 115 | |
| 116 | 116 | //下发0x01指令 调度指令(闹钟有效) |
| 117 | - long t = System.currentTimeMillis(), alarmTime; | |
| 118 | - alarmTime = sch.getDfsjT(); | |
| 119 | - if (sch.getDfsjT() < t) | |
| 120 | - alarmTime = t + 1000 * 30; | |
| 117 | + long t = System.currentTimeMillis() + 1000 * 30, | |
| 118 | + alarmTime = sch.getDfsjT() < t?t:sch.getDfsjT(); | |
| 121 | 119 | |
| 122 | 120 | d60 = new DirectiveCreator().createD60_01(sch.getClZbh(), text, Integer.parseInt(sch.getXlDir()) |
| 123 | 121 | , 0, new Date(alarmTime)); |
| ... | ... | @@ -304,7 +302,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen |
| 304 | 302 | |
| 305 | 303 | Map<String, List<D80>> rs = new HashMap<>(); |
| 306 | 304 | for (String code : lineList) |
| 307 | - rs.put(code, pilotReport.unconfirmed80(Integer.parseInt(code))); | |
| 305 | + rs.put(code, pilotReport.unconfirmed80(code)); | |
| 308 | 306 | |
| 309 | 307 | return rs; |
| 310 | 308 | } |
| ... | ... | @@ -333,17 +331,18 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen |
| 333 | 331 | rs.put("msg", "发送C0响应指令到车载设备失败,但该操作已经被系统记录!"); |
| 334 | 332 | |
| 335 | 333 | pilotReport.reply(d80); |
| 334 | + | |
| 335 | + // 通知页面 | |
| 336 | + Map<String, Object> sockMap = new HashMap<>(); | |
| 337 | + sockMap.put("fn", "d80Confirm"); | |
| 338 | + sockMap.put("id", d80.getId()); | |
| 339 | + sockMap.put("lineId", d80.getData().getLineId()); | |
| 340 | + socketHandler.sendMessageToLine(d80.getData().getLineId().toString(), JSON.toJSONString(sockMap)); | |
| 336 | 341 | } |
| 337 | 342 | } catch (Exception e) { |
| 338 | 343 | logger.error("80响应出现异常...", e); |
| 339 | 344 | rs.put("status", ResponseCode.SUCCESS); |
| 340 | 345 | } |
| 341 | - // 通知页面 | |
| 342 | - Map<String, Object> sockMap = new HashMap<>(); | |
| 343 | - sockMap.put("fn", "d80Confirm"); | |
| 344 | - sockMap.put("id", d80.getId()); | |
| 345 | - sockMap.put("lineId", d80.getData().getLineId()); | |
| 346 | - socketHandler.sendMessageToLine(d80.getData().getLineId().toString(), JSON.toJSONString(sockMap)); | |
| 347 | 346 | |
| 348 | 347 | return rs; |
| 349 | 348 | } | ... | ... |
src/main/java/com/bsth/service/excep/impl/SpeedingServiceImpl.java
| ... | ... | @@ -14,13 +14,11 @@ import java.util.List; |
| 14 | 14 | import java.util.Map; |
| 15 | 15 | |
| 16 | 16 | import org.springframework.jdbc.core.JdbcTemplate; |
| 17 | -import org.springframework.jdbc.core.RowMapper; | |
| 18 | 17 | import org.springframework.stereotype.Service; |
| 19 | 18 | import org.springframework.beans.factory.annotation.Autowired; |
| 20 | 19 | |
| 21 | 20 | import com.bsth.data.BasicData; |
| 22 | 21 | import com.bsth.entity.excep.Speeding; |
| 23 | -import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 24 | 22 | import com.bsth.service.excep.SpeedingService; |
| 25 | 23 | import com.bsth.util.EchartConver; |
| 26 | 24 | import com.bsth.util.PageHelper; |
| ... | ... | @@ -42,7 +40,7 @@ public class SpeedingServiceImpl implements SpeedingService { |
| 42 | 40 | ResultSet rs = null; |
| 43 | 41 | int page=Integer.parseInt(map.get("page").toString()); |
| 44 | 42 | List<Speeding> list=new ArrayList<Speeding>(); |
| 45 | - String sql="select * from bsth_c_speeding where speed > 60 "; | |
| 43 | + String sql="select * from bsth_c_speeding where 1=1 "; | |
| 46 | 44 | Object line=map.get("line"); |
| 47 | 45 | Object nbbm=map.get("nbbm"); |
| 48 | 46 | Object updown=map.get("updown"); |
| ... | ... | @@ -204,22 +202,40 @@ public class SpeedingServiceImpl implements SpeedingService { |
| 204 | 202 | int totalPage;//总页数 |
| 205 | 203 | int totalData = 0; |
| 206 | 204 | if(list.size()>1){ |
| 207 | - Speeding speedingNow;//下标为i的车 | |
| 208 | - Speeding speedingLast;//下标为i-1的车 | |
| 205 | + Speeding speedingNow;//下标为i的车辆行驶记录 | |
| 206 | + Speeding speedingLast;//下标为i-1的车辆行驶记录 | |
| 207 | + Speeding spped = null;//整合后的车辆行驶记录 | |
| 209 | 208 | String strNow; |
| 210 | 209 | String strLast; |
| 210 | + boolean Flag = false;//判断是否有连续超速记录,默认没有 | |
| 211 | 211 | for(int i = 1;i<list.size();i++){ |
| 212 | 212 | speedingNow = list.get(i); |
| 213 | 213 | speedingLast = list.get(i-1); |
| 214 | - strNow = speedingNow.getVehicle()+speedingNow.getLine()+speedingNow.getUpDown();//同一车辆同一线路同一方向 | |
| 214 | + strNow = speedingNow.getVehicle()+speedingNow.getLine()+speedingNow.getUpDown(); | |
| 215 | 215 | strLast = speedingLast.getVehicle()+speedingLast.getLine()+speedingLast.getUpDown(); |
| 216 | - //同一车辆同一线路同一方向并且该记录的超速的开始时间减去上一条超速记录的结束时间小于等于10s,证明该车超速。//PS:祛除数据库中的重复发送数据 | |
| 217 | - if(strNow.equals(strLast) && Math.abs(speedingNow.getTimestamp()-speedingLast.getTimestamp())<=10*1000 && (speedingNow.getTimestamp()-speedingLast.getTimestamp()!=0)){ | |
| 218 | - speedingLast.setEndtimestamp(speedingNow.getTimestamp());//设置结束时间时间戳 | |
| 219 | - speedingLast.setEndtimestampDate(sdf.format(new Date(speedingNow.getTimestamp())));//设置结束时间 | |
| 220 | - speedingLast.setEndlon(speedingNow.getLon());//设置结束时的经度 | |
| 221 | - speedingLast.setEndlat(speedingNow.getLat());//设置结束时的纬度 | |
| 222 | - listResult.add(speedingLast); | |
| 216 | + if(speedingNow.getSpeed()>60 && speedingLast.getSpeed()>60 && strNow.equals(strLast)){//如果两条连续的记录都是超速且属于同一辆车。 | |
| 217 | + if(Flag==false){// | |
| 218 | + spped = new Speeding(); | |
| 219 | + spped.setId(speedingLast.getId());//设置连续超速记录Id | |
| 220 | + spped.setLine(speedingLast.getLine());//设置连续超速记录线路 | |
| 221 | + spped.setLineName(speedingLast.getLineName());//设置连续超速记录线路名称 | |
| 222 | + spped.setVehicle(speedingLast.getVehicle());//设置连续超速记录的车辆编号 | |
| 223 | + spped.setUpDown(speedingLast.getUpDown());//设置上下行 | |
| 224 | + spped.setLon(speedingLast.getLon());//设置开始时经度 | |
| 225 | + spped.setLat(speedingLast.getLat());//设置开始时纬度 | |
| 226 | + spped.setTimestamp(speedingLast.getTimestamp());//设置连续超速记录的开始时间 | |
| 227 | + spped.setTimestampDate(speedingLast.getTimestampDate());//设置连续超速记录的开始时间戳 | |
| 228 | + } | |
| 229 | + spped.setEndtimestamp(speedingNow.getTimestamp());//设置结束时间戳 | |
| 230 | + spped.setEndtimestampDate(sdf.format(new Date(speedingNow.getTimestamp())));//设置结束时间 | |
| 231 | + spped.setEndlon(speedingNow.getLon());//设置结束时的经度 | |
| 232 | + spped.setEndlat(speedingNow.getLat());//设置结束时的纬度 | |
| 233 | + Flag = true; | |
| 234 | + }else{ | |
| 235 | + if(Flag){//如果上一条记录超速。 | |
| 236 | + listResult.add(spped); | |
| 237 | + Flag = false; | |
| 238 | + } | |
| 223 | 239 | } |
| 224 | 240 | } |
| 225 | 241 | Iterator<Speeding> speedIt = listResult.iterator(); | ... | ... |
src/main/java/com/bsth/service/gps/GpsService.java
| ... | ... | @@ -4,6 +4,7 @@ import com.bsth.data.gpsdata.GpsEntity; |
| 4 | 4 | import com.bsth.service.gps.entity.GpsOutbound_DTO; |
| 5 | 5 | import com.bsth.service.gps.entity.GpsSpeed; |
| 6 | 6 | import com.bsth.service.gps.entity.GpsSpeed_DTO; |
| 7 | +import com.bsth.util.PageObject; | |
| 7 | 8 | |
| 8 | 9 | import javax.servlet.http.HttpServletResponse; |
| 9 | 10 | |
| ... | ... | @@ -25,7 +26,7 @@ public interface GpsService { |
| 25 | 26 | |
| 26 | 27 | Map<String,Object> findRoadSpeed(String lineCode); |
| 27 | 28 | |
| 28 | - Map<String,Object> gpsCompletion(long schId); | |
| 29 | + Map<String,Object> gpsCompletion(long schId, int type); | |
| 29 | 30 | |
| 30 | 31 | Map<String,Object> history_v2(String nbbm, long st, long et); |
| 31 | 32 | |
| ... | ... | @@ -45,4 +46,6 @@ public interface GpsService { |
| 45 | 46 | |
| 46 | 47 | List<GpsSpeed> findPosition(String deviceid, String startdate, |
| 47 | 48 | String enddate) throws ParseException; |
| 49 | + | |
| 50 | + PageObject<GpsSpeed> Pagequery(Map<String, Object> map); | |
| 48 | 51 | } | ... | ... |
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
| ... | ... | @@ -16,6 +16,8 @@ import com.bsth.repository.StationRepository; |
| 16 | 16 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 17 | 17 | import com.bsth.service.gps.entity.*; |
| 18 | 18 | import com.bsth.util.DateUtils; |
| 19 | +import com.bsth.util.PageHelper; | |
| 20 | +import com.bsth.util.PageObject; | |
| 19 | 21 | import com.bsth.util.TransGPS; |
| 20 | 22 | import com.bsth.util.TransGPS.Location; |
| 21 | 23 | import com.bsth.util.db.DBUtils_MS; |
| ... | ... | @@ -44,6 +46,7 @@ import java.net.URLEncoder; |
| 44 | 46 | import java.sql.Connection; |
| 45 | 47 | import java.sql.PreparedStatement; |
| 46 | 48 | import java.sql.ResultSet; |
| 49 | +import java.sql.SQLException; | |
| 47 | 50 | import java.text.DecimalFormat; |
| 48 | 51 | import java.text.ParseException; |
| 49 | 52 | import java.text.SimpleDateFormat; |
| ... | ... | @@ -447,7 +450,7 @@ public class GpsServiceImpl implements GpsService { |
| 447 | 450 | * @return |
| 448 | 451 | */ |
| 449 | 452 | @Override |
| 450 | - public Map<String, Object> gpsCompletion(long schId) { | |
| 453 | + public Map<String, Object> gpsCompletion(long schId, int type) { | |
| 451 | 454 | Map<String, Object> rs = new HashMap<>(); |
| 452 | 455 | |
| 453 | 456 | try { |
| ... | ... | @@ -481,12 +484,18 @@ public class GpsServiceImpl implements GpsService { |
| 481 | 484 | }); |
| 482 | 485 | Map<String, Object> fs = list.get(0); |
| 483 | 486 | //替换设备号和时间 |
| 484 | - int diff = (int) (sch.getDfsjT() - Long.parseLong(fs.get("ts").toString()) - 1000 * 70); | |
| 487 | + long diff = ((sch.getDfsjT() - Long.parseLong(fs.get("ts").toString())) - 1000 * 70); | |
| 485 | 488 | |
| 486 | 489 | String deviceId = BasicData.deviceId2NbbmMap.inverse().get(sch.getClZbh()); |
| 490 | + int serviceState; | |
| 487 | 491 | for (Map<String, Object> map : list) { |
| 488 | 492 | map.put("device_id", deviceId); |
| 489 | 493 | map.put("ts", Long.parseLong(map.get("ts").toString()) + diff); |
| 494 | + if(type==1){ | |
| 495 | + //走补传协议 | |
| 496 | + serviceState = Integer.parseInt(map.get("service_state").toString()); | |
| 497 | + map.put("service_state", serviceState |= 0x00100000); | |
| 498 | + } | |
| 490 | 499 | } |
| 491 | 500 | |
| 492 | 501 | String sqlBefore = "insert into bsth_c_template(", sqlValues = " values("; |
| ... | ... | @@ -800,7 +809,7 @@ public class GpsServiceImpl implements GpsService { |
| 800 | 809 | @Override |
| 801 | 810 | public List<GpsSpeed_DTO> speeds(String nbbm, long st, long et) { |
| 802 | 811 | String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm); |
| 803 | - String sql = "select vehicle, line, up_down, lon, lat, speed,timestamp from bsth_c_speeding where vehicle=? and timestamp>? and timestamp<?"; | |
| 812 | + String sql = "select vehicle, line, up_down, lon, lat, speed,timestamp from bsth_c_GpsSpeed where vehicle=? and timestamp>? and timestamp<?"; | |
| 804 | 813 | |
| 805 | 814 | return GpsSpeed_DTO.create(new JdbcTemplate(DBUtils_MS.getDataSource()).queryForList(sql, deviceId, st * 1000, et * 1000)); |
| 806 | 815 | } |
| ... | ... | @@ -1030,4 +1039,182 @@ public class GpsServiceImpl implements GpsService { |
| 1030 | 1039 | return listResult; |
| 1031 | 1040 | |
| 1032 | 1041 | } |
| 1042 | + | |
| 1043 | + @Override | |
| 1044 | + public PageObject<GpsSpeed> Pagequery(Map<String, Object> map) { | |
| 1045 | + | |
| 1046 | + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
| 1047 | + List<GpsSpeed> list=findAll(map); | |
| 1048 | + List<GpsSpeed> listResult = new ArrayList<GpsSpeed>(); | |
| 1049 | + int curPage;//页码 | |
| 1050 | + int pageData;//每页的记录条数 | |
| 1051 | + int start;//起始数据下标 | |
| 1052 | + int totalPage;//总页数 | |
| 1053 | + int totalData = 0; | |
| 1054 | + if(list.size()>1){ | |
| 1055 | + GpsSpeed GpsSpeedNow;//下标为i的车辆行驶记录 | |
| 1056 | + GpsSpeed GpsSpeedLast;//下标为i-1的车辆行驶记录 | |
| 1057 | + GpsSpeed spped = null;//整合后的车辆行驶记录 | |
| 1058 | + String strNow; | |
| 1059 | + String strLast; | |
| 1060 | + boolean Flag = false;//判断是否有连续超速记录,默认没有 | |
| 1061 | + for(int i = 1;i<list.size();i++){ | |
| 1062 | + GpsSpeedNow = list.get(i); | |
| 1063 | + GpsSpeedLast = list.get(i-1); | |
| 1064 | + strNow = GpsSpeedNow.getVehicle()+GpsSpeedNow.getLine()+GpsSpeedNow.getUp_down(); | |
| 1065 | + strLast = GpsSpeedLast.getVehicle()+GpsSpeedLast.getLine()+GpsSpeedLast.getUp_down(); | |
| 1066 | + if(GpsSpeedNow.getSpeed()>60 && GpsSpeedLast.getSpeed()>60 && strNow.equals(strLast)){//如果两条连续的记录都是超速且属于同一辆车。 | |
| 1067 | + if(Flag==false){// | |
| 1068 | + spped = new GpsSpeed(); | |
| 1069 | + spped.setLine(GpsSpeedLast.getLine());//设置连续超速记录线路 | |
| 1070 | + spped.setLineName(GpsSpeedLast.getLineName());//设置连续超速记录线路名称 | |
| 1071 | + spped.setVehicle(GpsSpeedLast.getVehicle());//设置连续超速记录的车辆编号 | |
| 1072 | + spped.setUp_down(GpsSpeedLast.getUp_down());//设置上下行 | |
| 1073 | + spped.setLon(GpsSpeedLast.getLon());//设置开始时经度 | |
| 1074 | + spped.setLat(GpsSpeedLast.getLat());//设置开始时纬度 | |
| 1075 | + spped.setTimestamp(GpsSpeedLast.getTimestamp());//设置连续超速记录的开始时间 | |
| 1076 | + spped.setTimestampDate(GpsSpeedLast.getTimestampDate());//设置连续超速记录的开始时间戳 | |
| 1077 | + } | |
| 1078 | + spped.setEndtimestamp(GpsSpeedNow.getTimestamp());//设置结束时间戳 | |
| 1079 | + spped.setEndtimestampDate(sdf.format(new Date(GpsSpeedNow.getTimestamp())));//设置结束时间 | |
| 1080 | + spped.setEndlon(GpsSpeedNow.getLon());//设置结束时的经度 | |
| 1081 | + spped.setEndlat(GpsSpeedNow.getLat());//设置结束时的纬度 | |
| 1082 | + Flag = true; | |
| 1083 | + }else{ | |
| 1084 | + if(Flag){//如果上一条记录超速。 | |
| 1085 | + listResult.add(spped); | |
| 1086 | + Flag = false; | |
| 1087 | + } | |
| 1088 | + } | |
| 1089 | + } | |
| 1090 | + Iterator<GpsSpeed> speedIt = listResult.iterator(); | |
| 1091 | + while(speedIt.hasNext()){ | |
| 1092 | + GpsSpeed GpsSpeed = speedIt.next(); | |
| 1093 | + if(GpsSpeed.getEndtimestamp()-GpsSpeed.getTimestamp()<=1000){ | |
| 1094 | + speedIt.remove(); | |
| 1095 | + } | |
| 1096 | + } | |
| 1097 | + | |
| 1098 | + totalData = listResult.size();//总记录条数。 | |
| 1099 | + if(map.get("curPage") == null || map.get("curPage").equals("0")){ | |
| 1100 | + curPage = 0; | |
| 1101 | + }else{ | |
| 1102 | + curPage = Integer.parseInt((String) map.get("curPage")); | |
| 1103 | + } | |
| 1104 | + pageData = Integer.parseInt((String) map.get("pageData"));//每页的记录条数 | |
| 1105 | + start = (curPage - 0) * pageData; //起始记录下标。 | |
| 1106 | + totalPage = totalData % pageData == 0 ? totalData / pageData : totalData / pageData +1;//总页数 | |
| 1107 | + if(curPage == totalPage-1){//如果当前页等于总页数。 | |
| 1108 | + listResult = listResult.subList(start, totalData); | |
| 1109 | + }else{ | |
| 1110 | + listResult = listResult.subList(start, start+pageData); | |
| 1111 | + } | |
| 1112 | + }else{ | |
| 1113 | + curPage = 1; | |
| 1114 | + pageData = Integer.parseInt((String) map.get("pageData"));//每页的记录条数 | |
| 1115 | + totalPage =1; | |
| 1116 | + } | |
| 1117 | + Map<String,Object> paramMap = new HashMap<String,Object>(); | |
| 1118 | + paramMap.put("totalPage", totalPage); | |
| 1119 | + paramMap.put("curPage", curPage); | |
| 1120 | + paramMap.put("pageData", pageData); | |
| 1121 | + PageHelper pageHelper = new PageHelper(totalData, paramMap); | |
| 1122 | + pageHelper.getMap(); | |
| 1123 | + PageObject<GpsSpeed> pageObject = pageHelper.getPageObject(); | |
| 1124 | + pageObject.setDataList(listResult); | |
| 1125 | + return pageObject; | |
| 1126 | + } | |
| 1127 | + | |
| 1128 | + static List<GpsSpeed> findAll(Map<String, Object> map) { | |
| 1129 | + Connection conn = null; | |
| 1130 | + PreparedStatement ps = null; | |
| 1131 | + ResultSet rs = null; | |
| 1132 | + int page=Integer.parseInt(map.get("page").toString()); | |
| 1133 | + List<GpsSpeed> list=new ArrayList<GpsSpeed>(); | |
| 1134 | + String sql="select * from bsth_c_gps_info where 1=1 "; | |
| 1135 | + Object line=map.get("line"); | |
| 1136 | + Object nbbm=map.get("nbbm"); | |
| 1137 | + Object updown=map.get("updown"); | |
| 1138 | + Object startDate=map.get("startDate"); | |
| 1139 | + Object endDate=map.get("endDate"); | |
| 1140 | + | |
| 1141 | + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
| 1142 | + if(line!=null){ | |
| 1143 | + sql +=" and line_id like'%"+line.toString().trim()+"%'"; | |
| 1144 | + } | |
| 1145 | + | |
| 1146 | + if(nbbm!=null){ | |
| 1147 | + nbbm=BasicData.deviceId2NbbmMap.inverse().get(nbbm); | |
| 1148 | + if(nbbm!=null) | |
| 1149 | + sql +=" and vehicle like '%"+nbbm.toString()+"%'"; | |
| 1150 | + } | |
| 1151 | + | |
| 1152 | + if(updown!=null){ | |
| 1153 | + sql +="and industry_code like '%"+updown.toString()+"%'"; | |
| 1154 | + } | |
| 1155 | + if(startDate!=null){ | |
| 1156 | + if (startDate.toString().length()>0) { | |
| 1157 | + try { | |
| 1158 | + Long t1=sdf.parse(startDate.toString()+" 00:00:00").getTime(); | |
| 1159 | + sql += " and ts >="+t1; | |
| 1160 | + } catch (ParseException e) { | |
| 1161 | + e.printStackTrace(); | |
| 1162 | + } | |
| 1163 | + } | |
| 1164 | + | |
| 1165 | + } | |
| 1166 | + if(endDate!=null){ | |
| 1167 | + if (endDate.toString().length()>0) { | |
| 1168 | + try { | |
| 1169 | + Long t2=sdf.parse(endDate.toString()+" 23:59:59").getTime(); | |
| 1170 | + sql += " and ts <="+t2; | |
| 1171 | + } catch (ParseException e) { | |
| 1172 | + e.printStackTrace(); | |
| 1173 | + } | |
| 1174 | + } | |
| 1175 | + | |
| 1176 | + } | |
| 1177 | + | |
| 1178 | + try { | |
| 1179 | + conn = DBUtils_MS.getConnection(); | |
| 1180 | + ps = conn.prepareStatement(sql); | |
| 1181 | + rs = ps.executeQuery(); | |
| 1182 | + list = resultSet2Set(rs); | |
| 1183 | + } catch (SQLException e) { | |
| 1184 | + e.printStackTrace(); | |
| 1185 | + }finally { | |
| 1186 | + DBUtils_MS.close(rs, ps, conn); | |
| 1187 | + } | |
| 1188 | + | |
| 1189 | + return list; | |
| 1190 | + } | |
| 1191 | + | |
| 1192 | + static List<GpsSpeed> resultSet2Set(ResultSet rs) throws SQLException{ | |
| 1193 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
| 1194 | + List<GpsSpeed> list=new ArrayList<GpsSpeed>(); | |
| 1195 | + GpsSpeed GpsSpeed; | |
| 1196 | + Float lon, lat; | |
| 1197 | + Location location; | |
| 1198 | + while(rs.next()){ | |
| 1199 | + lon = rs.getFloat("lon"); | |
| 1200 | + lat = rs.getFloat("lat"); | |
| 1201 | + location = TransGPS.LocationMake(lon, lat); | |
| 1202 | + location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location)); | |
| 1203 | + GpsSpeed=new GpsSpeed(); | |
| 1204 | + GpsSpeed.setLon((float)location.getLng()); | |
| 1205 | + GpsSpeed.setLat((float)location.getLat()); | |
| 1206 | + GpsSpeed.setLine(rs.getObject("line_id").toString()); | |
| 1207 | + //run 时注解 | |
| 1208 | + GpsSpeed.setLineName(BasicData.lineCode2NameMap.get(GpsSpeed.getLine().toString())); | |
| 1209 | + GpsSpeed.setSpeed(Float.valueOf(rs.getObject("speed_gps").toString())); | |
| 1210 | + GpsSpeed.setTimestamp((Long.valueOf(rs.getObject("ts").toString()))); | |
| 1211 | + GpsSpeed.setTimestampDate(sdf.format(new Date(GpsSpeed.getTimestamp()))); | |
| 1212 | + GpsSpeed.setUp_down(((Integer.valueOf(rs.getObject("service_state").toString())) & 0x10000000)==0?0:1); | |
| 1213 | + GpsSpeed.setVehicle(BasicData.deviceId2NbbmMap.get(rs.getObject("device_id").toString())); | |
| 1214 | + list.add(GpsSpeed); | |
| 1215 | + } | |
| 1216 | + return list; | |
| 1217 | + } | |
| 1218 | + | |
| 1033 | 1219 | } |
| 1220 | + | ... | ... |
src/main/java/com/bsth/service/gps/entity/GpsSpeed.java
| 1 | 1 | package com.bsth.service.gps.entity; |
| 2 | 2 | |
| 3 | +import javax.persistence.Transient; | |
| 4 | + | |
| 3 | 5 | /** |
| 4 | 6 | * 超速异常 -ms数据库格式 |
| 5 | 7 | * Created by panzhao on 2017/4/7. |
| ... | ... | @@ -15,11 +17,59 @@ public class GpsSpeed { |
| 15 | 17 | private float lon; |
| 16 | 18 | |
| 17 | 19 | private float lat; |
| 20 | + | |
| 21 | + private String lineName; | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 超速结束时的纬度 | |
| 25 | + */ | |
| 26 | + @Transient | |
| 27 | + private Float endlat; | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * 超速结束时的经度 | |
| 31 | + */ | |
| 32 | + @Transient | |
| 33 | + private Float endlon; | |
| 18 | 34 | |
| 19 | 35 | private float speed; |
| 20 | - | |
| 36 | + | |
| 21 | 37 | private long timestamp; |
| 22 | - | |
| 38 | + | |
| 39 | + @Transient | |
| 40 | + private String timestampDate; | |
| 41 | + | |
| 42 | + public String getTimestampDate() { | |
| 43 | + return timestampDate; | |
| 44 | + } | |
| 45 | + | |
| 46 | + public void setTimestampDate(String timestampDate) { | |
| 47 | + this.timestampDate = timestampDate; | |
| 48 | + } | |
| 49 | + | |
| 50 | + public Long getEndtimestamp() { | |
| 51 | + return endtimestamp; | |
| 52 | + } | |
| 53 | + | |
| 54 | + public void setEndtimestamp(Long endtimestamp) { | |
| 55 | + this.endtimestamp = endtimestamp; | |
| 56 | + } | |
| 57 | + | |
| 58 | + public String getEndtimestampDate() { | |
| 59 | + return endtimestampDate; | |
| 60 | + } | |
| 61 | + | |
| 62 | + public void setEndtimestampDate(String endtimestampDate) { | |
| 63 | + this.endtimestampDate = endtimestampDate; | |
| 64 | + } | |
| 65 | + | |
| 66 | + //结束时间,单位:秒/s | |
| 67 | + @Transient | |
| 68 | + private Long endtimestamp; | |
| 69 | + | |
| 70 | + @Transient | |
| 71 | + private String endtimestampDate; | |
| 72 | + | |
| 23 | 73 | public String getVehicle() { |
| 24 | 74 | return vehicle; |
| 25 | 75 | } |
| ... | ... | @@ -75,4 +125,28 @@ public class GpsSpeed { |
| 75 | 125 | public void setTimestamp(long timestamp) { |
| 76 | 126 | this.timestamp = timestamp; |
| 77 | 127 | } |
| 128 | + | |
| 129 | + public Float getEndlon() { | |
| 130 | + return endlon; | |
| 131 | + } | |
| 132 | + | |
| 133 | + public void setEndlon(Float endlon) { | |
| 134 | + this.endlon = endlon; | |
| 135 | + } | |
| 136 | + | |
| 137 | + public Float getEndlat() { | |
| 138 | + return endlat; | |
| 139 | + } | |
| 140 | + | |
| 141 | + public void setEndlat(Float endlat) { | |
| 142 | + this.endlat = endlat; | |
| 143 | + } | |
| 144 | + | |
| 145 | + public String getLineName() { | |
| 146 | + return lineName; | |
| 147 | + } | |
| 148 | + | |
| 149 | + public void setLineName(String lineName) { | |
| 150 | + this.lineName = lineName; | |
| 151 | + } | |
| 78 | 152 | } | ... | ... |
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
| ... | ... | @@ -17,17 +17,24 @@ import java.util.List; |
| 17 | 17 | import java.util.Map; |
| 18 | 18 | import java.util.Set; |
| 19 | 19 | |
| 20 | +import org.apache.commons.lang3.StringEscapeUtils; | |
| 20 | 21 | import org.springframework.beans.factory.annotation.Autowired; |
| 22 | +import org.springframework.jdbc.core.BeanPropertyRowMapper; | |
| 21 | 23 | import org.springframework.jdbc.core.JdbcTemplate; |
| 22 | 24 | import org.springframework.jdbc.core.RowMapper; |
| 23 | 25 | import org.springframework.stereotype.Service; |
| 24 | 26 | |
| 27 | +import com.alibaba.fastjson.JSONArray; | |
| 28 | +import com.alibaba.fastjson.JSONObject; | |
| 29 | +import com.bsth.data.BasicData; | |
| 30 | +import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; | |
| 25 | 31 | import com.bsth.entity.realcontrol.ChildTaskPlan; |
| 26 | 32 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 27 | 33 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 28 | 34 | import com.bsth.service.BusIntervalService; |
| 29 | 35 | import com.bsth.service.schedule.PeopleCarPlanService; |
| 30 | 36 | import com.bsth.util.ReportUtils; |
| 37 | +import com.google.gson.Gson; | |
| 31 | 38 | |
| 32 | 39 | |
| 33 | 40 | @Service |
| ... | ... | @@ -1838,7 +1845,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1838 | 1845 | } |
| 1839 | 1846 | try { |
| 1840 | 1847 | |
| 1841 | - String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"' and fcsj_actual is not null"; | |
| 1848 | + String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d')" | |
| 1849 | + + " >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"; | |
| 1842 | 1850 | if(line.length() != 0){ |
| 1843 | 1851 | sql += " and xl_bm = '"+line+"'"; |
| 1844 | 1852 | } |
| ... | ... | @@ -1865,6 +1873,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1865 | 1873 | public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { |
| 1866 | 1874 | ScheduleRealInfo schedule = new ScheduleRealInfo(); |
| 1867 | 1875 | schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); |
| 1876 | + schedule.setXlBm(rs.getString("xl_bm")); | |
| 1868 | 1877 | schedule.setXlName(rs.getString("xl_name")); |
| 1869 | 1878 | schedule.setLpName(rs.getString("lp_name")); |
| 1870 | 1879 | schedule.setBcType(rs.getString("bc_type")); |
| ... | ... | @@ -1918,7 +1927,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1918 | 1927 | for(ScheduleRealInfo schedule : list){ |
| 1919 | 1928 | if(schedule.getXlName() == null || schedule.getXlName().trim().length() == 0) |
| 1920 | 1929 | continue; |
| 1921 | - String key = schedule.getGsName() + "/" + schedule.getFgsName() + "/" + schedule.getXlName(); | |
| 1930 | + String key = schedule.getGsName() + "/" + schedule.getFgsName() + "/" + schedule.getXlBm(); | |
| 1922 | 1931 | if(!keyMap.containsKey(key)) |
| 1923 | 1932 | keyMap.put(key, new ArrayList<ScheduleRealInfo>()); |
| 1924 | 1933 | keyMap.get(key).add(schedule); |
| ... | ... | @@ -1929,8 +1938,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1929 | 1938 | int sjbc = 0, sddf = 0, zddf = 0, |
| 1930 | 1939 | dxtz = 0, lbtz = 0; |
| 1931 | 1940 | for(ScheduleRealInfo schedule : keyMap.get(key)){ |
| 1941 | + boolean flag = false; | |
| 1932 | 1942 | if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){ |
| 1933 | - boolean flag = false; | |
| 1934 | 1943 | sjbc++; |
| 1935 | 1944 | if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){ |
| 1936 | 1945 | flag = true; |
| ... | ... | @@ -1939,17 +1948,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1939 | 1948 | zddf++; |
| 1940 | 1949 | else |
| 1941 | 1950 | sddf++; |
| 1942 | - }else if(!schedule.isOnline()){ | |
| 1943 | - flag = true; | |
| 1944 | - schedule.setRemarks("掉线调整"); | |
| 1945 | - dxtz++; | |
| 1946 | - }else if(schedule.getStatus() == 2){ | |
| 1947 | - flag = true; | |
| 1948 | - lbtz++; | |
| 1949 | 1951 | } |
| 1950 | - if(flag) | |
| 1951 | - tempList.add(schedule); | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + } | |
| 1955 | + if(schedule.getStatus() == -1){ | |
| 1956 | + flag = true; | |
| 1957 | + lbtz++; | |
| 1952 | 1958 | } |
| 1959 | + if(flag) | |
| 1960 | + tempList.add(schedule); | |
| 1953 | 1961 | } |
| 1954 | 1962 | tempMap.put("date", date); |
| 1955 | 1963 | String[] keys = key.split("/"); |
| ... | ... | @@ -1960,22 +1968,23 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1960 | 1968 | tempMap.put("sddf", sddf); |
| 1961 | 1969 | tempMap.put("zddf", zddf); |
| 1962 | 1970 | tempMap.put("dfhj", sddf + zddf); |
| 1963 | - tempMap.put("dxtz", dxtz); | |
| 1971 | +// tempMap.put("dxtz", dxtz); | |
| 1964 | 1972 | tempMap.put("lbtz", lbtz); |
| 1965 | - tempMap.put("correct", sddf + zddf + dxtz + lbtz); | |
| 1973 | + tempMap.put("correct", sddf + zddf + lbtz); | |
| 1966 | 1974 | tempMap.put("dfbl", df.format((double)(sddf + zddf)/sjbc*100) + "%"); |
| 1967 | - tempMap.put("dxbl", df.format((double)(dxtz)/sjbc*100) + "%"); | |
| 1975 | +// tempMap.put("dxbl", df.format((double)(dxtz)/sjbc*100) + "%"); | |
| 1968 | 1976 | tempMap.put("lbbl", df.format((double)(lbtz)/sjbc*100) + "%"); |
| 1969 | - tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); | |
| 1970 | - tempMap.put("workList", tempList); | |
| 1977 | +// tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); | |
| 1978 | +// tempMap.put("workList", tempList); | |
| 1971 | 1979 | |
| 1972 | 1980 | String key0 = keys[0] + "/" + keys[1]; |
| 1973 | - if(!keyMap0.containsKey(key0)) | |
| 1974 | - keyMap0.put(key0, new ArrayList<Map<String, Object>>()); | |
| 1975 | - keyMap0.get(key0).add(tempMap); | |
| 1981 | + /*if(!keyMap0.containsKey(key0)) | |
| 1982 | + keyMap0.put(key0, new ArrayList<Map<String, Object>>());*/ | |
| 1983 | +// keyMap0.get(key0).add(tempMap); | |
| 1984 | + resList.add(tempMap); | |
| 1976 | 1985 | } |
| 1977 | 1986 | |
| 1978 | - for(String key : keyMap0.keySet()){ | |
| 1987 | + /*for(String key : keyMap0.keySet()){ | |
| 1979 | 1988 | Map<String, Object> tempMap = new HashMap<String, Object>(); |
| 1980 | 1989 | int sjbc = 0, sddf = 0, zddf = 0, |
| 1981 | 1990 | dxtz = 0, lbtz = 0; |
| ... | ... | @@ -1983,7 +1992,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1983 | 1992 | sjbc += (int)m.get("sjbc"); |
| 1984 | 1993 | sddf += (int)m.get("sddf"); |
| 1985 | 1994 | zddf += (int)m.get("zddf"); |
| 1986 | - dxtz += (int)m.get("dxtz"); | |
| 1995 | +// dxtz += (int)m.get("dxtz"); | |
| 1987 | 1996 | lbtz += (int)m.get("lbtz"); |
| 1988 | 1997 | } |
| 1989 | 1998 | tempMap.put("date", date); |
| ... | ... | @@ -1995,22 +2004,22 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1995 | 2004 | tempMap.put("sddf", sddf); |
| 1996 | 2005 | tempMap.put("zddf", zddf); |
| 1997 | 2006 | tempMap.put("dfhj", sddf + zddf); |
| 1998 | - tempMap.put("dxtz", dxtz); | |
| 2007 | +// tempMap.put("dxtz", dxtz); | |
| 1999 | 2008 | tempMap.put("lbtz", lbtz); |
| 2000 | 2009 | tempMap.put("correct", sddf + zddf + dxtz + lbtz); |
| 2001 | 2010 | tempMap.put("dfbl", df.format((double)(sddf + zddf)/sjbc*100) + "%"); |
| 2002 | 2011 | tempMap.put("dxbl", df.format((double)(dxtz)/sjbc*100) + "%"); |
| 2003 | 2012 | tempMap.put("lbbl", df.format((double)(lbtz)/sjbc*100) + "%"); |
| 2004 | 2013 | tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); |
| 2005 | - tempMap.put("workList", keyMap0.get(key)); | |
| 2014 | +// tempMap.put("workList", keyMap0.get(key)); | |
| 2006 | 2015 | |
| 2007 | 2016 | String key1 = keys[0]; |
| 2008 | 2017 | if(!keyMap1.containsKey(key1)) |
| 2009 | 2018 | keyMap1.put(key1, new ArrayList<Map<String, Object>>()); |
| 2010 | 2019 | keyMap1.get(key1).add(tempMap); |
| 2011 | - } | |
| 2020 | + }*/ | |
| 2012 | 2021 | |
| 2013 | - for(String key : keyMap1.keySet()){ | |
| 2022 | + /*for(String key : keyMap1.keySet()){ | |
| 2014 | 2023 | Map<String, Object> tempMap = new HashMap<String, Object>(); |
| 2015 | 2024 | int sjbc = 0, sddf = 0, zddf = 0, |
| 2016 | 2025 | dxtz = 0, lbtz = 0, lines = 0; |
| ... | ... | @@ -2018,7 +2027,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 2018 | 2027 | sjbc += (int)m.get("sjbc"); |
| 2019 | 2028 | sddf += (int)m.get("sddf"); |
| 2020 | 2029 | zddf += (int)m.get("zddf"); |
| 2021 | - dxtz += (int)m.get("dxtz"); | |
| 2030 | +// dxtz += (int)m.get("dxtz"); | |
| 2022 | 2031 | lbtz += (int)m.get("lbtz"); |
| 2023 | 2032 | lines += (int)m.get("lines"); |
| 2024 | 2033 | } |
| ... | ... | @@ -2029,17 +2038,17 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 2029 | 2038 | tempMap.put("sddf", sddf); |
| 2030 | 2039 | tempMap.put("zddf", zddf); |
| 2031 | 2040 | tempMap.put("dfhj", sddf + zddf); |
| 2032 | - tempMap.put("dxtz", dxtz); | |
| 2041 | +// tempMap.put("dxtz", dxtz); | |
| 2033 | 2042 | tempMap.put("lbtz", lbtz); |
| 2034 | 2043 | tempMap.put("correct", sddf + zddf + dxtz + lbtz); |
| 2035 | 2044 | tempMap.put("dfbl", df.format((double)(sddf + zddf)/sjbc*100) + "%"); |
| 2036 | 2045 | tempMap.put("dxbl", df.format((double)(dxtz)/sjbc*100) + "%"); |
| 2037 | 2046 | tempMap.put("lbbl", df.format((double)(lbtz)/sjbc*100) + "%"); |
| 2038 | 2047 | tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); |
| 2039 | - tempMap.put("workList", keyMap1.get(key)); | |
| 2048 | +// tempMap.put("workList", keyMap1.get(key)); | |
| 2040 | 2049 | |
| 2041 | 2050 | resList.add(tempMap); |
| 2042 | - } | |
| 2051 | + }*/ | |
| 2043 | 2052 | |
| 2044 | 2053 | if(resList.size() != 0){ |
| 2045 | 2054 | Map<String, Object> tempMap = new HashMap<String, Object>(); |
| ... | ... | @@ -2049,10 +2058,10 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 2049 | 2058 | sjbc += (int)m.get("sjbc"); |
| 2050 | 2059 | sddf += (int)m.get("sddf"); |
| 2051 | 2060 | zddf += (int)m.get("zddf"); |
| 2052 | - dxtz += (int)m.get("dxtz"); | |
| 2061 | +// dxtz += (int)m.get("dxtz"); | |
| 2053 | 2062 | lbtz += (int)m.get("lbtz"); |
| 2054 | - lines += (int)m.get("lines"); | |
| 2055 | - for(Map<String, Object> m0 : (List<Map<String, Object>>)m.get("workList")){ | |
| 2063 | +// lines += (int)m.get("lines"); | |
| 2064 | + /*for(Map<String, Object> m0 : (List<Map<String, Object>>)m.get("workList")){ | |
| 2056 | 2065 | Map<String, Object> temp = new HashMap<String, Object>(); |
| 2057 | 2066 | temp.put("date", "合计"); |
| 2058 | 2067 | temp.put("lines", m0.get("lines")); |
| ... | ... | @@ -2060,15 +2069,15 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 2060 | 2069 | temp.put("sddf", m0.get("sddf")); |
| 2061 | 2070 | temp.put("zddf", m0.get("zddf")); |
| 2062 | 2071 | temp.put("dfhj", m0.get("dfhj")); |
| 2063 | - temp.put("dxtz", m0.get("dxtz")); | |
| 2072 | +// temp.put("dxtz", m0.get("dxtz")); | |
| 2064 | 2073 | temp.put("lbtz", m0.get("lbtz")); |
| 2065 | 2074 | temp.put("correct", m0.get("correct")); |
| 2066 | 2075 | temp.put("dfbl", m0.get("dfbl")); |
| 2067 | 2076 | temp.put("dxbl", m0.get("dxbl")); |
| 2068 | 2077 | temp.put("lbbl", m0.get("lbbl")); |
| 2069 | 2078 | temp.put("correctbl", m0.get("correctbl")); |
| 2070 | - ((List<Map<String, Object>>)m0.get("workList")).add(temp); | |
| 2071 | - } | |
| 2079 | +// ((List<Map<String, Object>>)m0.get("workList")).add(temp); | |
| 2080 | + }*/ | |
| 2072 | 2081 | Map<String, Object> temp = new HashMap<String, Object>(); |
| 2073 | 2082 | temp.put("date", "合计"); |
| 2074 | 2083 | temp.put("lines", m.get("lines")); |
| ... | ... | @@ -2076,14 +2085,14 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 2076 | 2085 | temp.put("sddf", m.get("sddf")); |
| 2077 | 2086 | temp.put("zddf", m.get("zddf")); |
| 2078 | 2087 | temp.put("dfhj", m.get("dfhj")); |
| 2079 | - temp.put("dxtz", m.get("dxtz")); | |
| 2088 | +// temp.put("dxtz", m.get("dxtz")); | |
| 2080 | 2089 | temp.put("lbtz", m.get("lbtz")); |
| 2081 | 2090 | temp.put("correct", m.get("correct")); |
| 2082 | 2091 | temp.put("dfbl", m.get("dfbl")); |
| 2083 | 2092 | temp.put("dxbl", m.get("dxbl")); |
| 2084 | 2093 | temp.put("lbbl", m.get("lbbl")); |
| 2085 | - temp.put("correctbl", m.get("correctbl")); | |
| 2086 | - ((List<Map<String, Object>>)m.get("workList")).add(temp); | |
| 2094 | +// temp.put("correctbl", m.get("correctbl")); | |
| 2095 | +// ((List<Map<String, Object>>)m.get("workList")).add(temp); | |
| 2087 | 2096 | } |
| 2088 | 2097 | tempMap.put("date", "合计"); |
| 2089 | 2098 | tempMap.put("lines", lines); |
| ... | ... | @@ -2091,16 +2100,99 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 2091 | 2100 | tempMap.put("sddf", sddf); |
| 2092 | 2101 | tempMap.put("zddf", zddf); |
| 2093 | 2102 | tempMap.put("dfhj", sddf + zddf); |
| 2094 | - tempMap.put("dxtz", dxtz); | |
| 2103 | +// tempMap.put("dxtz", dxtz); | |
| 2095 | 2104 | tempMap.put("lbtz", lbtz); |
| 2096 | - tempMap.put("correct", sddf + zddf + dxtz + lbtz); | |
| 2105 | + tempMap.put("correct", sddf + zddf + lbtz); | |
| 2097 | 2106 | tempMap.put("dfbl", df.format((double)(sddf + zddf)/sjbc*100) + "%"); |
| 2098 | - tempMap.put("dxbl", df.format((double)(dxtz)/sjbc*100) + "%"); | |
| 2107 | + | |
| 2099 | 2108 | tempMap.put("lbbl", df.format((double)(lbtz)/sjbc*100) + "%"); |
| 2100 | - tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); | |
| 2109 | +// tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); | |
| 2101 | 2110 | resList.add(tempMap); |
| 2102 | 2111 | } |
| 2103 | - | |
| 2112 | + //计算掉线调整 | |
| 2113 | + String sqldot = "select * from " | |
| 2114 | + + "logger_sch_modify where gsbm =? and fgsbm=? and rq BETWEEN ? and ? order by line_code,sch_id"; | |
| 2115 | + | |
| 2116 | + ; | |
| 2117 | + List<SchEditInfoDto> listDot = jdbcTemplate.query(sqldot, | |
| 2118 | + new BeanPropertyRowMapper(SchEditInfoDto.class),company,subCompany,map.get("startDate").toString(),map.get("endDate").toString()); | |
| 2119 | + int dxtzz=0; | |
| 2120 | + Map<String, Object> mapSchId=new HashMap<String,Object>(); | |
| 2121 | + for (int i = 0; i < resList.size(); i++) { | |
| 2122 | + Map<String, Object> resMap=resList.get(i); | |
| 2123 | + String date_1=resMap.get("date").toString(); | |
| 2124 | + int sjbc=Integer.parseInt(resMap.get("sjbc").toString()); | |
| 2125 | + int correct=Integer.parseInt(resMap.get("correct").toString()); | |
| 2126 | + | |
| 2127 | + if(date_1.equals("合计")){ | |
| 2128 | + resMap.put("dxtz", dxtzz); | |
| 2129 | + resMap.put("correct",correct+dxtzz); | |
| 2130 | + if(sjbc<=0){ | |
| 2131 | + resMap.put("dxbl", "0"); | |
| 2132 | + resMap.put("correctbl", "0"); | |
| 2133 | + }else{ | |
| 2134 | + resMap.put("dxbl", df.format((double)(dxtzz)/sjbc*100) + "%"); | |
| 2135 | + resMap.put("correctbl", df.format((double)(correct+dxtzz)/sjbc*100) + "%"); | |
| 2136 | + } | |
| 2137 | + | |
| 2138 | + | |
| 2139 | + }else{ | |
| 2140 | + String xlbm=resMap.get("line").toString(); | |
| 2141 | + int dxtzf=0; | |
| 2142 | + for (int j = 0; j < listDot.size(); j++) { | |
| 2143 | + SchEditInfoDto seid=listDot.get(j); | |
| 2144 | + if(seid.getLineCode().equals(xlbm)){ | |
| 2145 | + String jstype=seid.getType(); | |
| 2146 | + String json=""; | |
| 2147 | + if(seid.getJsonArray()!=null){ | |
| 2148 | + json =seid.getJsonArray().toString(); | |
| 2149 | + } | |
| 2150 | + if(!json.equals("")){ | |
| 2151 | + if(jstype.equals("FCXXWT")){ | |
| 2152 | + JSONArray jsonArray = JSONArray.parseArray(json); | |
| 2153 | + for (int x = 0; x < jsonArray.size(); x++) { | |
| 2154 | + Map<String, Object> jsonObject=jsonArray.getJSONObject(x); | |
| 2155 | + String title=jsonObject.get("title")==null?"":jsonObject.get("title").toString(); | |
| 2156 | + if(mapSchId.get(String.valueOf(seid.getSchId()))==null){ | |
| 2157 | + if(title.equals("调整实发时间") || title.equals("调整实达时间")){ | |
| 2158 | + if(jsonObject.get("old")==null){ | |
| 2159 | + dxtzf++; | |
| 2160 | + dxtzz++; | |
| 2161 | + mapSchId.put(String.valueOf(seid.getSchId()), seid.getSchId()); | |
| 2162 | + } | |
| 2163 | + } | |
| 2164 | + } | |
| 2165 | + | |
| 2166 | + } | |
| 2167 | + } | |
| 2168 | + if(jstype.equals("SFTZ")){ | |
| 2169 | + Gson gson = new Gson(); | |
| 2170 | + Map<String, Object> map_js = new HashMap<String, Object>(); | |
| 2171 | + map_js = gson.fromJson(json, map.getClass()); | |
| 2172 | + if(mapSchId.get(String.valueOf(seid.getSchId()))==null){ | |
| 2173 | + if(map_js.get("old")==null){ | |
| 2174 | + dxtzf++; | |
| 2175 | + dxtzz++; | |
| 2176 | + mapSchId.put(String.valueOf(seid.getSchId()), seid.getSchId()); | |
| 2177 | + } | |
| 2178 | + } | |
| 2179 | + } | |
| 2180 | + } | |
| 2181 | + } | |
| 2182 | + } | |
| 2183 | + resMap.put("dxtz", dxtzf); | |
| 2184 | + resMap.put("correct",correct+dxtzf); | |
| 2185 | + if(sjbc<=0){ | |
| 2186 | + resMap.put("dxbl", "0"); | |
| 2187 | + resMap.put("correctbl", "0"); | |
| 2188 | + }else{ | |
| 2189 | + resMap.put("dxbl", df.format((double)(dxtzf)/sjbc*100) + "%"); | |
| 2190 | + resMap.put("correctbl", df.format((double)(correct+dxtzf)/sjbc*100) + "%"); | |
| 2191 | + } | |
| 2192 | + resMap.put("xlname",BasicData.lineCode2NameMap.get(xlbm)); | |
| 2193 | + } | |
| 2194 | + } | |
| 2195 | + | |
| 2104 | 2196 | return resList; |
| 2105 | 2197 | } |
| 2106 | 2198 | ... | ... |
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
| ... | ... | @@ -668,25 +668,23 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 668 | 668 | * @return String |
| 669 | 669 | */ |
| 670 | 670 | public String newTextFileToFTP(List<Object[]> objects,Integer lineId) { |
| 671 | - | |
| 672 | 671 | // 返回值String |
| 673 | 672 | String stationRStr = ""; |
| 674 | - | |
| 675 | 673 | // windows下的文本文件换行符 |
| 676 | 674 | //String enterStr = "\r\n"; |
| 677 | - | |
| 678 | 675 | // linux/unix下的文本文件换行符 |
| 679 | 676 | String enterStr = "\r"; |
| 680 | - | |
| 677 | + int defaultZdxh = 0; | |
| 681 | 678 | if(objects.size()>0) { |
| 682 | - | |
| 683 | 679 | for(int i = 0; i<objects.size();i++) { |
| 684 | - | |
| 680 | + defaultZdxh ++ ; | |
| 685 | 681 | // 经度 |
| 686 | - String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 682 | + String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 687 | 683 | |
| 688 | 684 | // 纬度 |
| 689 | - String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 685 | + String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 686 | + | |
| 687 | + Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 690 | 688 | |
| 691 | 689 | lat = "\t" + lat; |
| 692 | 690 | |
| ... | ... | @@ -696,23 +694,32 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 696 | 694 | String stationMake = ""; |
| 697 | 695 | |
| 698 | 696 | if(stationMakeStr.equals("E")) { |
| 699 | - | |
| 700 | 697 | stationMake = "\t2"; |
| 701 | - | |
| 702 | 698 | }else { |
| 703 | - | |
| 704 | 699 | stationMake ="\t1"; |
| 705 | - | |
| 706 | 700 | } |
| 707 | 701 | |
| 708 | 702 | // 站点序号 |
| 709 | - String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 703 | + // String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 704 | + String stationNo = String.valueOf(defaultZdxh); | |
| 710 | 705 | |
| 711 | 706 | stationNo = "\t" + stationNo; |
| 712 | 707 | |
| 713 | 708 | // 站点编码 |
| 714 | 709 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 715 | 710 | |
| 711 | + int len = stationCode.length(); | |
| 712 | + if(len<8) { | |
| 713 | + int dx = 8 - len; | |
| 714 | + String addStr = ""; | |
| 715 | + for(int p =0;p<dx;p++) { | |
| 716 | + addStr = addStr + "0"; | |
| 717 | + } | |
| 718 | + stationCode = addStr + stationCode; | |
| 719 | + }else if(len>8){ | |
| 720 | + stationCode = stationCode.substring(8); | |
| 721 | + } | |
| 722 | + | |
| 716 | 723 | stationCode = "\t" +stationCode; |
| 717 | 724 | |
| 718 | 725 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| ... | ... | @@ -732,41 +739,33 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 732 | 739 | |
| 733 | 740 | // 限速 |
| 734 | 741 | String sleepStr = ""; |
| 735 | - | |
| 736 | 742 | // 方向 |
| 737 | 743 | int directions = objects.get(i)[8]==null ? null : Integer.valueOf(objects.get(i)[8].toString()); |
| 738 | - | |
| 739 | 744 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 740 | 745 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 741 | - | |
| 742 | 746 | if(sobje.size()==1) { |
| 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 | - | |
| 747 | + int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 748 | + sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 748 | 749 | }else if(sobje.size()>1){ |
| 749 | - | |
| 750 | - /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 751 | 750 | for(int j =0;j<sobje.size();j++) { |
| 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 | - | |
| 751 | + double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 752 | + String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 753 | + pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 754 | + List<Point> ps = new ArrayList<>(); | |
| 755 | + String[] pArray = pointsStr.split(","); | |
| 756 | + for(int a = 0; a <pArray.length; a++) { | |
| 757 | + String[] tmepA = pArray[a].split(" "); | |
| 758 | + Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 759 | + ps.add(temp); | |
| 760 | + } | |
| 761 | + if(GeoUtils.isInSection(ps, point)) { | |
| 762 | + sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 763 | + break; | |
| 765 | 764 | } |
| 766 | - | |
| 767 | 765 | } |
| 768 | 766 | } |
| 769 | - | |
| 767 | + if(sleepStr.equals("")) | |
| 768 | + sleepStr = "\t" + "60"; | |
| 770 | 769 | stationRStr = stationRStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 771 | 770 | } |
| 772 | 771 | |
| ... | ... | @@ -785,9 +784,12 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 785 | 784 | for(int i = 0; i<objects.size();i++) { |
| 786 | 785 | if(Integer.valueOf(objects.get(i)[8].toString())==0) { |
| 787 | 786 | // 经度 |
| 788 | - String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 787 | + String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 788 | + | |
| 789 | 789 | // 纬度 |
| 790 | - String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 790 | + String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 791 | + | |
| 792 | + Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 791 | 793 | lat = "\t" + lat; |
| 792 | 794 | // 站点类型 |
| 793 | 795 | String stationMakeStr = objects.get(i)[3].equals("") ? "" : objects.get(i)[3].toString(); |
| ... | ... | @@ -802,6 +804,17 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 802 | 804 | String stationNo = "\t" + xh; |
| 803 | 805 | // 站点编码 |
| 804 | 806 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 807 | + int len = stationCode.length(); | |
| 808 | + if(len<8) { | |
| 809 | + int dx = 8 - len; | |
| 810 | + String addStr = ""; | |
| 811 | + for(int p =0;p<dx;p++) { | |
| 812 | + addStr = addStr + "0"; | |
| 813 | + } | |
| 814 | + stationCode = addStr + stationCode; | |
| 815 | + }else if(len>8){ | |
| 816 | + stationCode = stationCode.substring(8); | |
| 817 | + } | |
| 805 | 818 | stationCode = "\t" +stationCode; |
| 806 | 819 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| 807 | 820 | String tempDistc = String.valueOf((int) dis); |
| ... | ... | @@ -817,20 +830,28 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 817 | 830 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 818 | 831 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 819 | 832 | if(sobje.size()==1) { |
| 820 | - double dsleepStr = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(0)[2].toString()); | |
| 821 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStr); | |
| 833 | + int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 834 | + sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 822 | 835 | }else if(sobje.size()>1){ |
| 823 | - /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 824 | 836 | for(int j =0;j<sobje.size();j++) { |
| 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); | |
| 837 | + double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 838 | + String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 839 | + pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 840 | + List<Point> ps = new ArrayList<>(); | |
| 841 | + String[] pArray = pointsStr.split(","); | |
| 842 | + for(int a = 0; a <pArray.length; a++) { | |
| 843 | + String[] tmepA = pArray[a].split(" "); | |
| 844 | + Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 845 | + ps.add(temp); | |
| 846 | + } | |
| 847 | + if(GeoUtils.isInSection(ps, point)) { | |
| 848 | + sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 849 | + break; | |
| 831 | 850 | } |
| 832 | 851 | } |
| 833 | 852 | } |
| 853 | + if(sleepStr.equals("")) | |
| 854 | + sleepStr = "\t" + "60"; | |
| 834 | 855 | xh++; |
| 835 | 856 | restStr = restStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 836 | 857 | } | ... | ... |
src/main/java/com/bsth/service/impl/StationServiceImpl.java
| ... | ... | @@ -930,7 +930,8 @@ public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implem |
| 930 | 930 | Float x = map.get("x").equals("") ? null : Float.parseFloat(map.get("x").toString()); |
| 931 | 931 | Float y = map.get("y").equals("") ? null : Float.parseFloat(map.get("y").toString()); |
| 932 | 932 | // 更新 |
| 933 | - repository.stationUpdate(stationCod, zdmc, roadCoding, dbType, bJwpoints, gLonx, gLaty, x, y, bPloygonGrid, gPloygonGrid, destroy, radius, shapesType, versions, descriptions, stationId); | |
| 933 | + /*repository.stationUpdate(stationCod, zdmc, roadCoding, dbType, bJwpoints, gLonx, gLaty, x, y, bPloygonGrid, gPloygonGrid, destroy, radius, shapesType, versions, descriptions, stationId);*/ | |
| 934 | + repository.stationUpdate(stationCod, zdmc, roadCoding, dbType, bJwpoints, gLonx, gLaty, x, y, bPloygonGrid, gPloygonGrid, radius, shapesType, versions, descriptions, stationId); | |
| 934 | 935 | // 站点路由Id |
| 935 | 936 | Integer stationRouteId = map.get("stationRouteId").equals("") ? null : Integer.parseInt(map.get("stationRouteId").toString()); |
| 936 | 937 | StationRoute resultS = routeRepository.findOne(stationRouteId); | ... | ... |
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
| ... | ... | @@ -16,6 +16,7 @@ import com.bsth.repository.schedule.*; |
| 16 | 16 | import com.bsth.repository.traffic.SKBUploadLoggerRepository; |
| 17 | 17 | import com.bsth.security.util.SecurityUtils; |
| 18 | 18 | import com.bsth.service.TrafficManageService; |
| 19 | +import com.bsth.service.traffic.YgcBasicDataService; | |
| 19 | 20 | import com.bsth.util.TimeUtils; |
| 20 | 21 | import com.bsth.util.db.DBUtils_MS; |
| 21 | 22 | import com.bsth.webService.trafficManage.geotool.services.InternalPortType; |
| ... | ... | @@ -23,6 +24,7 @@ import com.bsth.webService.trafficManage.geotool.services.Internal; |
| 23 | 24 | import com.bsth.webService.trafficManage.org.tempuri.Results; |
| 24 | 25 | import com.bsth.webService.trafficManage.org.tempuri.WebServiceLocator; |
| 25 | 26 | import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap; |
| 27 | +import org.apache.commons.lang.StringUtils; | |
| 26 | 28 | import org.apache.commons.lang.time.DateUtils; |
| 27 | 29 | import org.slf4j.Logger; |
| 28 | 30 | import org.slf4j.LoggerFactory; |
| ... | ... | @@ -99,7 +101,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 99 | 101 | |
| 100 | 102 | // 线路站点repository |
| 101 | 103 | @Autowired |
| 102 | - private StationRepository stationRepository; | |
| 104 | + private YgcBasicDataService ygcBasicDataService; | |
| 103 | 105 | |
| 104 | 106 | |
| 105 | 107 | // 运管处接口 |
| ... | ... | @@ -122,11 +124,6 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 122 | 124 | DecimalFormat format = new DecimalFormat("0.00"); |
| 123 | 125 | |
| 124 | 126 | // 用户名 |
| 125 | - private final String userNameXl = "pudong"; | |
| 126 | - // 密码 | |
| 127 | - private final String passwordXl = "pudong123"; | |
| 128 | - | |
| 129 | - // 用户名 | |
| 130 | 127 | private final String userNameOther = "user"; |
| 131 | 128 | // 密码 |
| 132 | 129 | private final String passwordOther = "user"; |
| ... | ... | @@ -134,34 +131,25 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 134 | 131 | * 上传线路信息 |
| 135 | 132 | */ |
| 136 | 133 | @Override |
| 137 | - public String setXL(Map<String, Object> param) { | |
| 134 | + public String setXL(String ids) { | |
| 138 | 135 | String result = "failure"; |
| 139 | 136 | StringBuffer sBuffer = new StringBuffer(); |
| 137 | + String[] idArray = ids.split(","); | |
| 140 | 138 | try { |
| 141 | - Map<String,Object> map = new HashMap<String,Object>(); | |
| 142 | - map.put("lineCode_eq", param.get("xl.lineCode_like")+""); | |
| 143 | - Iterator<Line> lineIterator; | |
| 144 | - Line line = null; | |
| 145 | - if(param.get("xl.lineCode_like").equals("")){ | |
| 146 | - lineIterator = lineRepository.findAll().iterator(); | |
| 147 | - }else { | |
| 139 | + for (String id : idArray) { | |
| 140 | + Map<String,Object> map = new HashMap<>(); | |
| 141 | + map.put("lineCode_eq", id); | |
| 142 | + Line line ; | |
| 148 | 143 | line = lineRepository.findOne(new CustomerSpecs<Line>(map)); |
| 149 | - } | |
| 150 | - List<StationRoute> upStationsList = null;// 上行站点路由集 | |
| 151 | - List<StationRoute> downStationsList = null;// 下行站点路由集 | |
| 152 | - List<LineInformation> lineInformationsList = null; | |
| 153 | - LineInformation lineInformation = null; | |
| 154 | - sBuffer.append("<Data>"); | |
| 155 | - sBuffer.append("<RequestOrg>上海巴士拓华科技发展有限公司</RequestOrg>"); | |
| 156 | - sBuffer.append("<DataList>"); | |
| 157 | -// while(lineIterator.hasNext()){ | |
| 158 | -// line = lineIterator.next(); | |
| 159 | -// if(BasicData.lineId2ShangHaiCodeMap.get(line.getId()) == null | |
| 160 | -// || line.getInUse() == 0){ | |
| 161 | -// continue; | |
| 162 | -// } | |
| 163 | - if(BasicData.lineId2ShangHaiCodeMap.get(line.getId()) == null | |
| 164 | - || line.getInUse() == 0){ | |
| 144 | + if(line == null){ | |
| 145 | + continue; | |
| 146 | + } | |
| 147 | + List<StationRoute> upStationsList ;// 上行站点路由集 | |
| 148 | + List<StationRoute> downStationsList = null;// 下行站点路由集 | |
| 149 | + sBuffer.append("<Data>"); | |
| 150 | + sBuffer.append("<RequestOrg>上海巴士拓华科技发展有限公司</RequestOrg>"); | |
| 151 | + sBuffer.append("<DataList>"); | |
| 152 | + if(BasicData.lineId2ShangHaiCodeMap.get(line.getId()) == null){ | |
| 165 | 153 | return result; |
| 166 | 154 | } |
| 167 | 155 | sBuffer.append("<LINE_ID>").append(line.getId()).append("</LINE_ID>"); |
| ... | ... | @@ -190,32 +178,24 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 190 | 178 | packagStationPointXml(downStationsList, sBuffer, startId); |
| 191 | 179 | } |
| 192 | 180 | sBuffer.append("</LinePointList>"); |
| 193 | -// } | |
| 194 | - sBuffer.append("</DataList>"); | |
| 195 | - sBuffer.append("</Data>"); | |
| 196 | - System.out.println(sBuffer.toString()); | |
| 197 | - if(sBuffer.indexOf("<XL>") != -1){ | |
| 198 | - portType = new Internal().getInternalHttpSoap11Endpoint(); | |
| 199 | - String portResult = portType.setXL(userNameXl, passwordXl, sBuffer.toString()); | |
| 200 | - String portArray[] = portResult.split("\n"); | |
| 201 | - if(portArray.length >= 4){ | |
| 202 | - // 返回数据的编码 | |
| 203 | - String returnCode = portArray[1].substring(portArray[1].indexOf(">")+1,portArray[1].indexOf("</")); | |
| 204 | - // 返回的信息 | |
| 205 | - String returnDescription = portArray[2].substring(portArray[2].indexOf(">")+1,portArray[2].indexOf("</")); | |
| 206 | - if(returnCode.equals("1")){ | |
| 207 | - result = "success"; | |
| 208 | - }else{ | |
| 209 | - result = returnDescription; | |
| 210 | - } | |
| 181 | + sBuffer.append("</DataList>"); | |
| 182 | + sBuffer.append("</Data>"); | |
| 183 | + // 调用上传方法 | |
| 184 | + result = ygcBasicDataService.invokeMethod("UpdateBusLineStation",sBuffer.toString()); | |
| 185 | + String str = "ReturnCode"; | |
| 186 | + // 解析返回值 | |
| 187 | + result = result.substring(result.indexOf(str)+str.length()+1,result.lastIndexOf(str)-2); | |
| 188 | + if(result.equals("1")){ | |
| 189 | + result = "success"; | |
| 190 | + }else{ | |
| 191 | + result = "failure"; | |
| 211 | 192 | } |
| 193 | + logger.info("setXL:"+sBuffer.toString()); | |
| 194 | + logger.info("setXL:"+result); | |
| 212 | 195 | } |
| 213 | 196 | } catch (Exception e) { |
| 214 | 197 | logger.error("setXL:",e); |
| 215 | 198 | e.printStackTrace(); |
| 216 | - }finally{ | |
| 217 | - logger.info("setXL:"+sBuffer.toString()); | |
| 218 | - logger.info("setXL:"+result); | |
| 219 | 199 | } |
| 220 | 200 | return result; |
| 221 | 201 | } |
| ... | ... | @@ -1146,11 +1126,14 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 1146 | 1126 | }else{ |
| 1147 | 1127 | flag = 0; |
| 1148 | 1128 | } |
| 1149 | - result += flag; | |
| 1150 | - if(i !=ruleDayArray.length -1){ | |
| 1151 | - result +=","; | |
| 1129 | + if(flag > 0){ | |
| 1130 | + result += flag + ","; | |
| 1152 | 1131 | } |
| 1153 | 1132 | } |
| 1133 | + // 去掉最后一个字符 | |
| 1134 | + if(StringUtils.endsWith(result,",")){ | |
| 1135 | + result = StringUtils.removeEnd(result,","); | |
| 1136 | + } | |
| 1154 | 1137 | return result; |
| 1155 | 1138 | } |
| 1156 | 1139 | /** | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
| ... | ... | @@ -2,6 +2,7 @@ package com.bsth.service.realcontrol.impl; |
| 2 | 2 | |
| 3 | 3 | import com.bsth.common.ResponseCode; |
| 4 | 4 | import com.bsth.data.BasicData; |
| 5 | +import com.bsth.data.Station2ParkBuffer; | |
| 5 | 6 | import com.bsth.data.schedule.DayOfSchedule; |
| 6 | 7 | import com.bsth.entity.realcontrol.ChildTaskPlan; |
| 7 | 8 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| ... | ... | @@ -45,14 +46,21 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Lon |
| 45 | 46 | try { |
| 46 | 47 | ScheduleRealInfo sch = dayOfSchedule.get(t.getSchedule().getId()); |
| 47 | 48 | //保存起终点名称 |
| 48 | - String prefix = sch.getXlBm() + "_" + sch.getXlDir() + "_"; | |
| 49 | + //String prefix = sch.getXlBm() + "_" + sch.getXlDir() + "_"; | |
| 49 | 50 | if(StringUtils.isEmpty(t.getStartStationName())) |
| 50 | - t.setStartStationName(BasicData.getStationNameByCode(t.getStartStation(), prefix)); | |
| 51 | + t.setStartStationName(getStationName(sch.getXlBm(), t.getStartStation())); | |
| 52 | + //t.setStartStationName(BasicData.getStationNameByCode(t.getStartStation(), prefix)); | |
| 51 | 53 | |
| 52 | 54 | if(StringUtils.isEmpty(t.getEndStationName())) |
| 53 | - t.setEndStationName(BasicData.getStationNameByCode(t.getEndStation(), prefix)); | |
| 55 | + t.setEndStationName(getStationName(sch.getXlBm(), t.getEndStation())); | |
| 56 | + //t.setEndStationName(BasicData.getStationNameByCode(t.getEndStation(), prefix)); | |
| 54 | 57 | if(t.getDestroyReason() == null) |
| 55 | 58 | t.setDestroyReason(""); |
| 59 | + | |
| 60 | + //烂班说明,为兼容之前的数据结构 | |
| 61 | + if(t.isDestroy() && StringUtils.isEmpty(t.getDestroyReason())) | |
| 62 | + t.setDestroyReason(t.getReason()); | |
| 63 | + | |
| 56 | 64 | //先持久化子任务 |
| 57 | 65 | rs = super.save(t); |
| 58 | 66 | //关联主任务 |
| ... | ... | @@ -60,6 +68,9 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Lon |
| 60 | 68 | dayOfSchedule.save(sch); |
| 61 | 69 | //直接持久化 |
| 62 | 70 | //scheduleRealInfoRepository.save(sch); |
| 71 | + //站到场对照 | |
| 72 | + t.setSchedule(sch); | |
| 73 | + Station2ParkBuffer.put(t); | |
| 63 | 74 | |
| 64 | 75 | rs.put("status", ResponseCode.SUCCESS); |
| 65 | 76 | rs.put("t", sch); |
| ... | ... | @@ -71,6 +82,17 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Lon |
| 71 | 82 | return rs; |
| 72 | 83 | } |
| 73 | 84 | |
| 85 | + private String getStationName(String lineCode, String stationCode){ | |
| 86 | + String name; | |
| 87 | + String prefix1 = lineCode + "_" + 0 + "_", | |
| 88 | + prefix2 = lineCode + "_" + 1 + "_"; | |
| 89 | + | |
| 90 | + name = BasicData.getStationNameByCode(stationCode, prefix1); | |
| 91 | + if(StringUtils.isEmpty(name)) | |
| 92 | + name = BasicData.getStationNameByCode(stationCode, prefix2); | |
| 93 | + return name; | |
| 94 | + } | |
| 95 | + | |
| 74 | 96 | @Override |
| 75 | 97 | public Map<String, Object> delete(Long id) { |
| 76 | 98 | Map<String, Object> rs; | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -15,9 +15,11 @@ import com.bsth.data.schedule.SchAttrCalculator; |
| 15 | 15 | import com.bsth.data.schedule.ScheduleComparator; |
| 16 | 16 | import com.bsth.data.schedule.edit_logs.FormLogger; |
| 17 | 17 | import com.bsth.data.schedule.edit_logs.ScheduleModifyLogger; |
| 18 | +import com.bsth.data.schedule.edit_logs.loggers.AfterwardsLogger; | |
| 18 | 19 | import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger; |
| 19 | 20 | import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; |
| 20 | 21 | import com.bsth.data.schedule.late_adjust.LateAdjustHandle; |
| 22 | +import com.bsth.data.utils.CustomStringUtils; | |
| 21 | 23 | import com.bsth.entity.Cars; |
| 22 | 24 | import com.bsth.entity.Line; |
| 23 | 25 | import com.bsth.entity.Personnel; |
| ... | ... | @@ -1687,45 +1689,66 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1687 | 1689 | public List<Map<String, Object>> accountPx(String line, String date, |
| 1688 | 1690 | String code, String xlName, String px) { |
| 1689 | 1691 | // List<Object[]> lsitObj = scheduleRealInfoRepository.accountPx(line, date, code,px); |
| 1692 | + if(!code.trim().equals("")){ | |
| 1693 | + code=BasicData.deviceId2NbbmMap.inverse().get(code); | |
| 1694 | + } | |
| 1695 | + String fgs=""; | |
| 1696 | + List<Line> lineList= lineRepository.findLineBygsBm("", "", line); | |
| 1697 | + if(lineList.size()>0){ | |
| 1698 | + Line l=lineList.get(0); | |
| 1699 | + fgs=BasicData.businessFgsCodeNameMap.get(l.getBrancheCompany()+"_"+l.getCompany()); | |
| 1700 | + } | |
| 1690 | 1701 | List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); |
| 1691 | - String sql= "SELECT c.company,r.request_code,FROM_UNIXTIME(r.timestamp/1000,'%Y-%m-%d %T') as date," | |
| 1692 | - + "c.inside_code FROM bsth_v_report_80 r LEFT JOIN bsth_c_cars c " | |
| 1693 | - + "ON c.equipment_code = r.device_id where " | |
| 1694 | - + "FROM_UNIXTIME(r.timestamp/1000,'%Y-%m-%d') = '"+date +"'" | |
| 1695 | - + "and r.line_id = "+line+" and c.inside_code like '%"+code+"%'" | |
| 1696 | - + " order by c.inside_code "+px; | |
| 1702 | + String sql= "SELECT request_code,FROM_UNIXTIME(TIMESTAMP / 1000,'%Y-%m-%d %T') as TIMESTAMP ," | |
| 1703 | + + " device_id FROM bsth_v_report_80 WHERE " | |
| 1704 | + + " FROM_UNIXTIME( TIMESTAMP / 1000,'%Y-%m-%d') = '"+date+"' AND" | |
| 1705 | + + " line_id = '"+line+"' and device_id like '%"+code+"%'"; | |
| 1697 | 1706 | Map<String, Object> map; |
| 1698 | 1707 | List<Object[]> lsitObj = jdbcTemplate.query(sql, |
| 1699 | 1708 | new RowMapper<Object[]>() { |
| 1700 | 1709 | @Override |
| 1701 | 1710 | public Object[] mapRow(ResultSet rs, int rowNum) throws SQLException { |
| 1702 | - Object[] t = new Object[4]; | |
| 1703 | - t[0]=rs.getString("company"); | |
| 1704 | - t[1]=rs.getString("request_code"); | |
| 1705 | - t[2]=rs.getString("date"); | |
| 1706 | - t[3]=rs.getString("inside_code"); | |
| 1711 | + Object[] t = new Object[3]; | |
| 1712 | + t[0]=rs.getString("request_code"); | |
| 1713 | + t[1]=rs.getString("TIMESTAMP"); | |
| 1714 | + t[2]=rs.getString("device_id"); | |
| 1707 | 1715 | return t; |
| 1708 | 1716 | } |
| 1709 | 1717 | }); |
| 1710 | 1718 | int i = 1; |
| 1711 | 1719 | for (Object[] obj : lsitObj) { |
| 1712 | 1720 | if (obj != null) { |
| 1713 | - map = new HashMap<String, Object>(); | |
| 1714 | - map.put("num", i++); | |
| 1715 | - map.put("xlName", xlName); | |
| 1716 | - map.put("clZbh", obj[3]); | |
| 1717 | - map.put("company", obj[0]); | |
| 1718 | - map.put("requestType", "0x" + Integer.toHexString(Integer.parseInt(obj[1] + "")).toUpperCase()); | |
| 1719 | - map.put("requestTime", obj[2]); | |
| 1720 | - listMap.add(map); | |
| 1721 | + map = new HashMap<String, Object>(); | |
| 1722 | + map.put("num", i++); | |
| 1723 | + map.put("xlName", xlName); | |
| 1724 | + map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2])); | |
| 1725 | + map.put("company",fgs); | |
| 1726 | + map.put("requestType", "0x" + Integer.toHexString(Integer.parseInt(obj[0] + "")).toUpperCase()); | |
| 1727 | + map.put("requestTime", obj[1]); | |
| 1728 | + listMap.add(map); | |
| 1721 | 1729 | } |
| 1722 | 1730 | } |
| 1723 | - | |
| 1731 | + if(listMap.size()>1){ | |
| 1732 | + if(px.equals("asc")){ | |
| 1733 | + Collections.sort(listMap,new AccountMap()); | |
| 1734 | + }else{ | |
| 1735 | + Collections.sort(listMap,new AccountMap2()); | |
| 1736 | + } | |
| 1737 | + } | |
| 1724 | 1738 | return listMap; |
| 1725 | 1739 | } |
| 1726 | 1740 | @Override |
| 1727 | 1741 | public List<Map<String, Object>> account(String line, String date, |
| 1728 | 1742 | String code, String xlName, String type) { |
| 1743 | + if(!code.trim().equals("")){ | |
| 1744 | + code=BasicData.deviceId2NbbmMap.inverse().get(code); | |
| 1745 | + } | |
| 1746 | + String fgs=""; | |
| 1747 | + List<Line> lineList= lineRepository.findLineBygsBm("", "", line); | |
| 1748 | + if(lineList.size()>0){ | |
| 1749 | + Line l=lineList.get(0); | |
| 1750 | + fgs=BasicData.businessFgsCodeNameMap.get(l.getBrancheCompany()+"_"+l.getCompany()); | |
| 1751 | + } | |
| 1729 | 1752 | List<Object[]> lsitObj = scheduleRealInfoRepository.account(line, date, code); |
| 1730 | 1753 | List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); |
| 1731 | 1754 | Map<String, Object> map; |
| ... | ... | @@ -1735,10 +1758,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1735 | 1758 | map = new HashMap<String, Object>(); |
| 1736 | 1759 | map.put("num", i++); |
| 1737 | 1760 | map.put("xlName", xlName); |
| 1738 | - map.put("clZbh", obj[3]); | |
| 1739 | - map.put("company", obj[0]); | |
| 1740 | - map.put("requestType", "0x" + Integer.toHexString(Integer.parseInt(obj[1] + "")).toUpperCase()); | |
| 1741 | - map.put("requestTime", obj[2]); | |
| 1761 | + map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2])); | |
| 1762 | + map.put("company",fgs); | |
| 1763 | + map.put("requestType", "0x" + Integer.toHexString(Integer.parseInt(obj[0] + "")).toUpperCase()); | |
| 1764 | + map.put("requestTime", obj[1]); | |
| 1742 | 1765 | listMap.add(map); |
| 1743 | 1766 | } |
| 1744 | 1767 | } |
| ... | ... | @@ -2554,11 +2577,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2554 | 2577 | if (a == 2) { |
| 2555 | 2578 | x = b + 1; |
| 2556 | 2579 | y = x * 2; |
| 2557 | - ; | |
| 2558 | 2580 | } else if (b == 1) { |
| 2559 | 2581 | x = b + 1; |
| 2560 | 2582 | y = x * 2 - 1; |
| 2561 | - ; | |
| 2562 | 2583 | } else { |
| 2563 | 2584 | x = b; |
| 2564 | 2585 | y = 2 * x; |
| ... | ... | @@ -3040,14 +3061,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3040 | 3061 | rs.put("status", ResponseCode.ERROR); |
| 3041 | 3062 | |
| 3042 | 3063 | ScheduleRealInfo oldSch = super.findById(sch.getId()); |
| 3064 | + //事后日志记录 | |
| 3065 | + AfterwardsLogger aflog = AfterwardsLogger.start(oldSch, "事后调整"); | |
| 3043 | 3066 | |
| 3044 | 3067 | //换车 |
| 3045 | 3068 | if (StringUtils.isNotEmpty(sch.getClZbh()) && !oldSch.getClZbh().equals(sch.getClZbh())) { |
| 3046 | 3069 | if (!carExist(oldSch.getGsBm(),sch.getClZbh())) { |
| 3047 | 3070 | rs.put("msg", "车辆 " + sch.getClZbh() + " 不存在!"); |
| 3048 | 3071 | return rs; |
| 3049 | - } else | |
| 3072 | + } else{ | |
| 3073 | + aflog.log("换车", oldSch.getClZbh(), sch.getClZbh()); | |
| 3050 | 3074 | oldSch.setClZbh(sch.getClZbh()); |
| 3075 | + } | |
| 3051 | 3076 | } |
| 3052 | 3077 | |
| 3053 | 3078 | //换驾驶员 |
| ... | ... | @@ -3057,6 +3082,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3057 | 3082 | rs.put("msg", oldSch.getXlName() + "所属的公司编码下找不到工号为【" + sch.getjGh() + "】的驾驶员"); |
| 3058 | 3083 | return rs; |
| 3059 | 3084 | } |
| 3085 | + aflog.log("换驾驶员", oldSch.getjGh()+"/"+ oldSch.getjName(), sch.getjGh()+"/"+ sch.getjName()); | |
| 3060 | 3086 | persoChange(oldSch, sch.getjGh()); |
| 3061 | 3087 | } |
| 3062 | 3088 | |
| ... | ... | @@ -3067,6 +3093,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3067 | 3093 | rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + sch.getsGh() + "】的售票员"); |
| 3068 | 3094 | return rs; |
| 3069 | 3095 | } |
| 3096 | + aflog.log("换售票员", oldSch.getsGh()+"/"+ oldSch.getsName(), sch.getsGh()+"/"+ sch.getsName()); | |
| 3070 | 3097 | persoChangeSPY(oldSch, sch.getsGh()); |
| 3071 | 3098 | } |
| 3072 | 3099 | |
| ... | ... | @@ -3075,12 +3102,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3075 | 3102 | boolean dest2 = sch.getStatus() == -1; |
| 3076 | 3103 | if (!dest1 && dest2) { |
| 3077 | 3104 | oldSch.destroy(); |
| 3105 | + aflog.log("烂班"); | |
| 3078 | 3106 | } |
| 3079 | 3107 | else if(dest1 && !dest2){ |
| 3080 | 3108 | //撤销烂班 |
| 3081 | 3109 | oldSch.setJhlc(oldSch.getJhlcOrig()); |
| 3082 | 3110 | oldSch.setStatus(0); |
| 3083 | 3111 | oldSch.calcStatus(); |
| 3112 | + aflog.log("撤销烂班"); | |
| 3084 | 3113 | } |
| 3085 | 3114 | |
| 3086 | 3115 | |
| ... | ... | @@ -3089,6 +3118,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3089 | 3118 | */ |
| 3090 | 3119 | if (!oldSch.getJhlc().equals(sch.getJhlc())) { |
| 3091 | 3120 | double jhlcNum = sch.getJhlc(); |
| 3121 | + aflog.log("修改班次里程", oldSch.getJhlc(), jhlcNum); | |
| 3092 | 3122 | //烂班 |
| 3093 | 3123 | if(jhlcNum == 0 && oldSch.getJhlcOrig() != 0) |
| 3094 | 3124 | oldSch.destroy(); |
| ... | ... | @@ -3101,15 +3131,30 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3101 | 3131 | } |
| 3102 | 3132 | |
| 3103 | 3133 | //待发时间 |
| 3104 | - oldSch.setDfsj(sch.getDfsj()); | |
| 3134 | + if(!CustomStringUtils.equals(oldSch.getDfsj(), sch.getDfsj())){ | |
| 3135 | + aflog.log("修改待发时间", oldSch.getDfsj(), sch.getDfsj()); | |
| 3136 | + oldSch.setDfsj(sch.getDfsj()); | |
| 3137 | + } | |
| 3105 | 3138 | //实发时间 |
| 3106 | - oldSch.setFcsjActual(sch.getFcsjActual()); | |
| 3139 | + if(!CustomStringUtils.equals(oldSch.getFcsjActual(), sch.getFcsjActual())){ | |
| 3140 | + aflog.log("修改实发时间", oldSch.getFcsjActual(), sch.getFcsjActual()); | |
| 3141 | + oldSch.setFcsjActual(sch.getFcsjActual()); | |
| 3142 | + } | |
| 3107 | 3143 | //实际终点 |
| 3108 | - oldSch.setZdsjActual(sch.getZdsjActual()); | |
| 3144 | + if(!CustomStringUtils.equals(oldSch.getZdsjActual(), sch.getZdsjActual())){ | |
| 3145 | + aflog.log("修改实达时间", oldSch.getZdsjActual(), sch.getZdsjActual()); | |
| 3146 | + oldSch.setZdsjActual(sch.getZdsjActual()); | |
| 3147 | + } | |
| 3148 | + | |
| 3109 | 3149 | //备注 |
| 3110 | - oldSch.setRemarks(sch.getRemarks()); | |
| 3150 | + if(!CustomStringUtils.equals(oldSch.getRemarks(), sch.getRemarks())){ | |
| 3151 | + aflog.log("修改备注", oldSch.getRemarks(), sch.getRemarks()); | |
| 3152 | + oldSch.setRemarks(sch.getRemarks()); | |
| 3153 | + } | |
| 3111 | 3154 | |
| 3112 | 3155 | scheduleRealInfoRepository.save(oldSch); |
| 3156 | + | |
| 3157 | + aflog.end(); | |
| 3113 | 3158 | rs.put("status", ResponseCode.SUCCESS); |
| 3114 | 3159 | return rs; |
| 3115 | 3160 | } |
| ... | ... | @@ -3714,7 +3759,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3714 | 3759 | List<ScheduleRealInfo> list3 = this.realScheduleList(line, date); |
| 3715 | 3760 | |
| 3716 | 3761 | Map<String, Object> nMap=new HashMap<String, Object>(); |
| 3717 | - nMap.put("date", date); | |
| 3762 | + nMap.put("date", xlName+date); | |
| 3718 | 3763 | nMap.put("jls", list1.get(0).get("jls")); |
| 3719 | 3764 | nMap.put("sjgl", list1.get(0).get("sjgl")); |
| 3720 | 3765 | for (Map<String, Object> m : list1) { |
| ... | ... | @@ -4199,4 +4244,20 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 4199 | 4244 | } |
| 4200 | 4245 | return rs; |
| 4201 | 4246 | } |
| 4202 | -} | |
| 4203 | 4247 | \ No newline at end of file |
| 4248 | +} | |
| 4249 | + | |
| 4250 | +class AccountMap implements Comparator<Map<String, Object>>{ | |
| 4251 | + @Override | |
| 4252 | + public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 4253 | + // TODO Auto-generated method stub | |
| 4254 | + return o1.get("clZbh").toString().compareTo(o2.get("clZbh").toString()); | |
| 4255 | + } | |
| 4256 | +} | |
| 4257 | + | |
| 4258 | +class AccountMap2 implements Comparator<Map<String, Object>>{ | |
| 4259 | + @Override | |
| 4260 | + public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 4261 | + // TODO Auto-generated method stub | |
| 4262 | + return o2.get("clZbh").toString().compareTo(o1.get("clZbh").toString()); | |
| 4263 | + } | |
| 4264 | +} | ... | ... |
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
| ... | ... | @@ -866,7 +866,9 @@ public class CulateMileageServiceImpl implements CulateMileageService{ |
| 866 | 866 | ChildTaskPlan childTaskPlan = it.next(); |
| 867 | 867 | if(childTaskPlan.getType2().equals("2")||childTaskPlan.getType2().equals("3")){ |
| 868 | 868 | if (childTaskPlan.isDestroy()) { |
| 869 | - zrwjcclc=Arith.add(zrwjcclc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage()); | |
| 869 | + if(childTaskPlan.getReason().equals(item)){ | |
| 870 | + zrwjcclc=Arith.add(zrwjcclc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage()); | |
| 871 | + } | |
| 870 | 872 | } |
| 871 | 873 | } |
| 872 | 874 | } | ... | ... |
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
| 1 | 1 | package com.bsth.service.report.impl; |
| 2 | -import java.sql.Connection; | |
| 3 | -import java.sql.PreparedStatement; | |
| 4 | -import java.sql.ResultSet; | |
| 5 | -import java.sql.SQLException; | |
| 6 | -import java.text.DecimalFormat; | |
| 7 | -import java.text.ParseException; | |
| 8 | -import java.text.SimpleDateFormat; | |
| 9 | -import java.util.ArrayList; | |
| 10 | -import java.util.Calendar; | |
| 11 | -import java.util.Collections; | |
| 12 | -import java.util.Date; | |
| 13 | -import java.util.HashMap; | |
| 14 | -import java.util.Iterator; | |
| 15 | -import java.util.List; | |
| 16 | -import java.util.Map; | |
| 17 | -import java.util.Set; | |
| 18 | - | |
| 19 | -import org.apache.commons.lang.StringUtils; | |
| 20 | -import org.dbunit.dataset.DataSetException; | |
| 21 | -import org.slf4j.Logger; | |
| 22 | -import org.slf4j.LoggerFactory; | |
| 23 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 24 | -import org.springframework.jdbc.core.JdbcTemplate; | |
| 25 | -import org.springframework.jdbc.core.RowMapper; | |
| 26 | -import org.springframework.scheduling.commonj.ScheduledTimerListener; | |
| 27 | -import org.springframework.stereotype.Service; | |
| 28 | - | |
| 29 | 2 | import com.bsth.data.BasicData; |
| 30 | 3 | import com.bsth.entity.Line; |
| 31 | 4 | import com.bsth.entity.Personnel; |
| 32 | 5 | import com.bsth.entity.StationRoute; |
| 33 | 6 | import com.bsth.entity.excep.ArrivalInfo; |
| 34 | -import com.bsth.entity.mcy_forms.Operationservice; | |
| 35 | 7 | import com.bsth.entity.oil.Dlb; |
| 36 | 8 | import com.bsth.entity.oil.Ylb; |
| 37 | 9 | import com.bsth.entity.realcontrol.ChildTaskPlan; |
| 38 | 10 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 39 | -import com.bsth.entity.schedule.SchedulePlanInfo; | |
| 40 | 11 | import com.bsth.repository.LineRepository; |
| 41 | 12 | import com.bsth.repository.StationRouteRepository; |
| 42 | 13 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| ... | ... | @@ -44,7 +15,24 @@ import com.bsth.service.report.CulateMileageService; |
| 44 | 15 | import com.bsth.service.report.ReportService; |
| 45 | 16 | import com.bsth.util.Arith; |
| 46 | 17 | import com.bsth.util.ComparableJob; |
| 18 | +import com.bsth.util.ReportUtils; | |
| 47 | 19 | import com.bsth.util.db.DBUtils_MS; |
| 20 | +import org.apache.commons.lang.StringUtils; | |
| 21 | +import org.slf4j.Logger; | |
| 22 | +import org.slf4j.LoggerFactory; | |
| 23 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 24 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 25 | +import org.springframework.jdbc.core.RowMapper; | |
| 26 | +import org.springframework.stereotype.Service; | |
| 27 | + | |
| 28 | +import java.sql.Connection; | |
| 29 | +import java.sql.PreparedStatement; | |
| 30 | +import java.sql.ResultSet; | |
| 31 | +import java.sql.SQLException; | |
| 32 | +import java.text.DecimalFormat; | |
| 33 | +import java.text.ParseException; | |
| 34 | +import java.text.SimpleDateFormat; | |
| 35 | +import java.util.*; | |
| 48 | 36 | |
| 49 | 37 | @Service |
| 50 | 38 | public class ReportServiceImpl implements ReportService{ |
| ... | ... | @@ -582,15 +570,15 @@ public class ReportServiceImpl implements ReportService{ |
| 582 | 570 | String minfcsj=jdbcTemplate.queryForObject(sqlMinYysj, String.class); |
| 583 | 571 | |
| 584 | 572 | //查询全程 |
| 585 | - String sqlqc="select t.*,x.station_name as qdz_name from ( " | |
| 586 | - + " (SELECT bc_type, fcsj,qdz,2 as xh,xl_dir FROM bsth_c_s_ttinfo_detail " | |
| 573 | + String sqlqc="select t.* from ( " | |
| 574 | + + " (SELECT bc_type, fcsj,qdz,2 as xh,xl_dir,qdz_name FROM bsth_c_s_ttinfo_detail " | |
| 587 | 575 | + " where ttinfo ='"+ttinfo+"' and (bc_type='normal' || bc_type='region') " |
| 588 | 576 | + " and fcsj <='"+minfcsj+"') " |
| 589 | 577 | + " union " |
| 590 | - + " (SELECT bc_type, fcsj,qdz,1 as xh,xl_dir FROM bsth_c_s_ttinfo_detail " | |
| 578 | + + " (SELECT bc_type, fcsj,qdz,1 as xh,xl_dir,qdz_name FROM bsth_c_s_ttinfo_detail " | |
| 591 | 579 | + " where ttinfo ='"+ttinfo+"' and (bc_type='normal' || bc_type='region') " |
| 592 | 580 | + " and fcsj > '"+minfcsj+"') " |
| 593 | - + "order by xl_dir,xh,fcsj ) t left join bsth_c_station x on t.qdz=x.id"; | |
| 581 | + + "order by xl_dir,xh,fcsj ) t "; | |
| 594 | 582 | List<Map<String, String>> qclist= jdbcTemplate.query(sqlqc, |
| 595 | 583 | new RowMapper<Map<String, String>>(){ |
| 596 | 584 | @Override |
| ... | ... | @@ -631,12 +619,12 @@ public class ReportServiceImpl implements ReportService{ |
| 631 | 619 | sxbc++; |
| 632 | 620 | upfcsj.add(m.get("fcsj")); |
| 633 | 621 | if(sxqdz.length() == 0 && m.containsKey("qdz_name")) |
| 634 | - sxqdz = m.get("qdz_name"); | |
| 622 | + sxqdz = m.get("qdz_name")==null?"":m.get("qdz_name").toString(); | |
| 635 | 623 | } else { |
| 636 | 624 | xxbc++; |
| 637 | 625 | downfcsj.add(m.get("fcsj")); |
| 638 | 626 | if(xxqdz.length() == 0 && m.containsKey("qdz_name")) |
| 639 | - xxqdz = m.get("qdz_name"); | |
| 627 | + xxqdz = m.get("qdz_name")==null?"":m.get("qdz_name").toString(); | |
| 640 | 628 | } |
| 641 | 629 | } |
| 642 | 630 | if(upfcsj.size() != 0) |
| ... | ... | @@ -1459,7 +1447,6 @@ public class ReportServiceImpl implements ReportService{ |
| 1459 | 1447 | } |
| 1460 | 1448 | //所有班次信息 |
| 1461 | 1449 | List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); |
| 1462 | - | |
| 1463 | 1450 | line =line.trim(); |
| 1464 | 1451 | if(line.equals("")){ |
| 1465 | 1452 | //查询所有线路 |
| ... | ... | @@ -1469,7 +1456,6 @@ public class ReportServiceImpl implements ReportService{ |
| 1469 | 1456 | list = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date,date2); |
| 1470 | 1457 | } |
| 1471 | 1458 | |
| 1472 | - | |
| 1473 | 1459 | String sql="select r.xl_bm" |
| 1474 | 1460 | + " from bsth_c_s_sp_info_real r where" |
| 1475 | 1461 | + " r.schedule_date_str BETWEEN '"+date+"' and '"+date2+"'"; |
| ... | ... | @@ -1490,7 +1476,6 @@ public class ReportServiceImpl implements ReportService{ |
| 1490 | 1476 | return ve; |
| 1491 | 1477 | } |
| 1492 | 1478 | }); |
| 1493 | - | |
| 1494 | 1479 | for (int i = 0; i < listLine.size(); i++) { |
| 1495 | 1480 | List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>(); |
| 1496 | 1481 | String lineStr=listLine.get(i); |
| ... | ... | @@ -1511,6 +1496,22 @@ public class ReportServiceImpl implements ReportService{ |
| 1511 | 1496 | Map<String, Object> newMap=staticTj(list,"f"); |
| 1512 | 1497 | lMap.add(newMap); |
| 1513 | 1498 | } |
| 1499 | + if(type.equals("export")){ | |
| 1500 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1501 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1502 | + m.put("date", date); | |
| 1503 | + m.put("date1", date2); | |
| 1504 | + ReportUtils ee = new ReportUtils(); | |
| 1505 | + try { | |
| 1506 | + listI.add(lMap.iterator()); | |
| 1507 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1508 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/countByLine.xls", | |
| 1509 | + path + "export/线路公里统计表.xls"); | |
| 1510 | + } catch (Exception e) { | |
| 1511 | + // TODO: handle exception | |
| 1512 | + e.printStackTrace(); | |
| 1513 | + } | |
| 1514 | + } | |
| 1514 | 1515 | return lMap; |
| 1515 | 1516 | } |
| 1516 | 1517 | |
| ... | ... | @@ -1533,6 +1534,8 @@ public class ReportServiceImpl implements ReportService{ |
| 1533 | 1534 | if(list.size()>0){ |
| 1534 | 1535 | if(status.equals("f")){ |
| 1535 | 1536 | map.put("xlName","合计"); |
| 1537 | + map.put("gs", ""); | |
| 1538 | + map.put("fgs", ""); | |
| 1536 | 1539 | }else{ |
| 1537 | 1540 | map.put("xlName", list.get(0).getXlName()); |
| 1538 | 1541 | map.put("gs", list.get(0).getGsName()); |
| ... | ... | @@ -1588,13 +1591,16 @@ public class ReportServiceImpl implements ReportService{ |
| 1588 | 1591 | map.put("ssgl_other", culateService.culateSsMileXx(list, "其他")); |
| 1589 | 1592 | |
| 1590 | 1593 | |
| 1591 | - double zrwjcclc=culateService.culateZrwJccLc(list, ""); | |
| 1592 | - | |
| 1594 | + double zrwjcclc=culateService.culateZrwJccLc(list, "故障"); | |
| 1595 | + double zrwjcclc1=culateService.culateZrwJccLc(list, "肇事"); | |
| 1596 | + double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷"); | |
| 1593 | 1597 | map.put("zrwjcclc", zrwjcclc); |
| 1594 | - | |
| 1598 | + map.put("zrwjcclc1", zrwjcclc1); | |
| 1599 | + map.put("zrwjcclc2", zrwjcclc2); | |
| 1600 | + double zrwjcc=Arith.add(Arith.add(zrwjcclc, zrwjcclc1), zrwjcclc2); | |
| 1595 | 1601 | double kfks=culateService.culateKfksLc(lists); |
| 1596 | 1602 | map.put("kfks", kfks); |
| 1597 | - double zlc=Arith.add(Arith.add(Arith.add(zrwjcclc, ljlc), | |
| 1603 | + double zlc=Arith.add(Arith.add(Arith.add(zrwjcc, ljlc), | |
| 1598 | 1604 | Arith.add(zjcclc, zyylc)),kfks); |
| 1599 | 1605 | |
| 1600 | 1606 | |
| ... | ... | @@ -1659,7 +1665,6 @@ public class ReportServiceImpl implements ReportService{ |
| 1659 | 1665 | ylbSql += " and xlbm = '"+line+"'"; |
| 1660 | 1666 | } |
| 1661 | 1667 | List<Ylb> ylbList=ylbList(ylbSql); |
| 1662 | - | |
| 1663 | 1668 | String dlbSql=" select * from bsth_c_dlb where rq BETWEEN '"+date+"' and '"+date2+"'"; |
| 1664 | 1669 | if(line.equals("")){ |
| 1665 | 1670 | dlbSql +="and ssgsdm='"+gsdm+"' " |
| ... | ... | @@ -1668,7 +1673,6 @@ public class ReportServiceImpl implements ReportService{ |
| 1668 | 1673 | dlbSql += " and xlbm = '"+line+"'"; |
| 1669 | 1674 | } |
| 1670 | 1675 | List<Dlb> dlbList=dlbList(dlbSql); |
| 1671 | - | |
| 1672 | 1676 | String sql="select r.xl_bm,r.schedule_date_str,r.cl_zbh,r.j_gh,r.s_gh" |
| 1673 | 1677 | + " from bsth_c_s_sp_info_real r where" |
| 1674 | 1678 | + " r.schedule_date_str BETWEEN '"+date+"' and '"+date2+"'"; |
| ... | ... | @@ -1692,7 +1696,6 @@ public class ReportServiceImpl implements ReportService{ |
| 1692 | 1696 | return map; |
| 1693 | 1697 | } |
| 1694 | 1698 | }); |
| 1695 | - | |
| 1696 | 1699 | for (int i = 0; i < listGroupBy.size(); i++) { |
| 1697 | 1700 | Map<String, Object> m=listGroupBy.get(i); |
| 1698 | 1701 | String xl_bm=m.get("line")==null?"":m.get("line").toString(); |
| ... | ... | @@ -1795,7 +1798,6 @@ public class ReportServiceImpl implements ReportService{ |
| 1795 | 1798 | } |
| 1796 | 1799 | |
| 1797 | 1800 | } |
| 1798 | - | |
| 1799 | 1801 | if(!zt.equals("zbh")){ |
| 1800 | 1802 | String sqls="select r.xl_bm,r.cl_zbh,r.j_gh,r.s_gh" |
| 1801 | 1803 | + " from bsth_c_s_sp_info_real r where" |
| ... | ... | @@ -1822,6 +1824,28 @@ public class ReportServiceImpl implements ReportService{ |
| 1822 | 1824 | lMap=lists(listGroupBys, lMaps, gsdm, fgsdm, date, date2); |
| 1823 | 1825 | |
| 1824 | 1826 | } |
| 1827 | + if(type.equals("export")){ | |
| 1828 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 1829 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1830 | + m.put("date", date); | |
| 1831 | + m.put("date1", date2); | |
| 1832 | + String xls=""; | |
| 1833 | + if(zt.equals("zbh")){ | |
| 1834 | + xls="countByBus1.xls"; | |
| 1835 | + }else{ | |
| 1836 | + xls="countByBus2.xls"; | |
| 1837 | + } | |
| 1838 | + ReportUtils ee = new ReportUtils(); | |
| 1839 | + try { | |
| 1840 | + listI.add(lMap.iterator()); | |
| 1841 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 1842 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls, | |
| 1843 | + path + "export/路单数据统计表.xls"); | |
| 1844 | + } catch (Exception e) { | |
| 1845 | + // TODO: handle exception | |
| 1846 | + e.printStackTrace(); | |
| 1847 | + } | |
| 1848 | + } | |
| 1825 | 1849 | |
| 1826 | 1850 | return lMap; |
| 1827 | 1851 | } |
| ... | ... | @@ -1831,6 +1855,7 @@ public class ReportServiceImpl implements ReportService{ |
| 1831 | 1855 | @Override |
| 1832 | 1856 | public Ylb mapRow(ResultSet arg0, int arg1) throws SQLException { |
| 1833 | 1857 | Ylb y = new Ylb(); |
| 1858 | + y.setRq(arg0.getDate("rq")); | |
| 1834 | 1859 | y.setXlbm(arg0.getString("xlbm")); |
| 1835 | 1860 | y.setNbbm(arg0.getString("nbbm")); |
| 1836 | 1861 | y.setJzl(arg0.getDouble("jzl")); |
| ... | ... | @@ -1847,6 +1872,7 @@ public class ReportServiceImpl implements ReportService{ |
| 1847 | 1872 | @Override |
| 1848 | 1873 | public Dlb mapRow(ResultSet arg0, int arg1) throws SQLException { |
| 1849 | 1874 | Dlb y = new Dlb(); |
| 1875 | + y.setRq(arg0.getDate("rq")); | |
| 1850 | 1876 | y.setXlbm(arg0.getString("xlbm")); |
| 1851 | 1877 | y.setNbbm(arg0.getString("nbbm")); |
| 1852 | 1878 | y.setCdl(arg0.getDouble("cdl")); | ... | ... |
src/main/java/com/bsth/service/traffic/YgcBasicDataService.java
| ... | ... | @@ -9,5 +9,13 @@ public interface YgcBasicDataService { |
| 9 | 9 | * 更新运管处基础数据 |
| 10 | 10 | */ |
| 11 | 11 | void updateYgcBasicData(); |
| 12 | + | |
| 13 | + /** | |
| 14 | + * 调用方法 | |
| 15 | + * @param methodName 方法名 | |
| 16 | + * @param param 参数 | |
| 17 | + * @return | |
| 18 | + */ | |
| 19 | + String invokeMethod(String methodName,String param); | |
| 12 | 20 | } |
| 13 | 21 | ... | ... |
src/main/java/com/bsth/service/traffic/impl/YgcBasicDataServiceImpl.java
| ... | ... | @@ -7,6 +7,7 @@ import org.apache.axiom.om.*; |
| 7 | 7 | import org.apache.axis2.addressing.EndpointReference; |
| 8 | 8 | import org.apache.axis2.client.Options; |
| 9 | 9 | import org.apache.axis2.client.ServiceClient; |
| 10 | +import org.apache.axis2.rpc.client.RPCServiceClient; | |
| 10 | 11 | import org.apache.commons.codec.digest.DigestUtils; |
| 11 | 12 | import org.slf4j.Logger; |
| 12 | 13 | import org.slf4j.LoggerFactory; |
| ... | ... | @@ -18,6 +19,7 @@ import org.w3c.dom.Document; |
| 18 | 19 | import org.w3c.dom.NodeList; |
| 19 | 20 | |
| 20 | 21 | import javax.activation.DataHandler; |
| 22 | +import javax.xml.namespace.QName; | |
| 21 | 23 | import javax.xml.parsers.DocumentBuilder; |
| 22 | 24 | import javax.xml.parsers.DocumentBuilderFactory; |
| 23 | 25 | import java.io.*; |
| ... | ... | @@ -42,14 +44,17 @@ public class YgcBasicDataServiceImpl implements YgcBasicDataService{ |
| 42 | 44 | JdbcTemplate jdbcTemplate; |
| 43 | 45 | |
| 44 | 46 | private static String IP = "218.242.195.76:9091"; |
| 45 | - private static String targetEndpoint = "http://" + IP +"/ygc.TransManager.Basicdown?wsdl"; | |
| 47 | + private static String downTargetEndpoint = "http://" + IP +"/ygc.TransManager.Basicdown?wsdl"; | |
| 48 | + private static String upTargetEndpoint = "http://" + IP +"/ygc.TransManager.BasicUpload?wsdl"; | |
| 46 | 49 | private static String namespace = "http://service.shygc.com"; |
| 47 | 50 | private static String userName = "admin"; |
| 48 | 51 | private static String passWord = "000000"; |
| 49 | - private static EndpointReference targetEPR; | |
| 52 | + private static EndpointReference downTargetEPR; | |
| 53 | + private static EndpointReference upTargetEPR; | |
| 50 | 54 | { |
| 51 | 55 | try { |
| 52 | - targetEPR = new EndpointReference(targetEndpoint); | |
| 56 | + downTargetEPR = new EndpointReference(downTargetEndpoint); | |
| 57 | + upTargetEPR = new EndpointReference(upTargetEndpoint); | |
| 53 | 58 | } catch (Exception e) { |
| 54 | 59 | e.printStackTrace(); |
| 55 | 60 | } |
| ... | ... | @@ -102,7 +107,7 @@ public class YgcBasicDataServiceImpl implements YgcBasicDataService{ |
| 102 | 107 | ServiceClient sender = new ServiceClient(); |
| 103 | 108 | Options options = sender.getOptions(); |
| 104 | 109 | options.setProperty("SO_TIMEOUT", Integer.valueOf(1800000)); |
| 105 | - options.setTo(targetEPR); | |
| 110 | + options.setTo(downTargetEPR); | |
| 106 | 111 | sender.setOptions(options); |
| 107 | 112 | System.out.println("The data in method download: " + data); |
| 108 | 113 | data.build(); |
| ... | ... | @@ -280,4 +285,37 @@ public class YgcBasicDataServiceImpl implements YgcBasicDataService{ |
| 280 | 285 | flag = true; |
| 281 | 286 | return flag; |
| 282 | 287 | } |
| 288 | + | |
| 289 | + /** | |
| 290 | + * 调用方法 | |
| 291 | + * @param methodName 方法名 | |
| 292 | + * @param param 参数 | |
| 293 | + * @return | |
| 294 | + */ | |
| 295 | + public String invokeMethod(String methodName,String param){ | |
| 296 | + String result = null; | |
| 297 | + try { | |
| 298 | + // 获得客户端 | |
| 299 | + RPCServiceClient serviceClient = new RPCServiceClient(); | |
| 300 | + // 可以在该对象中设置服务端的验证信息 | |
| 301 | + Options options = serviceClient.getOptions(); | |
| 302 | + options.setTo(upTargetEPR); | |
| 303 | + // 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值 | |
| 304 | + QName opAddEntry = new QName(namespace,methodName); | |
| 305 | + // 参数,如果有多个,继续往后面增加即可,不用指定参数的名称 | |
| 306 | + Object[] opAddEntryArgs = new Object[] {param }; | |
| 307 | + // 返回参数类型,这个和axis1有点区别 | |
| 308 | + // invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名; | |
| 309 | + // 第二个参数表示要调用的WebService方法的参数值,参数类型为Object[]; | |
| 310 | + // 第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。 | |
| 311 | + // 当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{} | |
| 312 | + // 如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法, | |
| 313 | + // 该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同 | |
| 314 | + Class[] classes = new Class[] { String.class }; | |
| 315 | + result = serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0].toString(); | |
| 316 | + }catch (Exception e){ | |
| 317 | + e.printStackTrace(); | |
| 318 | + } | |
| 319 | + return result; | |
| 320 | + } | |
| 283 | 321 | } | ... | ... |
src/main/resources/static/pages/base/line/add.html
| ... | ... | @@ -228,7 +228,14 @@ |
| 228 | 228 | </div> |
| 229 | 229 | </div> |
| 230 | 230 | <!-- 是否营运 END --> |
| 231 | - | |
| 231 | + <!-- 权证车辆数 START --> | |
| 232 | + <div class="col-md-6"> | |
| 233 | + <label class="control-label col-md-5"> 权证车辆数 : </label> | |
| 234 | + <div class="col-md-4"> | |
| 235 | + <input type="text" class="form-control" name="warrantCar" id="warrantCarInput" placeholder="权证车辆数"> | |
| 236 | + </div> | |
| 237 | + </div> | |
| 238 | + <!-- 权证车辆数 END --> | |
| 232 | 239 | |
| 233 | 240 | </div> |
| 234 | 241 | <!-- 表单分组组件 form-group END --> | ... | ... |
src/main/resources/static/pages/base/line/details.html
| ... | ... | @@ -220,7 +220,14 @@ |
| 220 | 220 | </div> |
| 221 | 221 | </div> |
| 222 | 222 | <!-- 是否营运 END --> |
| 223 | - | |
| 223 | + <!-- 权证车辆数 START --> | |
| 224 | + <div class="col-md-6"> | |
| 225 | + <label class="control-label col-md-5"> 权证车辆数 : </label> | |
| 226 | + <div class="col-md-4"> | |
| 227 | + <input type="text" class="form-control" name="warrantCar" id="warrantCarInput" placeholder="权证车辆数"> | |
| 228 | + </div> | |
| 229 | + </div> | |
| 230 | + <!-- 权证车辆数 END --> | |
| 224 | 231 | |
| 225 | 232 | </div> |
| 226 | 233 | <!-- 表单分组组件 form-group END --> | ... | ... |
src/main/resources/static/pages/base/line/edit.html
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | <!-- 表单内容 START --> |
| 44 | 44 | <div class="form-body"> |
| 45 | 45 | <input type="hidden" name="id" id="lineId"> |
| 46 | - | |
| 46 | + <input type="hidden" name="inUse" id="inUse"> | |
| 47 | 47 | <!-- 表单分组组件 form-group START --> |
| 48 | 48 | <div class="form-group"> |
| 49 | 49 | <!-- 线路编码 (* 必填项) START --> |
| ... | ... | @@ -229,7 +229,14 @@ |
| 229 | 229 | </div> |
| 230 | 230 | <!-- 是否营运 END --> |
| 231 | 231 | |
| 232 | - | |
| 232 | + <!-- 权证车辆数 START --> | |
| 233 | + <div class="col-md-6"> | |
| 234 | + <label class="control-label col-md-5"> 权证车辆数 : </label> | |
| 235 | + <div class="col-md-4"> | |
| 236 | + <input type="text" class="form-control" name="warrantCar" id="warrantCarInput" placeholder="权证车辆数"> | |
| 237 | + </div> | |
| 238 | + </div> | |
| 239 | + <!-- 权证车辆数 END --> | |
| 233 | 240 | </div> |
| 234 | 241 | <!-- 表单分组组件 form-group END --> |
| 235 | 242 | <!-- 表单分组组件 form-group START --> | ... | ... |
src/main/resources/static/pages/base/line/js/line-add-form.js
| ... | ... | @@ -116,6 +116,7 @@ $(function(){ |
| 116 | 116 | 'carSumNumber' : {number : true,digits : true,maxlength: 8},// 车辆总数 必须输入合法的数字(负数,小数)。必须输入整数。最大长度. |
| 117 | 117 | 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. |
| 118 | 118 | 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. |
| 119 | + 'warrantCar' : {number : true,digits : true,maxlength: 8}, | |
| 119 | 120 | 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 |
| 120 | 121 | 'descriptions' : {maxlength: 200}// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 |
| 121 | 122 | }, | ... | ... |
src/main/resources/static/pages/base/line/js/line-edit-form.js
| ... | ... | @@ -171,6 +171,7 @@ |
| 171 | 171 | 'carSumNumber' : {number : true,digits : true,maxlength: 8},// 车辆总数 必须输入合法的数字(负数,小数)。必须输入整数。最大长度. |
| 172 | 172 | 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. |
| 173 | 173 | 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. |
| 174 | + 'warrantCar' : {number : true,digits : true,maxlength: 8}, | |
| 174 | 175 | 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 |
| 175 | 176 | 'descriptions' : {maxlength: 200}// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 |
| 176 | 177 | }, | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/base-fun.js
| ... | ... | @@ -382,13 +382,14 @@ var BaseFun = function() { |
| 382 | 382 | * |
| 383 | 383 | * |
| 384 | 384 | **/ |
| 385 | - abstractBcByWorkTime : function(bxlpbc , map , dataMap , saa , cara , bxrcObj , dgminpcs ,deletebcNum) { | |
| 385 | + abstractBcByWorkTime : function(bxlpbc , map , dataMap , saa , cara , bxrcObj , dgminpcs ,deletebcNum ,zwxeLpNum) { | |
| 386 | 386 | var rsultA = new Array() , dgzjsj = baseF.getDateTime('13:00'); |
| 387 | 387 | // 定义13:00 ~ 晚高峰开始以前剔除规则. 如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次. |
| 388 | 388 | var xwmaxtcbcNum = parseInt(( dataMap.wgfsjd[0].st - dgzjsj) / (60000 * saa[0].zzsj.dgzzsj)); |
| 389 | 389 | // 定义早高峰结束 ~ 13:00 剔除规则.如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次. |
| 390 | 390 | var swmaxtcbcNum = parseInt(( dgzjsj - dataMap.zgfsjd[0].ed) / (60000 * saa[0].zzsj.dgzzsj)); |
| 391 | 391 | var sumGs = 0; |
| 392 | + dgminpcs = zwxeLpNum==0 ? bxlpbc.length : dgminpcs; | |
| 392 | 393 | for(var a = 0 ; a < bxlpbc.length ; a++) { |
| 393 | 394 | // 定义该版型下对应的路牌的班次数组、班次数组长度、该路牌上是否有首末班车。 |
| 394 | 395 | var lpbc = bxlpbc[a].lpbc, lpbclen_ = lpbc.length; |
| ... | ... | @@ -396,6 +397,7 @@ var BaseFun = function() { |
| 396 | 397 | continue; |
| 397 | 398 | var isFlag = baseF.lpDownIsHaveFirstAndLastBc(lpbc , dataMap.smbcsjArr) , tcbcgzA = new Array(); |
| 398 | 399 | if(bxrcObj.type == '五工二休') { |
| 400 | + // continue; | |
| 399 | 401 | // 定义晚高峰后能剔除多少班次数. |
| 400 | 402 | var wgfhtcbcNum = parseInt(( dataMap.wgfzhsjd[0].ed - dataMap.wgfsjd[0].ed ) / (60000 * saa[0].zzsj.dgzzsj)); |
| 401 | 403 | if(isFlag) { |
| ... | ... | @@ -409,11 +411,12 @@ var BaseFun = function() { |
| 409 | 411 | // 剔除不在高峰时间段内的班次. |
| 410 | 412 | baseF.spliceBc02(lpbc , tcbcgzA , dataMap , 'desc' , false); |
| 411 | 413 | }else { |
| 414 | + //continue; | |
| 412 | 415 | // 单档 一个路牌一档劳动力 |
| 413 | 416 | if(bxlpbc[a].keepOff==1) { |
| 414 | 417 | // 如果低谷至少配车数大于零,则该班型下的路牌 存在一些 分班路牌,这里的分班 指的是 这个路牌先满足的前提条件就是 是单档。 |
| 415 | - // 为了满足工时的要求,在低谷断开一段时间. | |
| 416 | - if(dgminpcs > 0) { | |
| 418 | + // 为了满足工时的要求,在低谷断开一段时间.a <= dgminpcs | |
| 419 | + if(a <= dgminpcs) { | |
| 417 | 420 | if( a % 2 == 0) { |
| 418 | 421 | if(deletebcNum < swmaxtcbcNum || isFlag) { |
| 419 | 422 | tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum}); |
| ... | ... | @@ -433,10 +436,10 @@ var BaseFun = function() { |
| 433 | 436 | baseF.spliceBc02(lpbc , tcbcgzA , dataMap , true); |
| 434 | 437 | baseF.affimBzGs(lpbc , bxlpbc[a].bzgs, dataMap, saa , true , a); |
| 435 | 438 | // 该班型下的路牌 不存在分班路牌. |
| 436 | - }else if(dgminpcs == 0){ | |
| 439 | + }else { | |
| 437 | 440 | // 按规则剔除班次.不分班.路牌班次不会断开. |
| 438 | 441 | baseF.isdk02(lpbc , dataMap , saa , deletebcNum , false); |
| 439 | - //baseF.affimBzGs(lpbc , bxlpbc[a].bzgs, dataMap, saa , false , a); | |
| 442 | + baseF.affimBzGs(lpbc , bxlpbc[a].bzgs, dataMap, saa , false , a); | |
| 440 | 443 | } |
| 441 | 444 | // 双档 一个路牌两档劳动力 |
| 442 | 445 | }else if(bxlpbc[a].keepOff==2) { |
| ... | ... | @@ -459,8 +462,8 @@ var BaseFun = function() { |
| 459 | 462 | var markAfterGs = baseF.getSumWorkTime(tList , dataMap, saa); |
| 460 | 463 | var gsDx = parseFloat((markAfterGs - bzgs).toFixed(2)); |
| 461 | 464 | lpbc.sort(function(m,n){return m.fcno-n.fcno}); |
| 462 | - if(isOff) { | |
| 463 | - if(gsDx > 1.5) { | |
| 465 | + if(gsDx > 1.5) { | |
| 466 | + if(isOff) { | |
| 464 | 467 | var hoursDx = parseFloat((gsDx - 1.5).toFixed(2)); |
| 465 | 468 | // console.log(gsDx , hoursDx ,Math.ceil(hoursDx*60)); |
| 466 | 469 | var minueDx = Math.ceil(hoursDx*60); |
| ... | ... | @@ -471,14 +474,15 @@ var BaseFun = function() { |
| 471 | 474 | lpbc.splice( (s+1) , bs*2); |
| 472 | 475 | }else { |
| 473 | 476 | lpbc.splice( s , bs*2); |
| 477 | + lpbc[s-bs*2 +1].isfb = 1; | |
| 478 | + lpbc[s-bs*2 +1].STOPTIME = 0; | |
| 474 | 479 | } |
| 475 | 480 | break; |
| 476 | 481 | } |
| 477 | 482 | } |
| 483 | + }else { | |
| 478 | 484 | |
| 479 | 485 | } |
| 480 | - }else { | |
| 481 | - | |
| 482 | 486 | } |
| 483 | 487 | }, |
| 484 | 488 | |
| ... | ... | @@ -606,8 +610,10 @@ var BaseFun = function() { |
| 606 | 610 | // 判断是否在高峰时间范围.【true--表示在,false--表示不在】. |
| 607 | 611 | if(!baseF.isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) { |
| 608 | 612 | if(order == 'asc') { |
| 609 | - arr[a-1].isfb = isfb ? 1 : 0; | |
| 610 | - arr[a-1].STOPTIME = 0; | |
| 613 | + if(a>0) { | |
| 614 | + arr[a-1].isfb = isfb ? 1 : 0; | |
| 615 | + arr[a-1].STOPTIME = 0; | |
| 616 | + } | |
| 611 | 617 | }else if(order == 'desc') { |
| 612 | 618 | var index_ = a + tcbcgzA[t].deletebcNum * 2; |
| 613 | 619 | arr[index_].STOPTIME = 0; |
| ... | ... | @@ -636,6 +642,7 @@ var BaseFun = function() { |
| 636 | 642 | dgmaxtzsj = parseInt(map.dgmaxtzsj); |
| 637 | 643 | // 计算低谷最少配车数 (低谷上行行驶时间 + 低谷下行行驶时间 + 低谷最大停站时间*2) / 低谷最大发车间隙. |
| 638 | 644 | var dgminpcs = Math.round((dataMap.dgxxsjArr[0] + dataMap.dgxxsjArr[1] + dataMap.dgtzsj[0] + dataMap.dgtzsj[1]) / dgmaxfcjx); |
| 645 | + var zwxeLpNum = baseF.cuontZwxeLpNum(bxrclist); | |
| 639 | 646 | // var dgminpcs = 4; |
| 640 | 647 | // 定义返回数组. |
| 641 | 648 | var rs = new Array(); |
| ... | ... | @@ -710,12 +717,23 @@ var BaseFun = function() { |
| 710 | 717 | avgMakerCarNum = parseInt(avgMakerCarNum / bxlpbc.length); |
| 711 | 718 | // console.log(bxlpbc); |
| 712 | 719 | // 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. |
| 713 | - rs = rs.concat(baseF.abstractBcByWorkTime(bxlpbc , map , dataMap , saa , cara , bxrclist[x] , dgminpcs , avgMakerCarNum)); | |
| 720 | + rs = rs.concat(baseF.abstractBcByWorkTime(bxlpbc , map , dataMap , saa , cara , bxrclist[x] , dgminpcs , avgMakerCarNum ,zwxeLpNum)); | |
| 714 | 721 | } |
| 715 | 722 | } |
| 716 | 723 | return rs; |
| 717 | 724 | }, |
| 718 | 725 | |
| 726 | + cuontZwxeLpNum : function(list) { | |
| 727 | + var count = 0; | |
| 728 | + for(var c = 0 ; c<list.length;c++) { | |
| 729 | + if(list[c].type == '五工二休') { | |
| 730 | + count = list[c].fpcls; | |
| 731 | + break; | |
| 732 | + } | |
| 733 | + } | |
| 734 | + return count; | |
| 735 | + }, | |
| 736 | + | |
| 719 | 737 | /** |
| 720 | 738 | * @description (TODO) 更新路牌数组的路牌名称. |
| 721 | 739 | * @param cara 路牌数组 |
| ... | ... | @@ -762,7 +780,11 @@ var BaseFun = function() { |
| 762 | 780 | * 相同班型下的日平均工时满足 参数的日平均工时 范围在 [10分钟]内浮动. |
| 763 | 781 | * |
| 764 | 782 | * |
| 765 | - * 第七步 确定吃饭时间. | |
| 783 | + * 第七步 确定吃饭时间(吃时间初步定位20分钟). 一般情况下 | |
| 784 | + * | |
| 785 | + * 早餐 :10:15以后到12:30之间用餐的12:30是指用餐结束时间哦. | |
| 786 | + * | |
| 787 | + * 午餐 :一般在18:00以后在19:00以前. | |
| 766 | 788 | * |
| 767 | 789 | * 第八步 确定进出场、早晚例保时间. |
| 768 | 790 | * |
| ... | ... | @@ -771,19 +793,17 @@ var BaseFun = function() { |
| 771 | 793 | BXPplaceClassesTime02 : function(saa , cara , map , seMap , dataMap) { |
| 772 | 794 | |
| 773 | 795 | // 第一步 根据表单中的参数得到所有路牌下的班次数[从各路牌下的第一个班次发车时间 到 营运结束时间点并且是连续的班次数]. |
| 774 | - var jsonArray = baseF.GetByArgusInitAllLpDownedBcCollections(saa , cara , map , seMap , dataMap); | |
| 775 | - | |
| 796 | + var allLMapBc = baseF.GetByArgusInitAllLpDownedBcCollections(saa , cara , map , seMap , dataMap); | |
| 797 | + | |
| 776 | 798 | // 第二步 纵向调整 |
| 777 | - baseF.evenStartDepartSpace(jsonArray , dataMap); | |
| 799 | + baseF.evenStartDepartSpace(allLMapBc , dataMap); | |
| 778 | 800 | |
| 779 | 801 | // 第三步 剔除首末班车以外的班次,并确认首末班车. |
| 780 | - var markArray = baseF.markFirstAndLastBusAlsoDietNotInRangeBc(jsonArray , dataMap); | |
| 781 | - | |
| 802 | + var markArray = baseF.markFirstAndLastBusAlsoDietNotInRangeBc(allLMapBc , dataMap); | |
| 803 | + // return {'json':markArray,'bxrcgs':null}; | |
| 782 | 804 | // 第四步 横向调整 |
| 783 | 805 | baseF.resizeByPitStopTime(cara , markArray , dataMap); |
| 784 | - | |
| 785 | 806 | // return {'json':markArray,'bxrcgs':null}; |
| 786 | - | |
| 787 | 807 | /** |
| 788 | 808 | * 第五步 把班型合理的分配到各个路牌上. |
| 789 | 809 | * |
| ... | ... | @@ -797,7 +817,132 @@ var BaseFun = function() { |
| 797 | 817 | baseF.bxAlloTotLp(list,cara); |
| 798 | 818 | // 第六步 抽车来满足工时. |
| 799 | 819 | var tempA = baseF.abstractCar(list , markArray , cara , saa , dataMap , map); |
| 800 | - return {'json':baseF.addjcclcbc01(cara,tempA,dataMap,saa,map),'bxrcgs':null}; | |
| 820 | + // return {'json':tempA,'bxrcgs':null}; | |
| 821 | + // 第七步 确定吃饭时间. | |
| 822 | + baseF.markeEatTime(list , tempA , cara , saa , dataMap ,map); | |
| 823 | + baseF.resizeByPitStopTime(cara , tempA , dataMap); | |
| 824 | + baseF.updfcno01(tempA,0); | |
| 825 | + // return {'json':tempA,'bxrcgs':null}; | |
| 826 | + // 确定进出场、早晚例保时间.并返回班次数组集合 | |
| 827 | + return {'json':baseF.addInOutFieldBc(cara,tempA,dataMap,saa,map),'bxrcgs':null}; | |
| 828 | + }, | |
| 829 | + | |
| 830 | + markeEatTime : function(list , markArray , cara , saa , dataMap ,map) { | |
| 831 | + var cfddDm = parseInt(map.cfdd); | |
| 832 | + var mLen = markArray.length,cLen=cara.length,sLen =list.length ; | |
| 833 | + if(mLen<=0 || cLen<=0 || sLen<=0) | |
| 834 | + return false; | |
| 835 | + for(var c = 0 ; c<cLen ; c++) { | |
| 836 | + var lpNo=cara[c].lpNo,lpType; | |
| 837 | + for(var s = 0 ; s<sLen;s++ ) { | |
| 838 | + if(list[s].sslp[0].lpNo==lpNo) { | |
| 839 | + lpType = list[s].type; | |
| 840 | + break; | |
| 841 | + } | |
| 842 | + } | |
| 843 | + if(lpType=='五工二休') | |
| 844 | + continue; | |
| 845 | + var lpbcArray = new Array(); | |
| 846 | + for(var m = 0 ; m < mLen; m++) { | |
| 847 | + if(markArray[m].lpNo==lpNo) | |
| 848 | + lpbcArray.push(markArray[m]); | |
| 849 | + } | |
| 850 | + lpbcArray.sort(function(a,b){return a.fcint - b.fcint}); | |
| 851 | + baseF.isHaveBc(baseF.getDateTime('10:15') , baseF.getDateTime('12:15'),lpbcArray,cfddDm ,dataMap , cara[c] ,map, markArray, 0); | |
| 852 | + baseF.isHaveBc(baseF.getDateTime('18:00') , baseF.getDateTime('19:00'),lpbcArray,cfddDm ,dataMap , cara[c] ,map, markArray, 1); | |
| 853 | + } | |
| 854 | + }, | |
| 855 | + | |
| 856 | + isHaveBc : function(kssj , jssj , bcArray,cfddDm , dataMap , lpObj , map, markArray , cfIndex) { | |
| 857 | + var canCf = new Array(), countTzsj = 0, isLast = new Array(); | |
| 858 | + for(var b = 0 ; b<bcArray.length;b++) { | |
| 859 | + var bcddsj = baseF.getDateTime(bcArray[b].ARRIVALTIME); | |
| 860 | + if(bcddsj<=jssj) { | |
| 861 | + countTzsj += bcArray[b].STOPTIME; | |
| 862 | + canCf.push(bcArray[b]); | |
| 863 | + } | |
| 864 | + /*if(bcddsj>= kssj && bcddsj<=jssj) { | |
| 865 | + countTzsj += bcArray[b].STOPTIME; | |
| 866 | + canCf.push(bcArray[b]); | |
| 867 | + } | |
| 868 | + if(bcddsj < kssj) | |
| 869 | + isLast.push(bcArray[b]);*/ | |
| 870 | + } | |
| 871 | + if(canCf.length>0) { | |
| 872 | + console.log('countTzsj:' + countTzsj + 'length:' + canCf.length); | |
| 873 | + var fxDm = baseF.dirDmToIndex(canCf[canCf.length-1].xlDir); | |
| 874 | + // console.log(countTzsj , canCf[canCf.length-1].fcsj); | |
| 875 | + if(cfddDm == fxDm && canCf.length>2) { | |
| 876 | + var tzdx = canCf[canCf.length-2].STOPTIME - dataMap.zwcArr[cfIndex]; | |
| 877 | + canCf[canCf.length-2].STOPTIME = tzdx >= 0 ? tzdx : 0; | |
| 878 | + var obj = baseF.getbcObj( | |
| 879 | + baseF.getDateTime(canCf[canCf.length-2].ARRIVALTIME),dataMap.zwcArr[cfIndex],lpObj,dataMap.bcTypeArr.cf, | |
| 880 | + dataMap.dira[cfddDm], canCf[canCf.length-1].fcno+1 , 0 , map , 0 , null , null , null , 0 , 0); | |
| 881 | + markArray.push(obj); | |
| 882 | + if(tzdx<0) { | |
| 883 | + // canCf[canCf.length-1].STOPTIME = 0; | |
| 884 | + var fcsj = baseF.getDateTime(canCf[canCf.length-2].ARRIVALTIME); | |
| 885 | + fcsj.setMinutes(fcsj.getMinutes() + canCf[canCf.length-2].STOPTIME + dataMap.zwcArr[cfIndex]); | |
| 886 | + canCf[canCf.length-1].fcsj = baseF.getTimeStr(fcsj); | |
| 887 | + fcsj.setMinutes(fcsj.getMinutes() + canCf[canCf.length-1].bcsj); | |
| 888 | + canCf[canCf.length-1].ARRIVALTIME = baseF.getTimeStr(fcsj); | |
| 889 | + } | |
| 890 | + }else { | |
| 891 | + var obj = baseF.getbcObj( | |
| 892 | + baseF.getDateTime(canCf[canCf.length-1].ARRIVALTIME),dataMap.zwcArr[cfIndex],lpObj,dataMap.bcTypeArr.cf, | |
| 893 | + dataMap.dira[cfddDm], canCf[canCf.length-1].fcno+1 , 0 , map , 0 , null , null , null , 0 , 0); | |
| 894 | + markArray.push(obj); | |
| 895 | + | |
| 896 | + } | |
| 897 | + } | |
| 898 | + /*if(canCf.length>0) { | |
| 899 | + var fxDm = baseF.dirDmToIndex(canCf[canCf.length-1].xlDir); | |
| 900 | + // console.log(countTzsj , canCf[canCf.length-1].fcsj); | |
| 901 | + if(cfddDm == fxDm && canCf.length>2) { | |
| 902 | + var tzdx = canCf[canCf.length-2].STOPTIME - dataMap.zwcArr[cfIndex]; | |
| 903 | + canCf[canCf.length-2].STOPTIME = tzdx >= 0 ? tzdx : 0; | |
| 904 | + var obj = baseF.getbcObj( | |
| 905 | + baseF.getDateTime(canCf[canCf.length-2].ARRIVALTIME),dataMap.zwcArr[cfIndex],lpObj,dataMap.bcTypeArr.cf, | |
| 906 | + dataMap.dira[cfddDm], canCf[canCf.length-1].fcno+1 , 0 , map , 0 , null , null , null , 0 , 0); | |
| 907 | + markArray.push(obj); | |
| 908 | + if(tzdx<0) { | |
| 909 | + // canCf[canCf.length-1].STOPTIME = 0; | |
| 910 | + var fcsj = baseF.getDateTime(canCf[canCf.length-2].ARRIVALTIME); | |
| 911 | + fcsj.setMinutes(fcsj.getMinutes() + canCf[canCf.length-2].STOPTIME + dataMap.zwcArr[cfIndex]); | |
| 912 | + canCf[canCf.length-1].fcsj = baseF.getTimeStr(fcsj); | |
| 913 | + fcsj.setMinutes(fcsj.getMinutes() + canCf[canCf.length-1].bcsj); | |
| 914 | + canCf[canCf.length-1].ARRIVALTIME = baseF.getTimeStr(fcsj); | |
| 915 | + } | |
| 916 | + }else { | |
| 917 | + var obj = baseF.getbcObj( | |
| 918 | + baseF.getDateTime(canCf[canCf.length-1].ARRIVALTIME),dataMap.zwcArr[cfIndex],lpObj,dataMap.bcTypeArr.cf, | |
| 919 | + dataMap.dira[cfddDm], canCf[canCf.length-1].fcno+1 , 0 , map , 0 , null , null , null , 0 , 0); | |
| 920 | + markArray.push(obj); | |
| 921 | + | |
| 922 | + } | |
| 923 | + }else if(isLast.length>0) { | |
| 924 | + var fxDm = baseF.dirDmToIndex(isLast[isLast.length-1].xlDir); | |
| 925 | + if(cfddDm ==fxDm && canCf.length>2) { | |
| 926 | + var tzdx = canCf[canCf.length-2].STOPTIME - dataMap.zwcArr[cfIndex]; | |
| 927 | + canCf[canCf.length-2].STOPTIME = tzdx >= 0 ? tzdx : 0; | |
| 928 | + var obj = baseF.getbcObj( | |
| 929 | + baseF.getDateTime(isLast[isLast.length-2].ARRIVALTIME),dataMap.zwcArr[cfIndex],lpObj,dataMap.bcTypeArr.cf, | |
| 930 | + dataMap.dira[cfddDm], isLast[isLast.length-1].fcno+1 , 0 , map , 0 , null , null , null , 0 , 0); | |
| 931 | + markArray.push(obj); | |
| 932 | + if(tzdx<0) { | |
| 933 | + var fcsj = baseF.getDateTime(isLast[isLast.length-2].ARRIVALTIME); | |
| 934 | + fcsj.setMinutes(fcsj.getMinutes() + isLast[isLast.length-2].STOPTIME + dataMap.zwcArr[cfIndex]); | |
| 935 | + isLast[isLast.length-1].fcsj = baseF.getTimeStr(fcsj); | |
| 936 | + fcsj.setMinutes(fcsj.getMinutes() +isLast[isLast.length-1].bcsj); | |
| 937 | + isLast[isLast.length-1].ARRIVALTIME = baseF.getTimeStr(fcsj); | |
| 938 | + } | |
| 939 | + }else { | |
| 940 | + var obj = baseF.getbcObj( | |
| 941 | + baseF.getDateTime(isLast[isLast.length-1].ARRIVALTIME),dataMap.zwcArr[cfIndex],lpObj,dataMap.bcTypeArr.cf, | |
| 942 | + dataMap.dira[cfddDm], isLast[isLast.length-1].fcno+1 , 0 , map , 0 , null , null , null , 0 , 0); | |
| 943 | + markArray.push(obj); | |
| 944 | + } | |
| 945 | + }*/ | |
| 801 | 946 | }, |
| 802 | 947 | |
| 803 | 948 | /** |
| ... | ... | @@ -930,12 +1075,13 @@ var BaseFun = function() { |
| 930 | 1075 | var lLen = list.length , cLen = clzs.length; |
| 931 | 1076 | if(lLen<= 0 || cLen<=0 ) |
| 932 | 1077 | return false; |
| 933 | - // 最多车次与总车次的比例. | |
| 934 | - var blnum = Math.round(cLen/list[0].fpcls); | |
| 1078 | + list.sort(function(a,b){return a.fpcls-b.fpcls}); | |
| 935 | 1079 | // 定义已经分配出去的路牌. |
| 936 | 1080 | var rs = new Array(); |
| 937 | 1081 | // 遍历 |
| 938 | 1082 | for(var r = 0 ; r < lLen ; r++) { |
| 1083 | + // 车次与总车次的比例. | |
| 1084 | + var blnum = Math.round(cLen/list[r].fpcls); | |
| 939 | 1085 | // 得到没有分配出去的路牌. |
| 940 | 1086 | var dxa = baseF.chaji_array(clzs,rs); |
| 941 | 1087 | // 定义当前车次数. |
| ... | ... | @@ -943,29 +1089,32 @@ var BaseFun = function() { |
| 943 | 1089 | // 定义记录当前分割路牌的次数下标.分配到班型车次下的路牌数组. |
| 944 | 1090 | var index = 0 , sslp = new Array(); |
| 945 | 1091 | // 当前车次所有占比例. |
| 946 | - var tempint = parseInt(rsnum/blnum); | |
| 1092 | + //var tempint = parseInt(rsnum/blnum); | |
| 947 | 1093 | // 判断如果比例小1 则为当前车次数. |
| 948 | - blnum = tempint <= 1 ? rsnum : blnum; | |
| 1094 | + //blnum = tempint <= 1 ? rsnum : blnum; | |
| 949 | 1095 | // 判断当前班型车次数组下标值.如果为倒数第二个或者之前. |
| 950 | 1096 | if(r < lLen-1) { |
| 951 | 1097 | // 遍历 |
| 952 | - for(var c = 0 ; c < tempint ; c++) { | |
| 1098 | + for(var c = 0 ; c < rsnum ; c++) { | |
| 953 | 1099 | // 创建新的没有分配出去的路牌数组. |
| 954 | 1100 | var temp = dxa.concat(); |
| 955 | 1101 | // 创建切割路牌数组. |
| 956 | 1102 | var tagA = new Array(); |
| 957 | 1103 | // 判断切割的下标值是否小于等于路牌数组的倒数第二个或者之前. |
| 958 | 1104 | if(index <= (dxa.length-blnum) ) { |
| 959 | - tagA = temp.splice(index,blnum); | |
| 1105 | + /*tagA = temp.splice(index,blnum);*/ | |
| 1106 | + tagA = temp.splice(index,1); | |
| 960 | 1107 | }else { |
| 961 | - tagA = temp.splice((dxa.length-blnum),blnum); | |
| 1108 | + /*tagA = temp.splice((dxa.length-blnum),blnum);*/ | |
| 1109 | + tagA = temp.splice((dxa.length-blnum),1); | |
| 962 | 1110 | } |
| 963 | 1111 | // 组合切割路牌数组.赋值给已分配出去的路牌. |
| 964 | 1112 | rs = rs.concat(tagA); |
| 965 | 1113 | // 赋值给分配到班型车次下的路牌数组. |
| 966 | 1114 | sslp = sslp.concat(tagA); |
| 967 | 1115 | // 记录切割下标. |
| 968 | - index = index + 1 + blnum; | |
| 1116 | + index = index + blnum; | |
| 1117 | + // index = index + blnum; | |
| 969 | 1118 | } |
| 970 | 1119 | // 分配到班型车次下的路牌数组. |
| 971 | 1120 | list[r].sslp = sslp; |
| ... | ... | @@ -1084,6 +1233,7 @@ var BaseFun = function() { |
| 1084 | 1233 | if(len_>0 && bcCount > 0) { |
| 1085 | 1234 | // 定义该时间区间内的发车间隙. |
| 1086 | 1235 | var _fcjx = parseInt(Math.ceil(zzsj/bcCount)); |
| 1236 | + console.log(_fcjx); | |
| 1087 | 1237 | if(tagboolean) { |
| 1088 | 1238 | if(_fcjx>gfmaxfcjx) |
| 1089 | 1239 | _fcjx = 20; |
| ... | ... | @@ -1091,7 +1241,6 @@ var BaseFun = function() { |
| 1091 | 1241 | if(_fcjx>dgmaxfcjx) |
| 1092 | 1242 | _fcjx = dgmaxfcjx; |
| 1093 | 1243 | } |
| 1094 | - // console.log(_fcjx); | |
| 1095 | 1244 | // 定义修改班次的起始时间点. |
| 1096 | 1245 | var fcnosj = new Date(kssj); |
| 1097 | 1246 | for(var l = 0 ; l< len_ ; l++) { |
| ... | ... | @@ -1154,8 +1303,10 @@ var BaseFun = function() { |
| 1154 | 1303 | var sslpbcA = new Array(); |
| 1155 | 1304 | for(var j =0 ; j < tLen ; j++) { |
| 1156 | 1305 | // 判断当期遍历的班次是否属于当前的路牌.如果是则添加到当前的路牌班次数组集合. |
| 1157 | - if(tempa[j].lpNo == cara[t].lpNo) | |
| 1306 | + if(tempa[j].lpNo == cara[t].lpNo) { | |
| 1307 | + tempa[j].fcint = baseF.getDateTime(tempa[j].fcsj).getTime(); | |
| 1158 | 1308 | sslpbcA.push(tempa[j]); |
| 1309 | + } | |
| 1159 | 1310 | } |
| 1160 | 1311 | if(sslpbcA.length > 0) { |
| 1161 | 1312 | // 按发车时间顺序排序. |
| ... | ... | @@ -1166,10 +1317,10 @@ var BaseFun = function() { |
| 1166 | 1317 | var sgbcfcsj = baseF.getDateTime(sslpbcA[r+1].fcsj), |
| 1167 | 1318 | dqbcddsj = baseF.getDateTime(sslpbcA[r].ARRIVALTIME), |
| 1168 | 1319 | dqbcfcsj = baseF.getDateTime(sslpbcA[r].fcsj); |
| 1320 | + // 定义当前班次方向下标代码[0代表上行;1代表下行]. | |
| 1321 | + var cctag = baseF.dirDmToIndex(sslpbcA[r].xlDir); // dataMap.smbcsjArr | |
| 1169 | 1322 | // 定义每每相邻两个班次之间的时间差分钟数(也就是停站时间.) |
| 1170 | 1323 | var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000); |
| 1171 | - // 定义当前班次方向下标代码[0代表上行;1代表下行]. | |
| 1172 | - var cctag = baseF.dirDmToIndex(sslpbcA[r].xlDir); | |
| 1173 | 1324 | // 定义是否高峰 |
| 1174 | 1325 | var flag = baseF.isPeakTimeScope(dqbcfcsj , dataMap); |
| 1175 | 1326 | // 获取行驶时间. |
| ... | ... | @@ -1178,40 +1329,75 @@ var BaseFun = function() { |
| 1178 | 1329 | baseF.dirDmToIndex(sslpbcA[r].xlDir)); |
| 1179 | 1330 | normmintzsj = xxsj*0.1; |
| 1180 | 1331 | normmaxtzsj = xxsj*0.15; |
| 1332 | + var flag = false; | |
| 1181 | 1333 | // 如果小于零 |
| 1182 | - if(dxmin <= 0 && sslpbcA[r].isfb ==0 ) { | |
| 1334 | + if(dxmin < 0 && sslpbcA[r].isfb ==0) { | |
| 1183 | 1335 | // 根据不同时段的停站时间.重新赋值停站时间. |
| 1184 | - dxmin = flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; | |
| 1336 | + if(sslpbcA[r].bcType=='normal' && sslpbcA[r+1].bcType =='normal') | |
| 1337 | + dxmin = flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; | |
| 1338 | + else | |
| 1339 | + dxmin = 0; | |
| 1340 | + flag = true; | |
| 1341 | + }else if(dxmin==0){ | |
| 1342 | + dxmin = 0; | |
| 1343 | + flag = true; | |
| 1185 | 1344 | }else { |
| 1186 | 1345 | // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间. |
| 1187 | - if(dxmin >= dgmaxtzsj && dxmin < 180) { | |
| 1346 | + if(dxmin >= dgmaxtzsj && dxmin < 180 && sslpbcA[r].isfb==0) { | |
| 1188 | 1347 | dxmin = dgmaxtzsj; |
| 1348 | + flag = true; | |
| 1189 | 1349 | // 如果大于零 并且 小于等于行业标准的最小停站时间 |
| 1190 | 1350 | }else if(dxmin > 0 && dxmin <= normmintzsj ) { |
| 1191 | 1351 | // dxmin = dxmin; |
| 1352 | + flag = true; | |
| 1192 | 1353 | // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间 |
| 1193 | 1354 | }else if(dxmin > normmintzsj && dxmin <= normmaxtzsj ) { |
| 1194 | 1355 | // dxmin = dxmin; |
| 1356 | + flag = true; | |
| 1195 | 1357 | // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间 |
| 1196 | 1358 | }else if(dxmin > normmaxtzsj && dxmin < dgmaxtzsj ) { |
| 1197 | 1359 | // dxmin = dxmin; |
| 1360 | + flag = true; | |
| 1361 | + }else if (dxmin >= 180){ | |
| 1362 | + dxmin = 0; | |
| 1363 | + } | |
| 1364 | + } | |
| 1365 | + if(flag) { | |
| 1366 | + if(!baseF.isDirSmbc(baseF.dirDmToIndex(sslpbcA[r+1].xlDir) , sslpbcA[r+1].fcsj , dataMap)) { | |
| 1367 | + // 修改当前班次的停站时间. | |
| 1368 | + sslpbcA[r].STOPTIME = parseInt(dxmin) ; | |
| 1369 | + // 当前班次的到达时间 + 停站时间 作为下一个班次的发车时间. | |
| 1370 | + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin); | |
| 1371 | + // 修改下一个班次的发车时间. | |
| 1372 | + sslpbcA[r+1].fcsj = baseF.getTimeStr(dqbcddsj); | |
| 1373 | + // 下一个班次的发车时间 + 行驶时间 作为下一个班次的到达时间. | |
| 1374 | + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + sslpbcA[r+1].bcsj); | |
| 1375 | + // 修改下一个班次的到达时间. | |
| 1376 | + sslpbcA[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj); | |
| 1377 | + }else { | |
| 1378 | + if(r>0) { | |
| 1379 | + // 修改当前班次的停站时间. | |
| 1380 | + sslpbcA[r].STOPTIME = parseInt(dxmin) ; | |
| 1381 | + sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].STOPTIME); | |
| 1382 | + sslpbcA[r].ARRIVALTIME = baseF.getTimeStr(sgbcfcsj); | |
| 1383 | + sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].bcsj); | |
| 1384 | + sslpbcA[r].fcsj = baseF.getTimeStr(sgbcfcsj); | |
| 1385 | + sslpbcA[r-1].STOPTIME = parseInt( ( sgbcfcsj - baseF.getDateTime(sslpbcA[r-1].ARRIVALTIME))/60000); | |
| 1386 | + } | |
| 1198 | 1387 | } |
| 1199 | 1388 | } |
| 1200 | - // 修改当前班次的停站时间. | |
| 1201 | - sslpbcA[r].STOPTIME = parseInt(dxmin) ; | |
| 1202 | - // 当前班次的到达时间 + 停站时间 作为下一个班次的发车时间. | |
| 1203 | - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin); | |
| 1204 | - // 修改下一个班次的发车时间. | |
| 1205 | - sslpbcA[r+1].fcsj = baseF.getTimeStr(dqbcddsj); | |
| 1206 | - // 下一个班次的发车时间 + 行驶时间 作为下一个班次的到达时间. | |
| 1207 | - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + sslpbcA[r+1].bcsj); | |
| 1208 | - // 修改下一个班次的到达时间. | |
| 1209 | - sslpbcA[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj); | |
| 1210 | 1389 | } |
| 1211 | 1390 | } |
| 1212 | 1391 | } |
| 1213 | 1392 | }, |
| 1214 | 1393 | |
| 1394 | + isDirSmbc : function(dirDm , fcsj , dataMap) { | |
| 1395 | + var falg = false; | |
| 1396 | + if(fcsj == dataMap.smbcsjArr[dirDm].kssj || fcsj == dataMap.smbcsjArr[dirDm].jssj) | |
| 1397 | + falg = true; | |
| 1398 | + return falg; | |
| 1399 | + }, | |
| 1400 | + | |
| 1215 | 1401 | BXPplaceClassesTime01 : function(saa,cara,map,seMap,dataMap,lpNoA) { |
| 1216 | 1402 | var jsonArray = baseF.plgfbc(saa,cara,map,seMap,dataMap); |
| 1217 | 1403 | var list = baseF.splitBxRc(map.bxrc); |
| ... | ... | @@ -1297,10 +1483,19 @@ var BaseFun = function() { |
| 1297 | 1483 | dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap);*/ |
| 1298 | 1484 | var rsjar = baseF.tzsztest(cara,jar3,dataMap); |
| 1299 | 1485 | // return {'json':rsjar,'bxrcgs':bxrcgs}; |
| 1300 | - return {'json':baseF.addjcclcbc01(cara,rsjar,dataMap,saa,map),'bxrcgs':bxrcgs}; | |
| 1486 | + return {'json':baseF.addInOutFieldBc(cara,rsjar,dataMap,saa,map),'bxrcgs':bxrcgs}; | |
| 1301 | 1487 | }, |
| 1302 | 1488 | |
| 1303 | - addjcclcbc01 : function(cara,rsjar,dataMap,saa,map) { | |
| 1489 | + /** | |
| 1490 | + * @description (TODO) 添加进出场班次. | |
| 1491 | + * @param cara 路牌 | |
| 1492 | + * @param rsjar 班次集合数组 | |
| 1493 | + * @param dataMap dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 1494 | + * @param saa 封装的一些 停站时间、周转时间、行驶时间、行驶里程等. | |
| 1495 | + * @param map 表单参数对象. | |
| 1496 | + * | |
| 1497 | + */ | |
| 1498 | + addInOutFieldBc : function(cara,rsjar,dataMap,saa,map) { | |
| 1304 | 1499 | var resultJA = new Array(),bcs = 0; |
| 1305 | 1500 | for(var m = 0 ; m < cara.length; m++) { |
| 1306 | 1501 | // 获取路牌编号. |
| ... | ... | @@ -1319,7 +1514,7 @@ var BaseFun = function() { |
| 1319 | 1514 | lpbc_.sort(function(a,b){return a.fcno-b.fcno}); |
| 1320 | 1515 | baseF.addcfbc01(lpbc_,dataMap,map); |
| 1321 | 1516 | // 按照发车序号顺序排序. |
| 1322 | - // lpbc_.sort(function(a,b){return a.fcno-b.fcno}); | |
| 1517 | + lpbc_.sort(function(a,b){return a.fcno-b.fcno}); | |
| 1323 | 1518 | var tt = baseF.addjclbbc01(lpbc_,dataMap,saa[0].lbsj,map); |
| 1324 | 1519 | bcs = baseF.updfcno01(tt,bcs); |
| 1325 | 1520 | resultJA = resultJA.concat(tt); |
| ... | ... | @@ -1344,8 +1539,8 @@ var BaseFun = function() { |
| 1344 | 1539 | addcfbc01 : function(lpbcar,dataMap,map) { |
| 1345 | 1540 | var gs = 0 ,sicftag = true; |
| 1346 | 1541 | for(var g = 0 ; g <lpbcar.length-1;g++ ) { |
| 1347 | - if( parseInt((baseF.getDateTime(lpbcar[g+1].fcsj) - baseF.getDateTime(lpbcar[g].ARRIVALTIME))/60000) > 80 | |
| 1348 | - && lpbcar[g].STOPTIME==0 ) { | |
| 1542 | + if( parseInt((baseF.getDateTime(lpbcar[g+1].fcsj) - baseF.getDateTime(lpbcar[g].ARRIVALTIME))/60000) > 180 | |
| 1543 | + && lpbcar[g].STOPTIME==0 && lpbcar[g].bcType =='normal' ) { | |
| 1349 | 1544 | lpbcar[g].isfb = 1; |
| 1350 | 1545 | } |
| 1351 | 1546 | /*gs = gs + lpbcar[g].bcsj + lpbcar[g].STOPTIME; |
| ... | ... | @@ -1767,25 +1962,7 @@ var BaseFun = function() { |
| 1767 | 1962 | dqbcfcsj,dataMap.ccsjArr[fxdm],car,dataMap.bcTypeArr.out, |
| 1768 | 1963 | dataMap.dira[fxdm],2,dataMap.cclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 出场班次 |
| 1769 | 1964 | fcno ++; |
| 1770 | - }/*else if(b > 0 && b < bc.length-1){ | |
| 1771 | - var jcbckssj = baseF.getDateTime(bc[b].ARRIVALTIME) | |
| 1772 | - var ccbckssj = baseF.getDateTime(bc[b+1].fcsj) | |
| 1773 | - var dx = parseInt((ccbckssj - jcbckssj)/60000); | |
| 1774 | - if(bc[b].STOPTIME==0) { | |
| 1775 | - // bc[b].STOPTIME = 0; | |
| 1776 | - //console.log(bc[b].fcno); | |
| 1777 | - var fcno_ = bc[b].fcno + 2; | |
| 1778 | - stas = true; | |
| 1779 | - // console.log(bc[b],bc[b+1],b); | |
| 1780 | - result.push(baseF.getbcObj( | |
| 1781 | - jcbckssj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_, | |
| 1782 | - dataMap.dira[fxdm],fcno_++,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次 | |
| 1783 | - var ccfx = baseF.dirDmToIndex(bc[b+1].xlDir); | |
| 1784 | - result.push(baseF.getbcObj( | |
| 1785 | - ccbckssj,dataMap.ccsjArr[ccfx],car,dataMap.bcTypeArr.out, | |
| 1786 | - dataMap.dira[ccfx],fcno_++,dataMap.cclcArr[ccfx],gatps,0,dataMap.qdzArr[ccfx],null,null,0,0));// 出场班次 | |
| 1787 | - } | |
| 1788 | - }*/else if(b==bc.length-1){ | |
| 1965 | + }else if(b==bc.length-1){ | |
| 1789 | 1966 | var fcno_ = dxfno + 2; |
| 1790 | 1967 | var qdbcddsj = baseF.getDateTime(bc[b].ARRIVALTIME); |
| 1791 | 1968 | result.push(baseF.getbcObj( | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/d3.relationshipgraph.js
| ... | ... | @@ -968,7 +968,7 @@ var RelationshipGraph = function () { |
| 968 | 968 | for(var z = 0 ;z < tza.length;z++) { |
| 969 | 969 | if(tza[z].lpNo == lpNo && tza[z].bcsj >0 ) { |
| 970 | 970 | timeNum = timeNum + tza[z].bcsj + tza[z].STOPTIME; |
| 971 | - if( tza[z].bcType !='bd' && tza[z].bcType !='lc' ) { | |
| 971 | + if( tza[z].bcType !='bd' && tza[z].bcType !='lc' && tza[z].bcType !='cf') { | |
| 972 | 972 | tempNum ++; |
| 973 | 973 | } |
| 974 | 974 | } |
| ... | ... | @@ -983,32 +983,6 @@ var RelationshipGraph = function () { |
| 983 | 983 | $(textNodes[1]).text("总班次:"+(tempNum)); |
| 984 | 984 | // $_this.pptjbx($("."+className).children("rect")[2],zgs*1,lpNo,$_this); |
| 985 | 985 | } |
| 986 | - /*for(var a=0;a<array.length;a++) { | |
| 987 | - debugger; | |
| 988 | - var tempNum = 0,timeNum = 0,lpNo = ''; | |
| 989 | - for(var g = 0 ; g <gdata.length;g++) { | |
| 990 | - var temp_i = parseInt(d3.select(gdata[g]).attr('y'))-this.configuration.offsetY; | |
| 991 | - if(temp_i<array[a] && temp_i>minValue) { | |
| 992 | - var parentNodeCName = d3.select(gdata[g]).attr('id'), | |
| 993 | - // nodes = d3.selectAll('text[parent-node='+ parentNodeCName +']')[0] | |
| 994 | - $_d = d3.select(gdata[g]).data()[0]; | |
| 995 | - lpNo = $_d.lpNo; | |
| 996 | - timeNum = timeNum + parseInt($_d.STOPTIME) + parseInt($_d.bcsj); | |
| 997 | - if($_d.bcType!='bd' && $_d.bcType!='lc' && $_d.bcType!='cf' && $_d.bcsj>0) | |
| 998 | - tempNum++; | |
| 999 | - } | |
| 1000 | - } | |
| 1001 | - minValue = array[a]; | |
| 1002 | - var className = 'statis_container_' + array[a]; | |
| 1003 | - var textNodes = $("."+className).children("text"); | |
| 1004 | - var hours = parseInt(timeNum/60); | |
| 1005 | - var mimus = timeNum%60,zgs = hours + (mimus==0? "": "." + mimus); | |
| 1006 | - var zgs = parseFloat((timeNum/60).toFixed(2)); | |
| 1007 | - var zgs = timeNum; | |
| 1008 | - $(textNodes[0]).text("总工时:" + zgs); | |
| 1009 | - $(textNodes[1]).text("总班次:"+(tempNum)); | |
| 1010 | - $_this.pptjbx($("."+className).children("rect")[2],zgs*1,lpNo,$_this); | |
| 1011 | - }*/ | |
| 1012 | 986 | } |
| 1013 | 987 | |
| 1014 | 988 | }, { |
| ... | ... | @@ -3027,7 +3001,9 @@ var RelationshipGraph = function () { |
| 3027 | 3001 | nowDate.setMinutes(parseInt(tm.min)+d.bcsj);// 10.3.1、设置分钟. |
| 3028 | 3002 | // 9.1.4、修改当前班次的到达时间. |
| 3029 | 3003 | d.ARRIVALTIME = BaseFun.getTimeStr(nowDate); |
| 3030 | - d.STOPTIME = d.isfb ==1 ? 0 : parseInt((BaseFun.getDateTime(nodeContext.nextData.fcsj) - BaseFun.getDateTime(d.ARRIVALTIME))/ 60000); | |
| 3004 | + d.STOPTIME = d.isfb == 1 ? 0 : parseInt((BaseFun.getDateTime(nodeContext.nextData.fcsj) - BaseFun.getDateTime(d.ARRIVALTIME))/ 60000); | |
| 3005 | + // parseInt((BaseFun.getDateTime(nodeContext.nextData.fcsj) - BaseFun.getDateTime(d.ARRIVALTIME))/ 60000) | |
| 3006 | + | |
| 3031 | 3007 | /** |
| 3032 | 3008 | * 9.2、修改元素沿X轴方向的X坐标属性值. |
| 3033 | 3009 | * |
| ... | ... | @@ -3144,6 +3120,38 @@ var RelationshipGraph = function () { |
| 3144 | 3120 | } |
| 3145 | 3121 | } |
| 3146 | 3122 | }else { |
| 3123 | + var dataMap = $_GlobalGraph.configuration.dataMap; | |
| 3124 | + // 定义是否高峰 | |
| 3125 | + var flag = BaseFun.isPeakTimeScope(BaseFun.getDateTime(nodeContext.lastData.fcsj) , dataMap); | |
| 3126 | + // 定义当前班次方向下标代码[0代表上行;1代表下行]. | |
| 3127 | + var cctag = BaseFun.dirDmToIndex(nodeContext.lastData.xlDir); | |
| 3128 | + // 获取行驶时间. | |
| 3129 | + var xxsj = BaseFun.getByDirTravelTime(dataMap.zgfsjd , dataMap.wgfsjd , nowDate, dataMap.pcxssjArr , dataMap.gfxxsjArr , cctag); | |
| 3130 | + var normmintzsj = xxsj*0.1,normmaxtzsj = xxsj*0.15; | |
| 3131 | + // 如果小于零 | |
| 3132 | + if(dxMinues <= 0 && nodeContext.lastData.isfb ==0 ) { | |
| 3133 | + // 根据不同时段的停站时间.重新赋值停站时间. | |
| 3134 | + dxmin = flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; | |
| 3135 | + }else { | |
| 3136 | + // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间. | |
| 3137 | + if(dxMinues >= dataMap.dgmaxtzsj && dxMinues < 180) { | |
| 3138 | + dxMinues = dataMap.dgmaxtzsj; | |
| 3139 | + // 如果大于零 并且 小于等于行业标准的最小停站时间 | |
| 3140 | + }else if(dxMinues > 0 && dxMinues <= normmintzsj ) { | |
| 3141 | + // dxmin = dxmin; | |
| 3142 | + // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间 | |
| 3143 | + }else if(dxMinues > normmintzsj && dxMinues <= normmaxtzsj ) { | |
| 3144 | + // dxmin = dxmin; | |
| 3145 | + // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间 | |
| 3146 | + }else if(dxMinues > normmaxtzsj && dxMinues < dataMap.dgmaxtzsj ) { | |
| 3147 | + // dxmin = dxmin; | |
| 3148 | + }else if (dxMinues >= 180){ | |
| 3149 | + dxMinues = 0; | |
| 3150 | + } | |
| 3151 | + } | |
| 3152 | + // 修改当前班次的停站时间. | |
| 3153 | + // nodeContext.lastData.STOPTIME = dxMinues; | |
| 3154 | + // d.STOPTIME = parseInt(dxmin) ; | |
| 3147 | 3155 | /** |
| 3148 | 3156 | * 11.2.1、如果是正常班次 |
| 3149 | 3157 | * |
| ... | ... | @@ -3370,11 +3378,41 @@ var RelationshipGraph = function () { |
| 3370 | 3378 | } |
| 3371 | 3379 | } |
| 3372 | 3380 | }else { |
| 3381 | + var dxMinues = parseInt((BaseFun.getDateTime(d.fcsj) - BaseFun.getDateTime(_obj.lastData.ARRIVALTIME)) / 60000); | |
| 3373 | 3382 | /** |
| 3374 | 3383 | * 1.5.6、修改上个元素班次与当前班次的停站时间和text元素的文本属性值. |
| 3375 | 3384 | * |
| 3376 | 3385 | **/ |
| 3377 | - _obj.lastData.STOPTIME = parseInt((BaseFun.getDateTime(d.fcsj) - BaseFun.getDateTime(_obj.lastData.ARRIVALTIME)) / 60000); | |
| 3386 | + var dataMap = $_GlobalGraph.configuration.dataMap; | |
| 3387 | + // 定义是否高峰 | |
| 3388 | + var flag = BaseFun.isPeakTimeScope(BaseFun.getDateTime(nodeContext.lastData.fcsj) , dataMap); | |
| 3389 | + // 定义当前班次方向下标代码[0代表上行;1代表下行]. | |
| 3390 | + var cctag = BaseFun.dirDmToIndex(nodeContext.lastData.xlDir); | |
| 3391 | + // 获取行驶时间. | |
| 3392 | + var xxsj = BaseFun.getByDirTravelTime(dataMap.zgfsjd , dataMap.wgfsjd , nowDate, dataMap.pcxssjArr , dataMap.gfxxsjArr , cctag); | |
| 3393 | + var normmintzsj = xxsj*0.1,normmaxtzsj = xxsj*0.15; | |
| 3394 | + // 如果小于零 | |
| 3395 | + if(dxMinues <= 0 && nodeContext.lastData.isfb ==0 ) { | |
| 3396 | + // 根据不同时段的停站时间.重新赋值停站时间. | |
| 3397 | + dxmin = flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; | |
| 3398 | + }else { | |
| 3399 | + // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间. | |
| 3400 | + if(dxMinues >= dataMap.dgmaxtzsj && dxMinues < 180) { | |
| 3401 | + dxMinues = dataMap.dgmaxtzsj; | |
| 3402 | + // 如果大于零 并且 小于等于行业标准的最小停站时间 | |
| 3403 | + }else if(dxMinues > 0 && dxMinues <= normmintzsj ) { | |
| 3404 | + // dxmin = dxmin; | |
| 3405 | + // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间 | |
| 3406 | + }else if(dxMinues > normmintzsj && dxMinues <= normmaxtzsj ) { | |
| 3407 | + // dxmin = dxmin; | |
| 3408 | + // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间 | |
| 3409 | + }else if(dxMinues > normmaxtzsj && dxMinues < dataMap.dgmaxtzsj ) { | |
| 3410 | + // dxmin = dxmin; | |
| 3411 | + }else if (dxMinues >= 180){ | |
| 3412 | + dxMinues = 0; | |
| 3413 | + } | |
| 3414 | + } | |
| 3415 | + _obj.lastData.STOPTIME = dxMinues; | |
| 3378 | 3416 | for(var t = 0 ; t < _obj.lastTextNodes.length ;t++) { |
| 3379 | 3417 | var nowTextNode = d3.select(_obj.lastTextNodes[t]); |
| 3380 | 3418 | if(nowTextNode.attr('text-type')=='gap') | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/gantt.js
| ... | ... | @@ -420,7 +420,8 @@ |
| 420 | 420 | * @return 返回甘特图的参数配置信息. |
| 421 | 421 | * */ |
| 422 | 422 | function getGraphArgus(p) { |
| 423 | - var MULTIPLE = Math.round(105/parseInt(p.stopAraay[0].sxsj)) >=4 ? Math.round(90/parseInt(p.stopAraay[0].sxsj)) : Math.round(90/parseInt(p.stopAraay[0].sxsj)) *2; | |
| 423 | + var bs = p.stopAraay[0].sxsj > 40 ? 4 : 2; | |
| 424 | + var MULTIPLE = Math.round(105/parseInt(p.stopAraay[0].sxsj)) >3 ? Math.round(90/parseInt(p.stopAraay[0].sxsj)) : Math.round(90/parseInt(p.stopAraay[0].sxsj)) *bs; | |
| 424 | 425 | var VALUEKEYNAME = 'Worldwide Gross' , |
| 425 | 426 | DXHOURS = 24,MINUTE = 60,WIDTH = DXHOURS*MINUTE,MARGINLEFT = 380,HEIGHT = p.yAxisCarArray.length*60 + 240, |
| 426 | 427 | MARGINBOTTOM = 240,OFFSETX = 90,OFFSETY = 180,OFFSETUPY = 120,OFFSETDOWNY = 60, | ... | ... |
src/main/resources/static/pages/excep/speedingListmh.html
| ... | ... | @@ -128,9 +128,9 @@ |
| 128 | 128 | {{obj.vehicle}} |
| 129 | 129 | </td> |
| 130 | 130 | <td> |
| 131 | - {{if obj.upDown==0}} | |
| 131 | + {{if obj.up_down==0}} | |
| 132 | 132 | 上行 |
| 133 | - {{else if obj.upDown==1}} | |
| 133 | + {{else if obj.up_down==1}} | |
| 134 | 134 | 下行 |
| 135 | 135 | {{else}} |
| 136 | 136 | 无效 |
| ... | ... | @@ -249,7 +249,7 @@ $(function(){ |
| 249 | 249 | params['order'] = 'lastLoginDate'; |
| 250 | 250 | params['page'] = page; |
| 251 | 251 | var i = layer.load(2); |
| 252 | - $get('/speeding/pagequery' ,params, function(data){ | |
| 252 | + $get('/gps/pagequery' ,params, function(data){ | |
| 253 | 253 | var bodyHtm = template('speeding_list_temp', {list: data.dataList}); |
| 254 | 254 | $('#datatable_speeding tbody').html(bodyHtm) |
| 255 | 255 | .find('.icheck').iCheck(icheckOptions) | ... | ... |
src/main/resources/static/pages/excep/speedingMap.html
| ... | ... | @@ -19,7 +19,6 @@ |
| 19 | 19 | overflow: hidden; |
| 20 | 20 | } |
| 21 | 21 | </style> |
| 22 | -<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script> | |
| 23 | 22 | <script type="text/javascript" src="/pages/excep/js/speeding-map.js"></script> |
| 24 | 23 | <script type="text/javascript"> |
| 25 | 24 | $(function(){ |
| ... | ... | @@ -31,55 +30,71 @@ $(function(){ |
| 31 | 30 | var lat = dataArr[4];//起点纬度 |
| 32 | 31 | var endLon = dataArr[5];//终点经度 |
| 33 | 32 | var endLat = dataArr[6];//终点纬度 |
| 34 | - var Points = []; | |
| 33 | + var pointObj;//坐标和速度组成的对象 | |
| 34 | + var Points = [];//坐标和速度对象的集合 | |
| 35 | + var coordinateArr = [];//坐标点数组 | |
| 35 | 36 | $.ajax({ |
| 36 | 37 | type: "GET", |
| 37 | 38 | async:false, |
| 38 | 39 | url: '/gps/findPosition', |
| 39 | 40 | data: {vehicle:vehicle,startdate:startdate,enddate:enddate}, |
| 40 | 41 | success: function(data){ |
| 41 | - console.log("123"+data); | |
| 42 | 42 | $.each(data,function(i,item){ |
| 43 | - console.log(item); | |
| 44 | 43 | if(item.lon>1 && item.lat>1){ |
| 45 | - var point = new BMap.Point(item.lon,item.lat); | |
| 46 | - Points.push(point); | |
| 44 | + pointObj = new Object(); | |
| 45 | + pointObj.coordinate = new BMap.Point(item.lon,item.lat); | |
| 46 | + pointObj.speed = item.speed; | |
| 47 | + Points.push(pointObj); | |
| 47 | 48 | } |
| 48 | 49 | }); |
| 49 | 50 | } |
| 50 | - }); | |
| 51 | + }); | |
| 51 | 52 | setTimeout(function(){ |
| 52 | 53 | var map = SpeedingMap.init();//创建地图 |
| 53 | 54 | var myP1 = new BMap.Point(lon,lat); //起点 |
| 54 | 55 | var myP2 = new BMap.Point(endLon,endLat); //终点 |
| 55 | - map.centerAndZoom(myP1,18);//地图中心点坐标 | |
| 56 | - console.log(Points); | |
| 57 | - var polyline = new BMap.Polyline(Points, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5}); //创建折线 | |
| 56 | + var centerLon = (parseFloat(lon)+parseFloat(endLon))/2; | |
| 57 | + var centerLat = (parseFloat(lat)+parseFloat(endLat))/2; | |
| 58 | + map.centerAndZoom(new BMap.Point(centerLon,centerLat),18);//地图中心点坐标 | |
| 59 | + | |
| 60 | + for(i in Points){ | |
| 61 | + coordinateArr.push(Points[i].coordinate); | |
| 62 | + } | |
| 63 | + var polyline = new BMap.Polyline(coordinateArr, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5});//创建折线 | |
| 58 | 64 | var myIcon = new BMap.Icon("/pages/excep/img/bus.png", new BMap.Size(32, 70), {//小车图片 |
| 59 | 65 | imageOffset: new BMap.Size(5,20) //图片的偏移量。为了是图片底部中心对准坐标点。 |
| 60 | 66 | }); |
| 67 | + | |
| 61 | 68 | $(document).on('click', '#run', function() { |
| 62 | 69 | map.clearOverlays();//清空上一次的轨迹 |
| 63 | 70 | map.addOverlay(polyline);//增加折线 |
| 64 | - var paths = Points.length;//获得有几个点 | |
| 65 | - var carMk = new BMap.Marker(Points[0],{icon:myIcon}); | |
| 71 | + var paths = coordinateArr.length;//获得有几个点 | |
| 72 | + var carMk = new BMap.Marker(coordinateArr[0],{icon:myIcon}); | |
| 66 | 73 | map.addOverlay(carMk); |
| 74 | + var sContent ="车辆即时速度:"+Points[0].speed; | |
| 75 | + var infoWindow = new BMap.InfoWindow(sContent);// 创建信息窗口对象 | |
| 76 | + map.openInfoWindow(infoWindow,coordinateArr[0]); //开启信息窗口 | |
| 67 | 77 | i=0; |
| 68 | - function resetMkPoint(i){ | |
| 69 | - carMk.setPosition(Points[i]); | |
| 70 | - if(i < paths){ | |
| 71 | - setTimeout(function(){ | |
| 72 | - i++; | |
| 73 | - resetMkPoint(i); | |
| 74 | - },100); | |
| 75 | - } | |
| 78 | + | |
| 79 | + setTimeout(function(){ | |
| 80 | + resetMkPoint(0); | |
| 81 | + },500); | |
| 82 | + | |
| 83 | + function resetMkPoint(i){ | |
| 84 | + carMk.setPosition(coordinateArr[i]); | |
| 85 | + sContent ="车辆即时速度是:"+Points[i].speed; | |
| 86 | + infoWindow = new BMap.InfoWindow(sContent);// 创建信息窗口对象 | |
| 87 | + map.openInfoWindow(infoWindow,coordinateArr[i]); //开启信息窗口 | |
| 88 | + if(i < paths-1){ | |
| 89 | + setTimeout(function(){ | |
| 90 | + i++; | |
| 91 | + resetMkPoint(i); | |
| 92 | + },500); | |
| 76 | 93 | } |
| 77 | - setTimeout(function(){ | |
| 78 | - resetMkPoint(0); | |
| 79 | - },100) | |
| 80 | - }); | |
| 94 | + }; | |
| 81 | 95 | }); |
| 82 | -}, 100); | |
| 96 | +}, 500); | |
| 97 | + }); | |
| 83 | 98 | </script> |
| 84 | 99 | |
| 85 | 100 | ... | ... |
src/main/resources/static/pages/forms/mould/countByBus1.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/mould/countByBus2.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/mould/countByLine.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/statement/account.html
| ... | ... | @@ -86,7 +86,7 @@ |
| 86 | 86 | locale : 'zh-cn' |
| 87 | 87 | }); |
| 88 | 88 | |
| 89 | - $.get('/basic/lineCode2Name',function(result){ | |
| 89 | + /* $.get('/basic/lineCode2Name',function(result){ | |
| 90 | 90 | var data=[]; |
| 91 | 91 | |
| 92 | 92 | for(var code in result){ |
| ... | ... | @@ -94,7 +94,29 @@ |
| 94 | 94 | } |
| 95 | 95 | initPinYinSelect2('#line',data,''); |
| 96 | 96 | |
| 97 | - }) | |
| 97 | + }) */ | |
| 98 | + | |
| 99 | + $.get('/report/lineList',function(xlList){ | |
| 100 | + var data = []; | |
| 101 | +// data.push({id: " ", text: "全部线路"}); | |
| 102 | + $.get('/user/companyData', function(result){ | |
| 103 | + for(var i = 0; i < result.length; i++){ | |
| 104 | + var companyCode = result[i].companyCode; | |
| 105 | + var children = result[i].children; | |
| 106 | + for(var j = 0; j < children.length; j++){ | |
| 107 | + var code = children[j].code; | |
| 108 | + for(var k=0;k < xlList.length;k++ ){ | |
| 109 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 110 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 111 | +// tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 112 | + } | |
| 113 | + } | |
| 114 | + } | |
| 115 | + } | |
| 116 | + initPinYinSelect2('#line',data,''); | |
| 117 | + | |
| 118 | + }); | |
| 119 | + }); | |
| 98 | 120 | //重置 |
| 99 | 121 | $('#czcl').on('click', function () { |
| 100 | 122 | $('#code').val('').change(); | ... | ... |
src/main/resources/static/pages/forms/statement/busInterval.html
| ... | ... | @@ -217,42 +217,51 @@ |
| 217 | 217 | } |
| 218 | 218 | } |
| 219 | 219 | $('#subCompany').html(options); |
| 220 | - initXl(); | |
| 221 | 220 | } |
| 222 | 221 | |
| 223 | - $("#subCompany").on("change",initXl); | |
| 224 | - function initXl(){ | |
| 225 | - var data=[]; | |
| 226 | - data.push({id:" ", text:"全部线路"}); | |
| 227 | - if(fage){ | |
| 228 | - $("#line").select2("destroy").html(''); | |
| 229 | - } | |
| 230 | - var fgs=$('#subCompany').val(); | |
| 231 | - var gs=$('#company').val(); | |
| 232 | - for(var i=0;i<xlList.length;i++){ | |
| 233 | - if(gs!=""){ | |
| 234 | - if(fgs!=""){ | |
| 235 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 236 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 237 | - } | |
| 238 | - }else{ | |
| 239 | - if(xlList[i]["gsbm"]==gs){ | |
| 240 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 222 | + | |
| 223 | + var tempData = {}; | |
| 224 | + $.get('/report/lineList',function(xlList){ | |
| 225 | + var data = []; | |
| 226 | + data.push({id: " ", text: "全部线路"}); | |
| 227 | + $.get('/user/companyData', function(result){ | |
| 228 | + for(var i = 0; i < result.length; i++){ | |
| 229 | + var companyCode = result[i].companyCode; | |
| 230 | + var children = result[i].children; | |
| 231 | + for(var j = 0; j < children.length; j++){ | |
| 232 | + var code = children[j].code; | |
| 233 | + for(var k=0;k < xlList.length;k++ ){ | |
| 234 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 235 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 236 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 237 | + } | |
| 241 | 238 | } |
| 242 | 239 | } |
| 243 | 240 | } |
| 244 | - } | |
| 245 | - initPinYinSelect2('#line',data,''); | |
| 246 | - fage=true; | |
| 247 | - | |
| 248 | - $("#endDate").attr("disabled", true); | |
| 249 | - $("#endDate").val($("#startDate").val()); | |
| 250 | - line = data[0].id; | |
| 251 | - statu = 0; | |
| 252 | - | |
| 253 | - updateModel(); | |
| 254 | - } | |
| 241 | + initPinYinSelect2('#line',data,''); | |
| 242 | + $("#endDate").attr("disabled", true); | |
| 243 | + $("#endDate").val($("#startDate").val()); | |
| 244 | + line = data[0].id; | |
| 245 | + statu = 0; | |
| 246 | + | |
| 247 | + updateModel(); | |
| 248 | + | |
| 249 | + }); | |
| 250 | + }); | |
| 255 | 251 | |
| 252 | + $("#line").on("change", function(){ | |
| 253 | + if($("#line").val() == " "){ | |
| 254 | + $("#company").attr("disabled", false); | |
| 255 | + $("#subCompany").attr("disabled", false); | |
| 256 | + } else { | |
| 257 | + var temp = tempData[$("#line").val()].split(":"); | |
| 258 | + $("#company").val(temp[0]); | |
| 259 | + updateCompany(); | |
| 260 | + $("#subCompany").val(temp[1]); | |
| 261 | + $("#company").attr("disabled", true); | |
| 262 | + $("#subCompany").attr("disabled", true); | |
| 263 | + } | |
| 264 | + }); | |
| 256 | 265 | |
| 257 | 266 | $("#query").on("click",jsDoQuery); |
| 258 | 267 | ... | ... |
src/main/resources/static/pages/forms/statement/commandState.html
| ... | ... | @@ -178,33 +178,44 @@ |
| 178 | 178 | } |
| 179 | 179 | } |
| 180 | 180 | $('#subCompany').html(options); |
| 181 | - initXl(); | |
| 182 | 181 | } |
| 183 | 182 | |
| 184 | - $("#subCompany").on("change",initXl); | |
| 185 | - function initXl(){ | |
| 186 | - var data=[]; | |
| 187 | - if(fage){ | |
| 188 | - $("#line").select2("destroy").html(''); | |
| 189 | - } | |
| 190 | - var fgs=$('#subCompany').val(); | |
| 191 | - var gs=$('#company').val(); | |
| 192 | - for(var i=0;i<xlList.length;i++){ | |
| 193 | - if(gs!=""){ | |
| 194 | - if(fgs!=""){ | |
| 195 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 196 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 197 | - } | |
| 198 | - }else{ | |
| 199 | - if(xlList[i]["gsbm"]==gs){ | |
| 200 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 183 | + var tempData = {}; | |
| 184 | + $.get('/report/lineList',function(xlList){ | |
| 185 | + var data = []; | |
| 186 | + $.get('/user/companyData', function(result){ | |
| 187 | + for(var i = 0; i < result.length; i++){ | |
| 188 | + var companyCode = result[i].companyCode; | |
| 189 | + var children = result[i].children; | |
| 190 | + for(var j = 0; j < children.length; j++){ | |
| 191 | + var code = children[j].code; | |
| 192 | + for(var k=0;k < xlList.length;k++ ){ | |
| 193 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 194 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 195 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 196 | + } | |
| 201 | 197 | } |
| 202 | 198 | } |
| 203 | 199 | } |
| 200 | + initPinYinSelect2('#line',data,''); | |
| 201 | + | |
| 202 | + }); | |
| 203 | + }); | |
| 204 | + | |
| 205 | + $("#line").on("change", function(){ | |
| 206 | + if($("#line").val() == " "){ | |
| 207 | + $("#company").attr("disabled", false); | |
| 208 | + $("#subCompany").attr("disabled", false); | |
| 209 | + } else { | |
| 210 | + var temp = tempData[$("#line").val()].split(":"); | |
| 211 | + $("#company").val(temp[0]); | |
| 212 | + updateCompany(); | |
| 213 | + $("#subCompany").val(temp[1]); | |
| 214 | + $("#company").attr("disabled", true); | |
| 215 | + $("#subCompany").attr("disabled", true); | |
| 204 | 216 | } |
| 205 | - initPinYinSelect2('#line',data,''); | |
| 206 | - fage=true; | |
| 207 | - } | |
| 217 | + }); | |
| 218 | + | |
| 208 | 219 | |
| 209 | 220 | $('#code').select2({ |
| 210 | 221 | ajax: { | ... | ... |
src/main/resources/static/pages/forms/statement/correctForm.html
| ... | ... | @@ -112,16 +112,29 @@ |
| 112 | 112 | $("#date").val(year + "-" + month + "-" + day); |
| 113 | 113 | $("#endDate").val(year + "-" + month + "-" + day); |
| 114 | 114 | |
| 115 | - $.get('/basic/lineCode2Name',function(result){ | |
| 116 | - var data=[]; | |
| 117 | - | |
| 118 | - for(var code in result){ | |
| 119 | - data.push({id: code, text: result[code]}); | |
| 120 | - } | |
| 121 | - initPinYinSelect2('#line',data,''); | |
| 122 | - | |
| 123 | - }) | |
| 124 | - $('#czcl').on('click', function () { | |
| 115 | + $.get('/report/lineList',function(xlList){ | |
| 116 | + var data = []; | |
| 117 | +// data.push({id: " ", text: "全部线路"}); | |
| 118 | + $.get('/user/companyData', function(result){ | |
| 119 | + for(var i = 0; i < result.length; i++){ | |
| 120 | + var companyCode = result[i].companyCode; | |
| 121 | + var children = result[i].children; | |
| 122 | + for(var j = 0; j < children.length; j++){ | |
| 123 | + var code = children[j].code; | |
| 124 | + for(var k=0;k < xlList.length;k++ ){ | |
| 125 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 126 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 127 | +// tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 128 | + } | |
| 129 | + } | |
| 130 | + } | |
| 131 | + } | |
| 132 | + initPinYinSelect2('#line',data,''); | |
| 133 | + | |
| 134 | + }); | |
| 135 | + }); | |
| 136 | + | |
| 137 | + $('#czcl').on('click', function () { | |
| 125 | 138 | $('#code').val('').change(); |
| 126 | 139 | }); |
| 127 | 140 | |
| ... | ... | @@ -203,7 +216,7 @@ |
| 203 | 216 | }); |
| 204 | 217 | |
| 205 | 218 | var line = $("#line").val(); |
| 206 | - var date = $("#date").val();endDate | |
| 219 | + var date = $("#date").val(); | |
| 207 | 220 | var lpName = $("#lpName").val(); |
| 208 | 221 | var endDate = $("#endDate").val(); |
| 209 | 222 | var code = $("#code").val(); | ... | ... |
src/main/resources/static/pages/forms/statement/correctStatis.html
| ... | ... | @@ -145,49 +145,8 @@ |
| 145 | 145 | $("#times1").attr("disabled", true); |
| 146 | 146 | $("#times2").attr("disabled", true); |
| 147 | 147 | |
| 148 | -// $.get('/basic/lineCode2Name', function(result){ | |
| 149 | -// var data=[]; | |
| 150 | - | |
| 151 | -// data.push({id: " ", text: "全部线路"}); | |
| 152 | -// for(var code in result){ | |
| 153 | -// data.push({id: code, text: result[code]}); | |
| 154 | -// } | |
| 155 | -// console.log(data); | |
| 156 | -// initPinYinSelect2('#line',data,''); | |
| 157 | 148 | |
| 158 | -// line = ""; | |
| 159 | -// // updateModel(); | |
| 160 | -// }); | |
| 161 | - | |
| 162 | -// var obj = []; | |
| 163 | -// $.get('/user/companyData', function(result){ | |
| 164 | -// obj = result; | |
| 165 | -// var options = ''; | |
| 166 | -// for(var i = 0; i < obj.length; i++){ | |
| 167 | -// options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 168 | -// } | |
| 169 | -// if(obj.length == 1){ | |
| 170 | -// $('#company1').hide(); | |
| 171 | -// if(obj[0].children.length == 1) | |
| 172 | -// $('#subCompany1').hide(); | |
| 173 | -// } | |
| 174 | -// $('#company').html(options); | |
| 175 | -// updateCompany(); | |
| 176 | -// }); | |
| 177 | -// $("#company").on("change",updateCompany); | |
| 178 | -// function updateCompany(){ | |
| 179 | -// var company = $('#company').val(); | |
| 180 | -// var options = ''; | |
| 181 | -// for(var i = 0; i < obj.length; i++){ | |
| 182 | -// if(obj[i].companyCode == company){ | |
| 183 | -// var children = obj[i].children; | |
| 184 | -// for(var j = 0; j < children.length; j++){ | |
| 185 | -// options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 186 | -// } | |
| 187 | -// } | |
| 188 | -// } | |
| 189 | -// $('#subCompany').html(options); | |
| 190 | -// } | |
| 149 | + | |
| 191 | 150 | var fage=false; |
| 192 | 151 | var xlList; |
| 193 | 152 | var obj = []; |
| ... | ... | @@ -225,36 +184,44 @@ |
| 225 | 184 | } |
| 226 | 185 | } |
| 227 | 186 | $('#subCompany').html(options); |
| 228 | - initXl(); | |
| 229 | 187 | } |
| 230 | 188 | |
| 231 | - $("#subCompany").on("change",initXl); | |
| 232 | - function initXl(){ | |
| 233 | - var data=[]; | |
| 234 | - data.push({id:" ", text:"全部线路"}); | |
| 235 | - if(fage){ | |
| 236 | - $("#line").select2("destroy").html(''); | |
| 237 | - } | |
| 238 | - var fgs=$('#subCompany').val(); | |
| 239 | - var gs=$('#company').val(); | |
| 240 | - for(var i=0;i<xlList.length;i++){ | |
| 241 | - if(gs!=""){ | |
| 242 | - if(fgs!=""){ | |
| 243 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 244 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 245 | - } | |
| 246 | - }else{ | |
| 247 | - if(xlList[i]["gsbm"]==gs){ | |
| 248 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 189 | + var tempData = {}; | |
| 190 | + $.get('/report/lineList',function(xlList){ | |
| 191 | + var data = []; | |
| 192 | + data.push({id: " ", text: "全部线路"}); | |
| 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 | + } | |
| 249 | 204 | } |
| 250 | 205 | } |
| 251 | 206 | } |
| 207 | + initPinYinSelect2('#line',data,''); | |
| 208 | + | |
| 209 | + }); | |
| 210 | + }); | |
| 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); | |
| 252 | 223 | } |
| 253 | - initPinYinSelect2('#line',data,''); | |
| 254 | - fage=true; | |
| 255 | - | |
| 256 | - line = ""; | |
| 257 | - } | |
| 224 | + }); | |
| 258 | 225 | |
| 259 | 226 | |
| 260 | 227 | $("#query").on("click",jsDoQuery); |
| ... | ... | @@ -294,13 +261,12 @@ |
| 294 | 261 | // $(".hidden").removeClass("hidden"); |
| 295 | 262 | $get('/busInterval/correctStatis', params, function(result){ |
| 296 | 263 | // 把数据填充到模版中 |
| 297 | -// var tbodyHtml = template('list_company',{list:result, type:1}); | |
| 298 | - var tbodyHtml = ""; | |
| 299 | - if(result.length != 0){ | |
| 264 | + var tbodyHtml = template('list_company',{list:result});; | |
| 265 | + /* if(result.length != 0){ | |
| 300 | 266 | tbodyHtml = template('list_company',{list:result[0].workList[0].workList, type:3}); |
| 301 | 267 | }else{ |
| 302 | 268 | tbodyHtml = template('list_company',{list:result, type:3}); |
| 303 | - } | |
| 269 | + } */ | |
| 304 | 270 | |
| 305 | 271 | // 把渲染好的模版html文本追加到表格中 |
| 306 | 272 | // $('#forms').html(tbodyHtml); |
| ... | ... | @@ -314,7 +280,7 @@ |
| 314 | 280 | }); |
| 315 | 281 | } |
| 316 | 282 | |
| 317 | - $("#forms").on("click","tbody tr",function(){ | |
| 283 | + /* $("#forms").on("click","tbody tr",function(){ | |
| 318 | 284 | if($(this).children().size() < 2){ |
| 319 | 285 | return; |
| 320 | 286 | } |
| ... | ... | @@ -332,9 +298,9 @@ |
| 332 | 298 | subCompany = g.workList; |
| 333 | 299 | } |
| 334 | 300 | }); |
| 335 | - }); | |
| 301 | + }); */ | |
| 336 | 302 | |
| 337 | - $("#subinfo").on("click","tbody tr",function(){ | |
| 303 | + /* $("#subinfo").on("click","tbody tr",function(){ | |
| 338 | 304 | if($(this).children().size() < 2){ |
| 339 | 305 | return; |
| 340 | 306 | } |
| ... | ... | @@ -351,9 +317,9 @@ |
| 351 | 317 | lines = g.workList; |
| 352 | 318 | } |
| 353 | 319 | }); |
| 354 | - }); | |
| 320 | + }); */ | |
| 355 | 321 | |
| 356 | - $("#lineinfo").on("click","tbody tr",function(){ | |
| 322 | + /* $("#lineinfo").on("click","tbody tr",function(){ | |
| 357 | 323 | if($(this).children().size() < 2){ |
| 358 | 324 | return; |
| 359 | 325 | } |
| ... | ... | @@ -361,13 +327,13 @@ |
| 361 | 327 | $(this).children().each(function(index){ |
| 362 | 328 | params[index] = $(this).text(); |
| 363 | 329 | }); |
| 364 | - $.each(lines, function(i, g){ | |
| 330 | + $.each(lines, function(i, g){ | |
| 365 | 331 | if(g.company == params[1] && g.subCompany == params[2] && g.line == params[3]){ |
| 366 | 332 | var tbodyHtml = template('list_workList',{list:g.workList}); |
| 367 | 333 | $("#lines").html(tbodyHtml); |
| 368 | 334 | } |
| 369 | - }); | |
| 370 | - }); | |
| 335 | + }); | |
| 336 | + }); */ | |
| 371 | 337 | |
| 372 | 338 | // $("#export").on("click", function(){ |
| 373 | 339 | // $get('/pcpc/workDaily',{line:line,date:date,type:'export'},function(result){ |
| ... | ... | @@ -414,9 +380,8 @@ |
| 414 | 380 | <th class="hidden"></th> |
| 415 | 381 | <th rowspan="2" width="120px">日期</th> |
| 416 | 382 | <th rowspan="2">公司</th> |
| 417 | - {{if type>1}}<th rowspan="2">分公司</th>{{/if}} | |
| 418 | - {{if type<3}}<th rowspan="2">线路条数</th>{{/if}} | |
| 419 | - {{if type==3}}<th rowspan="2">线路</th>{{/if}} | |
| 383 | + <th rowspan="2">分公司</th> | |
| 384 | + <th rowspan="2">线路</th> | |
| 420 | 385 | <th rowspan="2">实际营运班次</th> |
| 421 | 386 | <th colspan="3" align="center">待发调整数</th> |
| 422 | 387 | <th rowspan="2">掉线调整数</th> |
| ... | ... | @@ -438,18 +403,15 @@ |
| 438 | 403 | {{each list as obj i}} |
| 439 | 404 | <tr> |
| 440 | 405 | {{if obj.date=='合计'}} |
| 441 | - {{if type==1}}<td colspan="2">{{obj.date}}</td>{{/if}} | |
| 442 | - {{if type==2}}<td colspan="3">{{obj.date}}</td>{{/if}} | |
| 443 | - {{if type==3}}<td colspan="4">{{obj.date}}</td>{{/if}} | |
| 406 | + | |
| 407 | + <td colspan="4">{{obj.date}}</td> | |
| 444 | 408 | {{/if}} |
| 445 | 409 | {{if obj.date!='合计'}} |
| 446 | 410 | <td>{{obj.date}}</td> |
| 447 | - | |
| 448 | - {{/if}} | |
| 449 | - {{if obj.date!='合计'}}<td>{{obj.company}}</td>{{/if}} | |
| 450 | - {{if type>1 && obj.date!='合计'}}<td>{{obj.subCompany}}</td>{{/if}} | |
| 451 | - {{if type<3}}<td>{{obj.lines}}</td>{{/if}} | |
| 452 | - {{if type==3 && obj.date!='合计'}}<td>{{obj.line}}</td>{{/if}} | |
| 411 | + <td>{{obj.company}}</td> | |
| 412 | + <td>{{obj.subCompany}}</td> | |
| 413 | + <td>{{obj.xlname}}</td> | |
| 414 | + {{/if}} | |
| 453 | 415 | <td>{{obj.sjbc}}</td> |
| 454 | 416 | <td>{{obj.sddf}}</td> |
| 455 | 417 | <td>{{obj.zddf}}</td> |
| ... | ... | @@ -465,7 +427,7 @@ |
| 465 | 427 | {{/each}} |
| 466 | 428 | {{if list.length == 0}} |
| 467 | 429 | <tr> |
| 468 | - <td colspan="15"><h6 class="muted">没有找到相关数据</h6></td> | |
| 430 | + <td colspan="14"><h6 class="muted">没有找到相关数据</h6></td> | |
| 469 | 431 | </tr> |
| 470 | 432 | {{/if}} |
| 471 | 433 | </tbody> | ... | ... |
src/main/resources/static/pages/forms/statement/daily.html
| ... | ... | @@ -139,7 +139,7 @@ |
| 139 | 139 | } |
| 140 | 140 | } |
| 141 | 141 | $('#fgsdmDaily').html(options); |
| 142 | - initXl(); | |
| 142 | +// initXl(); | |
| 143 | 143 | } |
| 144 | 144 | |
| 145 | 145 | /* $.get('/basic/lineCode2Name',function(result){ |
| ... | ... | @@ -152,7 +152,7 @@ |
| 152 | 152 | |
| 153 | 153 | }) */ |
| 154 | 154 | |
| 155 | - $("#fgsdmDaily").on("change",initXl); | |
| 155 | + /* $("#fgsdmDaily").on("change",initXl); | |
| 156 | 156 | function initXl(){ |
| 157 | 157 | var data=[]; |
| 158 | 158 | if(fage){ |
| ... | ... | @@ -175,7 +175,44 @@ |
| 175 | 175 | } |
| 176 | 176 | initPinYinSelect2('#line',data,''); |
| 177 | 177 | fage=true; |
| 178 | - } | |
| 178 | + } */ | |
| 179 | + var tempData = {}; | |
| 180 | + $.get('/report/lineList',function(xlList){ | |
| 181 | + var data = []; | |
| 182 | +// data.push({id: " ", text: "全部线路"}); | |
| 183 | + $.get('/user/companyData', function(result){ | |
| 184 | + for(var i = 0; i < result.length; i++){ | |
| 185 | + var companyCode = result[i].companyCode; | |
| 186 | + var children = result[i].children; | |
| 187 | + for(var j = 0; j < children.length; j++){ | |
| 188 | + var code = children[j].code; | |
| 189 | + for(var k=0;k < xlList.length;k++ ){ | |
| 190 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 191 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 192 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 193 | + } | |
| 194 | + } | |
| 195 | + } | |
| 196 | + } | |
| 197 | + initPinYinSelect2('#line',data,''); | |
| 198 | + | |
| 199 | + }); | |
| 200 | + }); | |
| 201 | + | |
| 202 | + $("#line").on("change", function(){ | |
| 203 | + if($("#line").val() == " "){ | |
| 204 | + $("#gsdmDaily").attr("disabled", false); | |
| 205 | + $("#fgsdmDaily").attr("disabled", false); | |
| 206 | + } else { | |
| 207 | + var temp = tempData[$("#line").val()].split(":"); | |
| 208 | + $("#gsdmDaily").val(temp[0]); | |
| 209 | + updateCompany(); | |
| 210 | + $("#fgsdmDaily").val(temp[1]); | |
| 211 | + $("#gsdmDaily").attr("disabled", true); | |
| 212 | + $("#fgsdmDaily").attr("disabled", true); | |
| 213 | + } | |
| 214 | + }); | |
| 215 | + | |
| 179 | 216 | |
| 180 | 217 | var line; |
| 181 | 218 | var date; | ... | ... |
src/main/resources/static/pages/forms/statement/firstAndLastBus_sum.html
| ... | ... | @@ -176,34 +176,44 @@ |
| 176 | 176 | } |
| 177 | 177 | } |
| 178 | 178 | $('#subCompany').html(options); |
| 179 | - initXl(); | |
| 180 | 179 | } |
| 181 | - | |
| 182 | - $("#subCompany").on("change",initXl); | |
| 183 | - function initXl(){ | |
| 184 | - var data=[]; | |
| 185 | - if(fage){ | |
| 186 | - $("#line").select2("destroy").html(''); | |
| 187 | - } | |
| 188 | - var fgs=$('#subCompany').val(); | |
| 189 | - var gs=$('#company').val(); | |
| 180 | + | |
| 181 | + var tempData = {}; | |
| 182 | + $.get('/report/lineList',function(xlList){ | |
| 183 | + var data = []; | |
| 190 | 184 | data.push({id: " ", text: "全部线路"}); |
| 191 | - for(var i=0;i<xlList.length;i++){ | |
| 192 | - if(gs!=""){ | |
| 193 | - if(fgs!=""){ | |
| 194 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 195 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 196 | - } | |
| 197 | - }else{ | |
| 198 | - if(xlList[i]["gsbm"]==gs){ | |
| 199 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 185 | + $.get('/user/companyData', function(result){ | |
| 186 | + for(var i = 0; i < result.length; i++){ | |
| 187 | + var companyCode = result[i].companyCode; | |
| 188 | + var children = result[i].children; | |
| 189 | + for(var j = 0; j < children.length; j++){ | |
| 190 | + var code = children[j].code; | |
| 191 | + for(var k=0;k < xlList.length;k++ ){ | |
| 192 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 193 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 194 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 195 | + } | |
| 200 | 196 | } |
| 201 | 197 | } |
| 202 | 198 | } |
| 199 | + initPinYinSelect2('#line',data,''); | |
| 200 | + | |
| 201 | + }); | |
| 202 | + }); | |
| 203 | + | |
| 204 | + $("#line").on("change", function(){ | |
| 205 | + if($("#line").val() == " "){ | |
| 206 | + $("#company").attr("disabled", false); | |
| 207 | + $("#subCompany").attr("disabled", false); | |
| 208 | + } else { | |
| 209 | + var temp = tempData[$("#line").val()].split(":"); | |
| 210 | + $("#company").val(temp[0]); | |
| 211 | + updateCompany(); | |
| 212 | + $("#subCompany").val(temp[1]); | |
| 213 | + $("#company").attr("disabled", true); | |
| 214 | + $("#subCompany").attr("disabled", true); | |
| 203 | 215 | } |
| 204 | - initPinYinSelect2('#line',data,''); | |
| 205 | - fage=true; | |
| 206 | - } | |
| 216 | + }); | |
| 207 | 217 | |
| 208 | 218 | var list; |
| 209 | 219 | $("#forms tbody").on("click","a",function(){ | ... | ... |
src/main/resources/static/pages/forms/statement/historyMessage.html
| ... | ... | @@ -81,16 +81,29 @@ |
| 81 | 81 | locale : 'zh-cn' |
| 82 | 82 | }); |
| 83 | 83 | |
| 84 | - $.get('/basic/lineCode2Name',function(result){ | |
| 85 | - var data=[]; | |
| 86 | - | |
| 87 | - for(var code in result){ | |
| 88 | - data.push({id: code, text: result[code]}); | |
| 89 | - } | |
| 90 | - console.log(data); | |
| 91 | - initPinYinSelect2('#line',data,''); | |
| 92 | - | |
| 93 | - }) | |
| 84 | + $.get('/report/lineList',function(xlList){ | |
| 85 | + var data = []; | |
| 86 | +// data.push({id: " ", text: "全部线路"}); | |
| 87 | + $.get('/user/companyData', function(result){ | |
| 88 | + for(var i = 0; i < result.length; i++){ | |
| 89 | + var companyCode = result[i].companyCode; | |
| 90 | + var children = result[i].children; | |
| 91 | + for(var j = 0; j < children.length; j++){ | |
| 92 | + var code = children[j].code; | |
| 93 | + for(var k=0;k < xlList.length;k++ ){ | |
| 94 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 95 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 96 | +// tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 97 | + } | |
| 98 | + } | |
| 99 | + } | |
| 100 | + } | |
| 101 | + initPinYinSelect2('#line',data,''); | |
| 102 | + | |
| 103 | + }); | |
| 104 | + }); | |
| 105 | + | |
| 106 | + | |
| 94 | 107 | $('#code').select2({ |
| 95 | 108 | ajax: { |
| 96 | 109 | url: '/realSchedule/sreachVehic', | ... | ... |
src/main/resources/static/pages/forms/statement/jobSummary.html
| ... | ... | @@ -240,43 +240,46 @@ |
| 240 | 240 | } |
| 241 | 241 | } |
| 242 | 242 | $('#fgsdmJob').html(options); |
| 243 | - initXl(); | |
| 243 | +// initXl(); | |
| 244 | 244 | } |
| 245 | 245 | |
| 246 | - $("#fgsdmJob").on("change",initXl); | |
| 247 | - function initXl(){ | |
| 248 | - var data=[]; | |
| 249 | - if(fage){ | |
| 250 | - $("#line").select2("destroy").html(''); | |
| 251 | - } | |
| 252 | - var fgs=$('#fgsdmJob').val(); | |
| 253 | - var gs=$('#gsdmJob').val(); | |
| 254 | - for(var i=0;i<xlList.length;i++){ | |
| 255 | - if(gs!=""){ | |
| 256 | - if(fgs!=""){ | |
| 257 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 258 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 259 | - } | |
| 260 | - }else{ | |
| 261 | - if(xlList[i]["gsbm"]==gs){ | |
| 262 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 246 | + var tempData = {}; | |
| 247 | + $.get('/report/lineList',function(xlList){ | |
| 248 | + var data = []; | |
| 249 | +// data.push({id: " ", text: "全部线路"}); | |
| 250 | + $.get('/user/companyData', function(result){ | |
| 251 | + for(var i = 0; i < result.length; i++){ | |
| 252 | + var companyCode = result[i].companyCode; | |
| 253 | + var children = result[i].children; | |
| 254 | + for(var j = 0; j < children.length; j++){ | |
| 255 | + var code = children[j].code; | |
| 256 | + for(var k=0;k < xlList.length;k++ ){ | |
| 257 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 258 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 259 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 260 | + } | |
| 263 | 261 | } |
| 264 | 262 | } |
| 265 | 263 | } |
| 266 | - } | |
| 267 | - initPinYinSelect2('#line',data,''); | |
| 268 | - fage=true; | |
| 269 | - } | |
| 264 | + initPinYinSelect2('#line',data,''); | |
| 265 | + | |
| 266 | + }); | |
| 267 | + }); | |
| 270 | 268 | |
| 271 | - /* $.get('/basic/lineCode2Name',function(result){ | |
| 272 | - var data=[]; | |
| 273 | - | |
| 274 | - for(var code in result){ | |
| 275 | - data.push({id: code, text: result[code]}); | |
| 269 | + $("#line").on("change", function(){ | |
| 270 | + if($("#line").val() == " "){ | |
| 271 | + $("#gsdmJob").attr("disabled", false); | |
| 272 | + $("#fgsdmJob").attr("disabled", false); | |
| 273 | + } else { | |
| 274 | + var temp = tempData[$("#line").val()].split(":"); | |
| 275 | + $("#gsdmJob").val(temp[0]); | |
| 276 | + updateCompany(); | |
| 277 | + $("#fgsdmJob").val(temp[1]); | |
| 278 | + $("#gsdmJob").attr("disabled", true); | |
| 279 | + $("#fgsdmJob").attr("disabled", true); | |
| 276 | 280 | } |
| 277 | - initPinYinSelect2('#line',data,''); | |
| 278 | - | |
| 279 | - }) */ | |
| 281 | + }); | |
| 282 | + | |
| 280 | 283 | |
| 281 | 284 | jQuery.fn.rowspan = function(colIdx) { //封装的一个JQuery小插件 |
| 282 | 285 | return this.each(function(){ | ... | ... |
src/main/resources/static/pages/forms/statement/lbStatuAnaly.html
| ... | ... | @@ -233,36 +233,44 @@ |
| 233 | 233 | } |
| 234 | 234 | } |
| 235 | 235 | $('#subCompany').html(options); |
| 236 | - initXl(); | |
| 237 | 236 | } |
| 238 | 237 | |
| 239 | - $("#subCompany").on("change",initXl); | |
| 240 | - function initXl(){ | |
| 241 | - var data=[]; | |
| 242 | - data.push({id:" ", text:"全部线路"}); | |
| 243 | - if(fage){ | |
| 244 | - $("#line").select2("destroy").html(''); | |
| 245 | - } | |
| 246 | - var fgs=$('#subCompany').val(); | |
| 247 | - var gs=$('#company').val(); | |
| 248 | - for(var i=0;i<xlList.length;i++){ | |
| 249 | - if(gs!=""){ | |
| 250 | - if(fgs!=""){ | |
| 251 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 252 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 253 | - } | |
| 254 | - }else{ | |
| 255 | - if(xlList[i]["gsbm"]==gs){ | |
| 256 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 238 | + var tempData = {}; | |
| 239 | + $.get('/report/lineList',function(xlList){ | |
| 240 | + var data = []; | |
| 241 | + data.push({id: " ", text: "全部线路"}); | |
| 242 | + $.get('/user/companyData', function(result){ | |
| 243 | + for(var i = 0; i < result.length; i++){ | |
| 244 | + var companyCode = result[i].companyCode; | |
| 245 | + var children = result[i].children; | |
| 246 | + for(var j = 0; j < children.length; j++){ | |
| 247 | + var code = children[j].code; | |
| 248 | + for(var k=0;k < xlList.length;k++ ){ | |
| 249 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 250 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 251 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 252 | + } | |
| 257 | 253 | } |
| 258 | 254 | } |
| 259 | 255 | } |
| 256 | + initPinYinSelect2('#line',data,''); | |
| 257 | + | |
| 258 | + }); | |
| 259 | + }); | |
| 260 | + | |
| 261 | + $("#line").on("change", function(){ | |
| 262 | + if($("#line").val() == " "){ | |
| 263 | + $("#company").attr("disabled", false); | |
| 264 | + $("#subCompany").attr("disabled", false); | |
| 265 | + } else { | |
| 266 | + var temp = tempData[$("#line").val()].split(":"); | |
| 267 | + $("#company").val(temp[0]); | |
| 268 | + updateCompany(); | |
| 269 | + $("#subCompany").val(temp[1]); | |
| 270 | + $("#company").attr("disabled", true); | |
| 271 | + $("#subCompany").attr("disabled", true); | |
| 260 | 272 | } |
| 261 | - initPinYinSelect2('#line',data,''); | |
| 262 | - line = data[0].id; | |
| 263 | - updateModel(); | |
| 264 | - fage=true; | |
| 265 | - } | |
| 273 | + }); | |
| 266 | 274 | |
| 267 | 275 | var lb = 0; //标志是否有选择至少一个烂班类型 |
| 268 | 276 | $("#totalLb").on("change", function(){ | ... | ... |
src/main/resources/static/pages/forms/statement/lineTimeAnaly.html
| ... | ... | @@ -291,48 +291,57 @@ |
| 291 | 291 | } |
| 292 | 292 | } |
| 293 | 293 | $('#subCompany').html(options); |
| 294 | - initXl(); | |
| 295 | 294 | } |
| 296 | 295 | |
| 297 | - $("#subCompany").on("change",initXl); | |
| 298 | - function initXl(){ | |
| 299 | - var data=[]; | |
| 300 | - if(fage){ | |
| 301 | - $("#line").select2("destroy").html(''); | |
| 302 | - } | |
| 303 | - var fgs=$('#subCompany').val(); | |
| 304 | - var gs=$('#company').val(); | |
| 305 | - for(var i=0;i<xlList.length;i++){ | |
| 306 | - if(gs!=""){ | |
| 307 | - if(fgs!=""){ | |
| 308 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 309 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 310 | - } | |
| 311 | - }else{ | |
| 312 | - if(xlList[i]["gsbm"]==gs){ | |
| 313 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 296 | + | |
| 297 | + | |
| 298 | + var tempData = {}; | |
| 299 | + $.get('/report/lineList',function(xlList){ | |
| 300 | + var data = []; | |
| 301 | + $.get('/user/companyData', function(result){ | |
| 302 | + for(var i = 0; i < result.length; i++){ | |
| 303 | + var companyCode = result[i].companyCode; | |
| 304 | + var children = result[i].children; | |
| 305 | + for(var j = 0; j < children.length; j++){ | |
| 306 | + var code = children[j].code; | |
| 307 | + for(var k=0;k < xlList.length;k++ ){ | |
| 308 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 309 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 310 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 311 | + } | |
| 314 | 312 | } |
| 315 | 313 | } |
| 316 | 314 | } |
| 317 | - } | |
| 318 | - initPinYinSelect2('#line',data,''); | |
| 319 | - fage=true; | |
| 320 | - | |
| 321 | - line = data[0].id; | |
| 322 | - updateModel(); | |
| 323 | - | |
| 324 | - var params = {}; | |
| 325 | - params['line'] = line; | |
| 326 | - $get('/busInterval/getDir', params, function(result){ | |
| 327 | - dirData = createTreeData(result); | |
| 328 | - var options = '<option value="">全部方向</option>'; | |
| 329 | - $.each(dirData, function(i, g){ | |
| 330 | - options += '<option value="'+g.name+'">'+g.name+'</option>'; | |
| 315 | + initPinYinSelect2('#line',data,''); | |
| 316 | + line = data[0].id; | |
| 317 | + updateModel(); | |
| 318 | + | |
| 319 | + var params = {}; | |
| 320 | + params['line'] = line; | |
| 321 | + $get('/busInterval/getDir', params, function(result){ | |
| 322 | + dirData = createTreeData(result); | |
| 323 | + var options = '<option value="">全部方向</option>'; | |
| 324 | + $.each(dirData, function(i, g){ | |
| 325 | + options += '<option value="'+g.name+'">'+g.name+'</option>'; | |
| 326 | + }); | |
| 327 | + $('#upDown').html(options); | |
| 331 | 328 | }); |
| 332 | - $('#upDown').html(options); | |
| 333 | 329 | }); |
| 334 | - } | |
| 335 | - | |
| 330 | + }); | |
| 331 | + | |
| 332 | + $("#line").on("change", function(){ | |
| 333 | + if($("#line").val() == " "){ | |
| 334 | + $("#company").attr("disabled", false); | |
| 335 | + $("#subCompany").attr("disabled", false); | |
| 336 | + } else { | |
| 337 | + var temp = tempData[$("#line").val()].split(":"); | |
| 338 | + $("#company").val(temp[0]); | |
| 339 | + updateCompany(); | |
| 340 | + $("#subCompany").val(temp[1]); | |
| 341 | + $("#company").attr("disabled", true); | |
| 342 | + $("#subCompany").attr("disabled", true); | |
| 343 | + } | |
| 344 | + }); | |
| 336 | 345 | |
| 337 | 346 | $("#query").on("click", function (){ |
| 338 | 347 | jsDoQuery(); | ... | ... |
src/main/resources/static/pages/forms/statement/peopleCarPlan.html
| ... | ... | @@ -138,33 +138,43 @@ |
| 138 | 138 | } |
| 139 | 139 | } |
| 140 | 140 | $('#subCompany').html(options); |
| 141 | - initXl(); | |
| 142 | 141 | } |
| 143 | - | |
| 144 | - $("#subCompany").on("change",initXl); | |
| 145 | - function initXl(){ | |
| 146 | - var data=[]; | |
| 147 | - if(fage){ | |
| 148 | - $("#line").select2("destroy").html(''); | |
| 149 | - } | |
| 150 | - var fgs=$('#subCompany').val(); | |
| 151 | - var gs=$('#company').val(); | |
| 152 | - for(var i=0;i<xlList.length;i++){ | |
| 153 | - if(gs!=""){ | |
| 154 | - if(fgs!=""){ | |
| 155 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 156 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 157 | - } | |
| 158 | - }else{ | |
| 159 | - if(xlList[i]["gsbm"]==gs){ | |
| 160 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 142 | + var tempData = {}; | |
| 143 | + $.get('/report/lineList',function(xlList){ | |
| 144 | + var data = []; | |
| 145 | + $.get('/user/companyData', function(result){ | |
| 146 | + for(var i = 0; i < result.length; i++){ | |
| 147 | + var companyCode = result[i].companyCode; | |
| 148 | + var children = result[i].children; | |
| 149 | + for(var j = 0; j < children.length; j++){ | |
| 150 | + var code = children[j].code; | |
| 151 | + for(var k=0;k < xlList.length;k++ ){ | |
| 152 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 153 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 154 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 155 | + } | |
| 161 | 156 | } |
| 162 | 157 | } |
| 163 | 158 | } |
| 159 | + initPinYinSelect2('#line',data,''); | |
| 160 | + | |
| 161 | + }); | |
| 162 | + }); | |
| 163 | + | |
| 164 | + $("#line").on("change", function(){ | |
| 165 | + if($("#line").val() == " "){ | |
| 166 | + $("#company").attr("disabled", false); | |
| 167 | + $("#subCompany").attr("disabled", false); | |
| 168 | + } else { | |
| 169 | + var temp = tempData[$("#line").val()].split(":"); | |
| 170 | + $("#company").val(temp[0]); | |
| 171 | + updateCompany(); | |
| 172 | + $("#subCompany").val(temp[1]); | |
| 173 | + $("#company").attr("disabled", true); | |
| 174 | + $("#subCompany").attr("disabled", true); | |
| 164 | 175 | } |
| 165 | - initPinYinSelect2('#line',data,''); | |
| 166 | - fage=true; | |
| 167 | - } | |
| 176 | + }); | |
| 177 | + | |
| 168 | 178 | |
| 169 | 179 | |
| 170 | 180 | $("#query").on("click",jsDoQuery); | ... | ... |
src/main/resources/static/pages/forms/statement/scheduleAnaly.html
| ... | ... | @@ -171,35 +171,46 @@ |
| 171 | 171 | } |
| 172 | 172 | } |
| 173 | 173 | $('#subCompany').html(options); |
| 174 | - initXl(); | |
| 175 | 174 | } |
| 176 | 175 | |
| 177 | - $("#subCompany").on("change",initXl); | |
| 178 | - function initXl(){ | |
| 179 | - var data=[]; | |
| 180 | - if(fage){ | |
| 181 | - $("#line").select2("destroy").html(''); | |
| 182 | - } | |
| 183 | - var fgs=$('#subCompany').val(); | |
| 184 | - var gs=$('#company').val(); | |
| 185 | - for(var i=0;i<xlList.length;i++){ | |
| 186 | - if(gs!=""){ | |
| 187 | - if(fgs!=""){ | |
| 188 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 189 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 190 | - } | |
| 191 | - }else{ | |
| 192 | - if(xlList[i]["gsbm"]==gs){ | |
| 193 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 176 | + | |
| 177 | + var tempData = {}; | |
| 178 | + $.get('/report/lineList',function(xlList){ | |
| 179 | + var data = []; | |
| 180 | + $.get('/user/companyData', function(result){ | |
| 181 | + for(var i = 0; i < result.length; i++){ | |
| 182 | + var companyCode = result[i].companyCode; | |
| 183 | + var children = result[i].children; | |
| 184 | + for(var j = 0; j < children.length; j++){ | |
| 185 | + var code = children[j].code; | |
| 186 | + for(var k=0;k < xlList.length;k++ ){ | |
| 187 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 188 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 189 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 190 | + } | |
| 194 | 191 | } |
| 195 | 192 | } |
| 196 | 193 | } |
| 194 | + initPinYinSelect2('#line',data,''); | |
| 195 | + line = data[0].id; | |
| 196 | + updateModel(); | |
| 197 | + | |
| 198 | + }); | |
| 199 | + }); | |
| 200 | + | |
| 201 | + $("#line").on("change", function(){ | |
| 202 | + if($("#line").val() == " "){ | |
| 203 | + $("#company").attr("disabled", false); | |
| 204 | + $("#subCompany").attr("disabled", false); | |
| 205 | + } else { | |
| 206 | + var temp = tempData[$("#line").val()].split(":"); | |
| 207 | + $("#company").val(temp[0]); | |
| 208 | + updateCompany(); | |
| 209 | + $("#subCompany").val(temp[1]); | |
| 210 | + $("#company").attr("disabled", true); | |
| 211 | + $("#subCompany").attr("disabled", true); | |
| 197 | 212 | } |
| 198 | - initPinYinSelect2('#line',data,''); | |
| 199 | - line = data[0].id; | |
| 200 | - updateModel(); | |
| 201 | - fage=true; | |
| 202 | - } | |
| 213 | + }); | |
| 203 | 214 | |
| 204 | 215 | |
| 205 | 216 | $("#query").on("click", function(){ | ... | ... |
src/main/resources/static/pages/forms/statement/scheduleAnaly_sum.html
| ... | ... | @@ -171,38 +171,45 @@ |
| 171 | 171 | } |
| 172 | 172 | } |
| 173 | 173 | $('#subCompany').html(options); |
| 174 | - initXl(); | |
| 175 | 174 | } |
| 176 | - | |
| 177 | - $("#subCompany").on("change",initXl); | |
| 178 | - function initXl(){ | |
| 179 | - var data=[]; | |
| 180 | - if(fage){ | |
| 181 | - $("#line").select2("destroy").html(''); | |
| 182 | - } | |
| 183 | - var fgs=$('#subCompany').val(); | |
| 184 | - var gs=$('#company').val(); | |
| 185 | - for(var i=0;i<xlList.length;i++){ | |
| 186 | - if(gs!=""){ | |
| 187 | - if(fgs!=""){ | |
| 188 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 189 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 190 | - } | |
| 191 | - }else{ | |
| 192 | - if(xlList[i]["gsbm"]==gs){ | |
| 193 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 175 | + | |
| 176 | + var tempData = {}; | |
| 177 | + $.get('/report/lineList',function(xlList){ | |
| 178 | + var data = []; | |
| 179 | + $.get('/user/companyData', function(result){ | |
| 180 | + for(var i = 0; i < result.length; i++){ | |
| 181 | + var companyCode = result[i].companyCode; | |
| 182 | + var children = result[i].children; | |
| 183 | + for(var j = 0; j < children.length; j++){ | |
| 184 | + var code = children[j].code; | |
| 185 | + for(var k=0;k < xlList.length;k++ ){ | |
| 186 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 187 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 188 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 189 | + } | |
| 194 | 190 | } |
| 195 | 191 | } |
| 196 | 192 | } |
| 197 | - } | |
| 198 | - initPinYinSelect2('#line',data,''); | |
| 199 | - line = data[0].id; | |
| 200 | - updateModel(); | |
| 201 | - initCl(); | |
| 202 | - | |
| 203 | - fage=true; | |
| 204 | - } | |
| 193 | + initPinYinSelect2('#line',data,''); | |
| 194 | + line = data[0].id; | |
| 195 | + updateModel(); | |
| 196 | + initCl(); | |
| 197 | + }); | |
| 198 | + }); | |
| 205 | 199 | |
| 200 | + $("#line").on("change", function(){ | |
| 201 | + if($("#line").val() == " "){ | |
| 202 | + $("#company").attr("disabled", false); | |
| 203 | + $("#subCompany").attr("disabled", false); | |
| 204 | + } else { | |
| 205 | + var temp = tempData[$("#line").val()].split(":"); | |
| 206 | + $("#company").val(temp[0]); | |
| 207 | + updateCompany(); | |
| 208 | + $("#subCompany").val(temp[1]); | |
| 209 | + $("#company").attr("disabled", true); | |
| 210 | + $("#subCompany").attr("disabled", true); | |
| 211 | + } | |
| 212 | + }); | |
| 206 | 213 | |
| 207 | 214 | $("#query").on("click", function(){ |
| 208 | 215 | page = 0; | ... | ... |
src/main/resources/static/pages/forms/statement/scheduleDaily.html
| ... | ... | @@ -70,7 +70,7 @@ word-wrap: break-word; |
| 70 | 70 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 71 | 71 | <thead> |
| 72 | 72 | <tr> |
| 73 | - <th colspan="40">线路调度日报</th> | |
| 73 | + <th colspan="40"><lable id="xlmc"></lable>线路调度日报</th> | |
| 74 | 74 | </tr> |
| 75 | 75 | <tr> |
| 76 | 76 | <td rowspan="3"><span >路线名</span></td> |
| ... | ... | @@ -340,32 +340,46 @@ word-wrap: break-word; |
| 340 | 340 | } |
| 341 | 341 | } |
| 342 | 342 | $('#fgsdmDdrb').html(options); |
| 343 | - initXl(); | |
| 344 | 343 | } |
| 345 | - $("#fgsdmDdrb").on("change",initXl); | |
| 346 | - function initXl(){ | |
| 347 | - var data=[]; | |
| 348 | - if(fage){ | |
| 349 | - $("#line").select2("destroy").html(''); | |
| 350 | - } | |
| 351 | - var fgs=$('#fgsdmDdrb').val(); | |
| 352 | - var gs=$('#gsdmDdrb').val(); | |
| 353 | - for(var i=0;i<xlList.length;i++){ | |
| 354 | - if(gs!=""){ | |
| 355 | - if(fgs!=""){ | |
| 356 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 357 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 358 | - } | |
| 359 | - }else{ | |
| 360 | - if(xlList[i]["gsbm"]==gs){ | |
| 361 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 344 | + | |
| 345 | + | |
| 346 | + var tempData = {}; | |
| 347 | + $.get('/report/lineList',function(xlList){ | |
| 348 | + var data = []; | |
| 349 | + $.get('/user/companyData', function(result){ | |
| 350 | + for(var i = 0; i < result.length; i++){ | |
| 351 | + var companyCode = result[i].companyCode; | |
| 352 | + var children = result[i].children; | |
| 353 | + for(var j = 0; j < children.length; j++){ | |
| 354 | + var code = children[j].code; | |
| 355 | + for(var k=0;k < xlList.length;k++ ){ | |
| 356 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 357 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 358 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 359 | + } | |
| 362 | 360 | } |
| 363 | 361 | } |
| 364 | 362 | } |
| 363 | + initPinYinSelect2('#line',data,''); | |
| 364 | + | |
| 365 | + }); | |
| 366 | + }); | |
| 367 | + | |
| 368 | + $("#line").on("change", function(){ | |
| 369 | + if($("#line").val() == " "){ | |
| 370 | + $("#gsdmDdrb").attr("disabled", false); | |
| 371 | + $("#fgsdmDdrb").attr("disabled", false); | |
| 372 | + } else { | |
| 373 | + var temp = tempData[$("#line").val()].split(":"); | |
| 374 | + $("#gsdmDdrb").val(temp[0]); | |
| 375 | + updateCompany(); | |
| 376 | + $("#fgsdmDdrb").val(temp[1]); | |
| 377 | + $("#gsdmDdrb").attr("disabled", true); | |
| 378 | + $("#fgsdmDdrb").attr("disabled", true); | |
| 365 | 379 | } |
| 366 | - initPinYinSelect2('#line',data,''); | |
| 367 | - fage=true; | |
| 368 | - } | |
| 380 | + }); | |
| 381 | + | |
| 382 | + | |
| 369 | 383 | $('#export').attr('disabled', "true"); |
| 370 | 384 | |
| 371 | 385 | var line = $("#line").val(); |
| ... | ... | @@ -407,6 +421,7 @@ word-wrap: break-word; |
| 407 | 421 | layer.msg("请选择时间"); |
| 408 | 422 | return; |
| 409 | 423 | } |
| 424 | + $("#xlmc").html(xlName); | |
| 410 | 425 | $("#ddrbBody").height($(window).height()-100); |
| 411 | 426 | $("c").html("全日"); |
| 412 | 427 | $("#export").removeAttr("disabled"); | ... | ... |
src/main/resources/static/pages/forms/statement/statisticsDaily.html
| ... | ... | @@ -206,33 +206,47 @@ |
| 206 | 206 | } |
| 207 | 207 | } |
| 208 | 208 | $('#fgsdm').html(options); |
| 209 | - initXl(); | |
| 209 | +// initXl(); | |
| 210 | 210 | } |
| 211 | - $("#fgsdm").on("change",initXl); | |
| 212 | - function initXl(){ | |
| 213 | - var data=[]; | |
| 211 | + | |
| 212 | + var tempData = {}; | |
| 213 | + $.get('/report/lineList',function(xlList){ | |
| 214 | + var data = []; | |
| 214 | 215 | data.push({id: " ", text: "全部线路"}); |
| 215 | - if(fage){ | |
| 216 | - $("#line").select2("destroy").html(''); | |
| 217 | - } | |
| 218 | - var fgs=$('#fgsdm').val(); | |
| 219 | - var gs=$('#gsdm').val(); | |
| 220 | - for(var i=0;i<xlList.length;i++){ | |
| 221 | - if(gs!=""){ | |
| 222 | - if(fgs!=""){ | |
| 223 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 224 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 225 | - } | |
| 226 | - }else{ | |
| 227 | - if(xlList[i]["gsbm"]==gs){ | |
| 228 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 216 | + $.get('/user/companyData', function(result){ | |
| 217 | + for(var i = 0; i < result.length; i++){ | |
| 218 | + var companyCode = result[i].companyCode; | |
| 219 | + var children = result[i].children; | |
| 220 | + for(var j = 0; j < children.length; j++){ | |
| 221 | + var code = children[j].code; | |
| 222 | + for(var k=0;k < xlList.length;k++ ){ | |
| 223 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 224 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 225 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 226 | + } | |
| 229 | 227 | } |
| 230 | 228 | } |
| 231 | 229 | } |
| 230 | + initPinYinSelect2('#line',data,''); | |
| 231 | + | |
| 232 | + }); | |
| 233 | + }); | |
| 234 | + | |
| 235 | + $("#line").on("change", function(){ | |
| 236 | + if($("#line").val() == " "){ | |
| 237 | + $("#gsdm").attr("disabled", false); | |
| 238 | + $("#fgsdm").attr("disabled", false); | |
| 239 | + } else { | |
| 240 | + var temp = tempData[$("#line").val()].split(":"); | |
| 241 | + $("#gsdm").val(temp[0]); | |
| 242 | + updateCompany(); | |
| 243 | + $("#fgsdm").val(temp[1]); | |
| 244 | + $("#gsdm").attr("disabled", true); | |
| 245 | + $("#fgsdm").attr("disabled", true); | |
| 232 | 246 | } |
| 233 | - initPinYinSelect2('#line',data,''); | |
| 234 | - fage=true; | |
| 235 | - } | |
| 247 | + }); | |
| 248 | + | |
| 249 | + | |
| 236 | 250 | var line =""; |
| 237 | 251 | var xlName =""; |
| 238 | 252 | var date = ""; | ... | ... |
src/main/resources/static/pages/forms/statement/timeAndSpeed.html
| ... | ... | @@ -235,43 +235,50 @@ |
| 235 | 235 | } |
| 236 | 236 | } |
| 237 | 237 | $('#subCompany').html(options); |
| 238 | - initXl(); | |
| 239 | - } | |
| 238 | + } | |
| 240 | 239 | |
| 241 | - $("#subCompany").on("change",initXl); | |
| 242 | - function initXl(){ | |
| 243 | - var data=[]; | |
| 244 | - data.push({id:" ", text:"全部线路"}); | |
| 245 | - if(fage){ | |
| 246 | - $("#line").select2("destroy").html(''); | |
| 247 | - } | |
| 248 | - var fgs=$('#subCompany').val(); | |
| 249 | - var gs=$('#company').val(); | |
| 250 | - for(var i=0;i<xlList.length;i++){ | |
| 251 | - if(gs!=""){ | |
| 252 | - if(fgs!=""){ | |
| 253 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 254 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 255 | - } | |
| 256 | - }else{ | |
| 257 | - if(xlList[i]["gsbm"]==gs){ | |
| 258 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 240 | + var tempData = {}; | |
| 241 | + $.get('/report/lineList',function(xlList){ | |
| 242 | + var data = []; | |
| 243 | + data.push({id: " ", text: "全部线路"}); | |
| 244 | + $.get('/user/companyData', function(result){ | |
| 245 | + for(var i = 0; i < result.length; i++){ | |
| 246 | + var companyCode = result[i].companyCode; | |
| 247 | + var children = result[i].children; | |
| 248 | + for(var j = 0; j < children.length; j++){ | |
| 249 | + var code = children[j].code; | |
| 250 | + for(var k=0;k < xlList.length;k++ ){ | |
| 251 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 252 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 253 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 254 | + } | |
| 259 | 255 | } |
| 260 | 256 | } |
| 261 | 257 | } |
| 262 | - } | |
| 263 | - initPinYinSelect2('#line',data,''); | |
| 264 | - fage=true; | |
| 265 | - | |
| 266 | - $("#endDate").attr("disabled", true); | |
| 267 | - $("#endDate").val($("#startDate").val()); | |
| 268 | - line = data[0].id; | |
| 269 | - statu = 0; | |
| 270 | - | |
| 271 | - updateModel(); | |
| 272 | - updateLp(""); | |
| 273 | - } | |
| 258 | + initPinYinSelect2('#line',data,''); | |
| 259 | + $("#endDate").attr("disabled", true); | |
| 260 | + $("#endDate").val($("#startDate").val()); | |
| 261 | + line = data[0].id; | |
| 262 | + statu = 0; | |
| 263 | + | |
| 264 | + updateModel(); | |
| 265 | + updateLp(""); | |
| 266 | + }); | |
| 267 | + }); | |
| 274 | 268 | |
| 269 | + $("#line").on("change", function(){ | |
| 270 | + if($("#line").val() == " "){ | |
| 271 | + $("#company").attr("disabled", false); | |
| 272 | + $("#subCompany").attr("disabled", false); | |
| 273 | + } else { | |
| 274 | + var temp = tempData[$("#line").val()].split(":"); | |
| 275 | + $("#company").val(temp[0]); | |
| 276 | + updateCompany(); | |
| 277 | + $("#subCompany").val(temp[1]); | |
| 278 | + $("#company").attr("disabled", true); | |
| 279 | + $("#subCompany").attr("disabled", true); | |
| 280 | + } | |
| 281 | + }); | |
| 275 | 282 | |
| 276 | 283 | $("#query").on("click", function (){ |
| 277 | 284 | jsDoQuery(); | ... | ... |
src/main/resources/static/pages/forms/statement/waybill.html
| ... | ... | @@ -158,14 +158,14 @@ |
| 158 | 158 | } |
| 159 | 159 | } |
| 160 | 160 | $('#fgsdmXcld').html(options); |
| 161 | - initXl(); | |
| 161 | +// initXl(); | |
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | |
| 165 | 165 | |
| 166 | 166 | |
| 167 | - $("#fgsdmXcld").on("change",initXl); | |
| 168 | - function initXl(){ | |
| 167 | +// $("#fgsdmXcld").on("change",initXl); | |
| 168 | + /* function initXl(){ | |
| 169 | 169 | var data=[]; |
| 170 | 170 | if(fage){ |
| 171 | 171 | $("#line").select2("destroy").html(''); |
| ... | ... | @@ -187,7 +187,44 @@ |
| 187 | 187 | } |
| 188 | 188 | initPinYinSelect2('#line',data,''); |
| 189 | 189 | fage=true; |
| 190 | - } | |
| 190 | + } */ | |
| 191 | + | |
| 192 | + var tempData = {}; | |
| 193 | + $.get('/report/lineList',function(xlList){ | |
| 194 | + var data = []; | |
| 195 | +// data.push({id: " ", text: "全部线路"}); | |
| 196 | + $.get('/user/companyData', function(result){ | |
| 197 | + for(var i = 0; i < result.length; i++){ | |
| 198 | + var companyCode = result[i].companyCode; | |
| 199 | + var children = result[i].children; | |
| 200 | + for(var j = 0; j < children.length; j++){ | |
| 201 | + var code = children[j].code; | |
| 202 | + for(var k=0;k < xlList.length;k++ ){ | |
| 203 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 204 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 205 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 206 | + } | |
| 207 | + } | |
| 208 | + } | |
| 209 | + } | |
| 210 | + initPinYinSelect2('#line',data,''); | |
| 211 | + | |
| 212 | + }); | |
| 213 | + }); | |
| 214 | + | |
| 215 | + $("#line").on("change", function(){ | |
| 216 | + if($("#line").val() == " "){ | |
| 217 | + $("#gsdmXcld").attr("disabled", false); | |
| 218 | + $("#fgsdmXcld").attr("disabled", false); | |
| 219 | + } else { | |
| 220 | + var temp = tempData[$("#line").val()].split(":"); | |
| 221 | + $("#gsdmXcld").val(temp[0]); | |
| 222 | + updateCompany(); | |
| 223 | + $("#fgsdmXcld").val(temp[1]); | |
| 224 | + $("#gsdmXcld").attr("disabled", true); | |
| 225 | + $("#fgsdmXcld").attr("disabled", true); | |
| 226 | + } | |
| 227 | + }); | |
| 191 | 228 | var date = ''; |
| 192 | 229 | var line = ''; |
| 193 | 230 | $("#query").on("click",function(){ | ... | ... |
src/main/resources/static/pages/forms/statement/workDaily.html
| ... | ... | @@ -112,44 +112,6 @@ |
| 112 | 112 | day = "0" + day; |
| 113 | 113 | $("#date").val(year + "-" + month + "-" + day); |
| 114 | 114 | |
| 115 | -// $.get('/basic/lineCode2Name',function(result){ | |
| 116 | -// var data=[]; | |
| 117 | - | |
| 118 | -// data.push({id: " ", text: "全部线路"}); | |
| 119 | -// for(var code in result){ | |
| 120 | -// data.push({id: code, text: result[code]}); | |
| 121 | -// } | |
| 122 | -// initPinYinSelect2('#line',data,''); | |
| 123 | -// }) | |
| 124 | -// var obj = []; | |
| 125 | -// $.get('/user/companyData', function(result){ | |
| 126 | -// obj = result; | |
| 127 | -// var options = ''; | |
| 128 | -// for(var i = 0; i < obj.length; i++){ | |
| 129 | -// options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 130 | -// } | |
| 131 | -// if(obj.length == 1){ | |
| 132 | -// $('#company1').hide(); | |
| 133 | -// if(obj[0].children.length == 1) | |
| 134 | -// $('#subCompany1').hide(); | |
| 135 | -// } | |
| 136 | -// $('#company').html(options); | |
| 137 | -// updateCompany(); | |
| 138 | -// }); | |
| 139 | -// $("#company").on("change",updateCompany); | |
| 140 | -// function updateCompany(){ | |
| 141 | -// var company = $('#company').val(); | |
| 142 | -// var options = ''; | |
| 143 | -// for(var i = 0; i < obj.length; i++){ | |
| 144 | -// if(obj[i].companyCode == company){ | |
| 145 | -// var children = obj[i].children; | |
| 146 | -// for(var j = 0; j < children.length; j++){ | |
| 147 | -// options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 148 | -// } | |
| 149 | -// } | |
| 150 | -// } | |
| 151 | -// $('#subCompany').html(options); | |
| 152 | -// } | |
| 153 | 115 | var fage=false; |
| 154 | 116 | var xlList; |
| 155 | 117 | var obj = []; |
| ... | ... | @@ -188,34 +150,45 @@ |
| 188 | 150 | } |
| 189 | 151 | } |
| 190 | 152 | $('#subCompany').html(options); |
| 191 | - initXl(); | |
| 192 | 153 | } |
| 193 | 154 | |
| 194 | - $("#subCompany").on("change",initXl); | |
| 195 | - function initXl(){ | |
| 196 | - var data=[]; | |
| 197 | - if(fage){ | |
| 198 | - $("#line").select2("destroy").html(''); | |
| 199 | - } | |
| 200 | - var fgs=$('#subCompany').val(); | |
| 201 | - var gs=$('#company').val(); | |
| 155 | + var tempData = {}; | |
| 156 | + $.get('/report/lineList',function(xlList){ | |
| 157 | + var data = []; | |
| 202 | 158 | data.push({id: " ", text: "全部线路"}); |
| 203 | - for(var i=0;i<xlList.length;i++){ | |
| 204 | - if(gs!=""){ | |
| 205 | - if(fgs!=""){ | |
| 206 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 207 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 208 | - } | |
| 209 | - }else{ | |
| 210 | - if(xlList[i]["gsbm"]==gs){ | |
| 211 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 159 | + $.get('/user/companyData', function(result){ | |
| 160 | + for(var i = 0; i < result.length; i++){ | |
| 161 | + var companyCode = result[i].companyCode; | |
| 162 | + var children = result[i].children; | |
| 163 | + for(var j = 0; j < children.length; j++){ | |
| 164 | + var code = children[j].code; | |
| 165 | + for(var k=0;k < xlList.length;k++ ){ | |
| 166 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 167 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 168 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 169 | + } | |
| 212 | 170 | } |
| 213 | 171 | } |
| 214 | 172 | } |
| 173 | + initPinYinSelect2('#line',data,''); | |
| 174 | + | |
| 175 | + }); | |
| 176 | + }); | |
| 177 | + | |
| 178 | + $("#line").on("change", function(){ | |
| 179 | + if($("#line").val() == " "){ | |
| 180 | + $("#company").attr("disabled", false); | |
| 181 | + $("#subCompany").attr("disabled", false); | |
| 182 | + } else { | |
| 183 | + var temp = tempData[$("#line").val()].split(":"); | |
| 184 | + $("#company").val(temp[0]); | |
| 185 | + updateCompany(); | |
| 186 | + $("#subCompany").val(temp[1]); | |
| 187 | + $("#company").attr("disabled", true); | |
| 188 | + $("#subCompany").attr("disabled", true); | |
| 215 | 189 | } |
| 216 | - initPinYinSelect2('#line',data,''); | |
| 217 | - fage=true; | |
| 218 | - } | |
| 190 | + }); | |
| 191 | + | |
| 219 | 192 | |
| 220 | 193 | |
| 221 | 194 | ... | ... |
src/main/resources/static/pages/mforms/changetochanges/changetochange.html
| ... | ... | @@ -180,35 +180,46 @@ |
| 180 | 180 | } |
| 181 | 181 | } |
| 182 | 182 | $('#fgsdmChange').html(options); |
| 183 | - initXl(); | |
| 184 | 183 | } |
| 185 | 184 | |
| 186 | - $("#fgsdmChange").on("change",initXl); | |
| 187 | - function initXl(){ | |
| 188 | - var data=[]; | |
| 189 | - data.push({id: " ", text: "请选择"}); | |
| 190 | - if(fage){ | |
| 191 | - $("#line").select2("destroy").html(''); | |
| 192 | - } | |
| 193 | - var fgs=$('#fgsdmChange').val(); | |
| 194 | - var gs=$('#gsdmChange').val(); | |
| 195 | - for(var i=0;i<xlList.length;i++){ | |
| 196 | - if(gs!=""){ | |
| 197 | - if(fgs!=""){ | |
| 198 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 199 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 200 | - } | |
| 201 | - }else{ | |
| 202 | - if(xlList[i]["gsbm"]==gs){ | |
| 203 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 185 | + | |
| 186 | + var tempData = {}; | |
| 187 | + $.get('/report/lineList',function(xlList){ | |
| 188 | + var data = []; | |
| 189 | + data.push({id: " ", text: "全部线路"}); | |
| 190 | + $.get('/user/companyData', function(result){ | |
| 191 | + for(var i = 0; i < result.length; i++){ | |
| 192 | + var companyCode = result[i].companyCode; | |
| 193 | + var children = result[i].children; | |
| 194 | + for(var j = 0; j < children.length; j++){ | |
| 195 | + var code = children[j].code; | |
| 196 | + for(var k=0;k < xlList.length;k++ ){ | |
| 197 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 198 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 199 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 200 | + } | |
| 204 | 201 | } |
| 205 | 202 | } |
| 206 | 203 | } |
| 204 | + initPinYinSelect2('#line',data,''); | |
| 205 | + | |
| 206 | + }); | |
| 207 | + }); | |
| 208 | + | |
| 209 | + $("#line").on("change", function(){ | |
| 210 | + if($("#line").val() == " "){ | |
| 211 | + $("#gsdmChange").attr("disabled", false); | |
| 212 | + $("#fgsdmChange").attr("disabled", false); | |
| 213 | + } else { | |
| 214 | + var temp = tempData[$("#line").val()].split(":"); | |
| 215 | + $("#gsdmChange").val(temp[0]); | |
| 216 | + updateCompany(); | |
| 217 | + $("#fgsdmChange").val(temp[1]); | |
| 218 | + $("#gsdmChange").attr("disabled", true); | |
| 219 | + $("#fgsdmChange").attr("disabled", true); | |
| 207 | 220 | } |
| 208 | - initPinYinSelect2('#line',data,''); | |
| 209 | - fage=true; | |
| 210 | - } | |
| 211 | - | |
| 221 | + }); | |
| 222 | + | |
| 212 | 223 | var line; |
| 213 | 224 | var startDate; |
| 214 | 225 | var endDate; | ... | ... |
src/main/resources/static/pages/mforms/operationservices/operationservice.html
| ... | ... | @@ -153,45 +153,45 @@ |
| 153 | 153 | } |
| 154 | 154 | } |
| 155 | 155 | $('#fgsdmOperat').html(options); |
| 156 | - initXl(); | |
| 157 | 156 | } |
| 158 | 157 | |
| 159 | - /* $.get('/basic/lineCode2Name',function(result){ | |
| 160 | - var data=[]; | |
| 161 | - | |
| 162 | - for(var code in result){ | |
| 163 | - data.push({id: code, text: result[code]}); | |
| 164 | - } | |
| 165 | - initPinYinSelect2('#line',data,''); | |
| 166 | - | |
| 167 | - }) */ | |
| 168 | - | |
| 169 | - $("#fgsdmOperat").on("change",initXl); | |
| 170 | - function initXl(){ | |
| 171 | - var data=[]; | |
| 158 | + var tempData = {}; | |
| 159 | + $.get('/report/lineList',function(xlList){ | |
| 160 | + var data = []; | |
| 172 | 161 | data.push({id: " ", text: "全部线路"}); |
| 173 | - if(fage){ | |
| 174 | - $("#line").select2("destroy").html(''); | |
| 175 | - } | |
| 176 | - var fgs=$('#fgsdmOperat').val(); | |
| 177 | - var gs=$('#gsdmOperat').val(); | |
| 178 | - for(var i=0;i<xlList.length;i++){ | |
| 179 | - if(gs!=""){ | |
| 180 | - if(fgs!=""){ | |
| 181 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 182 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 183 | - } | |
| 184 | - }else{ | |
| 185 | - if(xlList[i]["gsbm"]==gs){ | |
| 186 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 162 | + $.get('/user/companyData', function(result){ | |
| 163 | + for(var i = 0; i < result.length; i++){ | |
| 164 | + var companyCode = result[i].companyCode; | |
| 165 | + var children = result[i].children; | |
| 166 | + for(var j = 0; j < children.length; j++){ | |
| 167 | + var code = children[j].code; | |
| 168 | + for(var k=0;k < xlList.length;k++ ){ | |
| 169 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 170 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 171 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 172 | + } | |
| 187 | 173 | } |
| 188 | 174 | } |
| 189 | 175 | } |
| 190 | - } | |
| 191 | - initPinYinSelect2('#line',data,''); | |
| 192 | - fage=true; | |
| 193 | - } | |
| 176 | + initPinYinSelect2('#line',data,''); | |
| 177 | + | |
| 178 | + }); | |
| 179 | + }); | |
| 194 | 180 | |
| 181 | + $("#line").on("change", function(){ | |
| 182 | + if($("#line").val() == " "){ | |
| 183 | + $("#gsdmOperat").attr("disabled", false); | |
| 184 | + $("#fgsdmOperat").attr("disabled", false); | |
| 185 | + } else { | |
| 186 | + var temp = tempData[$("#line").val()].split(":"); | |
| 187 | + $("#gsdmOperat").val(temp[0]); | |
| 188 | + updateCompany(); | |
| 189 | + $("#fgsdmOperat").val(temp[1]); | |
| 190 | + $("#gsdmOperat").attr("disabled", true); | |
| 191 | + $("#fgsdmOperat").attr("disabled", true); | |
| 192 | + } | |
| 193 | + }); | |
| 194 | + | |
| 195 | 195 | |
| 196 | 196 | $("#query").on( |
| 197 | 197 | "click", | ... | ... |
src/main/resources/static/pages/mforms/shifdays/shifday.html
| ... | ... | @@ -152,7 +152,6 @@ $(function(){ |
| 152 | 152 | } |
| 153 | 153 | } |
| 154 | 154 | $('#fgsdmShif').html(options); |
| 155 | - initXl(); | |
| 156 | 155 | } |
| 157 | 156 | |
| 158 | 157 | |
| ... | ... | @@ -166,30 +165,43 @@ $(function(){ |
| 166 | 165 | |
| 167 | 166 | // }) |
| 168 | 167 | |
| 169 | - $("#fgsdmShif").on("change",initXl); | |
| 170 | - function initXl(){ | |
| 171 | - var data=[]; | |
| 172 | - if(fage){ | |
| 173 | - $("#line").select2("destroy").html(''); | |
| 174 | - } | |
| 175 | - var fgs=$('#fgsdmShif').val(); | |
| 176 | - var gs=$('#gsdmShif').val(); | |
| 177 | - for(var i=0;i<xlList.length;i++){ | |
| 178 | - if(gs!=""){ | |
| 179 | - if(fgs!=""){ | |
| 180 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 181 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 182 | - } | |
| 183 | - }else{ | |
| 184 | - if(xlList[i]["gsbm"]==gs){ | |
| 185 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 168 | + var tempData = {}; | |
| 169 | + $.get('/report/lineList',function(xlList){ | |
| 170 | + var data = []; | |
| 171 | +// data.push({id: " ", text: "全部线路"}); | |
| 172 | + $.get('/user/companyData', function(result){ | |
| 173 | + for(var i = 0; i < result.length; i++){ | |
| 174 | + var companyCode = result[i].companyCode; | |
| 175 | + var children = result[i].children; | |
| 176 | + for(var j = 0; j < children.length; j++){ | |
| 177 | + var code = children[j].code; | |
| 178 | + for(var k=0;k < xlList.length;k++ ){ | |
| 179 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 180 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 181 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 182 | + } | |
| 183 | + } | |
| 186 | 184 | } |
| 187 | 185 | } |
| 186 | + initPinYinSelect2('#line',data,''); | |
| 187 | + | |
| 188 | + }); | |
| 189 | + }); | |
| 190 | + | |
| 191 | + $("#line").on("change", function(){ | |
| 192 | + if($("#line").val() == " "){ | |
| 193 | + $("#gsdmShif").attr("disabled", false); | |
| 194 | + $("#fgsdmShif").attr("disabled", false); | |
| 195 | + } else { | |
| 196 | + var temp = tempData[$("#line").val()].split(":"); | |
| 197 | + $("#gsdmShif").val(temp[0]); | |
| 198 | + updateCompany(); | |
| 199 | + $("#fgsdmShif").val(temp[1]); | |
| 200 | + $("#gsdmShif").attr("disabled", true); | |
| 201 | + $("#fgsdmShif").attr("disabled", true); | |
| 188 | 202 | } |
| 189 | - } | |
| 190 | - initPinYinSelect2('#line',data,''); | |
| 191 | - fage=true; | |
| 192 | - } | |
| 203 | + }); | |
| 204 | + | |
| 193 | 205 | |
| 194 | 206 | |
| 195 | 207 | $("#query").on("click",function(){ | ... | ... |
src/main/resources/static/pages/mforms/shiftuehiclemanths/shiftuehiclemanth.html
| ... | ... | @@ -150,32 +150,45 @@ |
| 150 | 150 | } |
| 151 | 151 | } |
| 152 | 152 | $('#fgsdmManth').html(options); |
| 153 | - initXl(); | |
| 154 | 153 | } |
| 155 | - $("#fgsdmManth").on("change",initXl); | |
| 156 | - function initXl(){ | |
| 157 | - var data=[]; | |
| 158 | - if(fage){ | |
| 159 | - $("#line").select2("destroy").html(''); | |
| 160 | - } | |
| 161 | - var fgs=$('#fgsdmManth').val(); | |
| 162 | - var gs=$('#gsdmManth').val(); | |
| 163 | - for(var i=0;i<xlList.length;i++){ | |
| 164 | - if(gs!=""){ | |
| 165 | - if(fgs!=""){ | |
| 166 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 167 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 168 | - } | |
| 169 | - }else{ | |
| 170 | - if(xlList[i]["gsbm"]==gs){ | |
| 171 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 154 | + | |
| 155 | + | |
| 156 | + var tempData = {}; | |
| 157 | + $.get('/report/lineList',function(xlList){ | |
| 158 | + var data = []; | |
| 159 | + $.get('/user/companyData', function(result){ | |
| 160 | + for(var i = 0; i < result.length; i++){ | |
| 161 | + var companyCode = result[i].companyCode; | |
| 162 | + var children = result[i].children; | |
| 163 | + for(var j = 0; j < children.length; j++){ | |
| 164 | + var code = children[j].code; | |
| 165 | + for(var k=0;k < xlList.length;k++ ){ | |
| 166 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 167 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 168 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 169 | + } | |
| 172 | 170 | } |
| 173 | 171 | } |
| 174 | 172 | } |
| 173 | + initPinYinSelect2('#line',data,''); | |
| 174 | + | |
| 175 | + }); | |
| 176 | + }); | |
| 177 | + | |
| 178 | + $("#line").on("change", function(){ | |
| 179 | + if($("#line").val() == " "){ | |
| 180 | + $("#gsdmManth").attr("disabled", false); | |
| 181 | + $("#fgsdmManth").attr("disabled", false); | |
| 182 | + } else { | |
| 183 | + var temp = tempData[$("#line").val()].split(":"); | |
| 184 | + $("#gsdmManth").val(temp[0]); | |
| 185 | + updateCompany(); | |
| 186 | + $("#fgsdmManth").val(temp[1]); | |
| 187 | + $("#gsdmManth").attr("disabled", true); | |
| 188 | + $("#fgsdmManth").attr("disabled", true); | |
| 175 | 189 | } |
| 176 | - initPinYinSelect2('#line',data,''); | |
| 177 | - fage=true; | |
| 178 | - } | |
| 190 | + }); | |
| 191 | + | |
| 179 | 192 | $("#query").on("click",function(){ |
| 180 | 193 | if($("#startDate").val() == null || $("#startDate").val().trim().length == 0){ |
| 181 | 194 | layer.msg("请选择时间范围!"); | ... | ... |
src/main/resources/static/pages/mforms/singledatas/singledata.html
| ... | ... | @@ -134,34 +134,44 @@ |
| 134 | 134 | } |
| 135 | 135 | } |
| 136 | 136 | $('#fgsdmSing').html(options); |
| 137 | - initXl(); | |
| 138 | 137 | } |
| 139 | 138 | |
| 140 | - $("#fgsdmSing").on("change",initXl); | |
| 141 | - function initXl(){ | |
| 142 | - var data=[]; | |
| 143 | - data.push({id: " ", text: "请选择"}); | |
| 144 | - if(fage){ | |
| 145 | - $("#line").select2("destroy").html(''); | |
| 146 | - } | |
| 147 | - var fgs=$('#fgsdmSing').val(); | |
| 148 | - var gs=$('#gsdmSing').val(); | |
| 149 | - for(var i=0;i<xlList.length;i++){ | |
| 150 | - if(gs!=""){ | |
| 151 | - if(fgs!=""){ | |
| 152 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 153 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 154 | - } | |
| 155 | - }else{ | |
| 156 | - if(xlList[i]["gsbm"]==gs){ | |
| 157 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 139 | + var tempData = {}; | |
| 140 | + $.get('/report/lineList',function(xlList){ | |
| 141 | + var data = []; | |
| 142 | + data.push({id: " ", text: "全部线路"}); | |
| 143 | + $.get('/user/companyData', function(result){ | |
| 144 | + for(var i = 0; i < result.length; i++){ | |
| 145 | + var companyCode = result[i].companyCode; | |
| 146 | + var children = result[i].children; | |
| 147 | + for(var j = 0; j < children.length; j++){ | |
| 148 | + var code = children[j].code; | |
| 149 | + for(var k=0;k < xlList.length;k++ ){ | |
| 150 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 151 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 152 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 153 | + } | |
| 158 | 154 | } |
| 159 | 155 | } |
| 160 | 156 | } |
| 157 | + initPinYinSelect2('#line',data,''); | |
| 158 | + | |
| 159 | + }); | |
| 160 | + }); | |
| 161 | + | |
| 162 | + $("#line").on("change", function(){ | |
| 163 | + if($("#line").val() == " "){ | |
| 164 | + $("#gsdmSing").attr("disabled", false); | |
| 165 | + $("#fgsdmSing").attr("disabled", false); | |
| 166 | + } else { | |
| 167 | + var temp = tempData[$("#line").val()].split(":"); | |
| 168 | + $("#gsdmSing").val(temp[0]); | |
| 169 | + updateCompany(); | |
| 170 | + $("#fgsdmSing").val(temp[1]); | |
| 171 | + $("#gsdmSing").attr("disabled", true); | |
| 172 | + $("#fgsdmSing").attr("disabled", true); | |
| 161 | 173 | } |
| 162 | - initPinYinSelect2('#line',data,''); | |
| 163 | - fage=true; | |
| 164 | - } | |
| 174 | + }); | |
| 165 | 175 | |
| 166 | 176 | |
| 167 | 177 | $("#query").on("click",function(){ | ... | ... |
src/main/resources/static/pages/mforms/turnoutrates/turnoutrate.html
| ... | ... | @@ -172,34 +172,44 @@ |
| 172 | 172 | } |
| 173 | 173 | } |
| 174 | 174 | $('#fgsdmTurn').html(options); |
| 175 | - initXl(); | |
| 176 | 175 | } |
| 177 | - | |
| 178 | - $("#fgsdmTurn").on("change",initXl); | |
| 179 | - function initXl(){ | |
| 180 | - var data=[]; | |
| 181 | - data.push({id:" ", text:"全部线路"}); | |
| 182 | - if(fage){ | |
| 183 | - $("#line").select2("destroy").html(''); | |
| 184 | - } | |
| 185 | - var fgs=$('#fgsdmTurn').val(); | |
| 186 | - var gs=$('#gsdmTurn').val(); | |
| 187 | - for(var i=0;i<xlList.length;i++){ | |
| 188 | - if(gs!=""){ | |
| 189 | - if(fgs!=""){ | |
| 190 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 191 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 192 | - } | |
| 193 | - }else{ | |
| 194 | - if(xlList[i]["gsbm"]==gs){ | |
| 195 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 176 | + | |
| 177 | + var tempData = {}; | |
| 178 | + $.get('/report/lineList',function(xlList){ | |
| 179 | + var data = []; | |
| 180 | + data.push({id: " ", text: "全部线路"}); | |
| 181 | + $.get('/user/companyData', function(result){ | |
| 182 | + for(var i = 0; i < result.length; i++){ | |
| 183 | + var companyCode = result[i].companyCode; | |
| 184 | + var children = result[i].children; | |
| 185 | + for(var j = 0; j < children.length; j++){ | |
| 186 | + var code = children[j].code; | |
| 187 | + for(var k=0;k < xlList.length;k++ ){ | |
| 188 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 189 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 190 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 191 | + } | |
| 196 | 192 | } |
| 197 | 193 | } |
| 198 | 194 | } |
| 195 | + initPinYinSelect2('#line',data,''); | |
| 196 | + | |
| 197 | + }); | |
| 198 | + }); | |
| 199 | + | |
| 200 | + $("#line").on("change", function(){ | |
| 201 | + if($("#line").val() == " "){ | |
| 202 | + $("#gsdmTurn").attr("disabled", false); | |
| 203 | + $("#fgsdmTurn").attr("disabled", false); | |
| 204 | + } else { | |
| 205 | + var temp = tempData[$("#line").val()].split(":"); | |
| 206 | + $("#gsdmTurn").val(temp[0]); | |
| 207 | + updateCompany(); | |
| 208 | + $("#fgsdmTurn").val(temp[1]); | |
| 209 | + $("#gsdmTurn").attr("disabled", true); | |
| 210 | + $("#fgsdmTurn").attr("disabled", true); | |
| 199 | 211 | } |
| 200 | - initPinYinSelect2('#line',data,''); | |
| 201 | - fage=true; | |
| 202 | - } | |
| 212 | + }); | |
| 203 | 213 | |
| 204 | 214 | var line; |
| 205 | 215 | var startDate; | ... | ... |
src/main/resources/static/pages/mforms/vehicleloadings/vehicleloading.html
| ... | ... | @@ -127,33 +127,43 @@ |
| 127 | 127 | } |
| 128 | 128 | } |
| 129 | 129 | $('#fgsdmVehic').html(options); |
| 130 | - initXl(); | |
| 131 | 130 | } |
| 132 | 131 | |
| 133 | - $("#fgsdmVehic").on("change",initXl); | |
| 134 | - function initXl(){ | |
| 135 | - var data=[]; | |
| 136 | - if(fage){ | |
| 137 | - $("#line").select2("destroy").html(''); | |
| 138 | - } | |
| 139 | - var fgs=$('#fgsdmVehic').val(); | |
| 140 | - var gs=$('#gsdmVehic').val(); | |
| 141 | - for(var i=0;i<xlList.length;i++){ | |
| 142 | - if(gs!=""){ | |
| 143 | - if(fgs!=""){ | |
| 144 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 145 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 146 | - } | |
| 147 | - }else{ | |
| 148 | - if(xlList[i]["gsbm"]==gs){ | |
| 149 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 132 | + var tempData = {}; | |
| 133 | + $.get('/report/lineList',function(xlList){ | |
| 134 | + var data = []; | |
| 135 | + $.get('/user/companyData', function(result){ | |
| 136 | + for(var i = 0; i < result.length; i++){ | |
| 137 | + var companyCode = result[i].companyCode; | |
| 138 | + var children = result[i].children; | |
| 139 | + for(var j = 0; j < children.length; j++){ | |
| 140 | + var code = children[j].code; | |
| 141 | + for(var k=0;k < xlList.length;k++ ){ | |
| 142 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 143 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 144 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 145 | + } | |
| 150 | 146 | } |
| 151 | 147 | } |
| 152 | 148 | } |
| 149 | + initPinYinSelect2('#line',data,''); | |
| 150 | + | |
| 151 | + }); | |
| 152 | + }); | |
| 153 | + | |
| 154 | + $("#line").on("change", function(){ | |
| 155 | + if($("#line").val() == " "){ | |
| 156 | + $("#gsdmVehic").attr("disabled", false); | |
| 157 | + $("#fgsdmVehic").attr("disabled", false); | |
| 158 | + } else { | |
| 159 | + var temp = tempData[$("#line").val()].split(":"); | |
| 160 | + $("#gsdmVehic").val(temp[0]); | |
| 161 | + updateCompany(); | |
| 162 | + $("#fgsdmVehic").val(temp[1]); | |
| 163 | + $("#gsdmVehic").attr("disabled", true); | |
| 164 | + $("#fgsdmVehic").attr("disabled", true); | |
| 153 | 165 | } |
| 154 | - initPinYinSelect2('#line',data,''); | |
| 155 | - fage=true; | |
| 156 | - } | |
| 166 | + }); | |
| 157 | 167 | |
| 158 | 168 | var line ; |
| 159 | 169 | var date ; | ... | ... |
src/main/resources/static/pages/mforms/waybilldays/waybillday.html
| ... | ... | @@ -131,32 +131,46 @@ |
| 131 | 131 | } |
| 132 | 132 | } |
| 133 | 133 | $('#fgsdmWaybillday').html(options); |
| 134 | - initXl(); | |
| 134 | +// initXl(); | |
| 135 | 135 | } |
| 136 | - $("#fgsdmWaybillday").on("change",initXl); | |
| 137 | - function initXl(){ | |
| 138 | - var data=[]; | |
| 139 | - if(fage){ | |
| 140 | - $("#line").select2("destroy").html(''); | |
| 141 | - } | |
| 142 | - var fgs=$('#fgsdmWaybillday').val(); | |
| 143 | - var gs=$('#gsdmWaybillday').val(); | |
| 144 | - for(var i=0;i<xlList.length;i++){ | |
| 145 | - if(gs!=""){ | |
| 146 | - if(fgs!=""){ | |
| 147 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 148 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 149 | - } | |
| 150 | - }else{ | |
| 151 | - if(xlList[i]["gsbm"]==gs){ | |
| 152 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 136 | + | |
| 137 | + var tempData = {}; | |
| 138 | + $.get('/report/lineList',function(xlList){ | |
| 139 | + var data = []; | |
| 140 | +// data.push({id: " ", text: "全部线路"}); | |
| 141 | + $.get('/user/companyData', function(result){ | |
| 142 | + for(var i = 0; i < result.length; i++){ | |
| 143 | + var companyCode = result[i].companyCode; | |
| 144 | + var children = result[i].children; | |
| 145 | + for(var j = 0; j < children.length; j++){ | |
| 146 | + var code = children[j].code; | |
| 147 | + for(var k=0;k < xlList.length;k++ ){ | |
| 148 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 149 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 150 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 151 | + } | |
| 153 | 152 | } |
| 154 | 153 | } |
| 155 | 154 | } |
| 155 | + initPinYinSelect2('#line',data,''); | |
| 156 | + | |
| 157 | + }); | |
| 158 | + }); | |
| 159 | + | |
| 160 | + $("#line").on("change", function(){ | |
| 161 | + if($("#line").val() == " "){ | |
| 162 | + $("#gsdmWaybillday").attr("disabled", false); | |
| 163 | + $("#fgsdmWaybillday").attr("disabled", false); | |
| 164 | + } else { | |
| 165 | + var temp = tempData[$("#line").val()].split(":"); | |
| 166 | + $("#gsdmWaybillday").val(temp[0]); | |
| 167 | + updateCompany(); | |
| 168 | + $("#fgsdmWaybillday").val(temp[1]); | |
| 169 | + $("#gsdmWaybillday").attr("disabled", true); | |
| 170 | + $("#fgsdmWaybillday").attr("disabled", true); | |
| 156 | 171 | } |
| 157 | - initPinYinSelect2('#line',data,''); | |
| 158 | - fage=true; | |
| 159 | - } | |
| 172 | + }); | |
| 173 | + | |
| 160 | 174 | var line; |
| 161 | 175 | var date; |
| 162 | 176 | var gsdmWaybillday; | ... | ... |
src/main/resources/static/pages/report/countMileage/countBus/countBusMileage.html
| ... | ... | @@ -37,7 +37,7 @@ |
| 37 | 37 | <div class="portlet light porttlet-fit bordered"> |
| 38 | 38 | <div class="portlet-title"> |
| 39 | 39 | <form class="form-inline" action=""> |
| 40 | - <div style="display: inline-block; " id="gsdmDiv"> | |
| 40 | + <div style="display: inline-block;margin-left: 28px; " id="gsdmDiv"> | |
| 41 | 41 | <span class="item-label" style="width: 80px;">公司: </span> |
| 42 | 42 | <select class="form-control" name="company" id="gsdm" style="width: 180px;"></select> |
| 43 | 43 | </div> |
| ... | ... | @@ -45,7 +45,7 @@ |
| 45 | 45 | <span class="item-label" style="width: 80px;">分公司: </span> |
| 46 | 46 | <select class="form-control" name="subCompany" id="fgsdm" style="width: 180px;"></select> |
| 47 | 47 | </div> |
| 48 | - <div style="display: inline-block;margin-left: 29px;"> | |
| 48 | + <div style="display: inline-block;margin-left: 43px;"> | |
| 49 | 49 | <span class="item-label" style="width: 80px;">线路: </span> |
| 50 | 50 | <select class="form-control" name="line" id="line" style="width: 180px;"></select> |
| 51 | 51 | </div> |
| ... | ... | @@ -66,7 +66,7 @@ |
| 66 | 66 | <option value="js">驾/售</option> |
| 67 | 67 | </select> |
| 68 | 68 | </div> |
| 69 | - <div class="form-group"> | |
| 69 | + <div class="form-group" style="margin-left: 55px;"> | |
| 70 | 70 | <input class="btn btn-default" type="button" id="query" value="查询"/> |
| 71 | 71 | <input class="btn btn-default" type="button" id="export" value="导出"/> |
| 72 | 72 | </div> |
| ... | ... | @@ -149,33 +149,46 @@ |
| 149 | 149 | } |
| 150 | 150 | } |
| 151 | 151 | $('#fgsdm').html(options); |
| 152 | - initXl(); | |
| 153 | 152 | } |
| 154 | - $("#fgsdm").on("change",initXl); | |
| 155 | - function initXl(){ | |
| 156 | - var data=[]; | |
| 153 | + | |
| 154 | + | |
| 155 | + var tempData = {}; | |
| 156 | + $.get('/report/lineList',function(xlList){ | |
| 157 | + var data = []; | |
| 157 | 158 | data.push({id: " ", text: "全部线路"}); |
| 158 | - if(fage){ | |
| 159 | - $("#line").select2("destroy").html(''); | |
| 160 | - } | |
| 161 | - var fgs=$('#fgsdm').val(); | |
| 162 | - var gs=$('#gsdm').val(); | |
| 163 | - for(var i=0;i<xlList.length;i++){ | |
| 164 | - if(gs!=""){ | |
| 165 | - if(fgs!=""){ | |
| 166 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 167 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 168 | - } | |
| 169 | - }else{ | |
| 170 | - if(xlList[i]["gsbm"]==gs){ | |
| 171 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 159 | + $.get('/user/companyData', function(result){ | |
| 160 | + for(var i = 0; i < result.length; i++){ | |
| 161 | + var companyCode = result[i].companyCode; | |
| 162 | + var children = result[i].children; | |
| 163 | + for(var j = 0; j < children.length; j++){ | |
| 164 | + var code = children[j].code; | |
| 165 | + for(var k=0;k < xlList.length;k++ ){ | |
| 166 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 167 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 168 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 169 | + } | |
| 172 | 170 | } |
| 173 | 171 | } |
| 174 | 172 | } |
| 173 | + initPinYinSelect2('#line',data,''); | |
| 174 | + | |
| 175 | + }); | |
| 176 | + }); | |
| 177 | + | |
| 178 | + $("#line").on("change", function(){ | |
| 179 | + if($("#line").val() == " "){ | |
| 180 | + $("#gsdm").attr("disabled", false); | |
| 181 | + $("#fgsdm").attr("disabled", false); | |
| 182 | + } else { | |
| 183 | + var temp = tempData[$("#line").val()].split(":"); | |
| 184 | + $("#gsdm").val(temp[0]); | |
| 185 | + updateCompany(); | |
| 186 | + $("#fgsdm").val(temp[1]); | |
| 187 | + $("#gsdm").attr("disabled", true); | |
| 188 | + $("#fgsdm").attr("disabled", true); | |
| 175 | 189 | } |
| 176 | - initPinYinSelect2('#line',data,''); | |
| 177 | - fage=true; | |
| 178 | - } | |
| 190 | + }); | |
| 191 | + | |
| 179 | 192 | var line =""; |
| 180 | 193 | var xlName =""; |
| 181 | 194 | var date = ""; |
| ... | ... | @@ -241,9 +254,10 @@ |
| 241 | 254 | params['date'] = date; |
| 242 | 255 | params['date2'] = date2; |
| 243 | 256 | params['xlName'] = xlName; |
| 257 | + params['zt']=zt; | |
| 244 | 258 | params['type'] = "export"; |
| 245 | - $get('/realSchedule/statisticsDailyTj',params,function(result){ | |
| 246 | - window.open("/downloadFile/download?fileName=统计日报"+moment(date).format("YYYYMMDD")); | |
| 259 | + $get('/report/countBusMileage',params,function(result){ | |
| 260 | + window.open("/downloadFile/download?fileName=路单数据统计表"); | |
| 247 | 261 | }); |
| 248 | 262 | }); |
| 249 | 263 | |
| ... | ... | @@ -306,8 +320,8 @@ |
| 306 | 320 | <td>{{obj.jhwjcclc}}</td> |
| 307 | 321 | <td>{{obj.kfks}}</td> |
| 308 | 322 | <td>{{obj.zrwjcclc}}</td> |
| 309 | - <td>0</td> | |
| 310 | - <td>0</td> | |
| 323 | + <td>{{obj.zrwjcclc1}}</td> | |
| 324 | + <td>{{obj.zrwjcclc2}}</td> | |
| 311 | 325 | <td>{{obj.ljyy}}</td> |
| 312 | 326 | <td>{{obj.ljjcc}}</td> |
| 313 | 327 | <td>{{obj.yhl}}</td> | ... | ... |
src/main/resources/static/pages/report/countMileage/countLine/countLineMileage.html
| ... | ... | @@ -184,33 +184,46 @@ |
| 184 | 184 | } |
| 185 | 185 | } |
| 186 | 186 | $('#fgsdm').html(options); |
| 187 | - initXl(); | |
| 188 | 187 | } |
| 189 | - $("#fgsdm").on("change",initXl); | |
| 190 | - function initXl(){ | |
| 191 | - var data=[]; | |
| 188 | + | |
| 189 | + | |
| 190 | + var tempData = {}; | |
| 191 | + $.get('/report/lineList',function(xlList){ | |
| 192 | + var data = []; | |
| 192 | 193 | data.push({id: " ", text: "全部线路"}); |
| 193 | - if(fage){ | |
| 194 | - $("#line").select2("destroy").html(''); | |
| 195 | - } | |
| 196 | - var fgs=$('#fgsdm').val(); | |
| 197 | - var gs=$('#gsdm').val(); | |
| 198 | - for(var i=0;i<xlList.length;i++){ | |
| 199 | - if(gs!=""){ | |
| 200 | - if(fgs!=""){ | |
| 201 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 202 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 203 | - } | |
| 204 | - }else{ | |
| 205 | - if(xlList[i]["gsbm"]==gs){ | |
| 206 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 194 | + $.get('/user/companyData', function(result){ | |
| 195 | + for(var i = 0; i < result.length; i++){ | |
| 196 | + var companyCode = result[i].companyCode; | |
| 197 | + var children = result[i].children; | |
| 198 | + for(var j = 0; j < children.length; j++){ | |
| 199 | + var code = children[j].code; | |
| 200 | + for(var k=0;k < xlList.length;k++ ){ | |
| 201 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 202 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 203 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 204 | + } | |
| 207 | 205 | } |
| 208 | 206 | } |
| 209 | 207 | } |
| 208 | + initPinYinSelect2('#line',data,''); | |
| 209 | + | |
| 210 | + }); | |
| 211 | + }); | |
| 212 | + | |
| 213 | + $("#line").on("change", function(){ | |
| 214 | + if($("#line").val() == " "){ | |
| 215 | + $("#gsdm").attr("disabled", false); | |
| 216 | + $("#fgsdm").attr("disabled", false); | |
| 217 | + } else { | |
| 218 | + var temp = tempData[$("#line").val()].split(":"); | |
| 219 | + $("#gsdm").val(temp[0]); | |
| 220 | + updateCompany(); | |
| 221 | + $("#fgsdm").val(temp[1]); | |
| 222 | + $("#gsdm").attr("disabled", true); | |
| 223 | + $("#fgsdm").attr("disabled", true); | |
| 210 | 224 | } |
| 211 | - initPinYinSelect2('#line',data,''); | |
| 212 | - fage=true; | |
| 213 | - } | |
| 225 | + }); | |
| 226 | + | |
| 214 | 227 | var line =""; |
| 215 | 228 | var xlName =""; |
| 216 | 229 | var date = ""; |
| ... | ... | @@ -272,7 +285,7 @@ |
| 272 | 285 | params['date2'] = date2; |
| 273 | 286 | params['xlName'] = xlName; |
| 274 | 287 | params['type'] = "export"; |
| 275 | - $get('/realSchedule/countLineMileage',params,function(result){ | |
| 288 | + $get('/report/countLineMileage',params,function(result){ | |
| 276 | 289 | window.open("/downloadFile/download?fileName=线路公里统计表"); |
| 277 | 290 | }); |
| 278 | 291 | }); |
| ... | ... | @@ -293,8 +306,8 @@ |
| 293 | 306 | <td>{{obj.jhnjcclc}}</td> |
| 294 | 307 | <td>{{obj.jhwjcclc}}</td> |
| 295 | 308 | <td>{{obj.zrwjcclc}}</td> |
| 296 | - <td>0</td> | |
| 297 | - <td>0</td> | |
| 309 | + <td>{{obj.zrwjcclc1}}</td> | |
| 310 | + <td>{{obj.zrwjcclc2}}</td> | |
| 298 | 311 | <td>{{obj.lbss}}</td> |
| 299 | 312 | <td>{{obj.ssgl_lz}}</td> |
| 300 | 313 | <td>{{obj.ssgl_dm}}</td> | ... | ... |
src/main/resources/static/pages/report/inoutstation.html
| ... | ... | @@ -238,37 +238,47 @@ |
| 238 | 238 | } |
| 239 | 239 | } |
| 240 | 240 | $('#fgsdm').html(options); |
| 241 | - initXl(); | |
| 242 | 241 | initCl(); |
| 243 | 242 | } |
| 244 | 243 | |
| 245 | 244 | |
| 246 | 245 | |
| 247 | 246 | |
| 248 | - $("#fgsdm").on("change",initXl); | |
| 249 | - function initXl(){ | |
| 250 | - var data=[]; | |
| 251 | - if(fage){ | |
| 252 | - $("#line").select2("destroy").html(''); | |
| 253 | - } | |
| 254 | - var fgs=$('#fgsdm').val(); | |
| 255 | - var gs=$('#gsdm').val(); | |
| 256 | - for(var i=0;i<xlList.length;i++){ | |
| 257 | - if(gs!=""){ | |
| 258 | - if(fgs!=""){ | |
| 259 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 260 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 261 | - } | |
| 262 | - }else{ | |
| 263 | - if(xlList[i]["gsbm"]==gs){ | |
| 264 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 247 | + var tempData = {}; | |
| 248 | + $.get('/report/lineList',function(xlList){ | |
| 249 | + var data = []; | |
| 250 | + $.get('/user/companyData', function(result){ | |
| 251 | + for(var i = 0; i < result.length; i++){ | |
| 252 | + var companyCode = result[i].companyCode; | |
| 253 | + var children = result[i].children; | |
| 254 | + for(var j = 0; j < children.length; j++){ | |
| 255 | + var code = children[j].code; | |
| 256 | + for(var k=0;k < xlList.length;k++ ){ | |
| 257 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 258 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 259 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 260 | + } | |
| 265 | 261 | } |
| 266 | 262 | } |
| 267 | 263 | } |
| 264 | + initPinYinSelect2('#line',data,''); | |
| 265 | + | |
| 266 | + }); | |
| 267 | + }); | |
| 268 | + | |
| 269 | + $("#line").on("change", function(){ | |
| 270 | + if($("#line").val() == " "){ | |
| 271 | + $("#gsdm").attr("disabled", false); | |
| 272 | + $("#fgsdm").attr("disabled", false); | |
| 273 | + } else { | |
| 274 | + var temp = tempData[$("#line").val()].split(":"); | |
| 275 | + $("#gsdm").val(temp[0]); | |
| 276 | + updateCompany(); | |
| 277 | + $("#fgsdm").val(temp[1]); | |
| 278 | + $("#gsdm").attr("disabled", true); | |
| 279 | + $("#fgsdm").attr("disabled", true); | |
| 268 | 280 | } |
| 269 | - initPinYinSelect2('#line',data,''); | |
| 270 | - fage=true; | |
| 271 | - } | |
| 281 | + }); | |
| 272 | 282 | |
| 273 | 283 | |
| 274 | 284 | $("#query").on("click",function(){ | ... | ... |
src/main/resources/static/pages/report/message/message.html
| ... | ... | @@ -120,16 +120,25 @@ |
| 120 | 120 | day = "0" + day; |
| 121 | 121 | $("#date").val(year + "-" + month + "-" + day); |
| 122 | 122 | |
| 123 | - $.get('/basic/lineCode2Name',function(result){ | |
| 124 | - var data=[]; | |
| 125 | - | |
| 126 | - for(var code in result){ | |
| 127 | - data.push({id: code, text: result[code]}); | |
| 128 | - } | |
| 129 | - console.log(data); | |
| 130 | - initPinYinSelect2('#line',data,''); | |
| 131 | - | |
| 132 | - }) | |
| 123 | + $.get('/report/lineList',function(xlList){ | |
| 124 | + var data = []; | |
| 125 | + $.get('/user/companyData', function(result){ | |
| 126 | + for(var i = 0; i < result.length; i++){ | |
| 127 | + var companyCode = result[i].companyCode; | |
| 128 | + var children = result[i].children; | |
| 129 | + for(var j = 0; j < children.length; j++){ | |
| 130 | + var code = children[j].code; | |
| 131 | + for(var k=0;k < xlList.length;k++ ){ | |
| 132 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 133 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 134 | + } | |
| 135 | + } | |
| 136 | + } | |
| 137 | + } | |
| 138 | + initPinYinSelect2('#line',data,''); | |
| 139 | + | |
| 140 | + }); | |
| 141 | + }); | |
| 133 | 142 | $('#code').select2({ |
| 134 | 143 | ajax: { |
| 135 | 144 | url: '/realSchedule/sreachVehic', | ... | ... |
src/main/resources/static/pages/report/oil/oilListMonth.html
| ... | ... | @@ -105,16 +105,28 @@ |
| 105 | 105 | $("#date").val(year + "-0" + month + "-" + day); |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | - $.get('/basic/lineCode2Name',function(result){ | |
| 109 | - var data=[]; | |
| 110 | - | |
| 111 | - for(var code in result){ | |
| 112 | - data.push({id: code, text: result[code]}); | |
| 113 | - } | |
| 114 | - console.log(data); | |
| 115 | - initPinYinSelect2('#line',data,''); | |
| 116 | - | |
| 117 | - }) | |
| 108 | + var tempData = {}; | |
| 109 | + $.get('/report/lineList',function(xlList){ | |
| 110 | + var data = []; | |
| 111 | + $.get('/user/companyData', function(result){ | |
| 112 | + for(var i = 0; i < result.length; i++){ | |
| 113 | + var companyCode = result[i].companyCode; | |
| 114 | + var children = result[i].children; | |
| 115 | + for(var j = 0; j < children.length; j++){ | |
| 116 | + var code = children[j].code; | |
| 117 | + for(var k=0;k < xlList.length;k++ ){ | |
| 118 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 119 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 120 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 121 | + } | |
| 122 | + } | |
| 123 | + } | |
| 124 | + } | |
| 125 | + initPinYinSelect2('#line',data,''); | |
| 126 | + | |
| 127 | + }); | |
| 128 | + }); | |
| 129 | + | |
| 118 | 130 | |
| 119 | 131 | //查询 |
| 120 | 132 | $("#query").on('click',function(){ | ... | ... |
src/main/resources/static/pages/report/sheet/sheetList.html
| ... | ... | @@ -170,37 +170,47 @@ |
| 170 | 170 | } |
| 171 | 171 | } |
| 172 | 172 | $('#fgsdm').html(options); |
| 173 | - initXl(); | |
| 174 | - } | |
| 175 | - | |
| 176 | - | |
| 177 | - | |
| 178 | - | |
| 179 | - $("#fgsdm").on("change",initXl); | |
| 180 | - function initXl(){ | |
| 181 | - var data=[]; | |
| 182 | - if(fage){ | |
| 183 | - $("#line").select2("destroy").html(''); | |
| 184 | - } | |
| 185 | - data.push({id: " ", text: "请选择"}); | |
| 186 | - var fgs=$('#fgsdm').val(); | |
| 187 | - var gs=$('#gsdm').val(); | |
| 188 | - for(var i=0;i<xlList.length;i++){ | |
| 189 | - if(gs!=""){ | |
| 190 | - if(fgs!=""){ | |
| 191 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 192 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 193 | - } | |
| 194 | - }else{ | |
| 195 | - if(xlList[i]["gsbm"]==gs){ | |
| 196 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 173 | + | |
| 174 | + var tempData = {}; | |
| 175 | + $.get('/report/lineList',function(xlList){ | |
| 176 | + var data = []; | |
| 177 | + data.push({id: " ", text: "全部线路"}); | |
| 178 | + $.get('/user/companyData', function(result){ | |
| 179 | + for(var i = 0; i < result.length; i++){ | |
| 180 | + var companyCode = result[i].companyCode; | |
| 181 | + var children = result[i].children; | |
| 182 | + for(var j = 0; j < children.length; j++){ | |
| 183 | + var code = children[j].code; | |
| 184 | + for(var k=0;k < xlList.length;k++ ){ | |
| 185 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 186 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 187 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 188 | + } | |
| 189 | + } | |
| 197 | 190 | } |
| 198 | 191 | } |
| 192 | + initPinYinSelect2('#line',data,''); | |
| 193 | + | |
| 194 | + }); | |
| 195 | + }); | |
| 196 | + | |
| 197 | + $("#line").on("change", function(){ | |
| 198 | + if($("#line").val() == " "){ | |
| 199 | + $("#gsdm").attr("disabled", false); | |
| 200 | + $("#fgsdm").attr("disabled", false); | |
| 201 | + } else { | |
| 202 | + var temp = tempData[$("#line").val()].split(":"); | |
| 203 | + $("#gsdm").val(temp[0]); | |
| 204 | + updateCompany(); | |
| 205 | + $("#fgsdm").val(temp[1]); | |
| 206 | + $("#gsdm").attr("disabled", true); | |
| 207 | + $("#fgsdm").attr("disabled", true); | |
| 199 | 208 | } |
| 200 | - } | |
| 201 | - initPinYinSelect2('#line',data,''); | |
| 202 | - fage=true; | |
| 209 | + }); | |
| 203 | 210 | } |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 204 | 214 | //查询 |
| 205 | 215 | $("#query").on('click',function(){ |
| 206 | 216 | var line = $("#line").val(); | ... | ... |
src/main/resources/static/pages/report/timetable/timetable.html
| ... | ... | @@ -237,36 +237,46 @@ |
| 237 | 237 | } |
| 238 | 238 | } |
| 239 | 239 | $('#fgsdmTime').html(options); |
| 240 | - initXl(); | |
| 241 | 240 | } |
| 242 | 241 | |
| 243 | - $("#fgsdmTime").on("change",initXl); | |
| 244 | - function initXl(){ | |
| 245 | - var data=[]; | |
| 246 | - if(fage){ | |
| 247 | - $("#line").select2("destroy").html(''); | |
| 248 | - } | |
| 249 | - var fgs=$('#fgsdmTime').val(); | |
| 250 | - var gs=$('#gsdmTime').val(); | |
| 251 | - for(var i=0;i<xlList.length;i++){ | |
| 252 | - if(gs!=""){ | |
| 253 | - if(fgs!=""){ | |
| 254 | - if(xlList[i]["fgsbm"]==fgs && xlList[i]["gsbm"]==gs){ | |
| 255 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 256 | - } | |
| 257 | - }else{ | |
| 258 | - if(xlList[i]["gsbm"]==gs){ | |
| 259 | - data.push({id: xlList[i]["xlbm"], text: xlList[i]["xlname"]}); | |
| 242 | + | |
| 243 | + | |
| 244 | + var tempData = {}; | |
| 245 | + $.get('/report/lineList',function(xlList){ | |
| 246 | + var data = []; | |
| 247 | + $.get('/user/companyData', function(result){ | |
| 248 | + for(var i = 0; i < result.length; i++){ | |
| 249 | + var companyCode = result[i].companyCode; | |
| 250 | + var children = result[i].children; | |
| 251 | + for(var j = 0; j < children.length; j++){ | |
| 252 | + var code = children[j].code; | |
| 253 | + for(var k=0;k < xlList.length;k++ ){ | |
| 254 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 255 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 256 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 257 | + } | |
| 260 | 258 | } |
| 261 | 259 | } |
| 262 | 260 | } |
| 261 | + initPinYinSelect2('#line',data,''); | |
| 262 | + line = data[0].id; | |
| 263 | + updateTtinfo(); | |
| 264 | + }); | |
| 265 | + }); | |
| 266 | + | |
| 267 | + $("#line").on("change", function(){ | |
| 268 | + if($("#line").val() == " "){ | |
| 269 | + $("#gsdmTime").attr("disabled", false); | |
| 270 | + $("#fgsdmTime").attr("disabled", false); | |
| 271 | + } else { | |
| 272 | + var temp = tempData[$("#line").val()].split(":"); | |
| 273 | + $("#gsdmTime").val(temp[0]); | |
| 274 | + updateCompany(); | |
| 275 | + $("#fgsdmTime").val(temp[1]); | |
| 276 | + $("#gsdmTime").attr("disabled", true); | |
| 277 | + $("#fgsdmTime").attr("disabled", true); | |
| 263 | 278 | } |
| 264 | - initPinYinSelect2('#line',data,''); | |
| 265 | - fage=true; | |
| 266 | - | |
| 267 | - line = data[0].id; | |
| 268 | - updateTtinfo(); | |
| 269 | - } | |
| 279 | + }); | |
| 270 | 280 | |
| 271 | 281 | |
| 272 | 282 | var flag = 0; | ... | ... |
src/main/resources/static/pages/scheduleApp/Gruntfile.js
| ... | ... | @@ -87,7 +87,8 @@ module.exports = function (grunt) { |
| 87 | 87 | 'module/common/dts2/bcGroup/saBcgroup.js', // 班次选择整合指令 |
| 88 | 88 | 'module/common/dts2/ttinfotable/saTimeTable.js', // 时刻表显示指令 |
| 89 | 89 | 'module/common/dts2/scheduleplan/saScpdate.js', // saScpdate指令(非通用指令,只在排版计划form中使用) |
| 90 | - 'module/common/dts2/scheduleplan/saPlaninfoedit.js' // saPlaninfoedit指令(非通用指令,只在调度执勤日报中使用) | |
| 90 | + 'module/common/dts2/scheduleplan/saPlaninfoedit.js', // saPlaninfoedit指令(非通用指令,只在调度执勤日报中使用) | |
| 91 | + 'module/common/dts2/scheduleplan/saPlaninfoedit2.js' // saPlaninfoedit2指令(非通用指令,只在调度执勤日报中使用) | |
| 91 | 92 | ], |
| 92 | 93 | dest: 'module/common/prj-common-directive.js' |
| 93 | 94 | }, | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect5.js
| ... | ... | @@ -195,6 +195,10 @@ angular.module('ScheduleApp').directive('saSelect5', [ |
| 195 | 195 | * 验证内部数据,更新外部model |
| 196 | 196 | */ |
| 197 | 197 | scope[ctrlAs].$$internal_validate_model = function() { |
| 198 | + // TODO: | |
| 199 | + //console.log(scope[ctrlAs].$$internal_select_value); | |
| 200 | + //console.log(scope[ctrlAs].$$data_real); | |
| 201 | + | |
| 198 | 202 | if (scope[ctrlAs].$$internal_select_value) { |
| 199 | 203 | var select_value_temp = scope[ctrlAs].$$internal_select_value; |
| 200 | 204 | if (scope[ctrlAs].$$data_real && scope[ctrlAs].$$data_real.length > 0) { |
| ... | ... | @@ -206,6 +210,9 @@ angular.module('ScheduleApp').directive('saSelect5', [ |
| 206 | 210 | } |
| 207 | 211 | } |
| 208 | 212 | if (obj) { // 在data中判定有没有 |
| 213 | + // 初始化的时候,模拟选中uiselect | |
| 214 | + scope[ctrlAs].$$internal_select_fn(obj); | |
| 215 | + | |
| 209 | 216 | for (var k = 0; k < scope[ctrlAs].$$data.length; k++) { |
| 210 | 217 | if (eval("scope[ctrlAs].$$data[k]" + "." + $icname_attr + " == obj." + $icname_attr)) { |
| 211 | 218 | obj = undefined; |
| ... | ... | @@ -218,6 +225,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ |
| 218 | 225 | // 更新内部model,用于外部验证 |
| 219 | 226 | // 内部model的值暂时随意,以后再改 |
| 220 | 227 | scope[ctrlAs].$$internalmodel = {desc: "ok"}; |
| 228 | + | |
| 221 | 229 | } else { |
| 222 | 230 | scope[ctrlAs].$$internalmodel = undefined; |
| 223 | 231 | } | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoEdit2.js
0 → 100644
| 1 | +/** | |
| 2 | + * saPlaninfoedit2指令,排班明细编辑控件,用在调度执勤日报的修改功能 | |
| 3 | + * name(必须),控件的名字 | |
| 4 | + * ds,外部数据源 | |
| 5 | + * fd, 表单数据源 | |
| 6 | + */ | |
| 7 | +angular.module('ScheduleApp').directive( | |
| 8 | + 'saPlaninfoedit2', | |
| 9 | + [ | |
| 10 | + function() { | |
| 11 | + return { | |
| 12 | + restrict: 'E', | |
| 13 | + templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saPlaninfoeditTemplate.html', | |
| 14 | + scope: { // 独立作用域 | |
| 15 | + ds: '=ngModel', // 时刻明细数据源头 | |
| 16 | + fd: '=formData' // 表单数据源(车辆、驾驶员、售票员信息) | |
| 17 | + }, | |
| 18 | + controllerAs: '$saPlanInfoEditCtrl', | |
| 19 | + bindToController: true, | |
| 20 | + controller: function() { | |
| 21 | + //var self = this; | |
| 22 | + | |
| 23 | + }, | |
| 24 | + | |
| 25 | + compile: function(tElem, tAttrs) { | |
| 26 | + // 获取属性 | |
| 27 | + var $attr_name = tAttrs["name"]; // 控件的名字 | |
| 28 | + if (!$attr_name) { | |
| 29 | + throw {msg: "saPlaninfoedit2指令name属性不能为空"}; | |
| 30 | + } | |
| 31 | + | |
| 32 | + // 内部controlAs名字 | |
| 33 | + var ctrlAs = '$saPlanInfoEditCtrl'; | |
| 34 | + | |
| 35 | + | |
| 36 | + // 内部变量,原始车辆,人员数据 | |
| 37 | + var old_cl = {}; // key:{车辆id_车辆自编号},value:所在list下标数组 | |
| 38 | + var old_j = {}; // key:{驾驶员id_姓名_工号}, value:所在list下标数组 | |
| 39 | + var old_s = {}; // key:{售票员id_姓名_工号}, value:所在list下标数组 | |
| 40 | + var old_isfb = false; // 是否有分班 | |
| 41 | + var old_isfb_index = 0; // 分班开始索引 | |
| 42 | + var old_hasJCBC = false; // 是否有进场班次 | |
| 43 | + var old_max_fcno = 0; // 最大发车顺序号 | |
| 44 | + var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号 | |
| 45 | + var old_half_bcs = 0; // 一般的班次数量 | |
| 46 | + | |
| 47 | + // 内部变量,变更的车辆,变更的人员 | |
| 48 | + var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号) | |
| 49 | + var new_cl2 = undefined; // 新的车辆2(车辆id_车辆自编号) | |
| 50 | + var new_j1 = undefined; // 新的驾驶员1(驾驶员id_姓名_工号) | |
| 51 | + var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号) | |
| 52 | + var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号) | |
| 53 | + var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号) | |
| 54 | + | |
| 55 | + | |
| 56 | + // 表单值,被赋值的次数 | |
| 57 | + var form_data_assign_count = { | |
| 58 | + cl1 : 1, | |
| 59 | + cl2 : 1, | |
| 60 | + j1 : 1, | |
| 61 | + j2 : 1, | |
| 62 | + j3 : 1, | |
| 63 | + s1 : 1, | |
| 64 | + s2 : 1, | |
| 65 | + s3 : 1 | |
| 66 | + }; | |
| 67 | + | |
| 68 | + return { | |
| 69 | + pre: function(scope, element, attr) { | |
| 70 | + | |
| 71 | + }, | |
| 72 | + post: function(scope, element, attr) { | |
| 73 | + | |
| 74 | + /** | |
| 75 | + * 刷新车辆数据。 | |
| 76 | + */ | |
| 77 | + scope[ctrlAs].$$internal_refresh_dsdata_cl = function() { | |
| 78 | + if (new_cl1) { | |
| 79 | + var new_cl1_id = new_cl1.split("_")[0]; | |
| 80 | + var new_cl1_zbh = new_cl1.split("_")[1]; | |
| 81 | + | |
| 82 | + if (new_cl2) { | |
| 83 | + var new_cl2_id = new_cl2.split("_")[0]; | |
| 84 | + var new_cl2_zbh = new_cl2.split("_")[1]; | |
| 85 | + | |
| 86 | + if (old_isfb) { // 使用分班判定 | |
| 87 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 88 | + if (index < old_isfb_index) { | |
| 89 | + obj.cl = new_cl1_id; | |
| 90 | + obj.clZbh = new_cl1_zbh; | |
| 91 | + } else { | |
| 92 | + obj.cl = new_cl2_id; | |
| 93 | + obj.clZbh = new_cl2_zbh; | |
| 94 | + } | |
| 95 | + }); | |
| 96 | + | |
| 97 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | |
| 98 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | |
| 99 | + if (obj.fcno <= old_firstJCBCFcno) { | |
| 100 | + obj.cl = new_cl1_id; | |
| 101 | + obj.clZbh = new_cl1_zbh; | |
| 102 | + } else { | |
| 103 | + obj.cl = new_cl2_id; | |
| 104 | + obj.clZbh = new_cl2_zbh; | |
| 105 | + } | |
| 106 | + }); | |
| 107 | + } else { // 使用一半一半班次判定 | |
| 108 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 109 | + if (index < old_half_bcs) { | |
| 110 | + obj.cl = new_cl1_id; | |
| 111 | + obj.clZbh = new_cl1_zbh; | |
| 112 | + } else { | |
| 113 | + obj.cl = new_cl2_id; | |
| 114 | + obj.clZbh = new_cl2_zbh; | |
| 115 | + } | |
| 116 | + }); | |
| 117 | + } | |
| 118 | + | |
| 119 | + } else { | |
| 120 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 121 | + obj.cl = new_cl1_id; | |
| 122 | + obj.clZbh = new_cl1_zbh; | |
| 123 | + }); | |
| 124 | + } | |
| 125 | + | |
| 126 | + } else { | |
| 127 | + // 清空,不使用旧的 | |
| 128 | + angular.forEach(old_cl, function(value, key) { | |
| 129 | + angular.forEach(value, function(i) { | |
| 130 | + //scope[ctrlAs].ds[i].cl = key.split("_")[0]; | |
| 131 | + //scope[ctrlAs].ds[i].clZbh = key.split("_")[1]; | |
| 132 | + scope[ctrlAs].ds[i].cl = undefined; | |
| 133 | + scope[ctrlAs].ds[i].clZbh = undefined; | |
| 134 | + }); | |
| 135 | + }); | |
| 136 | + } | |
| 137 | + }; | |
| 138 | + | |
| 139 | + /** | |
| 140 | + * 刷新驾驶员数据。 | |
| 141 | + */ | |
| 142 | + scope[ctrlAs].$$internal_refresh_dsdata_j = function() { | |
| 143 | + if (new_j1) { | |
| 144 | + var new_j1_id = new_j1.split("_")[0]; | |
| 145 | + var new_j1_name = new_j1.split("_")[1]; | |
| 146 | + var new_j1_gh = new_j1.split("_")[2]; | |
| 147 | + if (new_j1_gh && new_j1_gh.indexOf("-") > 0) { | |
| 148 | + new_j1_gh = new_j1_gh.substr(3); // 修正工号,把 55- 这种前缀去掉 | |
| 149 | + } | |
| 150 | + | |
| 151 | + if (new_j2) { | |
| 152 | + var new_j2_id = new_j2.split("_")[0]; | |
| 153 | + var new_j2_name = new_j2.split("_")[1]; | |
| 154 | + var new_j2_gh = new_j2.split("_")[2]; | |
| 155 | + if (new_j2_gh && new_j2_gh.indexOf("-") > 0) { | |
| 156 | + new_j2_gh = new_j2_gh.substr(3); // 修正工号,把 55- 这种前缀去掉 | |
| 157 | + } | |
| 158 | + | |
| 159 | + if (old_isfb) { // 使用分班判定 | |
| 160 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 161 | + if (index < old_isfb_index) { | |
| 162 | + obj.j = new_j1_id; | |
| 163 | + obj.jGh = new_j1_gh; | |
| 164 | + obj.jName = new_j1_name; | |
| 165 | + } else { | |
| 166 | + obj.j = new_j2_id; | |
| 167 | + obj.jGh = new_j2_gh; | |
| 168 | + obj.jName = new_j2_name; | |
| 169 | + } | |
| 170 | + }); | |
| 171 | + | |
| 172 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | |
| 173 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | |
| 174 | + if (obj.fcno <= old_firstJCBCFcno) { | |
| 175 | + obj.j = new_j1_id; | |
| 176 | + obj.jGh = new_j1_gh; | |
| 177 | + obj.jName = new_j1_name; | |
| 178 | + } else { | |
| 179 | + obj.j = new_j2_id; | |
| 180 | + obj.jGh = new_j2_gh; | |
| 181 | + obj.jName = new_j2_name; | |
| 182 | + } | |
| 183 | + }); | |
| 184 | + } else { // 使用一半一半班次判定 | |
| 185 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 186 | + if (index < old_half_bcs) { | |
| 187 | + obj.j = new_j1_id; | |
| 188 | + obj.jGh = new_j1_gh; | |
| 189 | + obj.jName = new_j1_name; | |
| 190 | + } else { | |
| 191 | + obj.j = new_j2_id; | |
| 192 | + obj.jGh = new_j2_gh; | |
| 193 | + obj.jName = new_j2_name; | |
| 194 | + } | |
| 195 | + }); | |
| 196 | + } | |
| 197 | + | |
| 198 | + } else { | |
| 199 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 200 | + obj.j = new_j1_id; | |
| 201 | + obj.jGh = new_j1_gh; | |
| 202 | + obj.jName = new_j1_name; | |
| 203 | + }); | |
| 204 | + } | |
| 205 | + | |
| 206 | + } else { | |
| 207 | + // 清空,不使用使用旧的 | |
| 208 | + angular.forEach(old_j, function(value, key) { | |
| 209 | + angular.forEach(value, function(i) { | |
| 210 | + //scope[ctrlAs].ds[i].j = key.split("_")[0]; | |
| 211 | + //scope[ctrlAs].ds[i].jName = key.split("_")[1]; | |
| 212 | + //scope[ctrlAs].ds[i].jGh = key.split("_")[2]; | |
| 213 | + scope[ctrlAs].ds[i].j = undefined; | |
| 214 | + scope[ctrlAs].ds[i].jName = undefined; | |
| 215 | + scope[ctrlAs].ds[i].jGh = undefined; | |
| 216 | + }); | |
| 217 | + }); | |
| 218 | + } | |
| 219 | + }; | |
| 220 | + | |
| 221 | + /** | |
| 222 | + * 刷新售票员数据(和驾驶员配对的,有驾驶员,才有售票员)。 | |
| 223 | + */ | |
| 224 | + scope[ctrlAs].$$internal_refresh_dsdata_s = function() { | |
| 225 | + var j_id = undefined; | |
| 226 | + var s_id = undefined; | |
| 227 | + var s_gh = undefined; | |
| 228 | + var s_name = undefined; | |
| 229 | + | |
| 230 | + if (new_j1) { | |
| 231 | + j_id = new_j1.split("_")[0]; | |
| 232 | + if (new_s1) { | |
| 233 | + s_id = new_s1.split("_")[0]; | |
| 234 | + s_name = new_s1.split("_")[1]; | |
| 235 | + s_gh = new_s1.split("_")[2]; | |
| 236 | + if (s_gh && s_gh.indexOf("-") > 0) { // 修正工号,把 55- 这种前缀去掉 | |
| 237 | + s_gh = s_gh.substr(3); | |
| 238 | + } | |
| 239 | + } else { | |
| 240 | + s_id = undefined; | |
| 241 | + s_gh = undefined; | |
| 242 | + s_name = undefined | |
| 243 | + } | |
| 244 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 245 | + if (obj.j == j_id) { | |
| 246 | + obj.s = s_id; | |
| 247 | + obj.sGh = s_gh; | |
| 248 | + obj.sName = s_name; | |
| 249 | + } | |
| 250 | + }); | |
| 251 | + } | |
| 252 | + if (new_j2) { | |
| 253 | + j_id = new_j2.split("_")[0]; | |
| 254 | + if (new_s2) { | |
| 255 | + s_id = new_s2.split("_")[0]; | |
| 256 | + s_name = new_s2.split("_")[1]; | |
| 257 | + s_gh = new_s2.split("_")[2]; | |
| 258 | + if (s_gh && s_gh.indexOf("-") > 0) { // 修正工号,把 55- 这种前缀去掉 | |
| 259 | + s_gh = s_gh.substr(3); | |
| 260 | + } | |
| 261 | + } else { | |
| 262 | + s_id = undefined; | |
| 263 | + s_gh = undefined; | |
| 264 | + s_name = undefined | |
| 265 | + } | |
| 266 | + | |
| 267 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 268 | + if (obj.j == j_id) { | |
| 269 | + obj.s = s_id; | |
| 270 | + obj.sGh = s_gh; | |
| 271 | + obj.sName = s_name; | |
| 272 | + } | |
| 273 | + }); | |
| 274 | + } | |
| 275 | + }; | |
| 276 | + | |
| 277 | + | |
| 278 | + //-------------- 监控表单车辆1的变化 ----------------// | |
| 279 | + scope.$watch( | |
| 280 | + function() { | |
| 281 | + return scope[ctrlAs].fd.cl1; | |
| 282 | + }, | |
| 283 | + function(newValue, oldValue) { | |
| 284 | + // 初始化new_cl1 | |
| 285 | + if (newValue.id) { | |
| 286 | + if (newValue.id && newValue.zbh) { | |
| 287 | + new_cl1 = newValue.id + "_" + newValue.zbh; | |
| 288 | + } else { | |
| 289 | + new_cl1 = undefined; | |
| 290 | + } | |
| 291 | + } else { | |
| 292 | + new_cl1 = undefined; | |
| 293 | + } | |
| 294 | + | |
| 295 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 296 | + }, | |
| 297 | + true | |
| 298 | + ); | |
| 299 | + | |
| 300 | + //-------------- 监控表单车辆2的变化 ----------------// | |
| 301 | + scope.$watch( | |
| 302 | + function() { | |
| 303 | + return scope[ctrlAs].fd.cl2; | |
| 304 | + }, | |
| 305 | + function(newValue, oldValue) { | |
| 306 | + // 初始化new_cl2 | |
| 307 | + if (newValue.id) { | |
| 308 | + if (newValue.id && newValue.zbh) { | |
| 309 | + new_cl2 = newValue.id + "_" + newValue.zbh; | |
| 310 | + } else { | |
| 311 | + new_cl2 = undefined; | |
| 312 | + } | |
| 313 | + } else { | |
| 314 | + new_cl2 = undefined; | |
| 315 | + } | |
| 316 | + | |
| 317 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 318 | + }, | |
| 319 | + true | |
| 320 | + ); | |
| 321 | + | |
| 322 | + //-------------- 监控表单驾驶员1的变化 ----------------// | |
| 323 | + scope.$watch( | |
| 324 | + function() { | |
| 325 | + return scope[ctrlAs].fd.j1; | |
| 326 | + }, | |
| 327 | + function(newValue, oldValue) { | |
| 328 | + // 初始化j1 | |
| 329 | + if (newValue.id) { | |
| 330 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 331 | + new_j1 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 332 | + } else { | |
| 333 | + new_j1 = undefined; | |
| 334 | + } | |
| 335 | + } else { | |
| 336 | + new_j1 = undefined; | |
| 337 | + } | |
| 338 | + | |
| 339 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 340 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 341 | + }, | |
| 342 | + true | |
| 343 | + ); | |
| 344 | + | |
| 345 | + //-------------- 监控表单售票员1的变化 ----------------// | |
| 346 | + scope.$watch( | |
| 347 | + function() { | |
| 348 | + return scope[ctrlAs].fd.s1; | |
| 349 | + }, | |
| 350 | + function(newValue, oldValue) { | |
| 351 | + // 初始化s1 | |
| 352 | + if (newValue.id) { | |
| 353 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 354 | + new_s1 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 355 | + } else { | |
| 356 | + new_s1 = undefined; | |
| 357 | + } | |
| 358 | + } else { | |
| 359 | + new_s1 = undefined; | |
| 360 | + } | |
| 361 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 362 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 363 | + }, | |
| 364 | + true | |
| 365 | + ); | |
| 366 | + | |
| 367 | + //-------------- 监控表单驾驶员2的变化 ----------------// | |
| 368 | + scope.$watch( | |
| 369 | + function() { | |
| 370 | + return scope[ctrlAs].fd.j2; | |
| 371 | + }, | |
| 372 | + function(newValue, oldValue) { | |
| 373 | + // 初始化j2 | |
| 374 | + if (newValue.id) { | |
| 375 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 376 | + new_j2 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 377 | + } else { | |
| 378 | + new_j2 = undefined; | |
| 379 | + } | |
| 380 | + } else { | |
| 381 | + new_j2 = undefined; | |
| 382 | + } | |
| 383 | + | |
| 384 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 385 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 386 | + }, | |
| 387 | + true | |
| 388 | + ); | |
| 389 | + | |
| 390 | + //-------------- 监控表单售票员2的变化 ----------------// | |
| 391 | + scope.$watch( | |
| 392 | + function() { | |
| 393 | + return scope[ctrlAs].fd.s2; | |
| 394 | + }, | |
| 395 | + function(newValue, oldValue) { | |
| 396 | + // 初始化s2 | |
| 397 | + if (newValue && newValue.id) { | |
| 398 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 399 | + new_s2 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 400 | + } else { | |
| 401 | + new_s2 = undefined; | |
| 402 | + } | |
| 403 | + } else { | |
| 404 | + new_s2 = undefined; | |
| 405 | + } | |
| 406 | + | |
| 407 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 408 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 409 | + }, | |
| 410 | + true | |
| 411 | + ); | |
| 412 | + | |
| 413 | + //-------------------- 监控ds的变化,更新数据源,初始化formdata的数据 ---------------// | |
| 414 | + scope.$watch( | |
| 415 | + function() { | |
| 416 | + return scope[ctrlAs].ds; | |
| 417 | + }, | |
| 418 | + function(newValue, oldValue) { | |
| 419 | + if (newValue && newValue.length > 0) { | |
| 420 | + var j1 = newValue[0].j; | |
| 421 | + | |
| 422 | + var cl_ids = []; // 车辆ids数组(有顺序) | |
| 423 | + var j_s_ids = []; // 驾驶员ids,售票员ids,[{j:id,s:id},...](有顺序) | |
| 424 | + var isRepeat = false; | |
| 425 | + var i = 0; | |
| 426 | + | |
| 427 | + angular.forEach(newValue, function(obj, index) { | |
| 428 | + var k1 = obj.cl + "_" + obj.clZbh; | |
| 429 | + var k2 = !obj.j? undefined: obj.j + "_" + obj.jName + "_" + obj.jGh; | |
| 430 | + var k3 = !obj.s? undefined: obj.s + "_" + obj.sName + "_" + obj.sGh; | |
| 431 | + | |
| 432 | + if (!old_cl[k1]) { | |
| 433 | + old_cl[k1] = []; | |
| 434 | + } | |
| 435 | + if (!old_j[k2] && k2) { | |
| 436 | + old_j[k2] = []; | |
| 437 | + } | |
| 438 | + if (!old_s[k3] && k3) { | |
| 439 | + old_s[k3] = []; | |
| 440 | + } | |
| 441 | + | |
| 442 | + // 闭包 | |
| 443 | + (function(i) { | |
| 444 | + old_cl[k1].push(i); | |
| 445 | + if (k2) { | |
| 446 | + old_j[k2].push(i); | |
| 447 | + } | |
| 448 | + if (k3) { | |
| 449 | + old_s[k3].push(i); | |
| 450 | + } | |
| 451 | + })(index); | |
| 452 | + | |
| 453 | + // 判断是否分班 | |
| 454 | + if (j1 != obj.j && !old_isfb) { | |
| 455 | + old_isfb = true; | |
| 456 | + old_isfb_index = index; | |
| 457 | + } | |
| 458 | + | |
| 459 | + // 判断进出场 | |
| 460 | + if (obj.bcType == 'in' && !old_hasJCBC) { | |
| 461 | + old_hasJCBC = true; | |
| 462 | + old_firstJCBCFcno = obj.fcno; | |
| 463 | + } | |
| 464 | + | |
| 465 | + //-------------- formdata用数据处理 -------------// | |
| 466 | + // 车辆处理 | |
| 467 | + isRepeat = false; | |
| 468 | + if (obj.cl) { | |
| 469 | + for (i = 0; i < cl_ids.length; i++) { | |
| 470 | + if (cl_ids[i] == obj.cl) { | |
| 471 | + isRepeat = true; | |
| 472 | + break; | |
| 473 | + } | |
| 474 | + } | |
| 475 | + if (!isRepeat) { | |
| 476 | + cl_ids.push(obj.cl); | |
| 477 | + } | |
| 478 | + } | |
| 479 | + | |
| 480 | + // 人员处理(以驾驶员id为主,没有的话,售票员不管了) | |
| 481 | + isRepeat = false; | |
| 482 | + if (obj.j) { | |
| 483 | + for (i = 0; i < j_s_ids.length; i++) { | |
| 484 | + if (j_s_ids[i].j == obj.j) { | |
| 485 | + isRepeat = true; | |
| 486 | + break; | |
| 487 | + } | |
| 488 | + } | |
| 489 | + if (!isRepeat) { | |
| 490 | + j_s_ids.push({ | |
| 491 | + j: obj.j, | |
| 492 | + s: !obj.s? undefined: obj.s | |
| 493 | + }); | |
| 494 | + } | |
| 495 | + } | |
| 496 | + }); | |
| 497 | + | |
| 498 | + old_max_fcno = newValue[newValue.length - 1].fcno; | |
| 499 | + old_half_bcs = newValue.length / 2; | |
| 500 | + | |
| 501 | + // 更新formdata | |
| 502 | + for (i = 0; i < cl_ids.length; i++) { // 车辆更新前两辆 | |
| 503 | + if (i >= 2) { | |
| 504 | + break; | |
| 505 | + } else { | |
| 506 | + form_data_assign_count["cl" + (i + 1)] = 0; | |
| 507 | + scope[ctrlAs].fd["cl" + (i + 1)].id = cl_ids[i]; | |
| 508 | + } | |
| 509 | + } | |
| 510 | + for (i = 0; i < j_s_ids.length; i++) { // 人员更新 | |
| 511 | + if (i >= 3) { | |
| 512 | + break; | |
| 513 | + } else { | |
| 514 | + form_data_assign_count["j" + (i + 1)] = 0; | |
| 515 | + scope[ctrlAs].fd["j" + (i + 1)].id = j_s_ids[i].j; | |
| 516 | + | |
| 517 | + form_data_assign_count["s" + (i + 1)] = 0; | |
| 518 | + scope[ctrlAs].fd["s" + (i + 1)].id = j_s_ids[i].s; | |
| 519 | + } | |
| 520 | + } | |
| 521 | + } | |
| 522 | + } | |
| 523 | + ); | |
| 524 | + } | |
| 525 | + } | |
| 526 | + } | |
| 527 | + }; | |
| 528 | + } | |
| 529 | + ] | |
| 530 | +); | |
| 0 | 531 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
| ... | ... | @@ -1500,6 +1500,10 @@ angular.module('ScheduleApp').directive('saSelect5', [ |
| 1500 | 1500 | * 验证内部数据,更新外部model |
| 1501 | 1501 | */ |
| 1502 | 1502 | scope[ctrlAs].$$internal_validate_model = function() { |
| 1503 | + // TODO: | |
| 1504 | + //console.log(scope[ctrlAs].$$internal_select_value); | |
| 1505 | + //console.log(scope[ctrlAs].$$data_real); | |
| 1506 | + | |
| 1503 | 1507 | if (scope[ctrlAs].$$internal_select_value) { |
| 1504 | 1508 | var select_value_temp = scope[ctrlAs].$$internal_select_value; |
| 1505 | 1509 | if (scope[ctrlAs].$$data_real && scope[ctrlAs].$$data_real.length > 0) { |
| ... | ... | @@ -1511,6 +1515,9 @@ angular.module('ScheduleApp').directive('saSelect5', [ |
| 1511 | 1515 | } |
| 1512 | 1516 | } |
| 1513 | 1517 | if (obj) { // 在data中判定有没有 |
| 1518 | + // 初始化的时候,模拟选中uiselect | |
| 1519 | + scope[ctrlAs].$$internal_select_fn(obj); | |
| 1520 | + | |
| 1514 | 1521 | for (var k = 0; k < scope[ctrlAs].$$data.length; k++) { |
| 1515 | 1522 | if (eval("scope[ctrlAs].$$data[k]" + "." + $icname_attr + " == obj." + $icname_attr)) { |
| 1516 | 1523 | obj = undefined; |
| ... | ... | @@ -1523,6 +1530,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ |
| 1523 | 1530 | // 更新内部model,用于外部验证 |
| 1524 | 1531 | // 内部model的值暂时随意,以后再改 |
| 1525 | 1532 | scope[ctrlAs].$$internalmodel = {desc: "ok"}; |
| 1533 | + | |
| 1526 | 1534 | } else { |
| 1527 | 1535 | scope[ctrlAs].$$internalmodel = undefined; |
| 1528 | 1536 | } |
| ... | ... | @@ -4763,4 +4771,534 @@ angular.module('ScheduleApp').directive( |
| 4763 | 4771 | }; |
| 4764 | 4772 | } |
| 4765 | 4773 | ] |
| 4774 | +); | |
| 4775 | +/** | |
| 4776 | + * saPlaninfoedit2指令,排班明细编辑控件,用在调度执勤日报的修改功能 | |
| 4777 | + * name(必须),控件的名字 | |
| 4778 | + * ds,外部数据源 | |
| 4779 | + * fd, 表单数据源 | |
| 4780 | + */ | |
| 4781 | +angular.module('ScheduleApp').directive( | |
| 4782 | + 'saPlaninfoedit2', | |
| 4783 | + [ | |
| 4784 | + function() { | |
| 4785 | + return { | |
| 4786 | + restrict: 'E', | |
| 4787 | + templateUrl: '/pages/scheduleApp/module/common/dts2/scheduleplan/saPlaninfoeditTemplate.html', | |
| 4788 | + scope: { // 独立作用域 | |
| 4789 | + ds: '=ngModel', // 时刻明细数据源头 | |
| 4790 | + fd: '=formData' // 表单数据源(车辆、驾驶员、售票员信息) | |
| 4791 | + }, | |
| 4792 | + controllerAs: '$saPlanInfoEditCtrl', | |
| 4793 | + bindToController: true, | |
| 4794 | + controller: function() { | |
| 4795 | + //var self = this; | |
| 4796 | + | |
| 4797 | + }, | |
| 4798 | + | |
| 4799 | + compile: function(tElem, tAttrs) { | |
| 4800 | + // 获取属性 | |
| 4801 | + var $attr_name = tAttrs["name"]; // 控件的名字 | |
| 4802 | + if (!$attr_name) { | |
| 4803 | + throw {msg: "saPlaninfoedit2指令name属性不能为空"}; | |
| 4804 | + } | |
| 4805 | + | |
| 4806 | + // 内部controlAs名字 | |
| 4807 | + var ctrlAs = '$saPlanInfoEditCtrl'; | |
| 4808 | + | |
| 4809 | + | |
| 4810 | + // 内部变量,原始车辆,人员数据 | |
| 4811 | + var old_cl = {}; // key:{车辆id_车辆自编号},value:所在list下标数组 | |
| 4812 | + var old_j = {}; // key:{驾驶员id_姓名_工号}, value:所在list下标数组 | |
| 4813 | + var old_s = {}; // key:{售票员id_姓名_工号}, value:所在list下标数组 | |
| 4814 | + var old_isfb = false; // 是否有分班 | |
| 4815 | + var old_isfb_index = 0; // 分班开始索引 | |
| 4816 | + var old_hasJCBC = false; // 是否有进场班次 | |
| 4817 | + var old_max_fcno = 0; // 最大发车顺序号 | |
| 4818 | + var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号 | |
| 4819 | + var old_half_bcs = 0; // 一般的班次数量 | |
| 4820 | + | |
| 4821 | + // 内部变量,变更的车辆,变更的人员 | |
| 4822 | + var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号) | |
| 4823 | + var new_cl2 = undefined; // 新的车辆2(车辆id_车辆自编号) | |
| 4824 | + var new_j1 = undefined; // 新的驾驶员1(驾驶员id_姓名_工号) | |
| 4825 | + var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号) | |
| 4826 | + var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号) | |
| 4827 | + var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号) | |
| 4828 | + | |
| 4829 | + | |
| 4830 | + // 表单值,被赋值的次数 | |
| 4831 | + var form_data_assign_count = { | |
| 4832 | + cl1 : 1, | |
| 4833 | + cl2 : 1, | |
| 4834 | + j1 : 1, | |
| 4835 | + j2 : 1, | |
| 4836 | + j3 : 1, | |
| 4837 | + s1 : 1, | |
| 4838 | + s2 : 1, | |
| 4839 | + s3 : 1 | |
| 4840 | + }; | |
| 4841 | + | |
| 4842 | + return { | |
| 4843 | + pre: function(scope, element, attr) { | |
| 4844 | + | |
| 4845 | + }, | |
| 4846 | + post: function(scope, element, attr) { | |
| 4847 | + | |
| 4848 | + /** | |
| 4849 | + * 刷新车辆数据。 | |
| 4850 | + */ | |
| 4851 | + scope[ctrlAs].$$internal_refresh_dsdata_cl = function() { | |
| 4852 | + if (new_cl1) { | |
| 4853 | + var new_cl1_id = new_cl1.split("_")[0]; | |
| 4854 | + var new_cl1_zbh = new_cl1.split("_")[1]; | |
| 4855 | + | |
| 4856 | + if (new_cl2) { | |
| 4857 | + var new_cl2_id = new_cl2.split("_")[0]; | |
| 4858 | + var new_cl2_zbh = new_cl2.split("_")[1]; | |
| 4859 | + | |
| 4860 | + if (old_isfb) { // 使用分班判定 | |
| 4861 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 4862 | + if (index < old_isfb_index) { | |
| 4863 | + obj.cl = new_cl1_id; | |
| 4864 | + obj.clZbh = new_cl1_zbh; | |
| 4865 | + } else { | |
| 4866 | + obj.cl = new_cl2_id; | |
| 4867 | + obj.clZbh = new_cl2_zbh; | |
| 4868 | + } | |
| 4869 | + }); | |
| 4870 | + | |
| 4871 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | |
| 4872 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | |
| 4873 | + if (obj.fcno <= old_firstJCBCFcno) { | |
| 4874 | + obj.cl = new_cl1_id; | |
| 4875 | + obj.clZbh = new_cl1_zbh; | |
| 4876 | + } else { | |
| 4877 | + obj.cl = new_cl2_id; | |
| 4878 | + obj.clZbh = new_cl2_zbh; | |
| 4879 | + } | |
| 4880 | + }); | |
| 4881 | + } else { // 使用一半一半班次判定 | |
| 4882 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 4883 | + if (index < old_half_bcs) { | |
| 4884 | + obj.cl = new_cl1_id; | |
| 4885 | + obj.clZbh = new_cl1_zbh; | |
| 4886 | + } else { | |
| 4887 | + obj.cl = new_cl2_id; | |
| 4888 | + obj.clZbh = new_cl2_zbh; | |
| 4889 | + } | |
| 4890 | + }); | |
| 4891 | + } | |
| 4892 | + | |
| 4893 | + } else { | |
| 4894 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 4895 | + obj.cl = new_cl1_id; | |
| 4896 | + obj.clZbh = new_cl1_zbh; | |
| 4897 | + }); | |
| 4898 | + } | |
| 4899 | + | |
| 4900 | + } else { | |
| 4901 | + // 清空,不使用旧的 | |
| 4902 | + angular.forEach(old_cl, function(value, key) { | |
| 4903 | + angular.forEach(value, function(i) { | |
| 4904 | + //scope[ctrlAs].ds[i].cl = key.split("_")[0]; | |
| 4905 | + //scope[ctrlAs].ds[i].clZbh = key.split("_")[1]; | |
| 4906 | + scope[ctrlAs].ds[i].cl = undefined; | |
| 4907 | + scope[ctrlAs].ds[i].clZbh = undefined; | |
| 4908 | + }); | |
| 4909 | + }); | |
| 4910 | + } | |
| 4911 | + }; | |
| 4912 | + | |
| 4913 | + /** | |
| 4914 | + * 刷新驾驶员数据。 | |
| 4915 | + */ | |
| 4916 | + scope[ctrlAs].$$internal_refresh_dsdata_j = function() { | |
| 4917 | + if (new_j1) { | |
| 4918 | + var new_j1_id = new_j1.split("_")[0]; | |
| 4919 | + var new_j1_name = new_j1.split("_")[1]; | |
| 4920 | + var new_j1_gh = new_j1.split("_")[2]; | |
| 4921 | + if (new_j1_gh && new_j1_gh.indexOf("-") > 0) { | |
| 4922 | + new_j1_gh = new_j1_gh.substr(3); // 修正工号,把 55- 这种前缀去掉 | |
| 4923 | + } | |
| 4924 | + | |
| 4925 | + if (new_j2) { | |
| 4926 | + var new_j2_id = new_j2.split("_")[0]; | |
| 4927 | + var new_j2_name = new_j2.split("_")[1]; | |
| 4928 | + var new_j2_gh = new_j2.split("_")[2]; | |
| 4929 | + if (new_j2_gh && new_j2_gh.indexOf("-") > 0) { | |
| 4930 | + new_j2_gh = new_j2_gh.substr(3); // 修正工号,把 55- 这种前缀去掉 | |
| 4931 | + } | |
| 4932 | + | |
| 4933 | + if (old_isfb) { // 使用分班判定 | |
| 4934 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 4935 | + if (index < old_isfb_index) { | |
| 4936 | + obj.j = new_j1_id; | |
| 4937 | + obj.jGh = new_j1_gh; | |
| 4938 | + obj.jName = new_j1_name; | |
| 4939 | + } else { | |
| 4940 | + obj.j = new_j2_id; | |
| 4941 | + obj.jGh = new_j2_gh; | |
| 4942 | + obj.jName = new_j2_name; | |
| 4943 | + } | |
| 4944 | + }); | |
| 4945 | + | |
| 4946 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | |
| 4947 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | |
| 4948 | + if (obj.fcno <= old_firstJCBCFcno) { | |
| 4949 | + obj.j = new_j1_id; | |
| 4950 | + obj.jGh = new_j1_gh; | |
| 4951 | + obj.jName = new_j1_name; | |
| 4952 | + } else { | |
| 4953 | + obj.j = new_j2_id; | |
| 4954 | + obj.jGh = new_j2_gh; | |
| 4955 | + obj.jName = new_j2_name; | |
| 4956 | + } | |
| 4957 | + }); | |
| 4958 | + } else { // 使用一半一半班次判定 | |
| 4959 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 4960 | + if (index < old_half_bcs) { | |
| 4961 | + obj.j = new_j1_id; | |
| 4962 | + obj.jGh = new_j1_gh; | |
| 4963 | + obj.jName = new_j1_name; | |
| 4964 | + } else { | |
| 4965 | + obj.j = new_j2_id; | |
| 4966 | + obj.jGh = new_j2_gh; | |
| 4967 | + obj.jName = new_j2_name; | |
| 4968 | + } | |
| 4969 | + }); | |
| 4970 | + } | |
| 4971 | + | |
| 4972 | + } else { | |
| 4973 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 4974 | + obj.j = new_j1_id; | |
| 4975 | + obj.jGh = new_j1_gh; | |
| 4976 | + obj.jName = new_j1_name; | |
| 4977 | + }); | |
| 4978 | + } | |
| 4979 | + | |
| 4980 | + } else { | |
| 4981 | + // 清空,不使用使用旧的 | |
| 4982 | + angular.forEach(old_j, function(value, key) { | |
| 4983 | + angular.forEach(value, function(i) { | |
| 4984 | + //scope[ctrlAs].ds[i].j = key.split("_")[0]; | |
| 4985 | + //scope[ctrlAs].ds[i].jName = key.split("_")[1]; | |
| 4986 | + //scope[ctrlAs].ds[i].jGh = key.split("_")[2]; | |
| 4987 | + scope[ctrlAs].ds[i].j = undefined; | |
| 4988 | + scope[ctrlAs].ds[i].jName = undefined; | |
| 4989 | + scope[ctrlAs].ds[i].jGh = undefined; | |
| 4990 | + }); | |
| 4991 | + }); | |
| 4992 | + } | |
| 4993 | + }; | |
| 4994 | + | |
| 4995 | + /** | |
| 4996 | + * 刷新售票员数据(和驾驶员配对的,有驾驶员,才有售票员)。 | |
| 4997 | + */ | |
| 4998 | + scope[ctrlAs].$$internal_refresh_dsdata_s = function() { | |
| 4999 | + var j_id = undefined; | |
| 5000 | + var s_id = undefined; | |
| 5001 | + var s_gh = undefined; | |
| 5002 | + var s_name = undefined; | |
| 5003 | + | |
| 5004 | + if (new_j1) { | |
| 5005 | + j_id = new_j1.split("_")[0]; | |
| 5006 | + if (new_s1) { | |
| 5007 | + s_id = new_s1.split("_")[0]; | |
| 5008 | + s_name = new_s1.split("_")[1]; | |
| 5009 | + s_gh = new_s1.split("_")[2]; | |
| 5010 | + if (s_gh && s_gh.indexOf("-") > 0) { // 修正工号,把 55- 这种前缀去掉 | |
| 5011 | + s_gh = s_gh.substr(3); | |
| 5012 | + } | |
| 5013 | + } else { | |
| 5014 | + s_id = undefined; | |
| 5015 | + s_gh = undefined; | |
| 5016 | + s_name = undefined | |
| 5017 | + } | |
| 5018 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 5019 | + if (obj.j == j_id) { | |
| 5020 | + obj.s = s_id; | |
| 5021 | + obj.sGh = s_gh; | |
| 5022 | + obj.sName = s_name; | |
| 5023 | + } | |
| 5024 | + }); | |
| 5025 | + } | |
| 5026 | + if (new_j2) { | |
| 5027 | + j_id = new_j2.split("_")[0]; | |
| 5028 | + if (new_s2) { | |
| 5029 | + s_id = new_s2.split("_")[0]; | |
| 5030 | + s_name = new_s2.split("_")[1]; | |
| 5031 | + s_gh = new_s2.split("_")[2]; | |
| 5032 | + if (s_gh && s_gh.indexOf("-") > 0) { // 修正工号,把 55- 这种前缀去掉 | |
| 5033 | + s_gh = s_gh.substr(3); | |
| 5034 | + } | |
| 5035 | + } else { | |
| 5036 | + s_id = undefined; | |
| 5037 | + s_gh = undefined; | |
| 5038 | + s_name = undefined | |
| 5039 | + } | |
| 5040 | + | |
| 5041 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | |
| 5042 | + if (obj.j == j_id) { | |
| 5043 | + obj.s = s_id; | |
| 5044 | + obj.sGh = s_gh; | |
| 5045 | + obj.sName = s_name; | |
| 5046 | + } | |
| 5047 | + }); | |
| 5048 | + } | |
| 5049 | + }; | |
| 5050 | + | |
| 5051 | + | |
| 5052 | + //-------------- 监控表单车辆1的变化 ----------------// | |
| 5053 | + scope.$watch( | |
| 5054 | + function() { | |
| 5055 | + return scope[ctrlAs].fd.cl1; | |
| 5056 | + }, | |
| 5057 | + function(newValue, oldValue) { | |
| 5058 | + // 初始化new_cl1 | |
| 5059 | + if (newValue.id) { | |
| 5060 | + if (newValue.id && newValue.zbh) { | |
| 5061 | + new_cl1 = newValue.id + "_" + newValue.zbh; | |
| 5062 | + } else { | |
| 5063 | + new_cl1 = undefined; | |
| 5064 | + } | |
| 5065 | + } else { | |
| 5066 | + new_cl1 = undefined; | |
| 5067 | + } | |
| 5068 | + | |
| 5069 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 5070 | + }, | |
| 5071 | + true | |
| 5072 | + ); | |
| 5073 | + | |
| 5074 | + //-------------- 监控表单车辆2的变化 ----------------// | |
| 5075 | + scope.$watch( | |
| 5076 | + function() { | |
| 5077 | + return scope[ctrlAs].fd.cl2; | |
| 5078 | + }, | |
| 5079 | + function(newValue, oldValue) { | |
| 5080 | + // 初始化new_cl2 | |
| 5081 | + if (newValue.id) { | |
| 5082 | + if (newValue.id && newValue.zbh) { | |
| 5083 | + new_cl2 = newValue.id + "_" + newValue.zbh; | |
| 5084 | + } else { | |
| 5085 | + new_cl2 = undefined; | |
| 5086 | + } | |
| 5087 | + } else { | |
| 5088 | + new_cl2 = undefined; | |
| 5089 | + } | |
| 5090 | + | |
| 5091 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 5092 | + }, | |
| 5093 | + true | |
| 5094 | + ); | |
| 5095 | + | |
| 5096 | + //-------------- 监控表单驾驶员1的变化 ----------------// | |
| 5097 | + scope.$watch( | |
| 5098 | + function() { | |
| 5099 | + return scope[ctrlAs].fd.j1; | |
| 5100 | + }, | |
| 5101 | + function(newValue, oldValue) { | |
| 5102 | + // 初始化j1 | |
| 5103 | + if (newValue.id) { | |
| 5104 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 5105 | + new_j1 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 5106 | + } else { | |
| 5107 | + new_j1 = undefined; | |
| 5108 | + } | |
| 5109 | + } else { | |
| 5110 | + new_j1 = undefined; | |
| 5111 | + } | |
| 5112 | + | |
| 5113 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 5114 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 5115 | + }, | |
| 5116 | + true | |
| 5117 | + ); | |
| 5118 | + | |
| 5119 | + //-------------- 监控表单售票员1的变化 ----------------// | |
| 5120 | + scope.$watch( | |
| 5121 | + function() { | |
| 5122 | + return scope[ctrlAs].fd.s1; | |
| 5123 | + }, | |
| 5124 | + function(newValue, oldValue) { | |
| 5125 | + // 初始化s1 | |
| 5126 | + if (newValue.id) { | |
| 5127 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 5128 | + new_s1 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 5129 | + } else { | |
| 5130 | + new_s1 = undefined; | |
| 5131 | + } | |
| 5132 | + } else { | |
| 5133 | + new_s1 = undefined; | |
| 5134 | + } | |
| 5135 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 5136 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 5137 | + }, | |
| 5138 | + true | |
| 5139 | + ); | |
| 5140 | + | |
| 5141 | + //-------------- 监控表单驾驶员2的变化 ----------------// | |
| 5142 | + scope.$watch( | |
| 5143 | + function() { | |
| 5144 | + return scope[ctrlAs].fd.j2; | |
| 5145 | + }, | |
| 5146 | + function(newValue, oldValue) { | |
| 5147 | + // 初始化j2 | |
| 5148 | + if (newValue.id) { | |
| 5149 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 5150 | + new_j2 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 5151 | + } else { | |
| 5152 | + new_j2 = undefined; | |
| 5153 | + } | |
| 5154 | + } else { | |
| 5155 | + new_j2 = undefined; | |
| 5156 | + } | |
| 5157 | + | |
| 5158 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 5159 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 5160 | + }, | |
| 5161 | + true | |
| 5162 | + ); | |
| 5163 | + | |
| 5164 | + //-------------- 监控表单售票员2的变化 ----------------// | |
| 5165 | + scope.$watch( | |
| 5166 | + function() { | |
| 5167 | + return scope[ctrlAs].fd.s2; | |
| 5168 | + }, | |
| 5169 | + function(newValue, oldValue) { | |
| 5170 | + // 初始化s2 | |
| 5171 | + if (newValue && newValue.id) { | |
| 5172 | + if (newValue.id && newValue.name && newValue.jobCode) { | |
| 5173 | + new_s2 = newValue.id + "_" + newValue.name + "_" + newValue.jobCode; | |
| 5174 | + } else { | |
| 5175 | + new_s2 = undefined; | |
| 5176 | + } | |
| 5177 | + } else { | |
| 5178 | + new_s2 = undefined; | |
| 5179 | + } | |
| 5180 | + | |
| 5181 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 5182 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 5183 | + }, | |
| 5184 | + true | |
| 5185 | + ); | |
| 5186 | + | |
| 5187 | + //-------------------- 监控ds的变化,更新数据源,初始化formdata的数据 ---------------// | |
| 5188 | + scope.$watch( | |
| 5189 | + function() { | |
| 5190 | + return scope[ctrlAs].ds; | |
| 5191 | + }, | |
| 5192 | + function(newValue, oldValue) { | |
| 5193 | + if (newValue && newValue.length > 0) { | |
| 5194 | + var j1 = newValue[0].j; | |
| 5195 | + | |
| 5196 | + var cl_ids = []; // 车辆ids数组(有顺序) | |
| 5197 | + var j_s_ids = []; // 驾驶员ids,售票员ids,[{j:id,s:id},...](有顺序) | |
| 5198 | + var isRepeat = false; | |
| 5199 | + var i = 0; | |
| 5200 | + | |
| 5201 | + angular.forEach(newValue, function(obj, index) { | |
| 5202 | + var k1 = obj.cl + "_" + obj.clZbh; | |
| 5203 | + var k2 = !obj.j? undefined: obj.j + "_" + obj.jName + "_" + obj.jGh; | |
| 5204 | + var k3 = !obj.s? undefined: obj.s + "_" + obj.sName + "_" + obj.sGh; | |
| 5205 | + | |
| 5206 | + if (!old_cl[k1]) { | |
| 5207 | + old_cl[k1] = []; | |
| 5208 | + } | |
| 5209 | + if (!old_j[k2] && k2) { | |
| 5210 | + old_j[k2] = []; | |
| 5211 | + } | |
| 5212 | + if (!old_s[k3] && k3) { | |
| 5213 | + old_s[k3] = []; | |
| 5214 | + } | |
| 5215 | + | |
| 5216 | + // 闭包 | |
| 5217 | + (function(i) { | |
| 5218 | + old_cl[k1].push(i); | |
| 5219 | + if (k2) { | |
| 5220 | + old_j[k2].push(i); | |
| 5221 | + } | |
| 5222 | + if (k3) { | |
| 5223 | + old_s[k3].push(i); | |
| 5224 | + } | |
| 5225 | + })(index); | |
| 5226 | + | |
| 5227 | + // 判断是否分班 | |
| 5228 | + if (j1 != obj.j && !old_isfb) { | |
| 5229 | + old_isfb = true; | |
| 5230 | + old_isfb_index = index; | |
| 5231 | + } | |
| 5232 | + | |
| 5233 | + // 判断进出场 | |
| 5234 | + if (obj.bcType == 'in' && !old_hasJCBC) { | |
| 5235 | + old_hasJCBC = true; | |
| 5236 | + old_firstJCBCFcno = obj.fcno; | |
| 5237 | + } | |
| 5238 | + | |
| 5239 | + //-------------- formdata用数据处理 -------------// | |
| 5240 | + // 车辆处理 | |
| 5241 | + isRepeat = false; | |
| 5242 | + if (obj.cl) { | |
| 5243 | + for (i = 0; i < cl_ids.length; i++) { | |
| 5244 | + if (cl_ids[i] == obj.cl) { | |
| 5245 | + isRepeat = true; | |
| 5246 | + break; | |
| 5247 | + } | |
| 5248 | + } | |
| 5249 | + if (!isRepeat) { | |
| 5250 | + cl_ids.push(obj.cl); | |
| 5251 | + } | |
| 5252 | + } | |
| 5253 | + | |
| 5254 | + // 人员处理(以驾驶员id为主,没有的话,售票员不管了) | |
| 5255 | + isRepeat = false; | |
| 5256 | + if (obj.j) { | |
| 5257 | + for (i = 0; i < j_s_ids.length; i++) { | |
| 5258 | + if (j_s_ids[i].j == obj.j) { | |
| 5259 | + isRepeat = true; | |
| 5260 | + break; | |
| 5261 | + } | |
| 5262 | + } | |
| 5263 | + if (!isRepeat) { | |
| 5264 | + j_s_ids.push({ | |
| 5265 | + j: obj.j, | |
| 5266 | + s: !obj.s? undefined: obj.s | |
| 5267 | + }); | |
| 5268 | + } | |
| 5269 | + } | |
| 5270 | + }); | |
| 5271 | + | |
| 5272 | + old_max_fcno = newValue[newValue.length - 1].fcno; | |
| 5273 | + old_half_bcs = newValue.length / 2; | |
| 5274 | + | |
| 5275 | + // 更新formdata | |
| 5276 | + for (i = 0; i < cl_ids.length; i++) { // 车辆更新前两辆 | |
| 5277 | + if (i >= 2) { | |
| 5278 | + break; | |
| 5279 | + } else { | |
| 5280 | + form_data_assign_count["cl" + (i + 1)] = 0; | |
| 5281 | + scope[ctrlAs].fd["cl" + (i + 1)].id = cl_ids[i]; | |
| 5282 | + } | |
| 5283 | + } | |
| 5284 | + for (i = 0; i < j_s_ids.length; i++) { // 人员更新 | |
| 5285 | + if (i >= 3) { | |
| 5286 | + break; | |
| 5287 | + } else { | |
| 5288 | + form_data_assign_count["j" + (i + 1)] = 0; | |
| 5289 | + scope[ctrlAs].fd["j" + (i + 1)].id = j_s_ids[i].j; | |
| 5290 | + | |
| 5291 | + form_data_assign_count["s" + (i + 1)] = 0; | |
| 5292 | + scope[ctrlAs].fd["s" + (i + 1)].id = j_s_ids[i].s; | |
| 5293 | + } | |
| 5294 | + } | |
| 5295 | + } | |
| 5296 | + } | |
| 5297 | + ); | |
| 5298 | + } | |
| 5299 | + } | |
| 5300 | + } | |
| 5301 | + }; | |
| 5302 | + } | |
| 5303 | + ] | |
| 4766 | 5304 | ); |
| 4767 | 5305 | \ 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: 'xl,scheduleDate,lp,xlDir,fcno', direction: 'ASC,ASC,ASC,ASC,ASC', id: '@id'}, | |
| 523 | + {order: 'xl,scheduleDate,lp,fcno', direction: '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
| ... | ... | @@ -12,8 +12,8 @@ |
| 12 | 12 | <th style="width: 120px;">驾驶员(工号)</th> |
| 13 | 13 | <!--<th style="width: 120px;">售票员(工号)</th>--> |
| 14 | 14 | <th style="width: 80px;">班次类型</th> |
| 15 | - <th style="width: 80px;">上下行</th> | |
| 16 | 15 | <th style="width: 80px;">发车时间</th> |
| 16 | + <th style="width: 80px;">上下行</th> | |
| 17 | 17 | <th style="width: 80px;">起点站</th> |
| 18 | 18 | <th style="width: 80px;">终点站</th> |
| 19 | 19 | <th style="width: 60px">备注</th> |
| ... | ... | @@ -84,6 +84,12 @@ |
| 84 | 84 | <span ng-bind="info.bcType | dict:'ScheduleType':'未知' "></span> |
| 85 | 85 | </td> |
| 86 | 86 | <td> |
| 87 | + <a href="#"> | |
| 88 | + <i class="fa fa-clock-o" aria-hidden="true"></i> | |
| 89 | + <span ng-bind="info.fcsj"></span> | |
| 90 | + </a> | |
| 91 | + </td> | |
| 92 | + <td> | |
| 87 | 93 | <a href="#" ng-if="info.xlDir == '0'"> |
| 88 | 94 | <i class="fa fa-arrow-up" aria-hidden="true"></i> |
| 89 | 95 | <span ng-bind="info.xlDir | dict:'LineTrend2':'未知' "></span> |
| ... | ... | @@ -94,12 +100,6 @@ |
| 94 | 100 | </a> |
| 95 | 101 | </td> |
| 96 | 102 | <td> |
| 97 | - <a href="#"> | |
| 98 | - <i class="fa fa-clock-o" aria-hidden="true"></i> | |
| 99 | - <span ng-bind="info.fcsj"></span> | |
| 100 | - </a> | |
| 101 | - </td> | |
| 102 | - <td> | |
| 103 | 103 | <a href="#" |
| 104 | 104 | tooltip-animation="false" |
| 105 | 105 | tooltip-placement="top" |
| ... | ... | @@ -136,10 +136,23 @@ |
| 136 | 136 | </a> |
| 137 | 137 | </td> |
| 138 | 138 | <td> |
| 139 | - <span ng-bind="info.updateBy.userName"></span> | |
| 139 | + <a href="#" | |
| 140 | + tooltip-animation="false" | |
| 141 | + tooltip-placement="top" | |
| 142 | + uib-tooltip="{{info.updateBy.userName}}" | |
| 143 | + tooltip-class="headClass"> | |
| 144 | + <i class="fa fa-user"></i> | |
| 145 | + <span ng-bind="info.updateBy.userName"></span> | |
| 146 | + </a> | |
| 140 | 147 | </td> |
| 141 | 148 | <td> |
| 142 | - <span ng-bind="info.updateDate | date: 'yyyy-MM-dd'"></span> | |
| 149 | + <a href="#" | |
| 150 | + tooltip-animation="false" | |
| 151 | + tooltip-placement="left" | |
| 152 | + uib-tooltip="{{info.updateDate | date: 'yyyy-MM-dd HH:mm:ss'}}" | |
| 153 | + tooltip-class="headClass"> | |
| 154 | + <span ng-bind="info.updateDate | date: 'yyyy-MM-dd HH:mm:ss'"></span> | |
| 155 | + </a> | |
| 143 | 156 | </td> |
| 144 | 157 | |
| 145 | 158 | </tr> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit.html
| ... | ... | @@ -59,14 +59,14 @@ |
| 59 | 59 | iterobjexp="item.insideCode" |
| 60 | 60 | searchph="请输拼音..." |
| 61 | 61 | searchexp="this.insideCode" |
| 62 | - <!--required --> | |
| 62 | + required | |
| 63 | 63 | > |
| 64 | 64 | </sa-Select5> |
| 65 | 65 | </div> |
| 66 | - <!--<!– 隐藏块,显示验证信息 –>--> | |
| 67 | - <!--<div class="alert alert-danger well-sm" ng-show="myForm.cl1.$error.required">--> | |
| 68 | - <!--车辆1必须选择--> | |
| 69 | - <!--</div>--> | |
| 66 | + <!-- 隐藏块,显示验证信息 --> | |
| 67 | + <div class="alert alert-danger well-sm" ng-show="myForm.cl1.$error.required"> | |
| 68 | + 车辆1必须选择 | |
| 69 | + </div> | |
| 70 | 70 | </div> |
| 71 | 71 | <div class="form-group has-success has-feedback"> |
| 72 | 72 | <label class="col-md-5 control-label">车辆2:</label> |
| ... | ... | @@ -99,14 +99,14 @@ |
| 99 | 99 | iterobjexp="item.personnelName + '(' + item.jobCode + ')'" |
| 100 | 100 | searchph="请输拼音..." |
| 101 | 101 | searchexp="this.personnelName" |
| 102 | - <!--required --> | |
| 102 | + required | |
| 103 | 103 | > |
| 104 | 104 | </sa-Select5> |
| 105 | 105 | </div> |
| 106 | - <!--<!– 隐藏块,显示验证信息 –>--> | |
| 107 | - <!--<div class="alert alert-danger well-sm" ng-show="myForm.j1.$error.required">--> | |
| 108 | - <!--驾驶员必须选择--> | |
| 109 | - <!--</div>--> | |
| 106 | + <!-- 隐藏块,显示验证信息 --> | |
| 107 | + <div class="alert alert-danger well-sm" ng-show="myForm.j1.$error.required"> | |
| 108 | + 驾驶员必须选择 | |
| 109 | + </div> | |
| 110 | 110 | </div> |
| 111 | 111 | |
| 112 | 112 | <div class="form-group has-success has-feedback"> |
| ... | ... | @@ -204,18 +204,26 @@ |
| 204 | 204 | <div class="form-group has-success has-feedback"> |
| 205 | 205 | <label class="col-md-2 control-label">排班明细:</label> |
| 206 | 206 | <div class="col-md-10"> |
| 207 | - <sa-Planinfoedit name="spi" | |
| 208 | - ng-model="ctrl.formData.planInfos" | |
| 209 | - ng-model-options="{ getterSetter: true }" | |
| 210 | - cl1="{{ctrl.formData.cl1}}" | |
| 211 | - cl2="{{ctrl.formData.cl2}}" | |
| 212 | - j1="{{ctrl.formData.j1}}" | |
| 213 | - j2="{{ctrl.formData.j2}}" | |
| 214 | - s1="{{ctrl.formData.s1}}" | |
| 215 | - s2="{{ctrl.formData.s2}}" | |
| 207 | + <!--<sa-Planinfoedit name="spi"--> | |
| 208 | + <!--ng-model="ctrl.planInfos"--> | |
| 209 | + <!--ng-model-options="{ getterSetter: true }"--> | |
| 210 | + <!--cl1="{{ctrl.formData.cl1}}"--> | |
| 211 | + <!--cl2="{{ctrl.formData.cl2}}"--> | |
| 212 | + <!--j1="{{ctrl.formData.j1}}"--> | |
| 213 | + <!--j2="{{ctrl.formData.j2}}"--> | |
| 214 | + <!--s1="{{ctrl.formData.s1}}"--> | |
| 215 | + <!--s2="{{ctrl.formData.s2}}"--> | |
| 216 | + <!--> | |
| 217 | + | |
| 218 | + <!--</sa-Planinfoedit>--> | |
| 219 | + | |
| 220 | + <sa-Planinfoedit2 name="spi" | |
| 221 | + ng-model="ctrl.planInfos" | |
| 222 | + ng-model-options="{ getterSetter: true }" | |
| 223 | + form-data="ctrl.formData" | |
| 216 | 224 | > |
| 217 | 225 | |
| 218 | - </sa-Planinfoedit> | |
| 226 | + </sa-Planinfoedit2> | |
| 219 | 227 | </div> |
| 220 | 228 | </div> |
| 221 | 229 | </div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/module.js
| ... | ... | @@ -264,7 +264,7 @@ angular.module('ScheduleApp').controller( |
| 264 | 264 | self.formData.j3 = {}; // 驾驶员3 |
| 265 | 265 | self.formData.s3 = {}; // 售票员3 |
| 266 | 266 | |
| 267 | - self.formData.planInfos = undefined; // 排班明细 | |
| 267 | + self.planInfos = undefined; // 排班明细 | |
| 268 | 268 | |
| 269 | 269 | var sdd = new Date(); |
| 270 | 270 | sdd.setTime(self.sd); |
| ... | ... | @@ -277,12 +277,12 @@ angular.module('ScheduleApp').controller( |
| 277 | 277 | |
| 278 | 278 | // 获取排班明细数据 |
| 279 | 279 | SPlanInfo.list(params, function(rst) { |
| 280 | - self.formData.planInfos = rst.content; | |
| 280 | + self.planInfos = rst.content; | |
| 281 | 281 | }); |
| 282 | 282 | |
| 283 | 283 | // 提交方法 |
| 284 | 284 | self.submit = function() { |
| 285 | - service.batchUpdatePlanInfo(self.formData.planInfos).then( | |
| 285 | + service.batchUpdatePlanInfo(self.planInfos).then( | |
| 286 | 286 | function() { |
| 287 | 287 | $state.go("schedulePlanReportExtManage"); |
| 288 | 288 | }, | ... | ... |
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: 'xl,scheduleDate,lp,xlDir,fcno', direction: 'ASC,ASC,ASC,ASC,ASC', id: '@id'}, | |
| 67 | + {order: 'xl,scheduleDate,lp,fcno', direction: 'ASC,ASC,ASC,ASC', id: '@id'}, | |
| 68 | 68 | { |
| 69 | 69 | list: { |
| 70 | 70 | method: 'GET', | ... | ... |
src/main/resources/static/pages/trafficManage/js/lineStationUpload.js
| ... | ... | @@ -13,124 +13,46 @@ |
| 13 | 13 | */ |
| 14 | 14 | |
| 15 | 15 | (function(){ |
| 16 | - /** | |
| 17 | - * 取得编码-公司map | |
| 18 | - * gsmap["5"] = 南汇公司 | |
| 19 | - * gsmap["5_3"] = 芦潮港分公司 | |
| 20 | - */ | |
| 21 | - function getBusMap(){ | |
| 22 | - // 取得公司信息,替换公司编码 | |
| 23 | - var gsmap = {}; | |
| 24 | - $get('/business/all', null, function(array){ | |
| 25 | - $.each(array, function(i, gs){ | |
| 26 | - var k = gs.upCode + '_' + gs.businessCode; | |
| 27 | - if(gs.upCode === '88'){ | |
| 28 | - k = gs.businessCode; | |
| 29 | - } | |
| 30 | - gsmap[k] = gs.businessName; | |
| 31 | - }); | |
| 32 | - }); | |
| 33 | - return gsmap; | |
| 34 | - } | |
| 35 | - // 填充公司下拉框选择值 | |
| 36 | - $get('/business/all', {upCode_eq: '88'}, function(array){ | |
| 37 | - | |
| 38 | - // 公司下拉options属性值 | |
| 39 | - var options = '<option value="">请选择...</option>'; | |
| 40 | - | |
| 41 | - // 遍历array | |
| 42 | - $.each(array, function(i,d){ | |
| 43 | - | |
| 44 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 45 | - | |
| 46 | - }); | |
| 47 | - | |
| 48 | - // 填充公司下拉框options,并添加公司下拉框值改变事件setbrancheCompanySelectOptions | |
| 49 | - $('#companySelect').html(options).on('change', setbrancheCompanySelectOptions); | |
| 50 | - | |
| 51 | - }); | |
| 52 | - | |
| 53 | - // 填充分公司下拉框选择值 | |
| 54 | - function setbrancheCompanySelectOptions(){ | |
| 55 | - | |
| 56 | - // 获取公司下拉框选择值 | |
| 57 | - var businessCode = $('#companySelect').val(); | |
| 58 | - | |
| 59 | - // 分公司下拉框options属性值 | |
| 60 | - var options = '<option value="">请选择...</option>'; | |
| 61 | - | |
| 62 | - // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码 | |
| 63 | - if(businessCode == null || businessCode ==''){ | |
| 64 | - | |
| 65 | - // 填充分公司下拉框options | |
| 66 | - $('#brancheCompanySelect').html(options); | |
| 67 | - | |
| 68 | - } else { | |
| 69 | - | |
| 70 | - // 查询出所属公司下的分公司名称和相应分公司代码 | |
| 71 | - $get('/business/all', {upCode_eq: businessCode}, function(array){ | |
| 72 | - | |
| 73 | - // 遍历array | |
| 74 | - $.each(array, function(i,d){ | |
| 75 | - | |
| 76 | - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>'; | |
| 77 | - | |
| 78 | - // 填充分公司下拉框options | |
| 79 | - $('#brancheCompanySelect').html(options); | |
| 80 | - | |
| 81 | - }); | |
| 82 | - }); | |
| 83 | - | |
| 84 | - // 填充公司下拉框options,并添加公司下拉框值改变事件setbrancheCompanySelectOptions | |
| 85 | - $('#brancheCompanySelect').html(options).on('change', setLineAutocompleteOptions); | |
| 86 | - } | |
| 87 | - } | |
| 88 | - | |
| 89 | - function setLineAutocompleteOptions(){ | |
| 90 | - // 搜索参数集合 | |
| 91 | - var params = {}; | |
| 92 | - // 搜索字段名称 | |
| 93 | - var name; | |
| 94 | - var items = $("ul.breadcrumb select"); | |
| 95 | - // 遍历items集合 | |
| 96 | - for(var j = 0, item; item = items[j++];){ | |
| 97 | - // 获取字段名称 | |
| 98 | - name = $(item).attr('name'); | |
| 99 | - if(name){ | |
| 100 | - // 赋取相对应的值 | |
| 101 | - params[name] = $(item).val(); | |
| 102 | - } | |
| 103 | - } | |
| 104 | - var lines = new Array(); | |
| 105 | - var gsmap = getBusMap(); | |
| 106 | - // 取得所有线路 | |
| 107 | - $get('/line/all', params, function(allLine) { | |
| 108 | - // 遍历数组 | |
| 109 | - $.each(allLine, function(i, e) { | |
| 110 | - var companyCode = e.company; | |
| 111 | - e.company = gsmap[e.company]; | |
| 112 | - e.brancheCompany = gsmap[companyCode+"_"+e.brancheCompany]; | |
| 113 | - var line = '{"hex":"'+e.company+'","label":"'+e.name+'"}'; | |
| 114 | - var obj = jQuery.parseJSON(line); | |
| 115 | - lines[i]= obj; | |
| 116 | - }); | |
| 117 | - | |
| 118 | - | |
| 119 | - }); | |
| 120 | - // 给输入框绑定autocomplete事件 | |
| 121 | - $("input[name='name_eq']").autocompleter({ | |
| 122 | - highlightMatches: true, | |
| 123 | - source: lines, | |
| 124 | - template: '{{ label }} <span>({{ hex }})</span>', | |
| 125 | - hint: true, | |
| 126 | - empty: false, | |
| 127 | - limit: 5, | |
| 128 | - }); | |
| 129 | - } | |
| 130 | - | |
| 131 | - | |
| 132 | - // 设置autocompleter的宽度和输入框一样 | |
| 133 | - $(".autocompleter").css("width",$("input[name='name_eq']").css("width")) | |
| 16 | + | |
| 17 | + $('#line').select2({ | |
| 18 | + ajax: { | |
| 19 | + url: '/realSchedule/findLine', | |
| 20 | + type: 'post', | |
| 21 | + dataType: 'json', | |
| 22 | + delay: 150, | |
| 23 | + data: function(params){ | |
| 24 | + return{line: params.term}; | |
| 25 | + }, | |
| 26 | + processResults: function (data) { | |
| 27 | + return { | |
| 28 | + results: data | |
| 29 | + }; | |
| 30 | + }, | |
| 31 | + cache: true | |
| 32 | + }, | |
| 33 | + templateResult: function(repo){ | |
| 34 | + if (repo.loading) return repo.text; | |
| 35 | + var h = '<span>'+repo.text+'</span>'; | |
| 36 | + return h; | |
| 37 | + }, | |
| 38 | + escapeMarkup: function (markup) { return markup; }, | |
| 39 | + minimumInputLength: 1, | |
| 40 | + templateSelection: function(repo){ | |
| 41 | + return repo.text; | |
| 42 | + }, | |
| 43 | + language: { | |
| 44 | + noResults: function(){ | |
| 45 | + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>'; | |
| 46 | + }, | |
| 47 | + inputTooShort : function(e) { | |
| 48 | + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>'; | |
| 49 | + }, | |
| 50 | + searching : function() { | |
| 51 | + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>'; | |
| 52 | + } | |
| 53 | + } | |
| 54 | + }); | |
| 55 | + | |
| 134 | 56 | // 绑定查询事件 |
| 135 | 57 | $("#search").click(searchM); |
| 136 | 58 | // 绑定上传事件 |
| ... | ... | @@ -149,7 +71,7 @@ |
| 149 | 71 | $("#right_div table tbody").empty(); |
| 150 | 72 | var params = {}; |
| 151 | 73 | // 取得输入框的值 |
| 152 | - var inputs = $("ul.breadcrumb input"); | |
| 74 | + var inputs = $(".param input,select"); | |
| 153 | 75 | // 遍历数组 |
| 154 | 76 | $.each(inputs, function(i, element) { |
| 155 | 77 | params[$(element).attr("name")] = $(element).val(); |
| ... | ... | @@ -168,17 +90,36 @@ |
| 168 | 90 | |
| 169 | 91 | // 上传方法 |
| 170 | 92 | function uploadM() { |
| 171 | - var params = {}; | |
| 172 | - // 取得输入框的值 | |
| 173 | - var trs = $("#right_div tbody tr"); | |
| 174 | - if (trs.length == 0) { | |
| 175 | - alert("请选择模板"); | |
| 176 | - return; | |
| 177 | - } | |
| 178 | - // 遍历数组 | |
| 179 | - $.each(trs, function(i, element) { | |
| 180 | - alert($(".ttInfoId", element).html()); | |
| 181 | - }); | |
| 93 | + // 取得输入框的值 | |
| 94 | + var trs = $("#right_div tbody tr input"); | |
| 95 | + if (trs.length == 0) { | |
| 96 | + alert("请选择线路"); | |
| 97 | + return; | |
| 98 | + }else if(trs.length > 1){ | |
| 99 | + alert("一次只能上传一条线路"); | |
| 100 | + return; | |
| 101 | + } | |
| 102 | + var ids ="0,"; | |
| 103 | + // 遍历数组 | |
| 104 | + $.each(trs, function(i, element) { | |
| 105 | + ids +=$(element).val()+","; | |
| 106 | + }); | |
| 107 | + var params = {"ids":ids}; | |
| 108 | + $.ajax({ | |
| 109 | + type: 'get',url: '/trmg/setXL', | |
| 110 | + data: params ,dataType:'text', | |
| 111 | + success:function(data) { | |
| 112 | + if(data == 'success'){ | |
| 113 | + alert("上传成功"); | |
| 114 | + }else{ | |
| 115 | + alert("上传失败"); | |
| 116 | + } | |
| 117 | + | |
| 118 | + }, error : function() { | |
| 119 | + alert("操作失败"); | |
| 120 | + } | |
| 121 | + | |
| 122 | + }); | |
| 182 | 123 | } |
| 183 | 124 | |
| 184 | 125 | // 表格行的单击事件 | ... | ... |
src/main/resources/static/pages/trafficManage/js/timeTempletUpload.js
| ... | ... | @@ -183,29 +183,6 @@ |
| 183 | 183 | } |
| 184 | 184 | |
| 185 | 185 | // 绑定查询事件 |
| 186 | - $("#setXL").click(setXLF); | |
| 187 | - | |
| 188 | - function setXLF() { | |
| 189 | - var params = {}; | |
| 190 | - // 取得输入框的值 | |
| 191 | - var inputs = $(".param input,select");debugger; | |
| 192 | - // 遍历数组 | |
| 193 | - $.each(inputs, function(i, element) { | |
| 194 | - params[$(element).attr("name")] = $(element).val(); | |
| 195 | - }); | |
| 196 | - $.ajax({ | |
| 197 | - type: 'get',url: '/trmg/setXL', | |
| 198 | - data: params ,dataType:'text', | |
| 199 | - success:function(data) { | |
| 200 | - alert(data); | |
| 201 | - }, error : function() { | |
| 202 | - alert("操作失败"); | |
| 203 | - } | |
| 204 | - | |
| 205 | - }); | |
| 206 | - } | |
| 207 | - | |
| 208 | - // 绑定查询事件 | |
| 209 | 186 | $("#setCL").click(setCLF); |
| 210 | 187 | var params = {}; |
| 211 | 188 | function setCLF() { | ... | ... |
src/main/resources/static/pages/trafficManage/lineStationUpload.html
| 1 | 1 | <link href="css/trafficManage.css" rel="stylesheet" type="text/css" /> |
| 2 | -<link href="css/autocompleter.css" rel="stylesheet" type="text/css" /> | |
| 3 | 2 | <ul class="page-breadcrumb breadcrumb"> |
| 4 | 3 | <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> |
| 5 | 4 | <li><span class="active">运维管理</span> <i class="fa fa-circle"></i></li> |
| ... | ... | @@ -7,17 +6,16 @@ |
| 7 | 6 | </ul> |
| 8 | 7 | <div class="tab_line"> |
| 9 | 8 | <div class="col-md-12"> |
| 10 | - <ul class="breadcrumb"> | |
| 11 | - <li>公司:</li> | |
| 12 | - <li><select name="company_eq" class="form-control" id="companySelect"></select></li> | |
| 13 | - <li>分公司:</li> | |
| 14 | - <li><select name="brancheCompany_eq" class="form-control" id="brancheCompanySelect"></select></li> | |
| 15 | - <li>线路名称:</li> | |
| 16 | - <li><input type="text" class="form-control form-filter input-sm" | |
| 17 | - name="name_eq" placeholder="请输入线路名称" maxlength="40" /></li> | |
| 18 | - <li><a class="btn btn-circle blue" id="search">查询</a></li> | |
| 19 | - <li><a class="btn btn-circle red" id="upload">上传</a></li> | |
| 20 | - </ul> | |
| 9 | + <form class="form-inline" action=""> | |
| 10 | + <div style="display: inline-block;" class="param"> | |
| 11 | + <span class="item-label" style="width: 80px;">线路名称: </span> | |
| 12 | + <select class="form-control" name="lineCode_like" id="line" style="width: 180px;"></select> | |
| 13 | + </div> | |
| 14 | + <div class="form-group" style="display: inline-block;margin-left: 15px;"> | |
| 15 | + <input class="btn btn-default" type="button" id="search" value="查询"/> | |
| 16 | + <input class="btn btn-default" type="button" id="upload" value="上传"/> | |
| 17 | + </div> | |
| 18 | + </form> | |
| 21 | 19 | </div> |
| 22 | 20 | <!-- Begin: left-div --> |
| 23 | 21 | <div class="col-md-5 panel-wrap" style="height: 60%;"> |
| ... | ... | @@ -63,6 +61,7 @@ |
| 63 | 61 | </td> |
| 64 | 62 | <td> |
| 65 | 63 | {{obj.lineCode}} |
| 64 | + <input type="hidden" value="{{obj.lineCode}}"/> | |
| 66 | 65 | </td> |
| 67 | 66 | <td class="ttInfoId"> |
| 68 | 67 | {{obj.name}} | ... | ... |
src/main/resources/static/real_control_v2/css/line_schedule.css
| ... | ... | @@ -691,7 +691,7 @@ label.destroy-sch small{ |
| 691 | 691 | text-align: center; |
| 692 | 692 | } |
| 693 | 693 | .sub-task-table dl dt:nth-of-type(2), .sub-task-table dl dd:nth-of-type(2) { |
| 694 | - width: 15%; | |
| 694 | + width: 13%; | |
| 695 | 695 | } |
| 696 | 696 | .sub-task-table dl dt:nth-of-type(3), .sub-task-table dl dd:nth-of-type(3) { |
| 697 | 697 | width: 16%; |
| ... | ... | @@ -706,7 +706,7 @@ label.destroy-sch small{ |
| 706 | 706 | width: 11%; |
| 707 | 707 | } |
| 708 | 708 | .sub-task-table dl dt:nth-of-type(7), .sub-task-table dl dd:nth-of-type(7) { |
| 709 | - width: 14%; | |
| 709 | + width: 16%; | |
| 710 | 710 | } |
| 711 | 711 | .sub-task-table dl dt:nth-of-type(8), .sub-task-table dl dd:nth-of-type(8) { |
| 712 | 712 | width: 9%; | ... | ... |
src/main/resources/static/real_control_v2/css/main.css
| ... | ... | @@ -1255,4 +1255,329 @@ ul.left_tabs_lg li{ |
| 1255 | 1255 | text-indent: 12px; |
| 1256 | 1256 | margin-bottom: 0; |
| 1257 | 1257 | padding: 18px 5px; |
| 1258 | +} | |
| 1259 | + | |
| 1260 | +.sub_task_form_v2{ | |
| 1261 | + background: #f9f9f9; | |
| 1262 | + padding: 12px 15px; | |
| 1263 | + border-radius: 5px 0 5px 5px; | |
| 1264 | + border: 1px solid #dfdfdf; | |
| 1265 | + position: relative; | |
| 1266 | + margin-bottom: 20px; | |
| 1267 | +} | |
| 1268 | + | |
| 1269 | +.task_form_close_icon{ | |
| 1270 | + background: #f9f9f9; | |
| 1271 | + padding: 0px 4px; | |
| 1272 | + position: absolute; | |
| 1273 | + top: -8px; | |
| 1274 | + right: -8px; | |
| 1275 | + color: #898989; | |
| 1276 | + font-size: 15px; | |
| 1277 | + border: 1px solid #dfdfdf; | |
| 1278 | + border-radius: 100%; | |
| 1279 | + border-left: none; | |
| 1280 | + border-bottom: none; | |
| 1281 | + transition: all .03s; | |
| 1282 | +} | |
| 1283 | + | |
| 1284 | +.task_form_close_icon:hover{ | |
| 1285 | + border: 1px solid #ff1515; | |
| 1286 | + border-left: none; | |
| 1287 | + border-bottom: none; | |
| 1288 | + color: #e03e3e; | |
| 1289 | +} | |
| 1290 | + | |
| 1291 | +.sub_task_form_v2:hover::after{ | |
| 1292 | + color: #5f5b5b; | |
| 1293 | +} | |
| 1294 | + | |
| 1295 | +.sub_task_form_v2.uk-form-horizontal .uk-form-label{ | |
| 1296 | + width: 80px; | |
| 1297 | +} | |
| 1298 | + | |
| 1299 | +.sub_task_form_v2.uk-form-horizontal .uk-form-controls{ | |
| 1300 | + margin-left: 85px; | |
| 1301 | +} | |
| 1302 | + | |
| 1303 | +.sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=text], | |
| 1304 | +.sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=time], | |
| 1305 | +.sub_task_form_v2.uk-form-horizontal .uk-form-controls select{ | |
| 1306 | + width: 100%; | |
| 1307 | +} | |
| 1308 | + | |
| 1309 | +#add-sub-task-main-modal .uk-modal-footer{ | |
| 1310 | + background: none; | |
| 1311 | + border-top: none; | |
| 1312 | +} | |
| 1313 | + | |
| 1314 | +#add-sub-task-main-modal .uk-grid+.uk-grid{ | |
| 1315 | + margin-top: 12px; | |
| 1316 | +} | |
| 1317 | + | |
| 1318 | +#add-sub-task-main-modal .plus_icon_span{ | |
| 1319 | + font-size: 26px; | |
| 1320 | + color: #b2b2b2; | |
| 1321 | + padding: 10px 64px; | |
| 1322 | + display: inline-block; | |
| 1323 | + border: 1px dashed grey; | |
| 1324 | + margin: 15px 0; | |
| 1325 | + border-radius: 5px; | |
| 1326 | + cursor: pointer; | |
| 1327 | +} | |
| 1328 | + | |
| 1329 | +#add-sub-task-main-modal .uk-animation-fade{ | |
| 1330 | + animation-duration: .3s; | |
| 1331 | +} | |
| 1332 | + | |
| 1333 | +#add-sub-task-main-modal .forms{ | |
| 1334 | + max-height: 488px; | |
| 1335 | + overflow-y: auto; | |
| 1336 | + overflow-x: hidden; | |
| 1337 | + padding: 8px 8px 0 0; | |
| 1338 | +} | |
| 1339 | + | |
| 1340 | +.add_custom_wrap .forms .sub_task_form_v2:last-child{ | |
| 1341 | + margin-bottom: 0; | |
| 1342 | +} | |
| 1343 | + | |
| 1344 | +.sub_task_form_v2.destroy_form{ | |
| 1345 | + background-color: #fff5f4 !important; | |
| 1346 | +} | |
| 1347 | + | |
| 1348 | +.uk-form>.half_change_car_box{ | |
| 1349 | + margin: -10px 0 15px; | |
| 1350 | + padding: 3px 5px; | |
| 1351 | + display: inline-block; | |
| 1352 | + border: 1px solid #dfdddd; | |
| 1353 | + color: #918f8f; | |
| 1354 | +} | |
| 1355 | + | |
| 1356 | +.half_change_car_box input[type=checkbox]{ | |
| 1357 | + vertical-align: top; | |
| 1358 | +} | |
| 1359 | + | |
| 1360 | +.uk-form>.half_change_car_box.active{ | |
| 1361 | + background: #4CAF50; | |
| 1362 | + color: #fff; | |
| 1363 | +} | |
| 1364 | + | |
| 1365 | +.uk-form>.half_change_car_box.active input[type=checkbox]{ | |
| 1366 | + background: #4caf50; | |
| 1367 | + border-color: #4caf50; | |
| 1368 | +} | |
| 1369 | + | |
| 1370 | +.uk-form>.half_change_car_box.active input[type=checkbox]:before{ | |
| 1371 | + color: #ffffff; | |
| 1372 | +} | |
| 1373 | + | |
| 1374 | +.sub_task_form_v2.change_car{ | |
| 1375 | + z-index: 99; | |
| 1376 | +} | |
| 1377 | + | |
| 1378 | +.st_range_top_form{ | |
| 1379 | + padding: 0 0 15px 5px; | |
| 1380 | + border: 1px solid #c4bb76; | |
| 1381 | + background: #e5e1c1; | |
| 1382 | + margin-bottom: 15px; | |
| 1383 | + box-shadow: 0px 4px 3px 0 rgba(142, 138, 138, 0.2), 0px 4px 5px 0 rgba(157, 156, 156, 0.19); | |
| 1384 | +} | |
| 1385 | + | |
| 1386 | +.st_range_top_form .uk-form-row{ | |
| 1387 | + margin-top: 20px; | |
| 1388 | +} | |
| 1389 | + | |
| 1390 | +.uk-form-horizontal.st_range_top_form .uk-form-label{ | |
| 1391 | + width: 80px; | |
| 1392 | +} | |
| 1393 | + | |
| 1394 | +.uk-form-horizontal.st_range_top_form .uk-form-controls{ | |
| 1395 | + margin-left: 84px; | |
| 1396 | +} | |
| 1397 | + | |
| 1398 | +.uk-form-horizontal.st_range_top_form .uk-form-controls select{ | |
| 1399 | + width: calc(100% - 2px); | |
| 1400 | +} | |
| 1401 | + | |
| 1402 | +.sub_task_form_v2.service_st_form{ | |
| 1403 | + background: #f4faff; | |
| 1404 | +} | |
| 1405 | + | |
| 1406 | +.uk-modal .uk-form.fv-form.sub_task_form_v2{ | |
| 1407 | + margin-bottom: 20px !important; | |
| 1408 | +} | |
| 1409 | + | |
| 1410 | +.sub_task_table_wrap .ct_table>.ct_table_body{ | |
| 1411 | + border-bottom: none; | |
| 1412 | +} | |
| 1413 | + | |
| 1414 | +.add_range_wrap>.err_panel{ | |
| 1415 | + font-size: 16px; | |
| 1416 | + color: #a44a4a; | |
| 1417 | + font-family: 微软雅黑; | |
| 1418 | +} | |
| 1419 | + | |
| 1420 | +#schedule-lp_change-modal .ct_table dl{ | |
| 1421 | + height: 35px; | |
| 1422 | +} | |
| 1423 | + | |
| 1424 | +#schedule-lp_change-modal .ct_table dl dd, #schedule-lp_change-modal .ct_table dl dt{ | |
| 1425 | + line-height: 35px; | |
| 1426 | +} | |
| 1427 | + | |
| 1428 | +/* | |
| 1429 | +.sub_task_form_v2.repeat_main:before{ | |
| 1430 | + content: '复'; | |
| 1431 | + position: absolute; | |
| 1432 | + top: -10px; | |
| 1433 | + font-size: 12px; | |
| 1434 | + color: #2196F3; | |
| 1435 | + background: #ffffff; | |
| 1436 | + padding: 0 3px; | |
| 1437 | + font-weight: 600; | |
| 1438 | +}*/ | |
| 1439 | + | |
| 1440 | +.sub_task_form_v2:before{ | |
| 1441 | + position: absolute; | |
| 1442 | + top: -7px; | |
| 1443 | + font-size: 12px; | |
| 1444 | + padding: 0 3px; | |
| 1445 | + font-weight: 600; | |
| 1446 | + line-height: 14px; | |
| 1447 | +} | |
| 1448 | + | |
| 1449 | +.sub_task_form_v2.destroy_form:before{ | |
| 1450 | + content: '烂班' !important; | |
| 1451 | + color: #f14235 !important; | |
| 1452 | + background: #ffffff !important; | |
| 1453 | +} | |
| 1454 | + | |
| 1455 | +.sub_task_form_v2.service_form:before{ | |
| 1456 | + content: '营运'; | |
| 1457 | + color: #2196F3; | |
| 1458 | + background: #ffffff; | |
| 1459 | +} | |
| 1460 | + | |
| 1461 | +.sub_task_form_v2.empty_form:before{ | |
| 1462 | + content: '空驶'; | |
| 1463 | + color: #928f92; | |
| 1464 | + background: #ffffff; | |
| 1465 | +} | |
| 1466 | + | |
| 1467 | +.sub_task_form_v2.service_form{ | |
| 1468 | + background: #f4faff; | |
| 1469 | +} | |
| 1470 | + | |
| 1471 | +/*.sub_task_form_v2.repeat_main.destroy_form:before{ | |
| 1472 | + color: #F44336; | |
| 1473 | +} | |
| 1474 | + | |
| 1475 | +.sub_task_form_v2.repeat_main{ | |
| 1476 | + background: #f4faff; | |
| 1477 | +}*/ | |
| 1478 | +.footer_tools{ | |
| 1479 | + position: absolute; | |
| 1480 | + left: 235px; | |
| 1481 | + bottom: 19px; | |
| 1482 | +} | |
| 1483 | + | |
| 1484 | +.footer_mileage_count{ | |
| 1485 | + border: 1px solid #f2f2f2; | |
| 1486 | + padding: 5px; | |
| 1487 | + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.2), 0px 2px 7px 0 rgba(0, 0, 0, 0.19); | |
| 1488 | + display: inline-block; | |
| 1489 | +} | |
| 1490 | + | |
| 1491 | +.footer_mileage_count>span{ | |
| 1492 | + padding: 2px 5px; | |
| 1493 | +} | |
| 1494 | + | |
| 1495 | +.footer_mileage_count>span.service_sum{ | |
| 1496 | + color: #2196F3; | |
| 1497 | +} | |
| 1498 | + | |
| 1499 | +.footer_mileage_count>span.empty_sum{ | |
| 1500 | + color: #636363; | |
| 1501 | +} | |
| 1502 | + | |
| 1503 | +.footer_mileage_count>span.destroy_sum{ | |
| 1504 | + color: #f5574b; | |
| 1505 | +} | |
| 1506 | + | |
| 1507 | +.station_to_park_link{ | |
| 1508 | + display: inline-block; | |
| 1509 | + margin-left: 15px; | |
| 1510 | + vertical-align: bottom; | |
| 1511 | + font-size: 12px; | |
| 1512 | +} | |
| 1513 | + | |
| 1514 | +.station_to_park_link>a{ | |
| 1515 | + color: #607D8B; | |
| 1516 | +} | |
| 1517 | + | |
| 1518 | +#station_to_park-modal.ct-form-modal form input[type=text], | |
| 1519 | +#station_to_park-modal.ct-form-modal form select{ | |
| 1520 | + width: auto; | |
| 1521 | +} | |
| 1522 | + | |
| 1523 | +.s_2_park_form_wrap{ | |
| 1524 | + background: #fafafa; | |
| 1525 | + border: 1px solid #e5e5e5; | |
| 1526 | + padding: 7px 16px; | |
| 1527 | + margin: 15px 0; | |
| 1528 | + position: relative; | |
| 1529 | +} | |
| 1530 | + | |
| 1531 | +.s_2_park_form_wrap .ct_close{ | |
| 1532 | + position: absolute; | |
| 1533 | + top: -12px; | |
| 1534 | + padding: 0 4px; | |
| 1535 | + right: -8px; | |
| 1536 | + color: #939393; | |
| 1537 | + border: 1px solid #f7dfdf; | |
| 1538 | + border-radius: 25px; | |
| 1539 | + cursor: pointer; | |
| 1540 | +} | |
| 1541 | + | |
| 1542 | +.s_2_park_form_wrap .ct_close:hover{ | |
| 1543 | + background: #e5e5e5; | |
| 1544 | + color: #fd6e6e; | |
| 1545 | +} | |
| 1546 | + | |
| 1547 | +.s_2_park_form_wrap label{ | |
| 1548 | + color: #666; | |
| 1549 | + font-size: 13px; | |
| 1550 | +} | |
| 1551 | + | |
| 1552 | +#station_to_park-modal.ct-form-modal form input[readonly]{ | |
| 1553 | + background: #fafafa; | |
| 1554 | +} | |
| 1555 | + | |
| 1556 | +.s_2_park_form_wrap .bottom_label{ | |
| 1557 | + margin-top: 25px; | |
| 1558 | + display: block; | |
| 1559 | +} | |
| 1560 | + | |
| 1561 | +.s_2_park_form_wrap .bottom_label_2{ | |
| 1562 | + margin-top: 4px; | |
| 1563 | + display: block; | |
| 1564 | +} | |
| 1565 | + | |
| 1566 | +.ct_describe{ | |
| 1567 | + font-size: 12px; | |
| 1568 | + color: #909090; | |
| 1569 | + font-family: FontAwesome; | |
| 1570 | +} | |
| 1571 | + | |
| 1572 | +.ct_describe:before{ | |
| 1573 | + content: "\f059"; | |
| 1574 | + margin-right: 3px; | |
| 1575 | +} | |
| 1576 | + | |
| 1577 | +#add-sub-task-main-modal abbr{ | |
| 1578 | + display: inline-block; | |
| 1579 | + font-size: 12px; | |
| 1580 | + margin-left: 25px; | |
| 1581 | + vertical-align: bottom; | |
| 1582 | + color: #929292; | |
| 1258 | 1583 | } |
| 1259 | 1584 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/css/north.css
| ... | ... | @@ -481,4 +481,13 @@ |
| 481 | 481 | .ct-badge.ct-badge-TZRC:hover{ |
| 482 | 482 | background: #97a50f; |
| 483 | 483 | color: #fff; |
| 484 | +} | |
| 485 | + | |
| 486 | +.ct-badge.ct-badge-LSBCTZ { | |
| 487 | + color: red; | |
| 488 | +} | |
| 489 | + | |
| 490 | +.ct-badge.ct-badge-LSBCTZ:hover{ | |
| 491 | + background: red; | |
| 492 | + color: #fff; | |
| 484 | 493 | } |
| 485 | 494 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <a href="" class="uk-modal-close uk-close"></a> |
| 4 | 4 | <div class="uk-modal-header"> |
| 5 | 5 | <h2>临加/子任务</h2></div> |
| 6 | - <div class="uk-panel uk-panel-box uk-panel-box-primary"> | |
| 6 | + <div class="uk-panel uk-panel-box uk-panel-box-primary" style="padding: 12px;"> | |
| 7 | 7 | <form class="uk-form uk-form-horizontal search-form"> |
| 8 | 8 | <div class="uk-grid"> |
| 9 | 9 | <div class="uk-width-1-3"> |
| ... | ... | @@ -51,13 +51,13 @@ |
| 51 | 51 | </div> |
| 52 | 52 | </div> |
| 53 | 53 | |
| 54 | - <div class="uk-panel uk-panel-box uk-panel-box-secondary" style="padding-bottom: 0;"> | |
| 54 | + <div class="uk-panel uk-panel-box uk-panel-box-secondary" style="padding-bottom: 0;box-shadow: 0px -2px 4px 0 rgba(214, 214, 214, 0.2), 0px -2px 3px 0 rgba(123, 122, 122, 0.19);"> | |
| 55 | 55 | <h3 class="uk-panel-title" id="childTaskTitle"> |
| 56 | 56 | 子任务列表 |
| 57 | 57 | <a id="addChildTaskBtn" data-uk-tooltip title="添加子任务"><i |
| 58 | 58 | class="uk-icon-plus"></i> </a> |
| 59 | 59 | </h3> |
| 60 | - <div class="ct_table_wrap ct_table_no_border sub_task_table_wrap" style="height: 142px;"> | |
| 60 | + <div class="ct_table_wrap ct_table_no_border sub_task_table_wrap" style="height: 147px;"> | |
| 61 | 61 | <div class="ct_table sub-task-table"> |
| 62 | 62 | <div class="ct_table_head"> |
| 63 | 63 | <dl> |
| ... | ... | @@ -126,7 +126,12 @@ |
| 126 | 126 | {{each list as task i}} |
| 127 | 127 | <dl data-id="{{task.id}}"> |
| 128 | 128 | <dd>{{i+1}}</dd> |
| 129 | - <dd><span class="nt-dictionary" data-group="ChildTaskType">{{task.type2}}</span></dd> | |
| 129 | + <dd> | |
| 130 | + <span class="nt-dictionary" data-group="ChildTaskType">{{task.type2}}</span> | |
| 131 | + {{if task.noClerk}} | |
| 132 | + (无售) | |
| 133 | + {{/if}} | |
| 134 | + </dd> | |
| 130 | 135 | <dd>{{task.startStationName}}</dd> |
| 131 | 136 | <dd>{{task.endStationName}}</dd> |
| 132 | 137 | <dd>{{task.startDate}}</dd> |
| ... | ... | @@ -137,9 +142,12 @@ |
| 137 | 142 | {{if task.destroy}} |
| 138 | 143 | <small style="color:red;">烂班</small> |
| 139 | 144 | {{/if}} |
| 145 | + {{if task.nbbm!=null}},{{task.nbbm}}{{/if}} | |
| 140 | 146 | ) |
| 141 | 147 | </dd> |
| 142 | - <dd title="{{task.remarks}}">{{task.remarks}}</dd> | |
| 148 | + <dd title="{{task.remarks}}"> | |
| 149 | + {{task.remarks}} | |
| 150 | + </dd> | |
| 143 | 151 | </dl> |
| 144 | 152 | {{/each}} |
| 145 | 153 | </script> |
| ... | ... | @@ -328,8 +336,6 @@ |
| 328 | 336 | }, modal_opts); |
| 329 | 337 | }; |
| 330 | 338 | |
| 331 | - $('#addChildTaskBtn').on('click', add_sub_task_other); | |
| 332 | - | |
| 333 | 339 | //回场子任务 |
| 334 | 340 | var add_sub_task_in = function () { |
| 335 | 341 | var sch = getActiveSch(); |
| ... | ... | @@ -408,6 +414,18 @@ |
| 408 | 414 | }, modal_opts); |
| 409 | 415 | }; |
| 410 | 416 | |
| 417 | + var add_sub_task = function () { | |
| 418 | + var sch = getActiveSch(); | |
| 419 | + if (!sch) | |
| 420 | + return notify_err('无法获取到主任务信息!'); | |
| 421 | + | |
| 422 | + open_modal(folder + '/sub_task_v2/main.html', { | |
| 423 | + sch: sch | |
| 424 | + }, modal_opts); | |
| 425 | + }; | |
| 426 | + | |
| 427 | + $('#addChildTaskBtn').on('click', add_sub_task); | |
| 428 | + | |
| 411 | 429 | var callbackHandler = { |
| 412 | 430 | add_temp_sch: add_temp_sch, |
| 413 | 431 | remove_sch: remove_sch, |
| ... | ... | @@ -416,7 +434,9 @@ |
| 416 | 434 | remove_sub_task: remove_sub_task, |
| 417 | 435 | add_sub_task_out: add_sub_task_out, |
| 418 | 436 | add_sub_task_range_turn: add_sub_task_range_turn, |
| 419 | - add_oil: add_oil | |
| 437 | + add_oil: add_oil, | |
| 438 | + | |
| 439 | + add_sub_task: add_sub_task | |
| 420 | 440 | }; |
| 421 | 441 | |
| 422 | 442 | //右键菜单 |
| ... | ... | @@ -431,7 +451,7 @@ |
| 431 | 451 | name: "临加班次" |
| 432 | 452 | }, |
| 433 | 453 | "add_sub_task": { |
| 434 | - name: "添加子任务", | |
| 454 | + name: "添加子任务"/*, | |
| 435 | 455 | items: { |
| 436 | 456 | 'add_oil':{ |
| 437 | 457 | name: '空驶进出场' |
| ... | ... | @@ -448,7 +468,7 @@ |
| 448 | 468 | 'add_sub_task_other': { |
| 449 | 469 | name: '自定义' |
| 450 | 470 | } |
| 451 | - } | |
| 471 | + }*/ | |
| 452 | 472 | }, |
| 453 | 473 | 'remove_sch': { |
| 454 | 474 | name: '删除' | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lp_change.html
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_custom.html
0 → 100644
| 1 | +<div class="add_custom_wrap"> | |
| 2 | + <div class="forms"></div> | |
| 3 | + <span class="plus_icon_span"> | |
| 4 | + <i class="uk-icon-plus"></i> | |
| 5 | + </span> | |
| 6 | + <form class="uk-form remarks_form"> | |
| 7 | + <div class="uk-grid"> | |
| 8 | + <div class="uk-width-1-1"> | |
| 9 | + <div class="uk-form-row ct-stacked"> | |
| 10 | + <div class="uk-form-controls" style="margin-top: 5px;"> | |
| 11 | + <textarea id="form-s-t" rows="4" name="remarks" data-fv-stringlength="true" style="width: 100%;" | |
| 12 | + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea> | |
| 13 | + </div> | |
| 14 | + </div> | |
| 15 | + </div> | |
| 16 | + </div> | |
| 17 | + </form> | |
| 18 | + <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | |
| 19 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 20 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 21 | + </div> | |
| 22 | + | |
| 23 | + <script> | |
| 24 | + (function () { | |
| 25 | + var wrap = '#add-sub-task-main-modal .add_custom_wrap', | |
| 26 | + sch, fs=[]; | |
| 27 | + | |
| 28 | + $(wrap).on('init', function (e, data) { | |
| 29 | + e.stopPropagation(); | |
| 30 | + sch = data.sch; | |
| 31 | + $('.plus_icon_span', wrap).trigger('click'); | |
| 32 | + }); | |
| 33 | + | |
| 34 | + //plsu icon | |
| 35 | + $('.plus_icon_span', wrap).on('click', addTaskForm); | |
| 36 | + | |
| 37 | + var bcTypeMap = {'in': 2, 'out': 3, 'normal': 1}; | |
| 38 | + function addTaskForm() { | |
| 39 | + var htmlStr = template('sub-task-v2-form-temp', {sch: sch}) | |
| 40 | + var f = $(htmlStr); | |
| 41 | + $('.forms', wrap).append(f); | |
| 42 | + //字典转换 | |
| 43 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 44 | + | |
| 45 | + //班次类型切换 | |
| 46 | + if(bcTypeMap[sch.bcType]) | |
| 47 | + $('[name=type2]', f).val(bcTypeMap[sch.bcType]) | |
| 48 | + $('[name=type2]', f).trigger('change'); | |
| 49 | + | |
| 50 | + //滚动条到底 | |
| 51 | + $('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight); | |
| 52 | + | |
| 53 | + //起点站trigger change | |
| 54 | + $('[name=startStation]',f).trigger('change'); | |
| 55 | + | |
| 56 | + f.prev('.sub_task_form_v2').find('[name=endDate]').trigger('input'); | |
| 57 | + | |
| 58 | + f.formValidation({ | |
| 59 | + framework: 'uikit', | |
| 60 | + locale: 'zh_CN' | |
| 61 | + }).on('add_reason_field', function () { | |
| 62 | + $(this).formValidation('addField', 'reason'); | |
| 63 | + }); | |
| 64 | + } | |
| 65 | + | |
| 66 | + //提交 | |
| 67 | + $('button[type=submit]', wrap).on('click', function () { | |
| 68 | + $(this).addClass('disabled').attr('disabled','disabled'); | |
| 69 | + dataArray = []; | |
| 70 | + $('form.sub_task_form_v2', wrap).data('valid', false) | |
| 71 | + .formValidation('validate'); | |
| 72 | + }); | |
| 73 | + | |
| 74 | + var dataArray = []; | |
| 75 | + $(wrap).on('success.form.fv', 'form.sub_task_form_v2', function (e) { | |
| 76 | + e.preventDefault(); | |
| 77 | + | |
| 78 | + dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) | |
| 79 | + , {remarks: $('#form-s-t',wrap).val(), 'schedule.id': sch.id})); | |
| 80 | + $(this).data('valid', true); | |
| 81 | + | |
| 82 | + if(allValidSuccess()){ | |
| 83 | + var i = 0, rst; | |
| 84 | + (function () { | |
| 85 | + var f = arguments.callee; | |
| 86 | + if(i >= dataArray.length){ | |
| 87 | + //完成后更新前端数据 | |
| 88 | + gb_schedule_table.updateSchedule(rst); | |
| 89 | + UIkit.modal('#add-sub-task-main-modal').hide(); | |
| 90 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | |
| 91 | + gb_data_basic.reload_stat_park_data(); | |
| 92 | + return; | |
| 93 | + } | |
| 94 | + var data = dataArray[i]; | |
| 95 | + //里程为0的不保存 | |
| 96 | + if(data.mileage==0){ | |
| 97 | + i++; | |
| 98 | + f(); | |
| 99 | + } | |
| 100 | + else{ | |
| 101 | + //营运子任务不写备注 | |
| 102 | + if(data.mileageType == 'service' && !data.destroy) | |
| 103 | + data.remarks = ''; | |
| 104 | + gb_common.$post('/childTask', data, function (rs) { | |
| 105 | + notify_succ('子任务添加成功'); | |
| 106 | + rst = rs.t; | |
| 107 | + i++; | |
| 108 | + f(); | |
| 109 | + }); | |
| 110 | + } | |
| 111 | + })(); | |
| 112 | + } | |
| 113 | + }); | |
| 114 | + //校验不过 | |
| 115 | + $(wrap).on('err.field.fv','form.sub_task_form_v2', function () { | |
| 116 | + $('button[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 117 | + }); | |
| 118 | + | |
| 119 | + function allValidSuccess() { | |
| 120 | + var flag = true; | |
| 121 | + $('form.sub_task_form_v2', wrap).each(function (i, f) { | |
| 122 | + if(!$(f).data('valid')){ | |
| 123 | + flag = false; | |
| 124 | + return false; | |
| 125 | + } | |
| 126 | + }); | |
| 127 | + return flag; | |
| 128 | + } | |
| 129 | + | |
| 130 | + function $f(name, f) { | |
| 131 | + return $('[name=' + name + ']', f); | |
| 132 | + } | |
| 133 | + })(); | |
| 134 | + </script> | |
| 135 | +</div> | |
| 0 | 136 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_in_out.html
0 → 100644
| 1 | +<div class="add_inOut_wrap"> | |
| 2 | + <div class="forms"></div> | |
| 3 | + <form class="uk-form remarks_form"> | |
| 4 | + <div class="uk-grid"> | |
| 5 | + <div class="uk-width-1-1"> | |
| 6 | + <div class="uk-form-row ct-stacked"> | |
| 7 | + <div class="uk-form-controls" style="margin-top: 5px;"> | |
| 8 | + <textarea id="form-s-t" rows="4" name="remarks" data-fv-stringlength="true" style="width: 100%;" | |
| 9 | + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea> | |
| 10 | + </div> | |
| 11 | + </div> | |
| 12 | + </div> | |
| 13 | + </div> | |
| 14 | + </form> | |
| 15 | + <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | |
| 16 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 17 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 18 | + </div> | |
| 19 | + | |
| 20 | + <script> | |
| 21 | + (function () { | |
| 22 | + var wrap = '#add-sub-task-main-modal .add_inOut_wrap', | |
| 23 | + sch, sf, inf, outf, destroyf; | |
| 24 | + | |
| 25 | + $(wrap).on('init', function (e, data) { | |
| 26 | + e.stopPropagation(); | |
| 27 | + sch = data.sch; | |
| 28 | + | |
| 29 | + //线路上 | |
| 30 | + sf = addTaskForm(); | |
| 31 | + //进场 | |
| 32 | + inf = addTaskForm(); | |
| 33 | + //出场 | |
| 34 | + outf = addTaskForm(); | |
| 35 | + | |
| 36 | + setTimeout(function () { | |
| 37 | + //复主任务 | |
| 38 | + repeat_main(sf); | |
| 39 | + //进场子任务 | |
| 40 | + repeat_In(inf); | |
| 41 | + //出场子任务 | |
| 42 | + repeat_Out(outf); | |
| 43 | + | |
| 44 | + //进场终点改变事件 | |
| 45 | + $f('endStation', inf).on('change', function () { | |
| 46 | + $f('startStation',outf).val($(this).val()).trigger('change'); | |
| 47 | + }); | |
| 48 | + | |
| 49 | + }, 500); | |
| 50 | + | |
| 51 | + //营运终点改变事件 | |
| 52 | + $f('endStation', sf).on('change', changeServiceEnd); | |
| 53 | + //进场公里改变 | |
| 54 | + $f('mileage',inf).on('input', function () { | |
| 55 | + $f('mileage',outf).val($(this).val()); | |
| 56 | + }); | |
| 57 | + //$f('startStation', inf).on('change', changeServiceEnd); | |
| 58 | + }); | |
| 59 | + | |
| 60 | + function addTaskForm() { | |
| 61 | + var htmlStr = template('sub-task-v2-form-temp', {sch: sch}); | |
| 62 | + var f = $(htmlStr); | |
| 63 | + $('.forms', wrap).append(f); | |
| 64 | + //字典转换 | |
| 65 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 66 | + | |
| 67 | + //班次类型切换 | |
| 68 | + $('select[name=type2]', f).trigger('change'); | |
| 69 | + | |
| 70 | + //滚动条到底 | |
| 71 | + $('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight); | |
| 72 | + | |
| 73 | + f.formValidation({ | |
| 74 | + framework: 'uikit', | |
| 75 | + locale: 'zh_CN' | |
| 76 | + }).on('add_reason_field', function () { | |
| 77 | + $(this).formValidation('addField', 'reason'); | |
| 78 | + }); | |
| 79 | + return f; | |
| 80 | + } | |
| 81 | + | |
| 82 | + /** | |
| 83 | + * 复主任务 | |
| 84 | + * @param f | |
| 85 | + */ | |
| 86 | + function repeat_main(f) { | |
| 87 | + f.addClass('repeat_main'); | |
| 88 | + $f('type2', f).html('<option value="1">线路上站点间</option>'); | |
| 89 | + $f('mileage', f).val(sch.jhlc).trigger('input'); | |
| 90 | + $f('mileageType', f).val('service').attr('disabled', 'disabled'); | |
| 91 | + //主任务是烂班 | |
| 92 | + if (sch.status == -1) { | |
| 93 | + $f('destroy', f)[0].checked = true; | |
| 94 | + $f('reason', f).val(sch.adjustExps); | |
| 95 | + $('.destroy_reason_wrap', f).show(); | |
| 96 | + $f('mileage', f).val(sch.jhlcOrig); | |
| 97 | + $('input,select', f).attr('disabled', 'disabled'); | |
| 98 | + f.addClass('destroy_form'); | |
| 99 | + } | |
| 100 | + else if (sch.status == 2) { | |
| 101 | + $f('destroy', f).parents('label').remove(); | |
| 102 | + $f('endDate', f).val(sch.zdsjActual); | |
| 103 | + $('input,select', f).attr('disabled', 'disabled'); | |
| 104 | + } | |
| 105 | + } | |
| 106 | + | |
| 107 | + function repeat_In(f) { | |
| 108 | + $f('type2', f).html('<option value="2">进场</option>').trigger('change'); | |
| 109 | + if (sch.status != -1) | |
| 110 | + $f('startStation', f).val(sch.zdzCode);//主任务终点进场 | |
| 111 | + | |
| 112 | + //起点改变 | |
| 113 | + $f('startStation', f).on('change', function () { | |
| 114 | + $f('endStation', outf).val($(this).val());//.trigger('change'); | |
| 115 | + }).trigger('change'); | |
| 116 | + } | |
| 117 | + | |
| 118 | + function repeat_Out(f) { | |
| 119 | + $f('type2', f).html('<option value="3">出场</option>').trigger('change'); | |
| 120 | + | |
| 121 | + var code; | |
| 122 | + if (sch.status != -1) | |
| 123 | + code=sch.zdzCode; | |
| 124 | + else | |
| 125 | + code=sch.qdzCode; | |
| 126 | + $f('endStation', f).val(code).trigger('change'); //出场到主任务终点 | |
| 127 | + $f('startDate', f).val($f('endDate', inf).val()).trigger('input');//开始时间 | |
| 128 | + | |
| 129 | + //烂班原因 | |
| 130 | + if(sch.status == -1 && | |
| 131 | + gb_common.inOutExps.indexOf(sch.adjustExps)!=-1){ | |
| 132 | + $f('reason',inf).val(sch.adjustExps); | |
| 133 | + $f('reason',outf).val(sch.adjustExps).trigger('change'); | |
| 134 | + } | |
| 135 | + } | |
| 136 | + | |
| 137 | + function $f(name, f) { | |
| 138 | + return $('[name=' + name + ']', f); | |
| 139 | + } | |
| 140 | + | |
| 141 | + /** | |
| 142 | + * 切换营运终点 | |
| 143 | + */ | |
| 144 | + function changeServiceEnd() { | |
| 145 | + var eCode = $(this).val(); | |
| 146 | + if(half_form){ | |
| 147 | + half_form.remove(); | |
| 148 | + changeCarBox.remove(); | |
| 149 | + } | |
| 150 | + if(eCode==sch.qdzCode || eCode==sch.zdzCode){ | |
| 151 | + $f('startStation',inf).val(eCode).trigger('change'); | |
| 152 | + $f('type2',outf).trigger('change'); | |
| 153 | + return; | |
| 154 | + } | |
| 155 | + | |
| 156 | + //进场起点 | |
| 157 | + $f('startStation',inf).val(eCode);//.trigger('change'); | |
| 158 | + //终点trigger change 出发重计算 | |
| 159 | + $f('endStation',inf).trigger('change'); | |
| 160 | + | |
| 161 | + //中途进场 | |
| 162 | + showHalfPanel(eCode); | |
| 163 | + } | |
| 164 | + | |
| 165 | + var half_form, changeCarBox; | |
| 166 | + function showHalfPanel(station) { | |
| 167 | + half_form = $(template('sub-task-v2-form-temp', {sch: sch})); | |
| 168 | + half_form.addClass('repeat_main destroy_form'); | |
| 169 | + //字典转换 | |
| 170 | + dictionaryUtils.transformDom($('.nt-dictionary', half_form)); | |
| 171 | + sf.after(half_form); | |
| 172 | + | |
| 173 | + | |
| 174 | + //班次类型切换 | |
| 175 | + $f('type2', half_form).trigger('change'); | |
| 176 | + //设置起点 | |
| 177 | + $f('startStation',half_form).val(station).trigger('change'); | |
| 178 | + //烂班 | |
| 179 | + $f('destroy',half_form)[0].checked=true; | |
| 180 | + $f('mileageType',half_form).attr('disabled','disabled'); | |
| 181 | + $f('type2',half_form).html('<option value="1">线路上站点间</option>'); | |
| 182 | + $('.destroy_reason_wrap',half_form).show(); | |
| 183 | + half_form.attr('destroy', true); | |
| 184 | + | |
| 185 | + setTimeout(function () { | |
| 186 | + //烂班开始时间 | |
| 187 | + $f('startDate',half_form).val($f('endDate',sf).val()).trigger('input'); | |
| 188 | + }, 300); | |
| 189 | + | |
| 190 | + //换车营运 | |
| 191 | + var se = $f('startStation',half_form)[0], | |
| 192 | + sname = se.options[se.options.selectedIndex].text; | |
| 193 | + changeCarBox = $('<form class="uk-form"><label class="half_change_car_box"><input type="checkbox"> 换车出场至【'+sname+'】继续营运</label></form>'); | |
| 194 | + half_form.after(changeCarBox); | |
| 195 | + | |
| 196 | + //删除 | |
| 197 | + $('.task_form_close_icon', half_form).on('click', function () { | |
| 198 | + changeCarBox.remove(); | |
| 199 | + $f('type2',outf).trigger('change'); | |
| 200 | + }); | |
| 201 | + | |
| 202 | + //校验 | |
| 203 | + half_form.formValidation({ | |
| 204 | + framework: 'uikit', | |
| 205 | + locale: 'zh_CN' | |
| 206 | + }).on('add_reason_field', function () { | |
| 207 | + $(this).formValidation('addField', 'reason'); | |
| 208 | + }); | |
| 209 | + } | |
| 210 | + | |
| 211 | + $(wrap).on('click', '.half_change_car_box>input[type=checkbox]', function () { | |
| 212 | + var box=$(this).parents('.half_change_car_box'); | |
| 213 | + if(this.checked){ | |
| 214 | + box.addClass('active'); | |
| 215 | + enableChangeCar(); | |
| 216 | + } | |
| 217 | + else{ | |
| 218 | + box.removeClass('active'); | |
| 219 | + disabledChangeCar(); | |
| 220 | + } | |
| 221 | + }); | |
| 222 | + | |
| 223 | + /** | |
| 224 | + * 换车出场 | |
| 225 | + */ | |
| 226 | + function enableChangeCar() { | |
| 227 | + var htmlStr = template('st-v2-domains-changecar-form-temp', {inOutExps: gb_common.inOutExps}); | |
| 228 | + $('.domains', half_form).html(htmlStr); | |
| 229 | + $('.domains', outf).html(htmlStr); | |
| 230 | + half_form.css('z-index', 99).formValidation('addField', 'reason').formValidation('addField', 'nbbm'); | |
| 231 | + outf.trigger('add_reason_field'); | |
| 232 | + | |
| 233 | + //车辆 autocomplete | |
| 234 | + var data = gb_data_basic.carsArray(); | |
| 235 | + gb_common.carAutocomplete($('.autocomplete-cars', half_form), data); | |
| 236 | + | |
| 237 | + //同步车辆编码 | |
| 238 | + $f('nbbm', half_form).on('input change', function () { | |
| 239 | + $f('nbbm', outf).val($(this).val()); | |
| 240 | + }); | |
| 241 | + | |
| 242 | + half_form.removeClass('destroy_form'); | |
| 243 | + | |
| 244 | + //出场终点 | |
| 245 | + $f('endStation',outf).val($f('endStation',sf).val()).trigger('change'); | |
| 246 | + //出发合计公里重新计算 | |
| 247 | + $f('mileage', half_form).trigger('input'); | |
| 248 | + } | |
| 249 | + | |
| 250 | + function disabledChangeCar() { | |
| 251 | + $f('type2',outf).trigger('change'); | |
| 252 | + $f('endStation',sf).trigger('change'); | |
| 253 | + } | |
| 254 | + | |
| 255 | + | |
| 256 | + //提交 | |
| 257 | + $('button[type=submit]', wrap).on('click', function () { | |
| 258 | + $(this).addClass('disabled').attr('disabled','disabled'); | |
| 259 | + dataArray = []; | |
| 260 | + $('form.sub_task_form_v2', wrap).data('valid', false) | |
| 261 | + .formValidation('validate'); | |
| 262 | + }); | |
| 263 | + | |
| 264 | + var dataArray = []; | |
| 265 | + $(wrap).on('success.form.fv', 'form.sub_task_form_v2', function (e) { | |
| 266 | + e.preventDefault(); | |
| 267 | + | |
| 268 | + dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) | |
| 269 | + , {remarks: $('#form-s-t',wrap).val(), 'schedule.id': sch.id})); | |
| 270 | + $(this).data('valid', true); | |
| 271 | + | |
| 272 | + if(allValidSuccess()){ | |
| 273 | + var i = 0, rst; | |
| 274 | + (function () { | |
| 275 | + var f = arguments.callee; | |
| 276 | + if(i >= dataArray.length){ | |
| 277 | + //完成后更新前端数据 | |
| 278 | + gb_schedule_table.updateSchedule(rst); | |
| 279 | + UIkit.modal('#add-sub-task-main-modal').hide(); | |
| 280 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | |
| 281 | + gb_data_basic.reload_stat_park_data(); | |
| 282 | + return; | |
| 283 | + } | |
| 284 | + var data = dataArray[i]; | |
| 285 | + //里程为0的不保存 | |
| 286 | + if(data.mileage==0){ | |
| 287 | + i++; | |
| 288 | + f(); | |
| 289 | + } | |
| 290 | + else{ | |
| 291 | + //营运子任务不写备注 | |
| 292 | + if(data.mileageType == 'service' && !data.destroy) | |
| 293 | + data.remarks = ''; | |
| 294 | + gb_common.$post('/childTask', data, function (rs) { | |
| 295 | + notify_succ('子任务添加成功'); | |
| 296 | + rst = rs.t; | |
| 297 | + i++; | |
| 298 | + f(); | |
| 299 | + }); | |
| 300 | + } | |
| 301 | + })(); | |
| 302 | + } | |
| 303 | + }); | |
| 304 | + //校验不过 | |
| 305 | + $(wrap).on('err.field.fv','form.sub_task_form_v2', function () { | |
| 306 | + $('button[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 307 | + }); | |
| 308 | + | |
| 309 | + function allValidSuccess() { | |
| 310 | + var flag = true; | |
| 311 | + $('form.sub_task_form_v2', wrap).each(function (i, f) { | |
| 312 | + if(!$(f).data('valid')){ | |
| 313 | + flag = false; | |
| 314 | + return false; | |
| 315 | + } | |
| 316 | + }); | |
| 317 | + return flag; | |
| 318 | + } | |
| 319 | + })(); | |
| 320 | + </script> | |
| 321 | +</div> | |
| 0 | 322 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_range_turn.html
0 → 100644
| 1 | +<div class="add_range_wrap"> | |
| 2 | + <div> | |
| 3 | + <form class="uk-form uk-form-horizontal st_range_top_form"> | |
| 4 | + <div class="uk-grid"> | |
| 5 | + <div class="uk-width-1-3"> | |
| 6 | + <div class="uk-form-row" style="padding-left: 10px;"> | |
| 7 | + <label class="uk-form-label">调头站点</label> | |
| 8 | + <div class="uk-form-controls"> | |
| 9 | + <select id="turnStationSelect"> | |
| 10 | + <option value="">请选择...</option> | |
| 11 | + </select> | |
| 12 | + </div> | |
| 13 | + </div> | |
| 14 | + </div> | |
| 15 | + <div class="uk-width-1-3"> | |
| 16 | + <div class="uk-form-row"> | |
| 17 | + <label class="uk-form-label">调头原因</label> | |
| 18 | + <div class="uk-form-controls"> | |
| 19 | + <select id="turnReason" style="width: calc(100% - 13px);"> | |
| 20 | + <option value="">请选择...</option> | |
| 21 | + </select> | |
| 22 | + </div> | |
| 23 | + </div> | |
| 24 | + </div> | |
| 25 | + <div class="uk-width-1-3" style="padding: 28px 0 0 28px;"> | |
| 26 | + <label id="emptyTurnCbox"></label> | |
| 27 | + </div> | |
| 28 | + </div> | |
| 29 | + </form> | |
| 30 | + </div> | |
| 31 | + | |
| 32 | + <div class="forms"></div> | |
| 33 | + <form class="uk-form remarks_form"> | |
| 34 | + <div class="uk-grid"> | |
| 35 | + <div class="uk-width-1-1"> | |
| 36 | + <div class="uk-form-row ct-stacked"> | |
| 37 | + <div class="uk-form-controls" style="margin-top: 5px;"> | |
| 38 | + <textarea id="form-s-t" rows="4" name="remarks" data-fv-stringlength="true" style="width: 100%;" | |
| 39 | + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + </div> | |
| 44 | + </form> | |
| 45 | + <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | |
| 46 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 47 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 48 | + </div> | |
| 49 | + | |
| 50 | + <script> | |
| 51 | + (function () { | |
| 52 | + var wrap = '#add-sub-task-main-modal .add_range_wrap', | |
| 53 | + sch, nextSch, stationRoutes, f1, f2, df1, df2, topf = $('.st_range_top_form', wrap); | |
| 54 | + | |
| 55 | + $(wrap).on('init', function (e, data) { | |
| 56 | + e.stopPropagation(); | |
| 57 | + sch = data.sch; | |
| 58 | + nextSch = gb_schedule_table.getNextNormalSch(sch); | |
| 59 | + if(!nextSch || nextSch.bcType!='normal'){ | |
| 60 | + $(wrap).html('<div class="err_panel">无法做区间调头,原因是没有找到返程班次!</div>'); | |
| 61 | + return; | |
| 62 | + } | |
| 63 | + | |
| 64 | + //站点路由 | |
| 65 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 66 | + return a.stationRouteCode - b.stationRouteCode; | |
| 67 | + }), 'directions'); | |
| 68 | + //第一段营运 | |
| 69 | + f1 = addTaskForm(); | |
| 70 | + $f('startStation', f1).trigger('change'); | |
| 71 | + | |
| 72 | + disabled_form(f1); | |
| 73 | + $('.domains', f1).empty(); | |
| 74 | + //top form 站点select | |
| 75 | + $('#turnStationSelect', topf).append($f('startStation', f1).html()).on('change', changeTurnStation); | |
| 76 | + //top form 原因select | |
| 77 | + var opts = ''; | |
| 78 | + $.each(gb_common.adjustExps, function () { | |
| 79 | + opts += '<option value="' + this + '">' + this + '</option>'; | |
| 80 | + }); | |
| 81 | + $('#turnReason', topf).append(opts).on('change', changeTurnReason); | |
| 82 | + //调头空驶 | |
| 83 | + $('#emptyTurnCbox',topf).html('<input type="checkbox"> 调头空驶回 ' + sch.qdzName); | |
| 84 | + $('#emptyTurnCbox input',topf).on('click', emptyTurn); | |
| 85 | + }); | |
| 86 | + | |
| 87 | + | |
| 88 | + function addTaskForm() { | |
| 89 | + var htmlStr = template('sub-task-v2-form-temp', {sch: sch}); | |
| 90 | + var f = $(htmlStr); | |
| 91 | + $('.forms', wrap).append(f); | |
| 92 | + //字典转换 | |
| 93 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 94 | + | |
| 95 | + //班次类型切换 | |
| 96 | + $('select[name=type2]', f).trigger('change'); | |
| 97 | + | |
| 98 | + //滚动条到底 | |
| 99 | + //$('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight); | |
| 100 | + | |
| 101 | + f.formValidation({ | |
| 102 | + framework: 'uikit', | |
| 103 | + locale: 'zh_CN' | |
| 104 | + }).on('add_reason_field', function () { | |
| 105 | + $(this).formValidation('addField', 'reason'); | |
| 106 | + }); | |
| 107 | + return f; | |
| 108 | + } | |
| 109 | + | |
| 110 | + function disabled_form(f) { | |
| 111 | + //$('input,select',f).attr('disabled', 'disabled'); | |
| 112 | + $f('type2', f).attr('disabled', 'disabled'); | |
| 113 | + $f('startStation', f).attr('disabled', 'disabled'); | |
| 114 | + $f('endStation', f).attr('disabled', 'disabled'); | |
| 115 | + $f('mileageType', f).attr('disabled', 'disabled'); | |
| 116 | + $f('destroy', f).attr('disabled', 'disabled'); | |
| 117 | + return f; | |
| 118 | + } | |
| 119 | + | |
| 120 | + function $f(name, f) { | |
| 121 | + return $('[name=' + name + ']', f); | |
| 122 | + } | |
| 123 | + | |
| 124 | + | |
| 125 | + /** | |
| 126 | + * 切换调头站点 | |
| 127 | + */ | |
| 128 | + function changeTurnStation() { | |
| 129 | + f1.nextAll('.sub_task_form_v2').remove(); | |
| 130 | + //掉头站点编码 | |
| 131 | + var eCode = $('#turnStationSelect', topf).val(); | |
| 132 | + if(!eCode){ | |
| 133 | + //$('.footer_mileage_count', '#add-sub-task-main-modal').trigger('refresh'); | |
| 134 | + $f('endStation', f1).val(sch.zdzCode).trigger('change'); | |
| 135 | + $('#emptyTurnCbox input')[0].checked=false; | |
| 136 | + return; | |
| 137 | + } | |
| 138 | + | |
| 139 | + //烂班1 | |
| 140 | + df1 = destroyForm(disabled_form(addTaskForm())); | |
| 141 | + //烂班2 | |
| 142 | + df2 = destroyForm(disabled_form(addTaskForm())); | |
| 143 | + //营运2 | |
| 144 | + f2 = disabled_form(addTaskForm()); | |
| 145 | + $('.domains', f2).empty(); | |
| 146 | + | |
| 147 | + | |
| 148 | + //营运1终点 | |
| 149 | + $f('endStation', f1).val(eCode).trigger('change'); | |
| 150 | + //烂班1起点 | |
| 151 | + $f('startStation', df1).val(eCode).trigger('change'); | |
| 152 | + //烂班2 | |
| 153 | + $f('startStation', df2).val(sch.zdzCode); | |
| 154 | + $f('endStation', df2).val(eCode); | |
| 155 | + $f('mileage', df2).val($f('mileage', df1).val()).trigger('input'); | |
| 156 | + $('[sch_id_inp]', df2).val(nextSch.id); | |
| 157 | + //营运2 | |
| 158 | + $f('startStation', f2).val(eCode); | |
| 159 | + $f('endStation', f2).val(sch.qdzCode); | |
| 160 | + $f('startDate',f2).val($f('endDate',f1).val()); | |
| 161 | + $f('mileage', f2).val($f('mileage', f1).val()).trigger('input'); | |
| 162 | + $('[sch_id_inp]', f2).val(nextSch.id); | |
| 163 | + | |
| 164 | + //set css | |
| 165 | + //setCss(); | |
| 166 | + //reason | |
| 167 | + changeTurnReason(); | |
| 168 | + } | |
| 169 | + | |
| 170 | + /** | |
| 171 | + * 切换调头原因 | |
| 172 | + */ | |
| 173 | + function changeTurnReason() { | |
| 174 | + var reason = $('#turnReason',topf).val(); | |
| 175 | + if(reason){ | |
| 176 | + $('.sub_task_form_v2 [name=reason]', wrap).val(reason).trigger('change'); | |
| 177 | + //var reInput=$('.remarks_form [name=remarks]', wrap); | |
| 178 | + //reInput.val(reInput.val() + reason + ','); | |
| 179 | + } | |
| 180 | + } | |
| 181 | + | |
| 182 | + function destroyForm(f) { | |
| 183 | + $f('destroy', f)[0].checked = true; | |
| 184 | + $('.destroy_reason_wrap', f).show(); | |
| 185 | + f.addClass('destroy_form'); | |
| 186 | + f.attr('destroy', true); | |
| 187 | + return f; | |
| 188 | + } | |
| 189 | + | |
| 190 | + /*function setCss() { | |
| 191 | + $('.sub_task_form_v2', wrap).each(function () { | |
| 192 | + if($(this).hasClass('destroy_form')) | |
| 193 | + return true; | |
| 194 | + | |
| 195 | + if($f('mileageType', this).val()=='service') | |
| 196 | + $(this).addClass('service_st_form'); | |
| 197 | + else | |
| 198 | + $(this).removeClass('service_st_form'); | |
| 199 | + }); | |
| 200 | + }*/ | |
| 201 | + | |
| 202 | + /** | |
| 203 | + * 空驶调头 | |
| 204 | + */ | |
| 205 | + function emptyTurn() { | |
| 206 | + if($('#turnStationSelect', topf).val()==''){ | |
| 207 | + notify_err('你必须先选择调头站点!'); | |
| 208 | + this.checked=false; | |
| 209 | + return; | |
| 210 | + } | |
| 211 | + if(this.checked){ | |
| 212 | + //烂班2 烂全程 | |
| 213 | + $f('startStation', df2).val(sch.zdzCode); | |
| 214 | + $f('endStation', df2).val(sch.qdzCode); | |
| 215 | + $f('mileage', df2).val(nextSch.jhlcOrig); | |
| 216 | + $f('startDate', df2).val(nextSch.dfsj); | |
| 217 | + $f('endDate', df2).val(nextSch.zdsj); | |
| 218 | + //营运2 变空驶 | |
| 219 | + //f2.removeClass('service_st_form'); | |
| 220 | + $f('mileageType',f2).val('empty').trigger('change'); | |
| 221 | + } | |
| 222 | + else{ | |
| 223 | + changeTurnStation(); | |
| 224 | + } | |
| 225 | + | |
| 226 | + //$f('mileage', df2).trigger('input'); | |
| 227 | + } | |
| 228 | + | |
| 229 | + //提交 | |
| 230 | + $('button[type=submit]', wrap).on('click', function () { | |
| 231 | + $(this).addClass('disabled').attr('disabled','disabled'); | |
| 232 | + dataArray = []; | |
| 233 | + $('form.sub_task_form_v2', wrap).data('valid', false) | |
| 234 | + .formValidation('validate'); | |
| 235 | + }); | |
| 236 | + | |
| 237 | + var dataArray = []; | |
| 238 | + $(wrap).on('success.form.fv', 'form.sub_task_form_v2', function (e) { | |
| 239 | + e.preventDefault(); | |
| 240 | + | |
| 241 | + dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) | |
| 242 | + , {remarks: $('#form-s-t',wrap).val()})); | |
| 243 | + $(this).data('valid', true); | |
| 244 | + | |
| 245 | + if (allValidSuccess()) { | |
| 246 | + var i = 0; | |
| 247 | + (function () { | |
| 248 | + var f = arguments.callee; | |
| 249 | + if (i >= dataArray.length) { | |
| 250 | + /** | |
| 251 | + * 为班次添加备注 | |
| 252 | + */ | |
| 253 | + //var remarks = '调头' + $('[name=endDate]', csf).val() + ' 因 ' + $.trim($('#turnReason', modal).val()) + '在' + $('[name=endStation] option:selected', csf).text() + '调头'; | |
| 254 | + //gb_schedule_table.addRemarks([sch, nextSch], gb_common.trim(remarks, 'g')); | |
| 255 | + UIkit.modal('#add-sub-task-main-modal').hide(); | |
| 256 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | |
| 257 | + gb_data_basic.reload_stat_park_data(); | |
| 258 | + return; | |
| 259 | + } | |
| 260 | + var data = dataArray[i]; | |
| 261 | + //营运子任务不写备注 | |
| 262 | + if(data.mileageType == 'service' && !data.destroy) | |
| 263 | + data.remarks = ''; | |
| 264 | + gb_common.$post('/childTask', data, function (rs) { | |
| 265 | + notify_succ('子任务添加成功'); | |
| 266 | + gb_schedule_table.updateSchedule(rs.t); | |
| 267 | + i++; | |
| 268 | + f(); | |
| 269 | + }); | |
| 270 | + })(); | |
| 271 | + } | |
| 272 | + }); | |
| 273 | + //校验不过 | |
| 274 | + $(wrap).on('err.field.fv','form.sub_task_form_v2', function () { | |
| 275 | + $('button[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 276 | + }); | |
| 277 | + | |
| 278 | + function allValidSuccess() { | |
| 279 | + var flag = true; | |
| 280 | + $('form.sub_task_form_v2', wrap).each(function (i, f) { | |
| 281 | + if(!$(f).data('valid')){ | |
| 282 | + flag = false; | |
| 283 | + return false; | |
| 284 | + } | |
| 285 | + }); | |
| 286 | + return flag; | |
| 287 | + } | |
| 288 | + })(); | |
| 289 | + </script> | |
| 290 | +</div> | |
| 0 | 291 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/main.html
0 → 100644
| 1 | +<div class="uk-modal ct_move_modal" id="add-sub-task-main-modal"> | |
| 2 | + <div class="uk-modal-dialog" style="width: 1100px;"> | |
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | + <div class="uk-modal-header"> | |
| 5 | + <h2>添加子任务</h2></div> | |
| 6 | + | |
| 7 | + <div class="uk-grid uk-grid-small"> | |
| 8 | + <div class="uk-width-2-10"> | |
| 9 | + <ul data-uk-switcher="{connect:'#tempScheduleContent',swiping:false}" class="uk-nav uk-nav-side left_tabs_lg"> | |
| 10 | + <li name="normal"><a>1、子任务</a></li> | |
| 11 | + <li name="in_out"><a>2、进出场</a></li> | |
| 12 | + <li name="range_turn"><a>3、区间调头</a></li> | |
| 13 | + </ul> | |
| 14 | + </div> | |
| 15 | + <div class="uk-width-8-10"> | |
| 16 | + <ul id="tempScheduleContent" class="uk-switcher"> | |
| 17 | + <li class="tab_cont normalCont"></li> | |
| 18 | + <li class="tab_cont inOutCont"></li> | |
| 19 | + <li class="tab_cont rangeTurnCont"></li> | |
| 20 | + </ul> | |
| 21 | + </div> | |
| 22 | + </div> | |
| 23 | + | |
| 24 | + <div class="footer_tools"> | |
| 25 | + <!-- 底部公里统计栏 --> | |
| 26 | + <div class="footer_mileage_count"> | |
| 27 | + 合计 | |
| 28 | + <span class="service_sum"></span> | |
| 29 | + <span class="destroy_sum"></span> | |
| 30 | + <span class="empty_sum"></span> | |
| 31 | + </div> | |
| 32 | + <!-- 站到场 链接 --> | |
| 33 | + <div class="station_to_park_link"> | |
| 34 | + <a>站 <i class="uk-icon-exchange"></i> 场</a> | |
| 35 | + </div> | |
| 36 | + | |
| 37 | + <abbr title="系统基础信息录入的停车场,必须绘制闭合多边形地理位置,才会纳入选项">缺少停车场选项?</abbr> | |
| 38 | + </div> | |
| 39 | + </div> | |
| 40 | + | |
| 41 | + <script id="sub-task-v2-form-temp" type="text/html"> | |
| 42 | + <form class="uk-form uk-form-horizontal uk-animation-fade sub_task_form_v2"> | |
| 43 | + <span class="task_form_close_icon"> | |
| 44 | + <i class="uk-icon-times"></i> | |
| 45 | + </span> | |
| 46 | + <input type="hidden" value="{{sch.id}}" name="schedule.id" sch_id_inp> | |
| 47 | + <input type="hidden" value="正常" name="type1"> | |
| 48 | + <div class="uk-grid"> | |
| 49 | + <div class="uk-width-1-3"> | |
| 50 | + <div class="uk-form-row"> | |
| 51 | + <label class="uk-form-label">班次类型</label> | |
| 52 | + <div class="uk-form-controls"> | |
| 53 | + <select class="form-control nt-dictionary" data-code="-100" name="type2" | |
| 54 | + data-group=ChildTaskType></select> | |
| 55 | + </div> | |
| 56 | + </div> | |
| 57 | + </div> | |
| 58 | + <div class="uk-width-1-3"> | |
| 59 | + <div class="uk-form-row"> | |
| 60 | + <label class="uk-form-label">起点 </label> | |
| 61 | + <div class="uk-form-controls"> | |
| 62 | + <select name="startStation" ></select> | |
| 63 | + </div> | |
| 64 | + </div> | |
| 65 | + </div> | |
| 66 | + <div class="uk-width-1-3"> | |
| 67 | + <div class="uk-form-row"> | |
| 68 | + <label class="uk-form-label">终点</label> | |
| 69 | + <div class="uk-form-controls"> | |
| 70 | + <select name="endStation" ></select> | |
| 71 | + </div> | |
| 72 | + </div> | |
| 73 | + </div> | |
| 74 | + </div> | |
| 75 | + | |
| 76 | + <div class="uk-grid"> | |
| 77 | + <div class="uk-width-1-3"> | |
| 78 | + <div class="uk-form-row"> | |
| 79 | + <label class="uk-form-label">开始时间</label> | |
| 80 | + <div class="uk-form-controls"> | |
| 81 | + <input name="startDate" value="{{sch.fcsjActual==null?sch.dfsj:sch.fcsjActual}}" type="time" | |
| 82 | + required> | |
| 83 | + </div> | |
| 84 | + </div> | |
| 85 | + </div> | |
| 86 | + <div class="uk-width-1-3"> | |
| 87 | + <div class="uk-form-row"> | |
| 88 | + <label class="uk-form-label">结束时间</label> | |
| 89 | + <div class="uk-form-controls"> | |
| 90 | + <input name="endDate" type="time" required> | |
| 91 | + </div> | |
| 92 | + </div> | |
| 93 | + </div> | |
| 94 | + <div class="uk-width-1-3"> | |
| 95 | + <div class="uk-form-row"> | |
| 96 | + <label class="uk-form-label">公里数</label> | |
| 97 | + <div class="uk-form-controls"> | |
| 98 | + <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" | |
| 99 | + required> | |
| 100 | + </div> | |
| 101 | + </div> | |
| 102 | + </div> | |
| 103 | + </div> | |
| 104 | + | |
| 105 | + <div class="uk-grid"> | |
| 106 | + <div class="uk-width-2-3 domains"></div> | |
| 107 | + <div class="uk-width-1-3"> | |
| 108 | + <div class="uk-form-row"> | |
| 109 | + <label class="uk-form-label">里程类型</label> | |
| 110 | + <div class="uk-form-controls"> | |
| 111 | + <select class="form-control nt-dictionary" required name="mileageType" | |
| 112 | + data-group="MileageType"></select> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | + </div> | |
| 116 | + </div> | |
| 117 | + </form> | |
| 118 | + </script> | |
| 119 | + | |
| 120 | + <script id="st-v2-domains-changecar-form-temp" type="text/html"> | |
| 121 | + <div class="uk-grid"> | |
| 122 | + <div class="uk-width-1-2"> | |
| 123 | + <div class="uk-form-row"> | |
| 124 | + <label class="uk-form-label">车辆编码</label> | |
| 125 | + <div class="uk-form-controls"> | |
| 126 | + <div class="uk-autocomplete autocomplete-cars"> | |
| 127 | + <input type="text" name="nbbm" placeholder="车辆自编号" required> | |
| 128 | + </div> | |
| 129 | + </div> | |
| 130 | + </div> | |
| 131 | + </div> | |
| 132 | + <div class="uk-width-1-2 destroy_reason_wrap"> | |
| 133 | + <div class="uk-form-row"> | |
| 134 | + <label class="uk-form-label">换车原因</label> | |
| 135 | + <div class="uk-form-controls"> | |
| 136 | + <select class="form-control" name="reason" required> | |
| 137 | + <option value="">请选择...</option> | |
| 138 | + {{each inOutExps as exp i}} | |
| 139 | + <option value="{{exp}}">{{exp}}</option> | |
| 140 | + {{/each}} | |
| 141 | + </select> | |
| 142 | + </div> | |
| 143 | + </div> | |
| 144 | + </div> | |
| 145 | + </div> | |
| 146 | + </script> | |
| 147 | + | |
| 148 | + <script id="st-v2-domains-inout-form-temp" type="text/html"> | |
| 149 | + <div class="uk-grid"> | |
| 150 | + <div class="uk-width-1-2"> | |
| 151 | + <div class="uk-form-row" style="padding-top: 5px;"> | |
| 152 | + <label class="uk-form-label"></label> | |
| 153 | + <div class="uk-form-controls"> | |
| 154 | + <label data-uk-tooltip title="如是无人售票线路,忽略这个选项"> | |
| 155 | + <input type="checkbox" value=1 name="noClerk" class="i-cbox"> 无售票员 | |
| 156 | + </label> | |
| 157 | + </div> | |
| 158 | + </div> | |
| 159 | + </div> | |
| 160 | + <div class="uk-width-1-2 destroy_reason_wrap"> | |
| 161 | + <div class="uk-form-row"> | |
| 162 | + <label class="uk-form-label">进出场原因</label> | |
| 163 | + <div class="uk-form-controls"> | |
| 164 | + <select class="form-control" name="reason" required> | |
| 165 | + <option value="">请选择...</option> | |
| 166 | + {{each inOutExps as exp i}} | |
| 167 | + <option value="{{exp}}">{{exp}}</option> | |
| 168 | + {{/each}} | |
| 169 | + </select> | |
| 170 | + </div> | |
| 171 | + </div> | |
| 172 | + </div> | |
| 173 | + </div> | |
| 174 | + </script> | |
| 175 | + | |
| 176 | + <script id="st-v2-domains-service-form-temp" type="text/html"> | |
| 177 | + <div class="uk-grid"> | |
| 178 | + <div class="uk-width-1-2"> | |
| 179 | + <div class="uk-form-row" style="padding-top: 5px;"> | |
| 180 | + <label class="uk-form-label"></label> | |
| 181 | + <div class="uk-form-controls"> | |
| 182 | + <label> | |
| 183 | + <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班 | |
| 184 | + </label> | |
| 185 | + </div> | |
| 186 | + </div> | |
| 187 | + </div> | |
| 188 | + <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;"> | |
| 189 | + <div class="uk-form-row"> | |
| 190 | + <label class="uk-form-label">烂班原因</label> | |
| 191 | + <div class="uk-form-controls"> | |
| 192 | + <select class="form-control" name="reason" required> | |
| 193 | + <option value="">请选择...</option> | |
| 194 | + {{each adjustExps as exp i}} | |
| 195 | + <option value="{{exp}}">{{exp}}</option> | |
| 196 | + {{/each}} | |
| 197 | + </select> | |
| 198 | + </div> | |
| 199 | + </div> | |
| 200 | + </div> | |
| 201 | + </div> | |
| 202 | + </script> | |
| 203 | + <script> | |
| 204 | + (function () { | |
| 205 | + var modal = '#add-sub-task-main-modal', sch, | |
| 206 | + stationRoutes, | |
| 207 | + parks, | |
| 208 | + information, | |
| 209 | + st_park_data; | |
| 210 | + | |
| 211 | + $(modal).on('init', function (e, data) { | |
| 212 | + e.stopPropagation(); | |
| 213 | + sch = data.sch; | |
| 214 | + | |
| 215 | + //站到场数据 | |
| 216 | + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm]; | |
| 217 | + //站点路由 | |
| 218 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 219 | + return a.stationRouteCode - b.stationRouteCode; | |
| 220 | + }), 'directions'); | |
| 221 | + //停车场 | |
| 222 | + parks = gb_data_basic.simpleParksArray(); | |
| 223 | + //线路标准 | |
| 224 | + information = gb_data_basic.getLineInformation(sch.xlBm); | |
| 225 | + //停车场排序,常用的放前面 | |
| 226 | + parks = sort_parks(parks, information, st_park_data); | |
| 227 | + | |
| 228 | + var st_doms = gb_schedule_context_menu.get_st_doms(); | |
| 229 | + //普通 | |
| 230 | + $('.normalCont', modal).html(st_doms.custom_dom); | |
| 231 | + $('.add_custom_wrap', modal).trigger('init', data); | |
| 232 | + | |
| 233 | + //进出场班次 | |
| 234 | + if(sch.bcType=='in'||sch.bcType=='out'){ | |
| 235 | + $('.left_tabs_lg li[name=in_out]').remove(); | |
| 236 | + $('.left_tabs_lg li[name=range_turn]').remove(); | |
| 237 | + } | |
| 238 | + else{ | |
| 239 | + //进出场 | |
| 240 | + $('.inOutCont', modal).html(st_doms.inout_dom); | |
| 241 | + $('.add_inOut_wrap', modal).trigger('init', data); | |
| 242 | + //区间调头 | |
| 243 | + $('.rangeTurnCont', modal).html(st_doms.range_dom); | |
| 244 | + $('.add_range_wrap', modal).trigger('init', data); | |
| 245 | + } | |
| 246 | + }); | |
| 247 | + | |
| 248 | + //班次类型切换事件 | |
| 249 | + $(modal).on('change', 'select[name=type2]', reCalcInputs_type); | |
| 250 | + //烂班选项点击事件 | |
| 251 | + $(modal).on('change', 'input[name=destroy]', destroyClick); | |
| 252 | + //起终点站切换事件 | |
| 253 | + $(modal).on('change', 'select[name=startStation],select[name=endStation]', reCalcInputs_station); | |
| 254 | + //开始时间改变 | |
| 255 | + $(modal).on('input', 'input[name=startDate]', reCalcEndTime); | |
| 256 | + //公里数改变 | |
| 257 | + $(modal).on('input', 'input[name=mileage]', reCalcMileageCount); | |
| 258 | + //终点时间改变 | |
| 259 | + $(modal).on('input', 'input[name=endDate]', reCalcNext_s_time); | |
| 260 | + //进出场原因切换 | |
| 261 | + $(modal).on('change', 'select[name=reason]', reSynchroReason); | |
| 262 | + //里程类型改变 | |
| 263 | + $(modal).on('change', 'select[name=mileageType]', changeMileageType); | |
| 264 | + //关闭 | |
| 265 | + $(modal).on('click', '.task_form_close_icon', closeTaskForm); | |
| 266 | + | |
| 267 | + //公里合计footer | |
| 268 | + var re_count; | |
| 269 | + $('.footer_mileage_count', modal).on('refresh', function () { | |
| 270 | + if(re_count) | |
| 271 | + return; | |
| 272 | + re_count = true; | |
| 273 | + var that=this; | |
| 274 | + setTimeout(function () { | |
| 275 | + var fs = $('#tempScheduleContent li.uk-active form.sub_task_form_v2', modal); | |
| 276 | + var s=0,e=0,d=0,mileage; | |
| 277 | + $.each(fs, function () { | |
| 278 | + mileage = parseFloat($f('mileage',this).val()); | |
| 279 | + if($(this).hasClass('destroy_form')) | |
| 280 | + d = gb_common.accAdd(d, mileage); | |
| 281 | + else if($(this).hasClass('service_form')) | |
| 282 | + s = gb_common.accAdd(s, mileage); | |
| 283 | + else if($(this).hasClass('empty_form')) | |
| 284 | + e = gb_common.accAdd(e, mileage); | |
| 285 | + }); | |
| 286 | + | |
| 287 | + $('span',that).hide(); | |
| 288 | + if(s>0) | |
| 289 | + $('span.service_sum',that).html('营运: ' + s).show(); | |
| 290 | + if(e>0) | |
| 291 | + $('span.empty_sum',that).html('空驶: ' + e).show(); | |
| 292 | + if(d>0) | |
| 293 | + $('span.destroy_sum',that).html('烂班: ' + d).show(); | |
| 294 | + re_count=false; | |
| 295 | + }, 200); | |
| 296 | + }); | |
| 297 | + | |
| 298 | + /** | |
| 299 | + * 根据班次类型切换起终点下拉框 | |
| 300 | + */ | |
| 301 | + function reCalcInputs_type() { | |
| 302 | + var f = $(this).parents('.sub_task_form_v2'); | |
| 303 | + | |
| 304 | + var routes = stationRoutes[sch.xlDir] | |
| 305 | + , lastCode = routes[routes.length - 1].stationCode | |
| 306 | + , opts = '', park_opts = ''; | |
| 307 | + //station options | |
| 308 | + $.each(routes, function () { | |
| 309 | + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | |
| 310 | + }); | |
| 311 | + //park options | |
| 312 | + for(var i=0,p;p=parks[i++];) | |
| 313 | + park_opts += '<option value="' + p.code + '">' + p.name + '</option>'; | |
| 314 | + /*for (var code in parks) | |
| 315 | + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';*/ | |
| 316 | + | |
| 317 | + var qdz = $f('startStation', f), zdz = $f('endStation', f), mType = $f('mileageType', f); | |
| 318 | + var domainsTemp; | |
| 319 | + switch ($(this).val()) { | |
| 320 | + case '3'://出场 | |
| 321 | + qdz.html(park_opts).val(information.carPark); | |
| 322 | + zdz.html(opts).trigger('change'); | |
| 323 | + mType.val('empty').attr('disabled', 'disabled').trigger('change'); | |
| 324 | + domainsTemp = 'st-v2-domains-inout-form-temp'; | |
| 325 | + /*//如果上一个form是进场 | |
| 326 | + try { | |
| 327 | + var prev_f = f.prev('.sub_task_form_v2'); | |
| 328 | + if ($f('type2', prev_f).val() == 2) | |
| 329 | + zdz.val($f('startStation', prev_f).val()); | |
| 330 | + } catch (e) { | |
| 331 | + console.log(e); | |
| 332 | + }*/ | |
| 333 | + break; | |
| 334 | + case '2'://进场 | |
| 335 | + qdz.html(opts) | |
| 336 | + zdz.html(park_opts).val(information.carPark).trigger('change'); | |
| 337 | + mType.val('empty').attr('disabled', 'disabled').trigger('change'); | |
| 338 | + domainsTemp = 'st-v2-domains-inout-form-temp'; | |
| 339 | + break; | |
| 340 | + default: | |
| 341 | + qdz.html(opts); | |
| 342 | + zdz.html(opts).val(lastCode).trigger('change'); | |
| 343 | + mType.val('service').removeAttr('disabled').trigger('change'); | |
| 344 | + domainsTemp = 'st-v2-domains-service-form-temp'; | |
| 345 | + } | |
| 346 | + | |
| 347 | + //可变选项区域 | |
| 348 | + $('.domains', f).html(template(domainsTemp, { | |
| 349 | + adjustExps: gb_common.adjustExps, | |
| 350 | + inOutExps: gb_common.inOutExps | |
| 351 | + })); | |
| 352 | + | |
| 353 | + //校验reason | |
| 354 | + f.trigger('add_reason_field'); | |
| 355 | + //qdz.trigger('change'); | |
| 356 | + //zdz.trigger('change'); | |
| 357 | + } | |
| 358 | + | |
| 359 | + /** | |
| 360 | + * 根据站位站距计算公里和时间 | |
| 361 | + */ | |
| 362 | + function reCalcInputs_station() { | |
| 363 | + var f = $(this).parents('.sub_task_form_v2') | |
| 364 | + , type2 = $f('type2', f).val()//班次类型 | |
| 365 | + , qdzCode = $f('startStation', f).val()//起点站 | |
| 366 | + , zdzCode = $f('endStation', f).val()//终点站 | |
| 367 | + , startDate = $f('startDate', f).val();//开始时间 | |
| 368 | + var mileage, time, upDown; | |
| 369 | + switch (type2) { | |
| 370 | + case '2': | |
| 371 | + upDown = inout_updown(qdzCode, sch); | |
| 372 | + break; | |
| 373 | + case '3': | |
| 374 | + upDown = inout_updown(zdzCode, sch); | |
| 375 | + break; | |
| 376 | + default: | |
| 377 | + upDown = sch.xlDir | |
| 378 | + } | |
| 379 | + | |
| 380 | + //从站到场里获取数据 | |
| 381 | + var stp = search_st_park(f); | |
| 382 | + if(stp){ | |
| 383 | + mileage=type2==2?stp['mileage1']:stp['mileage2']; | |
| 384 | + time=type2==2?stp['time1']:stp['time2']; | |
| 385 | + } | |
| 386 | + else{ | |
| 387 | + if(upDown==-1) | |
| 388 | + return; | |
| 389 | + switch (upDown + '_' + type2) { | |
| 390 | + case '0_3'://上行出场 | |
| 391 | + mileage = information.upOutMileage; | |
| 392 | + time = information.upOutTimer; | |
| 393 | + break; | |
| 394 | + case '1_3'://下行出场 | |
| 395 | + mileage = information.downOutMileage; | |
| 396 | + time = information.downOutTimer; | |
| 397 | + break; | |
| 398 | + case '0_2'://上行进场 | |
| 399 | + mileage = information.upInMileage; | |
| 400 | + time = information.upInTimer; | |
| 401 | + break; | |
| 402 | + case '1_2'://下行进场 | |
| 403 | + mileage = information.downInMileage; | |
| 404 | + time = information.downInTimer; | |
| 405 | + break; | |
| 406 | + default: | |
| 407 | + //线路上站点间 | |
| 408 | + mileage = calcMileageByRoutes(stationRoutes[upDown], qdzCode, zdzCode); | |
| 409 | + time = gb_common.mul(gb_common.accDiv(sch.bcsj, sch.jhlcOrig), mileage); | |
| 410 | + } | |
| 411 | + } | |
| 412 | + | |
| 413 | + $f('mileage', f).val(mileage); | |
| 414 | + var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 415 | + $f('endDate', f).val(et.format('HH:mm')); | |
| 416 | + | |
| 417 | + if (type2 != 1) { | |
| 418 | + reCalcEndTime.call(this); | |
| 419 | + } | |
| 420 | + reCalcMileageCount(); | |
| 421 | + } | |
| 422 | + | |
| 423 | + /** | |
| 424 | + * 计算结束时间 | |
| 425 | + */ | |
| 426 | + function reCalcEndTime() { | |
| 427 | + var f = $(this).parents('.sub_task_form_v2') | |
| 428 | + , startDate = $f('startDate', f).val()//开始时间 | |
| 429 | + , mileage = $f('mileage', f).val()//公里 | |
| 430 | + , type2 = $f('type2', f).val();//班次类型 | |
| 431 | + if (!startDate || !mileage) | |
| 432 | + return; | |
| 433 | + | |
| 434 | + var time; | |
| 435 | + //从站到场里获取数据 | |
| 436 | + var stp = search_st_park(f); | |
| 437 | + if(stp){ | |
| 438 | + mileage=type2==2?stp['mileage1']:stp['mileage2']; | |
| 439 | + time=type2==2?stp['time1']:stp['time2']; | |
| 440 | + } | |
| 441 | + else{ | |
| 442 | + if (type2 == 1) { | |
| 443 | + time = gb_common.mul(gb_common.accDiv(sch.bcsj, sch.jhlcOrig), mileage); | |
| 444 | + } | |
| 445 | + else if (type2 == 2) { | |
| 446 | + //进场 | |
| 447 | + var qdzCode = $f('startStation', f).val(), | |
| 448 | + updown = inout_updown(qdzCode, sch); | |
| 449 | + | |
| 450 | + if (updown == -1) | |
| 451 | + return; | |
| 452 | + time = updown == 0 ? information.upInTimer : information.downInTimer; | |
| 453 | + } | |
| 454 | + else if (type2 == 3) { | |
| 455 | + //出场 | |
| 456 | + var zdzCode = $f('endStation', f).val(), | |
| 457 | + updown = inout_updown(zdzCode, sch); | |
| 458 | + | |
| 459 | + if (updown == -1) | |
| 460 | + return; | |
| 461 | + time = updown == 0 ? information.upOutTimer : information.downOutTimer; | |
| 462 | + } | |
| 463 | + } | |
| 464 | + | |
| 465 | + var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 466 | + $f('endDate', f).val(et.format('HH:mm')).trigger('input'); | |
| 467 | + } | |
| 468 | + | |
| 469 | + /** | |
| 470 | + * 将结束时间写入下一个表单的开始时间 | |
| 471 | + */ | |
| 472 | + function reCalcNext_s_time() { | |
| 473 | + var f = $(this).parents('.sub_task_form_v2'), | |
| 474 | + et = $f('endDate', f).val(); | |
| 475 | + | |
| 476 | + var nf = gb_common.next_elem('sub_task_form_v2', f); | |
| 477 | + | |
| 478 | + if (f.attr('destroy')) | |
| 479 | + et = $f('startDate', f).val(); | |
| 480 | + | |
| 481 | + if (nf.length > 0) { | |
| 482 | + $f('startDate', nf).val(et).trigger('input'); | |
| 483 | + } | |
| 484 | + } | |
| 485 | + | |
| 486 | + /** | |
| 487 | + * 切换原因 | |
| 488 | + */ | |
| 489 | + function reSynchroReason() { | |
| 490 | + var f = $(this).parents('.sub_task_form_v2'), | |
| 491 | + reason = $(this).val(); | |
| 492 | + | |
| 493 | + var nf = gb_common.next_elem('sub_task_form_v2', f), | |
| 494 | + nInput = $f('reason', nf); | |
| 495 | + | |
| 496 | + if (nf.length > 0 && nInput.length > 0) { | |
| 497 | + nInput.val(reason).trigger('change'); | |
| 498 | + } | |
| 499 | + else { | |
| 500 | + var cont = f.parents('li.tab_cont'), | |
| 501 | + remInput = $('.remarks_form [name=remarks]', cont); | |
| 502 | + | |
| 503 | + if(remInput.val()==reason + ',') | |
| 504 | + return; | |
| 505 | + remInput.val(remInput.val() + reason + ','); | |
| 506 | + } | |
| 507 | + } | |
| 508 | + | |
| 509 | + function calcMileageByRoutes(routes, s, e) { | |
| 510 | + var code, flag, mileage = 0; | |
| 511 | + $.each(routes, function () { | |
| 512 | + code = this['stationCode']; | |
| 513 | + if (flag) { | |
| 514 | + if (!this.distances) | |
| 515 | + this.distances = 0; | |
| 516 | + mileage = gb_common.accAdd(mileage, this.distances); | |
| 517 | + } | |
| 518 | + if (code == s) | |
| 519 | + flag = true; | |
| 520 | + if (code == e) | |
| 521 | + return false; | |
| 522 | + }); | |
| 523 | + return mileage; | |
| 524 | + } | |
| 525 | + | |
| 526 | + function destroyClick() { | |
| 527 | + var f = $(this).parents('.sub_task_form_v2'); | |
| 528 | + if (this.checked) { | |
| 529 | + $('.destroy_reason_wrap', f).show(); | |
| 530 | + f.attr('destroy', true).addClass('destroy_form'); | |
| 531 | + } | |
| 532 | + else { | |
| 533 | + $('.destroy_reason_wrap', f).hide(); | |
| 534 | + f.removeAttr('destroy').removeClass('destroy_form'); | |
| 535 | + } | |
| 536 | + reCalcMileageCount(); | |
| 537 | + } | |
| 538 | + | |
| 539 | + function changeMileageType() { | |
| 540 | + var f = $(this).parents('.sub_task_form_v2'), | |
| 541 | + mileageType = $(this).val(); | |
| 542 | + if (mileageType) { | |
| 543 | + f.removeClass('service_form empty_form').addClass(mileageType + '_form'); | |
| 544 | + reCalcMileageCount(); | |
| 545 | + } | |
| 546 | + } | |
| 547 | + | |
| 548 | + function $f(name, f) { | |
| 549 | + return $('[name=' + name + ']', f); | |
| 550 | + } | |
| 551 | + | |
| 552 | + function closeTaskForm() { | |
| 553 | + $(this).parents('.sub_task_form_v2').remove(); | |
| 554 | + reCalcMileageCount(); | |
| 555 | + } | |
| 556 | + | |
| 557 | + /** | |
| 558 | + * 进出场上下行 | |
| 559 | + * @param qdzCode | |
| 560 | + * @param sch | |
| 561 | + */ | |
| 562 | + function inout_updown(station, sch) { | |
| 563 | + if (station == sch.qdzCode) | |
| 564 | + return sch.xlDir; | |
| 565 | + else if (station == sch.zdzCode) | |
| 566 | + return sch.xlDir == 0 ? 1 : 0; | |
| 567 | + else | |
| 568 | + return -1; | |
| 569 | + } | |
| 570 | + | |
| 571 | + function search_st_park(f) { | |
| 572 | + if(!st_park_data) | |
| 573 | + return; | |
| 574 | + var stp; | |
| 575 | + var qdSelect=$f('startStation', f)[0],zdSelect=$f('endStation', f)[0]; | |
| 576 | + | |
| 577 | + var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text, | |
| 578 | + zdzName=zdSelect.options[zdSelect.options.selectedIndex].text, | |
| 579 | + type2 = $f('type2', f).val(); | |
| 580 | + | |
| 581 | + if(type2!=2 && type2!=3) | |
| 582 | + return; | |
| 583 | + | |
| 584 | + $.each(st_park_data, function () { | |
| 585 | + if((type2==2 && this.stationName==qdzName && this.parkName==zdzName) | |
| 586 | + || (type2==3 && this.stationName==zdzName && this.parkName==qdzName)){ | |
| 587 | + stp = this; | |
| 588 | + return false; | |
| 589 | + } | |
| 590 | + }); | |
| 591 | + | |
| 592 | + return stp; | |
| 593 | + } | |
| 594 | + | |
| 595 | + $('.left_tabs_lg', modal).on('show.uk.switcher', reCalcMileageCount); | |
| 596 | + | |
| 597 | + function reCalcMileageCount() { | |
| 598 | + $('.footer_mileage_count', modal).trigger('refresh'); | |
| 599 | + var f = $(this).parents('.sub_task_form_v2'); | |
| 600 | + if($f('type2',f).val()==1) | |
| 601 | + reCalcEndTime.call(this); | |
| 602 | + } | |
| 603 | + | |
| 604 | + | |
| 605 | + var folder = '/real_control_v2/fragments/line_schedule/context_menu'; | |
| 606 | + /** | |
| 607 | + * 弹出站 到 场对照表 | |
| 608 | + */ | |
| 609 | + $('.station_to_park_link', modal).on('click', function () { | |
| 610 | + open_modal(folder + '/utils/station_to_park.html', { | |
| 611 | + sch: sch | |
| 612 | + }, {center: false, bgclose: false, modal: false}); | |
| 613 | + }); | |
| 614 | + | |
| 615 | + /** | |
| 616 | + * 停车场排序 | |
| 617 | + * @param parks 停车场 code 2 name | |
| 618 | + * @param information 线路标准 | |
| 619 | + * @param st_park_data 站到场 | |
| 620 | + */ | |
| 621 | + function sort_parks(parks, information, st_park_data) { | |
| 622 | + var array = [], names=[]; | |
| 623 | + for(var code in parks){ | |
| 624 | + array.push({code: code, name: parks[code]}); | |
| 625 | + } | |
| 626 | + | |
| 627 | + if(st_park_data && st_park_data.length > 0){ | |
| 628 | + $.each(st_park_data, function () { | |
| 629 | + names.push(this.parkName); | |
| 630 | + }); | |
| 631 | + } | |
| 632 | + | |
| 633 | + //debugger | |
| 634 | + array.sort(function (a, b) { | |
| 635 | + if(a.code==information.carPark) | |
| 636 | + return -1; | |
| 637 | + if(b.code==information.carPark) | |
| 638 | + return 1; | |
| 639 | + | |
| 640 | + var ai = names.indexOf(a.name), | |
| 641 | + bi = names.indexOf(b.name); | |
| 642 | + | |
| 643 | + if(ai!=-1 && bi==-1) | |
| 644 | + return -1; | |
| 645 | + else if(ai==-1 && bi!=-1) | |
| 646 | + return 1; | |
| 647 | + else | |
| 648 | + return a.name.localeCompare(b.name); | |
| 649 | + }); | |
| 650 | + | |
| 651 | + /*var rs = {}; | |
| 652 | + $.each(array, function () { | |
| 653 | + rs[this.code]=this.name; | |
| 654 | + });*/ | |
| 655 | + | |
| 656 | + return array; | |
| 657 | + } | |
| 658 | + })(); | |
| 659 | + </script> | |
| 660 | +</div> | |
| 0 | 661 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/tzrc.html
| ... | ... | @@ -54,8 +54,7 @@ |
| 54 | 54 | </div> |
| 55 | 55 | <div class="uk-width-1-2"> |
| 56 | 56 | <div class="uk-form-row"> |
| 57 | - <label class="uk-form-label">驾驶员 <i class="uk-icon-question-circle" data-uk-tooltip | |
| 58 | - title="如果有驾驶员未提示,请至后台“基础信息 -人员信息”里纠正该员工的“工种”类别 "></i></label> | |
| 57 | + <label class="uk-form-label">驾驶员 </label> | |
| 59 | 58 | <div class="uk-form-controls"> |
| 60 | 59 | <div class="uk-autocomplete uk-form jsy-autocom"> |
| 61 | 60 | <input type="text" value="" name="jsy" required> |
| ... | ... | @@ -192,7 +191,10 @@ |
| 192 | 191 | //}); |
| 193 | 192 | |
| 194 | 193 | //submit |
| 195 | - var f = $('form.tzrc_form', modal).formValidation(gb_form_validation_opts); | |
| 194 | + var f = $('form.tzrc_form', modal).formValidation({ | |
| 195 | + framework: 'uikit', | |
| 196 | + locale: 'zh_CN' | |
| 197 | + }); | |
| 196 | 198 | f.on('success.form.fv', function (e) { |
| 197 | 199 | e.preventDefault(); |
| 198 | 200 | var param = $(this).serializeJSON(); | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/utils/station_to_park.html
0 → 100644
| 1 | +<div class="uk-modal ct-form-modal" id="station_to_park-modal"> | |
| 2 | + <div class="uk-modal-dialog" style="width: 780px;"> | |
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | + <div class="uk-modal-header"> | |
| 5 | + <h2>站到场历时、公里对照表</h2></div> | |
| 6 | + | |
| 7 | + <div class="ct_lists"> | |
| 8 | + </div> | |
| 9 | + | |
| 10 | + <div class="ct_describe" >从历史的子任务、临加里采集进出场历时和公里</div> | |
| 11 | + </div> | |
| 12 | + | |
| 13 | + <script id="station_park_list-temp" type="text/html"> | |
| 14 | + {{each list as obj i}} | |
| 15 | + {{if obj.mileage1 != obj.mileage2}} | |
| 16 | + <div class="s_2_park_form_wrap" data-id="{{obj.id}}"> | |
| 17 | + <span class="ct_close"><i class="uk-icon-times"></i></span> | |
| 18 | + <form class="uk-form"> | |
| 19 | + {{if obj.time1!=null && obj.mileage1!=null}} | |
| 20 | + <div class="uk-grid"> | |
| 21 | + <div class="uk-width-1-4"> | |
| 22 | + <label class="">起点:</label> | |
| 23 | + <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 24 | + </div> | |
| 25 | + <div class="uk-width-1-4"> | |
| 26 | + <label>终点:</label> | |
| 27 | + <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 28 | + </div> | |
| 29 | + <div class="uk-width-2-4 uk-grid"> | |
| 30 | + <div class="uk-width-1-3"> | |
| 31 | + <label>历时:</label> | |
| 32 | + <input type="text" value="{{obj.time1}}" class="uk-width-1-1" readonly> | |
| 33 | + </div> | |
| 34 | + <div class="uk-width-1-3"> | |
| 35 | + <label>公里:</label> | |
| 36 | + <input type="text" value="{{obj.mileage1}}" class="uk-width-1-1" readonly> | |
| 37 | + </div> | |
| 38 | + <div class="uk-width-1-3"> | |
| 39 | + <label class="bottom_label">进场</label> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + {{/if}} | |
| 44 | + {{if obj.time2!=null && obj.mileage2!=null}} | |
| 45 | + <div class="uk-grid"> | |
| 46 | + <div class="uk-width-1-4"> | |
| 47 | + <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 48 | + </div> | |
| 49 | + <div class="uk-width-1-4"> | |
| 50 | + <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 51 | + </div> | |
| 52 | + <div class="uk-width-2-4 uk-grid"> | |
| 53 | + <div class="uk-width-1-3"> | |
| 54 | + <input type="text" value="{{obj.time2}}" class="uk-width-1-1" readonly> | |
| 55 | + </div> | |
| 56 | + <div class="uk-width-1-3"> | |
| 57 | + <input type="text" value="{{obj.mileage2}}" class="uk-width-1-1" readonly> | |
| 58 | + </div> | |
| 59 | + <div class="uk-width-1-3"> | |
| 60 | + <label class="bottom_label_2">出场</label> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | + </div> | |
| 64 | + {{/if}} | |
| 65 | + </form> | |
| 66 | + </div> | |
| 67 | + {{else}} | |
| 68 | + <div class="s_2_park_form_wrap" data-id="{{obj.id}}"> | |
| 69 | + <span class="ct_close"><i class="uk-icon-times"></i></span> | |
| 70 | + <form class="uk-form"> | |
| 71 | + <div class="uk-grid"> | |
| 72 | + <div class="uk-width-1-4"> | |
| 73 | + <label class="">起点:</label> | |
| 74 | + <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 75 | + </div> | |
| 76 | + <div class="uk-width-1-4"> | |
| 77 | + <label>终点:</label> | |
| 78 | + <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 79 | + </div> | |
| 80 | + <div class="uk-width-2-4 uk-grid"> | |
| 81 | + <div class="uk-width-1-3"> | |
| 82 | + <label>历时:</label> | |
| 83 | + <input type="text" value="{{obj.time1}}" class="uk-width-1-1" readonly> | |
| 84 | + </div> | |
| 85 | + <div class="uk-width-1-3"> | |
| 86 | + <label>公里:</label> | |
| 87 | + <input type="text" value="{{obj.mileage1}}" class="uk-width-1-1" readonly> | |
| 88 | + </div> | |
| 89 | + <div class="uk-width-1-3"> | |
| 90 | + <label class="bottom_label"><input type="checkbox" disabled checked> 进=出 </label> | |
| 91 | + </div> | |
| 92 | + </div> | |
| 93 | + </div> | |
| 94 | + </form> | |
| 95 | + </div> | |
| 96 | + {{/if}} | |
| 97 | + {{/each}} | |
| 98 | + </script> | |
| 99 | + | |
| 100 | + <script> | |
| 101 | + (function () { | |
| 102 | + var modal = '#station_to_park-modal', sch; | |
| 103 | + | |
| 104 | + $(modal).on('init', function (e, data) { | |
| 105 | + e.stopPropagation(); | |
| 106 | + sch = data.sch; | |
| 107 | + | |
| 108 | + var list = gb_data_basic.get_stat_park_data()[sch.xlBm]; | |
| 109 | + if(!list) | |
| 110 | + return; | |
| 111 | + list.sort(function (a, b) { | |
| 112 | + return a.stationName.localeCompare(b.stationName); | |
| 113 | + }); | |
| 114 | + | |
| 115 | + var htmlStr = template('station_park_list-temp', {list: list}); | |
| 116 | + $('.ct_lists', modal).html(htmlStr); | |
| 117 | + }); | |
| 118 | + | |
| 119 | + $(modal).on('click', '.s_2_park_form_wrap>.ct_close', function () { | |
| 120 | + var wrap=$(this).parent(), | |
| 121 | + id=wrap.data('id'); | |
| 122 | + | |
| 123 | + gb_common.$post('/basic/deleteStation2Park', {lineCode: sch.xlBm, id: id}, function () { | |
| 124 | + gb_data_basic.reload_stat_park_data(); | |
| 125 | + wrap.remove(); | |
| 126 | + }); | |
| 127 | + }); | |
| 128 | + })(); | |
| 129 | + </script> | |
| 130 | +</div> | ... | ... |
src/main/resources/static/real_control_v2/fragments/north/nav/sch_edit_info/list.html
| ... | ... | @@ -35,6 +35,22 @@ |
| 35 | 35 | <div class="uk-autocomplete uk-form autocomplete-jsy"> |
| 36 | 36 | <input type="text" name="jGh" placeholder="驾驶员"> |
| 37 | 37 | </div> |
| 38 | + | |
| 39 | + <span class="horizontal-field">修正类型</span> | |
| 40 | + <select name="type"> | |
| 41 | + <option value="">全部</option> | |
| 42 | + <option value="DFTZ">待发调整</option> | |
| 43 | + <option value="SFTZ">实发调整</option> | |
| 44 | + <option value="FCXXWT">发车信息微调</option> | |
| 45 | + <option value="TZRC">调整人车</option> | |
| 46 | + <option value="JHLB">计划烂班</option> | |
| 47 | + <option value="CXLB">撤销烂班</option> | |
| 48 | + <option value="CXSF">撤销实发</option> | |
| 49 | + <option value="CXZX">撤销执行</option> | |
| 50 | + <option value="LPDD">路牌对调</option> | |
| 51 | + <option value="ZRW">添加子任务</option> | |
| 52 | + <option value="LSBCTZ">历史班次调整</option> | |
| 53 | + </select> | |
| 38 | 54 | <button class="uk-button">检索</button> |
| 39 | 55 | |
| 40 | 56 | <label style="float: right;font-size: 12px;color: #989797;"> |
| ... | ... | @@ -122,6 +138,19 @@ |
| 122 | 138 | </div> |
| 123 | 139 | </script> |
| 124 | 140 | |
| 141 | + <!-- 历史班次调整 tip --> | |
| 142 | + <script id="edit-info-tip-lsbctz-temp" type="text/html"> | |
| 143 | + <div class="edit-info-tip"> | |
| 144 | + {{each jsonArray as obj i}} | |
| 145 | + <p class="text">{{obj.title}} 由 {{obj.old==null?'无':obj.old}} 调整为 {{obj.now}}</p> | |
| 146 | + {{/each}} | |
| 147 | + <p class="sub_text">调整人:{{user}} 调整时间:{{ts_str}}</p> | |
| 148 | + {{if remarks!=null && remarks != ''}} | |
| 149 | + <p class="sub_text">备注:{{remarks}}</p> | |
| 150 | + {{/if}} | |
| 151 | + </div> | |
| 152 | + </script> | |
| 153 | + | |
| 125 | 154 | <!-- 撤销实发tip --> |
| 126 | 155 | <script id="edit-info-tip-cxsf-temp" type="text/html"> |
| 127 | 156 | <div class="edit-info-tip"> |
| ... | ... | @@ -248,6 +277,7 @@ |
| 248 | 277 | $.each(rs.list, function () { |
| 249 | 278 | this.jsonArray = JSON.parse(this.jsonArray); |
| 250 | 279 | etInfos[this.id] = this; |
| 280 | + this['ts_str'] = moment(this.ts).format('YYYY-MM-DD HH:mm'); | |
| 251 | 281 | |
| 252 | 282 | nbbmArray.push({value: this.clZbh}); |
| 253 | 283 | jsyArray.push({value: this.jGh+'/'+this.jName, |
| ... | ... | @@ -365,7 +395,7 @@ |
| 365 | 395 | return gb_common.get_vals(rs); |
| 366 | 396 | } |
| 367 | 397 | |
| 368 | - var types = {'DFTZ': '待发调整', 'FCXXWT':'发车信息微调', 'JHLB': '计划烂班', 'CXLB': '撤销烂班', 'CXZX': '撤销执行', 'CXSF': '撤销实发', 'SFTZ': '实发调整', 'TZRC': '调整人车'}; | |
| 398 | + var types = {'DFTZ': '待发调整', 'FCXXWT':'发车信息微调', 'JHLB': '计划烂班', 'CXLB': '撤销烂班', 'CXZX': '撤销执行', 'CXSF': '撤销实发', 'SFTZ': '实发调整', 'TZRC': '调整人车', 'LSBCTZ':'历史班次调整'}; | |
| 369 | 399 | function subData(data){ |
| 370 | 400 | return { |
| 371 | 401 | id: data.id, |
| ... | ... | @@ -535,6 +565,26 @@ |
| 535 | 565 | }); |
| 536 | 566 | |
| 537 | 567 | |
| 568 | + //发车信息微调tip | |
| 569 | + $(modal).on('mouseenter', '.ct-badge.ct-badge-LSBCTZ', function() { | |
| 570 | + $(this).qtip({ | |
| 571 | + show: _opts.show, | |
| 572 | + content: { | |
| 573 | + title: '发车信息微调', | |
| 574 | + text: function() { | |
| 575 | + var obj = etInfos[$(this).data('id')]; | |
| 576 | + return template('edit-info-tip-lsbctz-temp', obj); | |
| 577 | + } | |
| 578 | + }, | |
| 579 | + position: _opts.position, | |
| 580 | + style: { | |
| 581 | + classes: 'qtip-blue qtip-rounded qtip-shadow sch-badge-tip' | |
| 582 | + }, | |
| 583 | + hide: _opts.hide, | |
| 584 | + events: _opts.events | |
| 585 | + }); | |
| 586 | + }); | |
| 587 | + | |
| 538 | 588 | function sortFun(a, b) { |
| 539 | 589 | return (a.realExecDate + a.fcsj).localeCompare(b.realExecDate + b.fcsj); |
| 540 | 590 | } | ... | ... |
src/main/resources/static/real_control_v2/js/common.js
| ... | ... | @@ -21,6 +21,9 @@ var gb_common = (function () { |
| 21 | 21 | 0x12: '报警' |
| 22 | 22 | }; |
| 23 | 23 | |
| 24 | + var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他']; | |
| 25 | + var inOutExps = ['故障', '肇事', '纠纷', '其他']; | |
| 26 | + | |
| 24 | 27 | var groupBy = function (list, field) { |
| 25 | 28 | var rs = {}, |
| 26 | 29 | key; |
| ... | ... | @@ -324,6 +327,17 @@ var gb_common = (function () { |
| 324 | 327 | return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e; |
| 325 | 328 | }; |
| 326 | 329 | |
| 330 | + function accDiv(arg1,arg2){ | |
| 331 | + var t1=0,t2=0,r1,r2; | |
| 332 | + try{t1=arg1.toString().split(".")[1].length}catch(e){} | |
| 333 | + try{t2=arg2.toString().split(".")[1].length}catch(e){} | |
| 334 | + with(Math){ | |
| 335 | + r1=Number(arg1.toString().replace(".","")) | |
| 336 | + r2=Number(arg2.toString().replace(".","")) | |
| 337 | + return (r1/r2)*pow(10,t2-t1); | |
| 338 | + } | |
| 339 | + } | |
| 340 | + | |
| 327 | 341 | function mul(a, b) { |
| 328 | 342 | var c = 0, |
| 329 | 343 | d = a.toString(), |
| ... | ... | @@ -372,6 +386,26 @@ var gb_common = (function () { |
| 372 | 386 | return rs; |
| 373 | 387 | }; |
| 374 | 388 | |
| 389 | + var next_elem = function (clazz, e) { | |
| 390 | + var ne = e.next(); | |
| 391 | + if(ne.length==0) | |
| 392 | + return []; | |
| 393 | + else if(ne.hasClass(clazz)) | |
| 394 | + return ne; | |
| 395 | + else | |
| 396 | + return next_elem(clazz, ne); | |
| 397 | + }; | |
| 398 | + | |
| 399 | + var getDisabledVal = function (f) { | |
| 400 | + var rs = {}; | |
| 401 | + $('input,select', f).each(function () { | |
| 402 | + if($(this).attr('disabled')){ | |
| 403 | + rs[$(this).attr('name')]=$(this).val(); | |
| 404 | + } | |
| 405 | + }); | |
| 406 | + return rs; | |
| 407 | + }; | |
| 408 | + | |
| 375 | 409 | return { |
| 376 | 410 | reqCode80: reqCode80, |
| 377 | 411 | groupBy: groupBy, |
| ... | ... | @@ -395,7 +429,13 @@ var gb_common = (function () { |
| 395 | 429 | trim: trim, |
| 396 | 430 | remarksAutocomplete: remarksAutocomplete, |
| 397 | 431 | flatpickrDateTimeConfig: flatpickrDateTimeConfig, |
| 398 | - inverse: inverse | |
| 432 | + inverse: inverse, | |
| 433 | + accDiv: accDiv, | |
| 434 | + mul: mul, | |
| 435 | + adjustExps: adjustExps, | |
| 436 | + inOutExps: inOutExps, | |
| 437 | + next_elem: next_elem, | |
| 438 | + getDisabledVal: getDisabledVal | |
| 399 | 439 | |
| 400 | 440 | //whichTransitionEvent:whichTransitionEvent |
| 401 | 441 | }; | ... | ... |
src/main/resources/static/real_control_v2/js/data/data_basic.js
| ... | ... | @@ -75,6 +75,9 @@ var gb_data_basic = (function () { |
| 75 | 75 | var carparks = {}; |
| 76 | 76 | //停车场数据 |
| 77 | 77 | gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) { |
| 78 | + rs.list.sort(function (a, b) { | |
| 79 | + return a.parkName.localeCompare(b.parkName); | |
| 80 | + }); | |
| 78 | 81 | $.each(rs.list, function () { |
| 79 | 82 | carparks[this.parkCode] = this; |
| 80 | 83 | }); |
| ... | ... | @@ -116,6 +119,15 @@ var gb_data_basic = (function () { |
| 116 | 119 | ep.emit('svg_attrs', data); |
| 117 | 120 | }); |
| 118 | 121 | |
| 122 | + //站点和停车场历时、公里对照数据 | |
| 123 | + var stat_park_data; | |
| 124 | + var load_stat_park_data = function () { | |
| 125 | + $.get('/basic/station2ParkData?t='+Math.random(), {idx: line_idx}, function (rs) { | |
| 126 | + stat_park_data = rs; | |
| 127 | + }); | |
| 128 | + } | |
| 129 | + load_stat_park_data(); | |
| 130 | + | |
| 119 | 131 | function findLineByCodes(codeArr) { |
| 120 | 132 | var rs = []; |
| 121 | 133 | $.each(codeArr, function () { |
| ... | ... | @@ -239,6 +251,12 @@ var gb_data_basic = (function () { |
| 239 | 251 | }, |
| 240 | 252 | remarksMapps: function () { |
| 241 | 253 | return remarksMapps; |
| 254 | + }, | |
| 255 | + get_stat_park_data: function () { | |
| 256 | + return stat_park_data; | |
| 257 | + }, | |
| 258 | + reload_stat_park_data: function () { | |
| 259 | + load_stat_park_data(); | |
| 242 | 260 | } |
| 243 | 261 | }; |
| 244 | 262 | })(); | ... | ... |
src/main/resources/static/real_control_v2/js/forms/form_embed.js
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
| ... | ... | @@ -7,7 +7,23 @@ var gb_schedule_context_menu = (function () { |
| 7 | 7 | bgclose: false |
| 8 | 8 | }, |
| 9 | 9 | folder = '/real_control_v2/fragments/line_schedule/context_menu'; |
| 10 | + | |
| 11 | + //提前缓存子任务的片段页面 | |
| 12 | + var st_doms={}; | |
| 13 | + $.get(folder + '/sub_task_v2/add_custom.html', function (dom) { | |
| 14 | + st_doms.custom_dom=dom; | |
| 15 | + }); | |
| 16 | + $.get(folder + '/sub_task_v2/add_in_out.html', function (dom) { | |
| 17 | + st_doms.inout_dom=dom; | |
| 18 | + }); | |
| 19 | + $.get(folder + '/sub_task_v2/add_range_turn.html', function (dom) { | |
| 20 | + st_doms.range_dom=dom; | |
| 21 | + }); | |
| 22 | + | |
| 10 | 23 | var callbackHandler = { |
| 24 | + get_st_doms: function () { | |
| 25 | + return st_doms; | |
| 26 | + }, | |
| 11 | 27 | dftz: function (sch) { |
| 12 | 28 | open_modal(folder + '/dftz.html', { |
| 13 | 29 | sch: sch |
| ... | ... | @@ -234,6 +250,11 @@ var gb_schedule_context_menu = (function () { |
| 234 | 250 | open_modal(folder + '/add_temp_sch.html', { |
| 235 | 251 | sch: sch |
| 236 | 252 | }, modal_opts); |
| 253 | + }, | |
| 254 | + add_sub_task: function (sch) { | |
| 255 | + open_modal(folder + '/sub_task_v2/main.html', { | |
| 256 | + sch: sch | |
| 257 | + }, modal_opts); | |
| 237 | 258 | } |
| 238 | 259 | }; |
| 239 | 260 | |
| ... | ... | @@ -274,7 +295,7 @@ var gb_schedule_context_menu = (function () { |
| 274 | 295 | }, |
| 275 | 296 | 'lj_zrw': { |
| 276 | 297 | name: '临加/子任务' |
| 277 | - }, | |
| 298 | + }/*, | |
| 278 | 299 | 'shortcut': { |
| 279 | 300 | name: '...', |
| 280 | 301 | items: { |
| ... | ... | @@ -294,6 +315,13 @@ var gb_schedule_context_menu = (function () { |
| 294 | 315 | name: '(子任务)区间调头' |
| 295 | 316 | } |
| 296 | 317 | } |
| 318 | + }*/, | |
| 319 | + 'sep3': '---------', | |
| 320 | + 'add_temp_sch': { | |
| 321 | + name: '添加临加班次' | |
| 322 | + }, | |
| 323 | + 'add_sub_task': { | |
| 324 | + name: '添加子任务' | |
| 297 | 325 | }, |
| 298 | 326 | 'sep4': '---------', |
| 299 | 327 | 'tzrc': { |
| ... | ... | @@ -305,7 +333,7 @@ var gb_schedule_context_menu = (function () { |
| 305 | 333 | 'wdtz': { |
| 306 | 334 | name: '误点调整' |
| 307 | 335 | }, |
| 308 | - 'sep3': '---------', | |
| 336 | + 'sep4': '---------', | |
| 309 | 337 | 'lp_change': { |
| 310 | 338 | name: '路牌对调' |
| 311 | 339 | } | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| ... | ... | @@ -557,6 +557,20 @@ var gb_schedule_table = (function () { |
| 557 | 557 | } |
| 558 | 558 | }; |
| 559 | 559 | |
| 560 | + /* 下一个班次普通班次 */ | |
| 561 | + var getNextNormalSch = function (sch) { | |
| 562 | + | |
| 563 | + var array = gb_common.get_vals(line2Schedule[sch.xlBm]).filter(function (a) { | |
| 564 | + return a.clZbh == sch.clZbh && a.bcType=='normal'; | |
| 565 | + }).sort(schedule_sort); | |
| 566 | + | |
| 567 | + for (var i = 0; i < array.length; i++) { | |
| 568 | + if (array[i].id == sch.id) { | |
| 569 | + return i < array.length ? array[i + 1] : null; | |
| 570 | + } | |
| 571 | + } | |
| 572 | + }; | |
| 573 | + | |
| 560 | 574 | /** 添加备注信息 */ |
| 561 | 575 | var addRemarks = function (list, remarks) { |
| 562 | 576 | //if(!list || list) |
| ... | ... | @@ -630,6 +644,7 @@ var gb_schedule_table = (function () { |
| 630 | 644 | reLoadAndRefresh: reLoadAndRefresh, |
| 631 | 645 | showLateBadge: showLateBadge, |
| 632 | 646 | cancelLateBadge: cancelLateBadge, |
| 633 | - refreshAll: refreshAll | |
| 647 | + refreshAll: refreshAll, | |
| 648 | + getNextNormalSch: getNextNormalSch | |
| 634 | 649 | }; |
| 635 | 650 | })(); | ... | ... |
src/main/resources/static/real_control_v2/js/main.js
| ... | ... | @@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) { |
| 169 | 169 | function showUpdateDescription() { |
| 170 | 170 | //更新说明 |
| 171 | 171 | var updateDescription = { |
| 172 | - date: '2017-06-22', | |
| 173 | - text: '<h5>优化了轨迹回放,可放大缩小窗口、可拖动进度条、手动呼出线路配车...</h5>' | |
| 172 | + date: '2017-07-05', | |
| 173 | + text: '<h5>稍微调整了添加子任务的界面</h5><h5>1、现在进出场子任务也必须选择进场原因</h5><h5>2、现在进出场子任务可以勾选 “无售票员” 如果是无人售票线路,请忽略这个选项</h5><h5>3、现在做中途进场子任务时,可以勾选“换车出场至中途站继续营运”</h5>' | |
| 174 | 174 | }; |
| 175 | 175 | |
| 176 | 176 | var storage = window.localStorage | ... | ... |
src/main/resources/static/real_control_v2/sch_manage/sch_imitate.html
| ... | ... | @@ -379,15 +379,33 @@ |
| 379 | 379 | } |
| 380 | 380 | alt_confirm('确定班次信息? ' + sch.xlName + '、起点 ' + sch.qdzName + ' , 终点 ' + sch.zdzName + ' 、待发 ' + sch.dfsj, function () { |
| 381 | 381 | $('.shade-loading').show(); |
| 382 | - gb_common.$post('/gps/gpsCompletion', {schId: schId}, function (rs) { | |
| 382 | + gb_common.$post('/gps/gpsCompletion', {schId: schId, type: 0}, function (rs) { | |
| 383 | 383 | $('.shade-loading').hide(); |
| 384 | 384 | $('.search-form').trigger('submit'); |
| 385 | 385 | }); |
| 386 | 386 | }, '我确定是这个班次'); |
| 387 | 387 | }; |
| 388 | 388 | |
| 389 | + var gps_imitate_after = function (schId) { | |
| 390 | + var sch = schArray[schId]; | |
| 391 | + if(sch.reissue){ | |
| 392 | + UIkit.notify("<i class='uk-icon-times'></i> 你不能对一个班次重复操作!", { | |
| 393 | + status: 'danger' | |
| 394 | + }); | |
| 395 | + return; | |
| 396 | + } | |
| 397 | + alt_confirm('确定补传班次信息? ' + sch.xlName + '、起点 ' + sch.qdzName + ' , 终点 ' + sch.zdzName + ' 、待发 ' + sch.dfsj, function () { | |
| 398 | + $('.shade-loading').show(); | |
| 399 | + gb_common.$post('/gps/gpsCompletion', {schId: schId, type: 1}, function (rs) { | |
| 400 | + $('.shade-loading').hide(); | |
| 401 | + $('.search-form').trigger('submit'); | |
| 402 | + }); | |
| 403 | + }, '我确定补传这个班次'); | |
| 404 | + } | |
| 405 | + | |
| 389 | 406 | var callbackHandler = { |
| 390 | - gps_imitate: gps_imitate | |
| 407 | + gps_imitate: gps_imitate, | |
| 408 | + gps_imitate_after: gps_imitate_after | |
| 391 | 409 | } |
| 392 | 410 | |
| 393 | 411 | $.contextMenu({ |
| ... | ... | @@ -399,7 +417,11 @@ |
| 399 | 417 | }, |
| 400 | 418 | items: { |
| 401 | 419 | 'gps_imitate': { |
| 402 | - name: '模拟轨迹' | |
| 420 | + name: '模拟轨迹(事前)' | |
| 421 | + | |
| 422 | + }, | |
| 423 | + 'gps_imitate_after':{ | |
| 424 | + name: '模拟轨迹(事后补传)' | |
| 403 | 425 | } |
| 404 | 426 | } |
| 405 | 427 | }); | ... | ... |