Commit 2143ef3a4808b660324817e0ec2959039f765e8d
Merge branch 'pudong' of http://222.66.0.204:8090/panzhaov5/bsth_control into pudong
Showing
18 changed files
with
2002 additions
and
1156 deletions
Too many changes to show.
To preserve performance only 18 of 23 files are displayed.
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| @@ -483,6 +483,11 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, | @@ -483,6 +483,11 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, | ||
| 483 | public Map<String, Object> MapById(@RequestParam("id") Long id){ | 483 | public Map<String, Object> MapById(@RequestParam("id") Long id){ |
| 484 | return scheduleRealInfoService.MapById(id); | 484 | return scheduleRealInfoService.MapById(id); |
| 485 | } | 485 | } |
| 486 | + | ||
| 487 | + @RequestMapping(value="/MapByIdQp",method = RequestMethod.GET) | ||
| 488 | + public Map<String, Object> MapByIdQp(@RequestParam("id") Long id){ | ||
| 489 | + return scheduleRealInfoService.MapByIdQp(id); | ||
| 490 | + } | ||
| 486 | 491 | ||
| 487 | /** | 492 | /** |
| 488 | * @Title: scheduleDaily | 493 | * @Title: scheduleDaily |
src/main/java/com/bsth/controller/schedule/core/TTInfoDetailController.java
| @@ -5,9 +5,13 @@ import com.bsth.controller.schedule.BController; | @@ -5,9 +5,13 @@ import com.bsth.controller.schedule.BController; | ||
| 5 | import com.bsth.entity.schedule.TTInfoDetail; | 5 | import com.bsth.entity.schedule.TTInfoDetail; |
| 6 | import com.bsth.service.schedule.TTInfoDetailService; | 6 | import com.bsth.service.schedule.TTInfoDetailService; |
| 7 | import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | 7 | import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; |
| 8 | +import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData; | ||
| 9 | +import com.bsth.service.schedule.utils.DataToolsFile; | ||
| 8 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| 9 | import org.springframework.web.bind.annotation.*; | 11 | import org.springframework.web.bind.annotation.*; |
| 10 | 12 | ||
| 13 | +import javax.servlet.http.HttpServletResponse; | ||
| 14 | +import java.io.*; | ||
| 11 | import java.util.HashMap; | 15 | import java.util.HashMap; |
| 12 | import java.util.List; | 16 | import java.util.List; |
| 13 | import java.util.Map; | 17 | import java.util.Map; |
| @@ -120,4 +124,32 @@ public class TTInfoDetailController extends BController<TTInfoDetail, Long> { | @@ -120,4 +124,32 @@ public class TTInfoDetailController extends BController<TTInfoDetail, Long> { | ||
| 120 | public Map<String, Object> skbDetailMxSave(@RequestParam Map<String, Object> entities){ | 124 | public Map<String, Object> skbDetailMxSave(@RequestParam Map<String, Object> entities){ |
| 121 | return ttInfoDetailService.skbDetailMxSave(entities); | 125 | return ttInfoDetailService.skbDetailMxSave(entities); |
| 122 | } | 126 | } |
| 127 | + | ||
| 128 | + | ||
| 129 | + @RequestMapping(value = "/exportDTDFile", method = RequestMethod.POST) | ||
| 130 | + public void exportFile( | ||
| 131 | + @RequestBody TTinfoDetailDynamicData.DTInfos dtInfos, | ||
| 132 | + HttpServletResponse response) throws Exception { | ||
| 133 | + DataToolsFile dataToolsFile = ttInfoDetailService.exportDynamicTTinfo(dtInfos); | ||
| 134 | + // 流输出导出文件 | ||
| 135 | + response.setHeader("content-type", "application/octet-stream"); | ||
| 136 | + response.setHeader("Content-Disposition", "attachment; filename=" + dataToolsFile.getFile().getName()); | ||
| 137 | + response.setContentType("application/octet-stream"); | ||
| 138 | + | ||
| 139 | + OutputStream os = response.getOutputStream(); | ||
| 140 | + BufferedOutputStream bos = new BufferedOutputStream(os); | ||
| 141 | + | ||
| 142 | + InputStream is = new FileInputStream(dataToolsFile.getFile()); | ||
| 143 | + BufferedInputStream bis = new BufferedInputStream(is); | ||
| 144 | + | ||
| 145 | + int length = 0; | ||
| 146 | + byte[] temp = new byte[1 * 1024 * 10]; | ||
| 147 | + while ((length = bis.read(temp)) != -1) { | ||
| 148 | + bos.write(temp, 0, length); | ||
| 149 | + } | ||
| 150 | + bos.flush(); | ||
| 151 | + bis.close(); | ||
| 152 | + bos.close(); | ||
| 153 | + is.close(); | ||
| 154 | + } | ||
| 123 | } | 155 | } |
src/main/java/com/bsth/data/gpsdata_v2/handlers/overspeed/GpsOverspeed.java
| 1 | -package com.bsth.data.gpsdata_v2.handlers.overspeed; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * gps 超速信息 | ||
| 5 | - * Created by panzhao on 2018/1/9. | ||
| 6 | - */ | ||
| 7 | -public class GpsOverspeed { | ||
| 8 | - | ||
| 9 | - private String device; | ||
| 10 | - | ||
| 11 | - private String nbbm; | ||
| 12 | - | ||
| 13 | - private String lineCode; | ||
| 14 | - | ||
| 15 | - /** | ||
| 16 | - * 开始超速时间 HH:mm | ||
| 17 | - */ | ||
| 18 | - private String sts; | ||
| 19 | - | ||
| 20 | - private long st; | ||
| 21 | - | ||
| 22 | - /** | ||
| 23 | - * 结束超速时间 HH:mm | ||
| 24 | - */ | ||
| 25 | - private String ets; | ||
| 26 | - | ||
| 27 | - /** | ||
| 28 | - * 最新速度值 | ||
| 29 | - */ | ||
| 30 | - private float speed; | ||
| 31 | - | ||
| 32 | - /** | ||
| 33 | - * 0:结束超速, 1:离线 | ||
| 34 | - */ | ||
| 35 | - private int eType; | ||
| 36 | - | ||
| 37 | - public String getDevice() { | ||
| 38 | - return device; | ||
| 39 | - } | ||
| 40 | - | ||
| 41 | - public void setDevice(String device) { | ||
| 42 | - this.device = device; | ||
| 43 | - } | ||
| 44 | - | ||
| 45 | - public String getNbbm() { | ||
| 46 | - return nbbm; | ||
| 47 | - } | ||
| 48 | - | ||
| 49 | - public void setNbbm(String nbbm) { | ||
| 50 | - this.nbbm = nbbm; | ||
| 51 | - } | ||
| 52 | - | ||
| 53 | - public String getLineCode() { | ||
| 54 | - return lineCode; | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | - public void setLineCode(String lineCode) { | ||
| 58 | - this.lineCode = lineCode; | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - public String getSts() { | ||
| 62 | - return sts; | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - public void setSts(String sts) { | ||
| 66 | - this.sts = sts; | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - public long getSt() { | ||
| 70 | - return st; | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | - public void setSt(long st) { | ||
| 74 | - this.st = st; | ||
| 75 | - } | ||
| 76 | - | ||
| 77 | - public String getEts() { | ||
| 78 | - return ets; | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - public void setEts(String ets) { | ||
| 82 | - this.ets = ets; | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - public float getSpeed() { | ||
| 86 | - return speed; | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - public void setSpeed(float speed) { | ||
| 90 | - this.speed = speed; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - public int geteType() { | ||
| 94 | - return eType; | ||
| 95 | - } | ||
| 96 | - | ||
| 97 | - public void seteType(int eType) { | ||
| 98 | - this.eType = eType; | ||
| 99 | - } | ||
| 100 | -} | 1 | +package com.bsth.data.gpsdata_v2.handlers.overspeed; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * gps 超速信息 | ||
| 5 | + * Created by panzhao on 2018/1/9. | ||
| 6 | + */ | ||
| 7 | +public class GpsOverspeed { | ||
| 8 | + | ||
| 9 | + private String device; | ||
| 10 | + | ||
| 11 | + private String nbbm; | ||
| 12 | + | ||
| 13 | + private String lineCode; | ||
| 14 | + | ||
| 15 | + /** | ||
| 16 | + * 开始超速时间 HH:mm | ||
| 17 | + */ | ||
| 18 | + private String sts; | ||
| 19 | + | ||
| 20 | + private long st; | ||
| 21 | + | ||
| 22 | + /** | ||
| 23 | + * 结束超速时间 HH:mm | ||
| 24 | + */ | ||
| 25 | + private String ets; | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * 最新速度值 | ||
| 29 | + */ | ||
| 30 | + private float speed; | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 0:结束超速, 1:离线 | ||
| 34 | + */ | ||
| 35 | + private int eType; | ||
| 36 | + | ||
| 37 | + public String getDevice() { | ||
| 38 | + return device; | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + public void setDevice(String device) { | ||
| 42 | + this.device = device; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + public String getNbbm() { | ||
| 46 | + return nbbm; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + public void setNbbm(String nbbm) { | ||
| 50 | + this.nbbm = nbbm; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + public String getLineCode() { | ||
| 54 | + return lineCode; | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public void setLineCode(String lineCode) { | ||
| 58 | + this.lineCode = lineCode; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public String getSts() { | ||
| 62 | + return sts; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + public void setSts(String sts) { | ||
| 66 | + this.sts = sts; | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + public long getSt() { | ||
| 70 | + return st; | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + public void setSt(long st) { | ||
| 74 | + this.st = st; | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + public String getEts() { | ||
| 78 | + return ets; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + public void setEts(String ets) { | ||
| 82 | + this.ets = ets; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + public float getSpeed() { | ||
| 86 | + return speed; | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + public void setSpeed(float speed) { | ||
| 90 | + this.speed = speed; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + public int geteType() { | ||
| 94 | + return eType; | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + public void seteType(int eType) { | ||
| 98 | + this.eType = eType; | ||
| 99 | + } | ||
| 100 | +} |
src/main/java/com/bsth/data/gpsdata_v2/handlers/overspeed/OverspeedProcess.java
| 1 | -package com.bsth.data.gpsdata_v2.handlers.overspeed; | ||
| 2 | - | ||
| 3 | -import com.bsth.data.gpsdata_v2.cache.GeoCacheData; | ||
| 4 | -import com.bsth.data.gpsdata_v2.entity.GpsEntity; | ||
| 5 | -import com.google.common.collect.ArrayListMultimap; | ||
| 6 | -import org.joda.time.format.DateTimeFormat; | ||
| 7 | -import org.joda.time.format.DateTimeFormatter; | ||
| 8 | -import org.slf4j.Logger; | ||
| 9 | -import org.slf4j.LoggerFactory; | ||
| 10 | -import org.springframework.stereotype.Component; | ||
| 11 | - | ||
| 12 | -import java.util.*; | ||
| 13 | - | ||
| 14 | -/** | ||
| 15 | - * 超速处理 | ||
| 16 | - * Created by panzhao on 2018/1/9. | ||
| 17 | - */ | ||
| 18 | -@Component | ||
| 19 | -public class OverspeedProcess { | ||
| 20 | - | ||
| 21 | - | ||
| 22 | - private static final double DEFAULT_SPEED_LIMIT = 60; | ||
| 23 | - | ||
| 24 | - private static final double INVALID_SPEED_LIMIT = 110; | ||
| 25 | - | ||
| 26 | - private static final int CONT_SPEED_SIZE = 6; | ||
| 27 | - | ||
| 28 | - private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); | ||
| 29 | - | ||
| 30 | - private static GpsOverspeedComp comp = new GpsOverspeedComp(); | ||
| 31 | - /** | ||
| 32 | - * 按线路分组的超速信息 | ||
| 33 | - */ | ||
| 34 | - private static ArrayListMultimap<String, GpsOverspeed> multimap; | ||
| 35 | - | ||
| 36 | - /** | ||
| 37 | - * 设备号 --> 当前超速 | ||
| 38 | - */ | ||
| 39 | - private static Map<String, GpsOverspeed> realOverspeedMap; | ||
| 40 | - | ||
| 41 | - /** | ||
| 42 | - * 设备号 --> 连续超速次数 | ||
| 43 | - */ | ||
| 44 | - private static Map<String, Integer> contSpeedMap; | ||
| 45 | - | ||
| 46 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 47 | - | ||
| 48 | - static{ | ||
| 49 | - multimap = ArrayListMultimap.create(); | ||
| 50 | - contSpeedMap = new HashMap(); | ||
| 51 | - realOverspeedMap = new HashMap(); | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - public static void clear(){ | ||
| 55 | - multimap = null; | ||
| 56 | - multimap = ArrayListMultimap.create(); | ||
| 57 | - | ||
| 58 | - contSpeedMap = null; | ||
| 59 | - contSpeedMap = new HashMap(); | ||
| 60 | - | ||
| 61 | - realOverspeedMap = null; | ||
| 62 | - realOverspeedMap = new HashMap(); | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - public boolean process(GpsEntity gps){ | ||
| 66 | - if(gps.getSpeed() >= INVALID_SPEED_LIMIT){ | ||
| 67 | - return false;//无效的速度 | ||
| 68 | - } | ||
| 69 | - | ||
| 70 | - Double maxSpeed = GeoCacheData.speedLimit(gps.getLineId()); | ||
| 71 | - if(null == maxSpeed) | ||
| 72 | - maxSpeed = DEFAULT_SPEED_LIMIT; | ||
| 73 | - | ||
| 74 | - if(gps.getSpeed() > maxSpeed){ | ||
| 75 | - overspeed(gps, maxSpeed); | ||
| 76 | - } | ||
| 77 | - else if(realOverspeedMap.containsKey(gps.getDeviceId())){ | ||
| 78 | - String device = gps.getDeviceId(); | ||
| 79 | - //结束超速 | ||
| 80 | - GpsOverspeed sp = realOverspeedMap.get(device); | ||
| 81 | - sp.setEts(fmtHHmm.print(gps.getTimestamp())); | ||
| 82 | - | ||
| 83 | - realOverspeedMap.remove(device); | ||
| 84 | - contSpeedMap.put(device, 0); | ||
| 85 | - } | ||
| 86 | - return false; | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - private void overspeed(GpsEntity gps, Double maxSpeed) { | ||
| 90 | - String device = gps.getDeviceId(); | ||
| 91 | - Integer cont = contSpeedMap.get(device); | ||
| 92 | - | ||
| 93 | - if(null == cont) | ||
| 94 | - cont = 1; | ||
| 95 | - | ||
| 96 | - cont++; | ||
| 97 | - | ||
| 98 | - if(gps.getSpeed() - maxSpeed > (maxSpeed * 0.1)) | ||
| 99 | - cont++; | ||
| 100 | - | ||
| 101 | - if(cont >= CONT_SPEED_SIZE){ | ||
| 102 | - if(realOverspeedMap.containsKey(device)){ | ||
| 103 | - //正在超速,更新速度 | ||
| 104 | - realOverspeedMap.get(device).setSpeed(gps.getSpeed()); | ||
| 105 | - } | ||
| 106 | - else{ | ||
| 107 | - logger.info("开始超速..." + gps.getNbbm()); | ||
| 108 | - GpsOverspeed sp = new GpsOverspeed(); | ||
| 109 | - sp.setLineCode(gps.getLineId()); | ||
| 110 | - sp.setDevice(device); | ||
| 111 | - sp.setSpeed(gps.getSpeed()); | ||
| 112 | - sp.setNbbm(gps.getNbbm()); | ||
| 113 | - sp.setSts(fmtHHmm.print(gps.getTimestamp())); | ||
| 114 | - sp.setSt(gps.getTimestamp()); | ||
| 115 | - | ||
| 116 | - realOverspeedMap.put(device, sp); | ||
| 117 | - multimap.put(sp.getLineCode(), sp); | ||
| 118 | - } | ||
| 119 | - //标记gps超速 | ||
| 120 | - gps.setAbnormalStatus("overspeed"); | ||
| 121 | - } | ||
| 122 | - | ||
| 123 | - contSpeedMap.put(device, cont); | ||
| 124 | - } | ||
| 125 | - | ||
| 126 | - /** | ||
| 127 | - * 设备掉线 | ||
| 128 | - * @param device | ||
| 129 | - */ | ||
| 130 | - public void offline(String device){ | ||
| 131 | - if(realOverspeedMap.containsKey(device)){ | ||
| 132 | - //结束超速 | ||
| 133 | - GpsOverspeed sp = realOverspeedMap.get(device); | ||
| 134 | - sp.setEts(fmtHHmm.print(System.currentTimeMillis())); | ||
| 135 | - sp.seteType(1); | ||
| 136 | - | ||
| 137 | - realOverspeedMap.remove(device); | ||
| 138 | - contSpeedMap.put(device, 0); | ||
| 139 | - } | ||
| 140 | - } | ||
| 141 | - | ||
| 142 | - | ||
| 143 | - public List<GpsOverspeed> findByLines(List<String> lineArray){ | ||
| 144 | - List<GpsOverspeed> rs = new ArrayList<>(); | ||
| 145 | - | ||
| 146 | - for(String code : lineArray){ | ||
| 147 | - rs.addAll(multimap.get(code)); | ||
| 148 | - } | ||
| 149 | - | ||
| 150 | - //按发送时间排序 | ||
| 151 | - Collections.sort(rs, comp); | ||
| 152 | - if(rs.size() > 50) | ||
| 153 | - rs = rs.subList(0, 50); | ||
| 154 | - | ||
| 155 | - return rs; | ||
| 156 | - } | ||
| 157 | - | ||
| 158 | - | ||
| 159 | - public static class GpsOverspeedComp implements Comparator<GpsOverspeed>{ | ||
| 160 | - | ||
| 161 | - @Override | ||
| 162 | - public int compare(GpsOverspeed o1, GpsOverspeed o2) { | ||
| 163 | - return (int) (o2.getSt() - o1.getSt()); | ||
| 164 | - } | ||
| 165 | - } | ||
| 166 | -} | 1 | +package com.bsth.data.gpsdata_v2.handlers.overspeed; |
| 2 | + | ||
| 3 | +import com.bsth.data.gpsdata_v2.cache.GeoCacheData; | ||
| 4 | +import com.bsth.data.gpsdata_v2.entity.GpsEntity; | ||
| 5 | +import com.google.common.collect.ArrayListMultimap; | ||
| 6 | +import org.joda.time.format.DateTimeFormat; | ||
| 7 | +import org.joda.time.format.DateTimeFormatter; | ||
| 8 | +import org.slf4j.Logger; | ||
| 9 | +import org.slf4j.LoggerFactory; | ||
| 10 | +import org.springframework.stereotype.Component; | ||
| 11 | + | ||
| 12 | +import java.util.*; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 超速处理 | ||
| 16 | + * Created by panzhao on 2018/1/9. | ||
| 17 | + */ | ||
| 18 | +@Component | ||
| 19 | +public class OverspeedProcess { | ||
| 20 | + | ||
| 21 | + | ||
| 22 | + private static final double DEFAULT_SPEED_LIMIT = 60; | ||
| 23 | + | ||
| 24 | + private static final double INVALID_SPEED_LIMIT = 110; | ||
| 25 | + | ||
| 26 | + private static final int CONT_SPEED_SIZE = 6; | ||
| 27 | + | ||
| 28 | + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); | ||
| 29 | + | ||
| 30 | + private static GpsOverspeedComp comp = new GpsOverspeedComp(); | ||
| 31 | + /** | ||
| 32 | + * 按线路分组的超速信息 | ||
| 33 | + */ | ||
| 34 | + private static ArrayListMultimap<String, GpsOverspeed> multimap; | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * 设备号 --> 当前超速 | ||
| 38 | + */ | ||
| 39 | + private static Map<String, GpsOverspeed> realOverspeedMap; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 设备号 --> 连续超速次数 | ||
| 43 | + */ | ||
| 44 | + private static Map<String, Integer> contSpeedMap; | ||
| 45 | + | ||
| 46 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 47 | + | ||
| 48 | + static{ | ||
| 49 | + multimap = ArrayListMultimap.create(); | ||
| 50 | + contSpeedMap = new HashMap(); | ||
| 51 | + realOverspeedMap = new HashMap(); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public static void clear(){ | ||
| 55 | + multimap = null; | ||
| 56 | + multimap = ArrayListMultimap.create(); | ||
| 57 | + | ||
| 58 | + contSpeedMap = null; | ||
| 59 | + contSpeedMap = new HashMap(); | ||
| 60 | + | ||
| 61 | + realOverspeedMap = null; | ||
| 62 | + realOverspeedMap = new HashMap(); | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + public boolean process(GpsEntity gps){ | ||
| 66 | + if(gps.getSpeed() >= INVALID_SPEED_LIMIT){ | ||
| 67 | + return false;//无效的速度 | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + Double maxSpeed = GeoCacheData.speedLimit(gps.getLineId()); | ||
| 71 | + if(null == maxSpeed) | ||
| 72 | + maxSpeed = DEFAULT_SPEED_LIMIT; | ||
| 73 | + | ||
| 74 | + if(gps.getSpeed() > maxSpeed){ | ||
| 75 | + overspeed(gps, maxSpeed); | ||
| 76 | + } | ||
| 77 | + else if(realOverspeedMap.containsKey(gps.getDeviceId())){ | ||
| 78 | + String device = gps.getDeviceId(); | ||
| 79 | + //结束超速 | ||
| 80 | + GpsOverspeed sp = realOverspeedMap.get(device); | ||
| 81 | + sp.setEts(fmtHHmm.print(gps.getTimestamp())); | ||
| 82 | + | ||
| 83 | + realOverspeedMap.remove(device); | ||
| 84 | + contSpeedMap.put(device, 0); | ||
| 85 | + } | ||
| 86 | + return false; | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + private void overspeed(GpsEntity gps, Double maxSpeed) { | ||
| 90 | + String device = gps.getDeviceId(); | ||
| 91 | + Integer cont = contSpeedMap.get(device); | ||
| 92 | + | ||
| 93 | + if(null == cont) | ||
| 94 | + cont = 1; | ||
| 95 | + | ||
| 96 | + cont++; | ||
| 97 | + | ||
| 98 | + if(gps.getSpeed() - maxSpeed > (maxSpeed * 0.1)) | ||
| 99 | + cont++; | ||
| 100 | + | ||
| 101 | + if(cont >= CONT_SPEED_SIZE){ | ||
| 102 | + if(realOverspeedMap.containsKey(device)){ | ||
| 103 | + //正在超速,更新速度 | ||
| 104 | + realOverspeedMap.get(device).setSpeed(gps.getSpeed()); | ||
| 105 | + } | ||
| 106 | + else{ | ||
| 107 | + logger.info("开始超速..." + gps.getNbbm()); | ||
| 108 | + GpsOverspeed sp = new GpsOverspeed(); | ||
| 109 | + sp.setLineCode(gps.getLineId()); | ||
| 110 | + sp.setDevice(device); | ||
| 111 | + sp.setSpeed(gps.getSpeed()); | ||
| 112 | + sp.setNbbm(gps.getNbbm()); | ||
| 113 | + sp.setSts(fmtHHmm.print(gps.getTimestamp())); | ||
| 114 | + sp.setSt(gps.getTimestamp()); | ||
| 115 | + | ||
| 116 | + realOverspeedMap.put(device, sp); | ||
| 117 | + multimap.put(sp.getLineCode(), sp); | ||
| 118 | + } | ||
| 119 | + //标记gps超速 | ||
| 120 | + gps.setAbnormalStatus("overspeed"); | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + contSpeedMap.put(device, cont); | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + /** | ||
| 127 | + * 设备掉线 | ||
| 128 | + * @param device | ||
| 129 | + */ | ||
| 130 | + public void offline(String device){ | ||
| 131 | + if(realOverspeedMap.containsKey(device)){ | ||
| 132 | + //结束超速 | ||
| 133 | + GpsOverspeed sp = realOverspeedMap.get(device); | ||
| 134 | + sp.setEts(fmtHHmm.print(System.currentTimeMillis())); | ||
| 135 | + sp.seteType(1); | ||
| 136 | + | ||
| 137 | + realOverspeedMap.remove(device); | ||
| 138 | + contSpeedMap.put(device, 0); | ||
| 139 | + } | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + | ||
| 143 | + public List<GpsOverspeed> findByLines(List<String> lineArray){ | ||
| 144 | + List<GpsOverspeed> rs = new ArrayList<>(); | ||
| 145 | + | ||
| 146 | + for(String code : lineArray){ | ||
| 147 | + rs.addAll(multimap.get(code)); | ||
| 148 | + } | ||
| 149 | + | ||
| 150 | + //按发送时间排序 | ||
| 151 | + Collections.sort(rs, comp); | ||
| 152 | + if(rs.size() > 50) | ||
| 153 | + rs = rs.subList(0, 50); | ||
| 154 | + | ||
| 155 | + return rs; | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + | ||
| 159 | + public static class GpsOverspeedComp implements Comparator<GpsOverspeed>{ | ||
| 160 | + | ||
| 161 | + @Override | ||
| 162 | + public int compare(GpsOverspeed o1, GpsOverspeed o2) { | ||
| 163 | + return (int) (o2.getSt() - o1.getSt()); | ||
| 164 | + } | ||
| 165 | + } | ||
| 166 | +} |
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
| @@ -144,6 +144,8 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L | @@ -144,6 +144,8 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L | ||
| 144 | Map<String,Object> historySave(ScheduleRealInfo sch); | 144 | Map<String,Object> historySave(ScheduleRealInfo sch); |
| 145 | 145 | ||
| 146 | Map<String, Object> MapById(Long id) ; | 146 | Map<String, Object> MapById(Long id) ; |
| 147 | + Map<String, Object> MapByIdQp(Long id) ; | ||
| 148 | + | ||
| 147 | 149 | ||
| 148 | Map<String,Object> svgAttr(String jsonStr); | 150 | Map<String,Object> svgAttr(String jsonStr); |
| 149 | 151 |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| @@ -3732,22 +3732,23 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -3732,22 +3732,23 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 3732 | } | 3732 | } |
| 3733 | 3733 | ||
| 3734 | //计算里程和班次数,并放入Map里 | 3734 | //计算里程和班次数,并放入Map里 |
| 3735 | - map = new HashMap<String, Object>(); | 3735 | + map = findKMBCQp(clZbh, date, line); |
| 3736 | map.put("jzl", jzl); | 3736 | map.put("jzl", jzl); |
| 3737 | - map.put("jhlc", format.format(jhlc + jcclc)); | ||
| 3738 | - map.put("yygljh", format.format(jhlc)); | ||
| 3739 | - map.put("ssgl", format.format(remMileage)); | ||
| 3740 | - map.put("ksgl", format.format(ksgl)); | ||
| 3741 | - map.put("yyglsj", format.format(yygl)); | ||
| 3742 | - map.put("jhbc", jhbc); | ||
| 3743 | - map.put("jcclc", jcclc); | ||
| 3744 | - | ||
| 3745 | - map.put("ljgl", format.format(addMileage)); | ||
| 3746 | - map.put("ssbc", cjbc); | ||
| 3747 | - map.put("ysgl", format.format(yygl)); | ||
| 3748 | - map.put("sjbc", jhbc - cjbc + ljbc); | ||
| 3749 | - map.put("zgl", format.format(yygl + ksgl + jcclc)); | ||
| 3750 | - map.put("ljbc", ljbc); | 3737 | +// map.put("jhlc", format.format(jhlc + jcclc)); |
| 3738 | +// map.put("yygljh", format.format(jhlc)); | ||
| 3739 | +// map.put("ssgl", format.format(remMileage)); | ||
| 3740 | +// map.put("ksgl", format.format(ksgl)); | ||
| 3741 | +// map.put("yyglsj", format.format(yygl)); | ||
| 3742 | +// map.put("jhbc", jhbc); | ||
| 3743 | +// map.put("jcclc", jcclc); | ||
| 3744 | +// | ||
| 3745 | +// map.put("ljgl", format.format(addMileage)); | ||
| 3746 | +// map.put("ssbc", cjbc); | ||
| 3747 | +// map.put("ysgl", format.format(yygl)); | ||
| 3748 | +// map.put("sjbc", jhbc - cjbc + ljbc); | ||
| 3749 | +// map.put("zgl", format.format(yygl + ksgl + jcclc)); | ||
| 3750 | +// map.put("ljbc", ljbc); | ||
| 3751 | + | ||
| 3751 | String zdp = "", zwdp = "", wdp = ""; | 3752 | String zdp = "", zwdp = "", wdp = ""; |
| 3752 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); | 3753 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| 3753 | List<DutyEmployee> listDtuy = dutyEmployeeService.getDutyEmployee(line, date + "00:00", date + "23:59"); | 3754 | List<DutyEmployee> listDtuy = dutyEmployeeService.getDutyEmployee(line, date + "00:00", date + "23:59"); |
| @@ -4006,6 +4007,141 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -4006,6 +4007,141 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 4006 | map.put("dbdp", dbdp); | 4007 | map.put("dbdp", dbdp); |
| 4007 | return map; | 4008 | return map; |
| 4008 | } | 4009 | } |
| 4010 | + | ||
| 4011 | + @Override | ||
| 4012 | + public Map<String, Object> MapByIdQp(Long id) { | ||
| 4013 | + // TODO Auto-generated method stub | ||
| 4014 | + Map<String, Object> map = new HashMap<String, Object>(); | ||
| 4015 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); | ||
| 4016 | + ScheduleRealInfo s = scheduleRealInfoRepository.scheduleById(id); | ||
| 4017 | + String xlbm = s.getXlBm(); | ||
| 4018 | + String fcrq = s.getScheduleDateStr(); | ||
| 4019 | + | ||
| 4020 | + int type=0; | ||
| 4021 | + Double ccyl = 0.0; | ||
| 4022 | + Double jcyl = 0.0; | ||
| 4023 | + Double yh = 0.0; | ||
| 4024 | + Double jzl = 0.0; | ||
| 4025 | + Double zlc=0.0; | ||
| 4026 | +// List<Ylb> listYlb = ylbRepository.queryListYlb(fcrq, s.getClZbh(), s.getjGh(),xlbm); | ||
| 4027 | +// List<Dlb> listDlb = dlbRepository.queryListDlb(fcrq, s.getClZbh(), s.getjGh(),xlbm); | ||
| 4028 | +// if(listYlb.size()>0){ | ||
| 4029 | +// type=0; | ||
| 4030 | +// for (int i = 0; i < listYlb.size(); i++) { | ||
| 4031 | +// Ylb y = listYlb.get(i); | ||
| 4032 | +// if(y.getLp()==null){ | ||
| 4033 | +// ccyl=Arith.add(ccyl, y.getCzyl()); | ||
| 4034 | +// jcyl=Arith.add(jcyl, y.getJzyl()); | ||
| 4035 | +// yh =Arith.add(yh ,y.getYh()); | ||
| 4036 | +// jzl =Arith.add(jzl, y.getJzl()); | ||
| 4037 | +// zlc =Arith.add(zlc, y.getZlc()); | ||
| 4038 | +// }else{ | ||
| 4039 | +// if(y.getLp().equals(s.getLpName())){ | ||
| 4040 | +// ccyl=Arith.add(ccyl, y.getCzyl()); | ||
| 4041 | +// jcyl=Arith.add(jcyl, y.getJzyl()); | ||
| 4042 | +// yh =Arith.add(yh ,y.getYh()); | ||
| 4043 | +// jzl =Arith.add(jzl, y.getJzl()); | ||
| 4044 | +// zlc =Arith.add(zlc, y.getZlc()); | ||
| 4045 | +// } | ||
| 4046 | +// } | ||
| 4047 | +// | ||
| 4048 | +// } | ||
| 4049 | +// }else{ | ||
| 4050 | +// type=1; | ||
| 4051 | +// for (int i = 0; i < listDlb.size(); i++) { | ||
| 4052 | +// Dlb d=listDlb.get(i); | ||
| 4053 | +// if(d.getLp()==null){ | ||
| 4054 | +// ccyl=Arith.add(ccyl, d.getCzcd()); | ||
| 4055 | +// jcyl=Arith.add(jcyl, d.getJzcd()); | ||
| 4056 | +// yh =Arith.add(yh ,d.getHd()); | ||
| 4057 | +// jzl =Arith.add(jzl, d.getCdl()); | ||
| 4058 | +// zlc =Arith.add(zlc, d.getZlc()); | ||
| 4059 | +// }else{ | ||
| 4060 | +// if(d.getLp().equals(s.getLpName())){ | ||
| 4061 | +// ccyl=Arith.add(ccyl, d.getCzcd()); | ||
| 4062 | +// jcyl=Arith.add(jcyl, d.getJzcd()); | ||
| 4063 | +// yh =Arith.add(yh ,d.getHd()); | ||
| 4064 | +// jzl =Arith.add(jzl, d.getCdl()); | ||
| 4065 | +// zlc =Arith.add(zlc, d.getZlc()); | ||
| 4066 | +// } | ||
| 4067 | +// } | ||
| 4068 | +// | ||
| 4069 | +// } | ||
| 4070 | +// } | ||
| 4071 | + | ||
| 4072 | + List<Ylxxb> listylxxb=ylxxbRepository.queryListYlxxb(s.getClZbh(), fcrq); | ||
| 4073 | + for (int i = 0; i < listylxxb.size(); i++) { | ||
| 4074 | + Ylxxb t=listylxxb.get(i); | ||
| 4075 | + jzl =Arith.add(jzl, t.getJzl()); | ||
| 4076 | + } | ||
| 4077 | + map.put("jzl", jzl); | ||
| 4078 | + map.put("yh", yh); | ||
| 4079 | + map.put("ccyl", ccyl); | ||
| 4080 | + map.put("jcyl", jcyl); | ||
| 4081 | + map.put("type", type); | ||
| 4082 | + map.put("zlc", zlc); | ||
| 4083 | + map.put("xlName", s.getXlName()); | ||
| 4084 | + map.put("clZbh", s.getClZbh()); | ||
| 4085 | + map.put("plate", BasicData.nbbmCompanyPlateMap.get(s.getClZbh())); | ||
| 4086 | + map.put("fcsjActual", s.getFcsjActual()); | ||
| 4087 | + map.put("zdzName", s.getZdzName()); | ||
| 4088 | + map.put("scheduleDate", s.getScheduleDateStr()); | ||
| 4089 | + map.put("lpName", s.getLpName()); | ||
| 4090 | + String zdp = "", zwdp = "", wdp = ""; | ||
| 4091 | + String zdpT = "", zwdpT = "", wdpT = ""; | ||
| 4092 | + String dbdp=""; | ||
| 4093 | + List<DutyEmployee> list = dutyEmployeeService.getDutyEmployee(xlbm, fcrq + "00:01", fcrq + "23:59"); | ||
| 4094 | + try { | ||
| 4095 | + Long fcsj1 = sdf.parse(fcrq + " 00:01").getTime(); | ||
| 4096 | + Long fcsj2 = sdf.parse(fcrq + " 11:00").getTime(); | ||
| 4097 | + Long fcsj3 = sdf.parse(fcrq + " 23:59").getTime(); | ||
| 4098 | + for (int i = 0; i < list.size(); i++) { | ||
| 4099 | + DutyEmployee t = list.get(i); | ||
| 4100 | + if(dbdp.indexOf(t.getuName()) == -1){ | ||
| 4101 | + if(!(dbdp.length()>0)){ | ||
| 4102 | + dbdp =t.getuName(); | ||
| 4103 | + }else{ | ||
| 4104 | + dbdp +=","+t.getuName(); | ||
| 4105 | + } | ||
| 4106 | + } | ||
| 4107 | + Long ts = t.getTs(); | ||
| 4108 | + if (ts > fcsj1 && ts < fcsj2) { | ||
| 4109 | + if (zdp.indexOf(t.getuName()) == -1) { | ||
| 4110 | + if (!(zdp.length() > 0)) { | ||
| 4111 | + zdpT = t.getuName() + "..."; | ||
| 4112 | + } | ||
| 4113 | + zdp += t.getuName() + ","; | ||
| 4114 | + | ||
| 4115 | + } | ||
| 4116 | + } else if (ts > fcsj2 && ts < fcsj3) { | ||
| 4117 | + if (zwdp.indexOf(t.getuName()) == -1) { | ||
| 4118 | + if (!(zwdp.length() > 0)) { | ||
| 4119 | + zwdpT = t.getuName() + "..."; | ||
| 4120 | + } | ||
| 4121 | + zwdp += t.getuName() + ","; | ||
| 4122 | + } | ||
| 4123 | + } else { | ||
| 4124 | + if (wdp.indexOf(t.getuName()) == -1) { | ||
| 4125 | + if (!(wdp.length() > 0)) { | ||
| 4126 | + wdpT = t.getuName() + "..."; | ||
| 4127 | + } | ||
| 4128 | + wdp += t.getuName() + ","; | ||
| 4129 | + } | ||
| 4130 | + } | ||
| 4131 | + } | ||
| 4132 | + } catch (ParseException e) { | ||
| 4133 | + // TODO Auto-generated catch block | ||
| 4134 | + e.printStackTrace(); | ||
| 4135 | + } | ||
| 4136 | + map.put("zdp", zdp); | ||
| 4137 | + map.put("zwdp", zwdp); | ||
| 4138 | + map.put("wdp", wdp); | ||
| 4139 | + map.put("zdpT", zdpT); | ||
| 4140 | + map.put("zwdpT", zwdpT); | ||
| 4141 | + map.put("wdpT", wdpT); | ||
| 4142 | + map.put("dbdp", dbdp); | ||
| 4143 | + return map; | ||
| 4144 | + } | ||
| 4009 | 4145 | ||
| 4010 | @Override | 4146 | @Override |
| 4011 | public List<Map<String, Object>> scheduleDailyQp(String line, String date) { | 4147 | public List<Map<String, Object>> scheduleDailyQp(String line, String date) { |
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java
| @@ -2,7 +2,9 @@ package com.bsth.service.schedule; | @@ -2,7 +2,9 @@ package com.bsth.service.schedule; | ||
| 2 | 2 | ||
| 3 | import com.bsth.entity.schedule.TTInfoDetail; | 3 | import com.bsth.entity.schedule.TTInfoDetail; |
| 4 | import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | 4 | import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; |
| 5 | +import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData; | ||
| 5 | import com.bsth.service.schedule.exception.ScheduleException; | 6 | import com.bsth.service.schedule.exception.ScheduleException; |
| 7 | +import com.bsth.service.schedule.utils.DataToolsFile; | ||
| 6 | 8 | ||
| 7 | import java.util.List; | 9 | import java.util.List; |
| 8 | import java.util.Map; | 10 | import java.util.Map; |
| @@ -22,6 +24,14 @@ public interface TTInfoDetailService extends BService<TTInfoDetail, Long> { | @@ -22,6 +24,14 @@ public interface TTInfoDetailService extends BService<TTInfoDetail, Long> { | ||
| 22 | TTInfoDetailForEdit.EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException; | 24 | TTInfoDetailForEdit.EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException; |
| 23 | 25 | ||
| 24 | /** | 26 | /** |
| 27 | + * 导出动态时刻表。 | ||
| 28 | + * @param dtInfos | ||
| 29 | + * @return | ||
| 30 | + * @throws ScheduleException | ||
| 31 | + */ | ||
| 32 | + DataToolsFile exportDynamicTTinfo(TTinfoDetailDynamicData.DTInfos dtInfos) throws ScheduleException; | ||
| 33 | + | ||
| 34 | + /** | ||
| 25 | * 获取时刻表最大发车顺序号 | 35 | * 获取时刻表最大发车顺序号 |
| 26 | * @param xlid 线路id | 36 | * @param xlid 线路id |
| 27 | * @param ttinfoid 时刻表id | 37 | * @param ttinfoid 时刻表id |
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
| 1 | package com.bsth.service.schedule.datatools; | 1 | package com.bsth.service.schedule.datatools; |
| 2 | 2 | ||
| 3 | +import com.bsth.entity.Station; | ||
| 4 | +import com.bsth.service.StationService; | ||
| 3 | import com.bsth.service.schedule.exception.ScheduleException; | 5 | import com.bsth.service.schedule.exception.ScheduleException; |
| 4 | import com.bsth.service.schedule.utils.*; | 6 | import com.bsth.service.schedule.utils.*; |
| 5 | import jxl.Sheet; | 7 | import jxl.Sheet; |
| @@ -8,7 +10,13 @@ import jxl.write.Label; | @@ -8,7 +10,13 @@ import jxl.write.Label; | ||
| 8 | import jxl.write.WritableSheet; | 10 | import jxl.write.WritableSheet; |
| 9 | import jxl.write.WritableWorkbook; | 11 | import jxl.write.WritableWorkbook; |
| 10 | import org.apache.commons.lang3.StringUtils; | 12 | import org.apache.commons.lang3.StringUtils; |
| 13 | +import org.apache.poi.ss.usermodel.Cell; | ||
| 11 | import org.apache.poi.ss.usermodel.Row; | 14 | import org.apache.poi.ss.usermodel.Row; |
| 15 | +import org.apache.poi.ss.util.CellRangeAddress; | ||
| 16 | +import org.apache.poi.ss.util.WorkbookUtil; | ||
| 17 | +import org.apache.poi.xssf.usermodel.XSSFRow; | ||
| 18 | +import org.apache.poi.xssf.usermodel.XSSFSheet; | ||
| 19 | +import org.apache.poi.xssf.usermodel.XSSFWorkbook; | ||
| 12 | import org.joda.time.DateTime; | 20 | import org.joda.time.DateTime; |
| 13 | import org.slf4j.Logger; | 21 | import org.slf4j.Logger; |
| 14 | import org.slf4j.LoggerFactory; | 22 | import org.slf4j.LoggerFactory; |
| @@ -17,20 +25,27 @@ import org.springframework.beans.factory.annotation.Qualifier; | @@ -17,20 +25,27 @@ import org.springframework.beans.factory.annotation.Qualifier; | ||
| 17 | import org.springframework.boot.context.properties.EnableConfigurationProperties; | 25 | import org.springframework.boot.context.properties.EnableConfigurationProperties; |
| 18 | import org.springframework.stereotype.Service; | 26 | import org.springframework.stereotype.Service; |
| 19 | 27 | ||
| 28 | +import java.awt.*; | ||
| 20 | import java.io.File; | 29 | import java.io.File; |
| 30 | +import java.io.FileOutputStream; | ||
| 21 | import java.io.PrintWriter; | 31 | import java.io.PrintWriter; |
| 22 | import java.io.StringWriter; | 32 | import java.io.StringWriter; |
| 23 | import java.util.*; | 33 | import java.util.*; |
| 34 | +import java.util.List; | ||
| 24 | 35 | ||
| 25 | /** | 36 | /** |
| 26 | * Created by xu on 17/5/16. | 37 | * Created by xu on 17/5/16. |
| 27 | */ | 38 | */ |
| 28 | @EnableConfigurationProperties(DataToolsProperties.class) | 39 | @EnableConfigurationProperties(DataToolsProperties.class) |
| 29 | @Service(value = "ttInfoDetail_dataTool") | 40 | @Service(value = "ttInfoDetail_dataTool") |
| 30 | -public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetailForEdit { | 41 | +public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetailForEdit, TTinfoDetailDynamicData { |
| 31 | /** 日志记录器 */ | 42 | /** 日志记录器 */ |
| 32 | private final static Logger LOGGER = LoggerFactory.getLogger(TTInfoDetailDataToolsImpl.class); | 43 | private final static Logger LOGGER = LoggerFactory.getLogger(TTInfoDetailDataToolsImpl.class); |
| 33 | 44 | ||
| 45 | + // TODO:之后改了 | ||
| 46 | + @Autowired | ||
| 47 | + private StationService stationService; | ||
| 48 | + | ||
| 34 | @Autowired | 49 | @Autowired |
| 35 | @Qualifier(value = "dataToolsServiceImpl") | 50 | @Qualifier(value = "dataToolsServiceImpl") |
| 36 | private DataToolsService dataToolsService; | 51 | private DataToolsService dataToolsService; |
| @@ -363,4 +378,141 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail | @@ -363,4 +378,141 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail | ||
| 363 | } | 378 | } |
| 364 | } | 379 | } |
| 365 | 380 | ||
| 381 | + @Override | ||
| 382 | + public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos) throws ScheduleException { | ||
| 383 | + try { | ||
| 384 | + // 使用POI,创建xlsx文件 | ||
| 385 | + XSSFWorkbook wb = new XSSFWorkbook(); | ||
| 386 | + XSSFSheet sheet = wb.createSheet(WorkbookUtil.createSafeSheetName("时刻表信息")); | ||
| 387 | + | ||
| 388 | + //-------------------------------- 1、路牌班次数据 -------------------------------// | ||
| 389 | + List<LpObj> lpObjList = dtInfos.getLpObjList(); | ||
| 390 | + | ||
| 391 | + // 构建第一行数据 | ||
| 392 | + XSSFRow lpHeadRow = sheet.createRow((short) 0); | ||
| 393 | + if (lpObjList.size() == 0) { | ||
| 394 | + throw new RuntimeException("没有班次数据!"); | ||
| 395 | + } | ||
| 396 | + int groupCount = lpObjList.get(0).getGroupCount(); // 获取总圈数 | ||
| 397 | + if (groupCount == 0) { | ||
| 398 | + throw new RuntimeException("总圈数为0,有问题!"); | ||
| 399 | + } | ||
| 400 | + | ||
| 401 | + // 构造表头 | ||
| 402 | + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short)0, "路牌", new Color(0x96b9d7)); | ||
| 403 | + Station station1 = stationService.findById(lpObjList.get(0).getStationRouteId1()); | ||
| 404 | + Station station2 = stationService.findById(lpObjList.get(1).getStationRouteId2()); | ||
| 405 | + for (int i = 0; i < groupCount; i++) { | ||
| 406 | + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (i * 2 + 1), | ||
| 407 | + station1.getStationName(), new Color(0x96b9d7)); | ||
| 408 | + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (i * 2 + 2), | ||
| 409 | + station2.getStationName(), new Color(0x96b9d7)); | ||
| 410 | + } | ||
| 411 | + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (groupCount * 2 + 1), | ||
| 412 | + "路牌工时", new Color(0x96b9d7)); | ||
| 413 | + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (groupCount * 2 + 2), | ||
| 414 | + "营运班次数", new Color(0x96b9d7)); | ||
| 415 | + | ||
| 416 | + // 构建每个路牌的班次数据 | ||
| 417 | + for (int i = 0; i < lpObjList.size(); i++) { | ||
| 418 | + LpObj lpObj = lpObjList.get(i); | ||
| 419 | + XSSFRow lpRow = sheet.createRow((short) (i + 1)); | ||
| 420 | + PoiUtils.createStringXSSFCell(wb, lpRow, (short) 0, lpObj.getLpname()); | ||
| 421 | + for (int j = 0; j < groupCount; j++) { | ||
| 422 | + PoiUtils.createBlankXSSFCell(wb, lpRow, (short) (j * 2 + 1)); | ||
| 423 | + PoiUtils.createBlankXSSFCell(wb, lpRow, (short) (j * 2 + 2)); | ||
| 424 | + } | ||
| 425 | + for (BcObj bcObj : lpObj.getBcObjList()) { | ||
| 426 | + Cell cell = lpRow.getCell((short) (bcObj.getGroupNo() * 2 + bcObj.getGroupBcNo() + 1)); | ||
| 427 | + cell.setCellValue(bcObj.getFcsj()); | ||
| 428 | + } | ||
| 429 | + // 路牌工时/班次数 | ||
| 430 | + PoiUtils.createDoubleXSSFCell(wb, lpRow, (short) (groupCount * 2 + 1), | ||
| 431 | + lpObj.getZgs() / 60); | ||
| 432 | + // 营运班次数 | ||
| 433 | + PoiUtils.createIntegerXSSFCell(wb, lpRow, (short) (groupCount * 2 + 2), | ||
| 434 | + lpObj.getZbc()); | ||
| 435 | + } | ||
| 436 | + | ||
| 437 | + // 自适应单元格长宽 | ||
| 438 | + sheet.autoSizeColumn(0); | ||
| 439 | + for (int i = 0; i < groupCount; i++) { | ||
| 440 | + sheet.autoSizeColumn(i * 2 + 1); | ||
| 441 | + sheet.autoSizeColumn(i * 2 + 2); | ||
| 442 | + } | ||
| 443 | + sheet.autoSizeColumn(groupCount * 2 + 1); | ||
| 444 | + sheet.autoSizeColumn(groupCount * 2 + 2); | ||
| 445 | + | ||
| 446 | + // 锁定行首,列首 | ||
| 447 | + sheet.createFreezePane(1, 1); | ||
| 448 | + | ||
| 449 | + //-------------------------------- 2、统计数据 -------------------------------// | ||
| 450 | + List<StatInfo> statInfos = dtInfos.getStatInfoList(); | ||
| 451 | + | ||
| 452 | + // 创建总的统计数据格式 | ||
| 453 | + // 第一行 统计数据 | ||
| 454 | + // 第二行 序号,统计项目(8个单元格合并),统计数值 | ||
| 455 | + // 第三行开始数据,一共20行 | ||
| 456 | + | ||
| 457 | + int startrow = lpObjList.size() + 3; | ||
| 458 | + for (int i = startrow; i <= startrow + 22; i++) { | ||
| 459 | + XSSFRow xssfRow = sheet.createRow(i); | ||
| 460 | + for (int j = 0; j < 10; j++) { | ||
| 461 | + PoiUtils.createStringXSSFCell(wb, xssfRow, (short) j, ""); | ||
| 462 | + | ||
| 463 | + } | ||
| 464 | + } | ||
| 465 | + // 合并第一行 | ||
| 466 | + sheet.addMergedRegion(new CellRangeAddress(startrow, startrow, 0, 9)); | ||
| 467 | + sheet.getRow(startrow).getCell(0).setCellValue("统计数据"); | ||
| 468 | + // 合并第二行 | ||
| 469 | + sheet.getRow(startrow + 1).getCell(0).setCellValue("序号"); | ||
| 470 | + sheet.getRow(startrow + 1).getCell(1).setCellValue("统计项目"); | ||
| 471 | + sheet.getRow(startrow + 1).getCell(9).setCellValue("统计数值"); | ||
| 472 | + sheet.addMergedRegion(new CellRangeAddress(startrow + 1, startrow + 1, 1, 8)); | ||
| 473 | + // 处理后面具体统计行 | ||
| 474 | + for (int row = startrow + 2; row <= startrow + 2 + statInfos.size(); row++) { | ||
| 475 | + sheet.addMergedRegion(new CellRangeAddress(row, row, 1, 8)); | ||
| 476 | + } | ||
| 477 | + | ||
| 478 | + for (int i = 0; i < statInfos.size(); i++) { | ||
| 479 | + StatInfo statInfo = statInfos.get(i); | ||
| 480 | + | ||
| 481 | + // 1、统计序号 | ||
| 482 | + PoiUtils.setIntegerStyleXSSFCellStyle(wb, sheet.getRow(startrow + 2 + i).getCell(0)); | ||
| 483 | + sheet.getRow(startrow + 2 + i).getCell(0).setCellValue(i); | ||
| 484 | + | ||
| 485 | + // 2、统计项目 | ||
| 486 | + sheet.getRow(startrow + 2 + i).getCell(1).setCellValue(statInfo.getStatItem()); | ||
| 487 | + | ||
| 488 | + // 3、统计数值 | ||
| 489 | + PoiUtils.setDoubleStyleXSSFCellStyle(wb, sheet.getRow(startrow + 2 + i).getCell(9)); | ||
| 490 | + sheet.getRow(startrow + 2 + i).getCell(9).setCellValue(statInfo.getStatValue()); | ||
| 491 | + } | ||
| 492 | + | ||
| 493 | + // 最后内存写入文件 | ||
| 494 | + String filepath = dataToolsProperties.getFileoutputDir() + | ||
| 495 | + File.separator + | ||
| 496 | + "动态时刻表-" + | ||
| 497 | + new DateTime().toString("yyyyMMddHHmmss") + ".xlsx"; | ||
| 498 | + FileOutputStream fileOut = new FileOutputStream(filepath); | ||
| 499 | + wb.write(fileOut); | ||
| 500 | + | ||
| 501 | + DataToolsFile dataToolsFile = new DataToolsFile(); | ||
| 502 | + dataToolsFile.setFileType(DataToolsFileType.XLSX); | ||
| 503 | + dataToolsFile.setFile(new File(filepath)); | ||
| 504 | + | ||
| 505 | + return dataToolsFile; | ||
| 506 | + | ||
| 507 | + } catch (Exception exp) { | ||
| 508 | + LOGGER.info("//---------------- 动态时刻表输出 failed... ----------------//"); | ||
| 509 | + | ||
| 510 | + StringWriter sw = new StringWriter(); | ||
| 511 | + exp.printStackTrace(new PrintWriter(sw)); | ||
| 512 | + LOGGER.info(sw.toString()); | ||
| 513 | + | ||
| 514 | + throw new ScheduleException(exp); | ||
| 515 | + } | ||
| 516 | + | ||
| 517 | + } | ||
| 366 | } | 518 | } |
src/main/java/com/bsth/service/schedule/datatools/TTinfoDetailDynamicData.java
0 → 100644
| 1 | +package com.bsth.service.schedule.datatools; | ||
| 2 | + | ||
| 3 | +import com.bsth.service.schedule.exception.ScheduleException; | ||
| 4 | +import com.bsth.service.schedule.utils.DataToolsFile; | ||
| 5 | +import com.fasterxml.jackson.annotation.JsonCreator; | ||
| 6 | +import com.fasterxml.jackson.annotation.JsonValue; | ||
| 7 | + | ||
| 8 | +import java.util.List; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * 动态时刻表数据。 | ||
| 12 | + */ | ||
| 13 | +public interface TTinfoDetailDynamicData { | ||
| 14 | + | ||
| 15 | + //---------------------- 生成时刻表用对象(以下) ---------------------// | ||
| 16 | + public static enum BcType { // 班次类型枚举 | ||
| 17 | + IN("in"), // 进场 | ||
| 18 | + OUT("out"), // 出场 | ||
| 19 | + BD("bd"), // 早例保 | ||
| 20 | + LC("lc"), // 晚例保 | ||
| 21 | + NORMAL("normal"); // 正常 | ||
| 22 | + private String flag; | ||
| 23 | + | ||
| 24 | + @JsonCreator | ||
| 25 | + private BcType(String flag) { | ||
| 26 | + this.flag = flag; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + @JsonValue | ||
| 30 | + public String getFlag() { | ||
| 31 | + return flag; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + public void setFlag(String flag) { | ||
| 35 | + this.flag = flag; | ||
| 36 | + } | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + public static class BcObj { // 班次对象 | ||
| 40 | + /** 班次时间 */ | ||
| 41 | + private Integer bcsj; | ||
| 42 | + /** 停站时间 */ | ||
| 43 | + private Integer ssj; | ||
| 44 | + /** 吃饭时间 */ | ||
| 45 | + private Integer eatsj; | ||
| 46 | + | ||
| 47 | + /** 停车场id */ | ||
| 48 | + private Integer tccid; | ||
| 49 | + /** 起点站id */ | ||
| 50 | + private Integer qdzid; | ||
| 51 | + /** 终点站id */ | ||
| 52 | + private Integer zdzid; | ||
| 53 | + | ||
| 54 | + /** 是否上行 */ | ||
| 55 | + private Boolean isUp; | ||
| 56 | + | ||
| 57 | + /** 班次类型 */ | ||
| 58 | + private BcType bcType; | ||
| 59 | + /** 发车时刻 */ | ||
| 60 | + private String fcsj; | ||
| 61 | + | ||
| 62 | + /** 第几圈(从1开始) */ | ||
| 63 | + private Integer groupNo; | ||
| 64 | + /** 圈里第几个班次(1或者2) */ | ||
| 65 | + private Integer groupBcNo; | ||
| 66 | + | ||
| 67 | + public Integer getBcsj() { | ||
| 68 | + return bcsj; | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public void setBcsj(Integer bcsj) { | ||
| 72 | + this.bcsj = bcsj; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + public Integer getSsj() { | ||
| 76 | + return ssj; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + public void setSsj(Integer ssj) { | ||
| 80 | + this.ssj = ssj; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + public Integer getEatsj() { | ||
| 84 | + return eatsj; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + public void setEatsj(Integer eatsj) { | ||
| 88 | + this.eatsj = eatsj; | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + public Integer getTccid() { | ||
| 92 | + return tccid; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + public void setTccid(Integer tccid) { | ||
| 96 | + this.tccid = tccid; | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + public Integer getQdzid() { | ||
| 100 | + return qdzid; | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + public void setQdzid(Integer qdzid) { | ||
| 104 | + this.qdzid = qdzid; | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + public Integer getZdzid() { | ||
| 108 | + return zdzid; | ||
| 109 | + } | ||
| 110 | + | ||
| 111 | + public void setZdzid(Integer zdzid) { | ||
| 112 | + this.zdzid = zdzid; | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + public BcType getBcType() { | ||
| 116 | + return bcType; | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + public void setBcType(BcType bcType) { | ||
| 120 | + this.bcType = bcType; | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + public String getFcsj() { | ||
| 124 | + return fcsj; | ||
| 125 | + } | ||
| 126 | + | ||
| 127 | + public void setFcsj(String fcsj) { | ||
| 128 | + this.fcsj = fcsj; | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + public Boolean getIsUp() { | ||
| 132 | + return isUp; | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + public void setIsUp(Boolean isUp) { | ||
| 136 | + this.isUp = isUp; | ||
| 137 | + } | ||
| 138 | + | ||
| 139 | + public Integer getGroupNo() { | ||
| 140 | + return groupNo; | ||
| 141 | + } | ||
| 142 | + | ||
| 143 | + public void setGroupNo(Integer groupNo) { | ||
| 144 | + this.groupNo = groupNo; | ||
| 145 | + } | ||
| 146 | + | ||
| 147 | + public Integer getGroupBcNo() { | ||
| 148 | + return groupBcNo; | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + public void setGroupBcNo(Integer groupBcNo) { | ||
| 152 | + this.groupBcNo = groupBcNo; | ||
| 153 | + } | ||
| 154 | + } | ||
| 155 | + | ||
| 156 | + public static class LpObj { // 路牌对象 | ||
| 157 | + /** 路牌名字 */ | ||
| 158 | + private String lpname; | ||
| 159 | + /** 每圈的第一个班次是否上行 */ | ||
| 160 | + private Boolean isUp; | ||
| 161 | + | ||
| 162 | + /** 第一个班次起点站路由id */ | ||
| 163 | + private Integer stationRouteId1; | ||
| 164 | + /** 第二个班次起点站路由id */ | ||
| 165 | + private Integer stationRouteId2; | ||
| 166 | + | ||
| 167 | + /** 班次列表 */ | ||
| 168 | + private List<BcObj> bcObjList; | ||
| 169 | + /** 总圈数 */ | ||
| 170 | + private Integer groupCount; | ||
| 171 | + | ||
| 172 | + /** 总工时 */ | ||
| 173 | + private Double zgs; | ||
| 174 | + /** 总班次 */ | ||
| 175 | + private Integer zbc; | ||
| 176 | + | ||
| 177 | + | ||
| 178 | + public String getLpname() { | ||
| 179 | + return lpname; | ||
| 180 | + } | ||
| 181 | + | ||
| 182 | + public void setLpname(String lpname) { | ||
| 183 | + this.lpname = lpname; | ||
| 184 | + } | ||
| 185 | + | ||
| 186 | + public Boolean getIsUp() { | ||
| 187 | + return isUp; | ||
| 188 | + } | ||
| 189 | + | ||
| 190 | + public void setIsUp(Boolean isUp) { | ||
| 191 | + this.isUp = isUp; | ||
| 192 | + } | ||
| 193 | + | ||
| 194 | + public List<BcObj> getBcObjList() { | ||
| 195 | + return bcObjList; | ||
| 196 | + } | ||
| 197 | + | ||
| 198 | + public void setBcObjList(List<BcObj> bcObjList) { | ||
| 199 | + this.bcObjList = bcObjList; | ||
| 200 | + } | ||
| 201 | + | ||
| 202 | + public Integer getGroupCount() { | ||
| 203 | + return groupCount; | ||
| 204 | + } | ||
| 205 | + | ||
| 206 | + public void setGroupCount(Integer groupCount) { | ||
| 207 | + this.groupCount = groupCount; | ||
| 208 | + } | ||
| 209 | + | ||
| 210 | + public Double getZgs() { | ||
| 211 | + return zgs; | ||
| 212 | + } | ||
| 213 | + | ||
| 214 | + public void setZgs(Double zgs) { | ||
| 215 | + this.zgs = zgs; | ||
| 216 | + } | ||
| 217 | + | ||
| 218 | + public Integer getZbc() { | ||
| 219 | + return zbc; | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + public void setZbc(Integer zbc) { | ||
| 223 | + this.zbc = zbc; | ||
| 224 | + } | ||
| 225 | + | ||
| 226 | + public Integer getStationRouteId1() { | ||
| 227 | + return stationRouteId1; | ||
| 228 | + } | ||
| 229 | + | ||
| 230 | + public void setStationRouteId1(Integer stationRouteId1) { | ||
| 231 | + this.stationRouteId1 = stationRouteId1; | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + public Integer getStationRouteId2() { | ||
| 235 | + return stationRouteId2; | ||
| 236 | + } | ||
| 237 | + | ||
| 238 | + public void setStationRouteId2(Integer stationRouteId2) { | ||
| 239 | + this.stationRouteId2 = stationRouteId2; | ||
| 240 | + } | ||
| 241 | + } | ||
| 242 | + | ||
| 243 | + public static class StatInfo { // 统计数据对象 | ||
| 244 | + /** 统计项目 */ | ||
| 245 | + private String statItem; | ||
| 246 | + /** 统计值 */ | ||
| 247 | + private Double statValue; | ||
| 248 | + | ||
| 249 | + public String getStatItem() { | ||
| 250 | + return statItem; | ||
| 251 | + } | ||
| 252 | + | ||
| 253 | + public void setStatItem(String statItem) { | ||
| 254 | + this.statItem = statItem; | ||
| 255 | + } | ||
| 256 | + | ||
| 257 | + public Double getStatValue() { | ||
| 258 | + return statValue; | ||
| 259 | + } | ||
| 260 | + | ||
| 261 | + public void setStatValue(Double statValue) { | ||
| 262 | + this.statValue = statValue; | ||
| 263 | + } | ||
| 264 | + } | ||
| 265 | + | ||
| 266 | + public static class DTInfos { // 所有数据信息 | ||
| 267 | + /** 路牌班次数据列表 */ | ||
| 268 | + private List<LpObj> lpObjList; | ||
| 269 | + /** 统计数据列表 */ | ||
| 270 | + private List<StatInfo> statInfoList; | ||
| 271 | + | ||
| 272 | + public List<LpObj> getLpObjList() { | ||
| 273 | + return lpObjList; | ||
| 274 | + } | ||
| 275 | + | ||
| 276 | + public void setLpObjList(List<LpObj> lpObjList) { | ||
| 277 | + this.lpObjList = lpObjList; | ||
| 278 | + } | ||
| 279 | + | ||
| 280 | + public List<StatInfo> getStatInfoList() { | ||
| 281 | + return statInfoList; | ||
| 282 | + } | ||
| 283 | + | ||
| 284 | + public void setStatInfoList(List<StatInfo> statInfoList) { | ||
| 285 | + this.statInfoList = statInfoList; | ||
| 286 | + } | ||
| 287 | + } | ||
| 288 | + | ||
| 289 | + //---------------------- 生成时刻表用对象(以上) ---------------------// | ||
| 290 | + | ||
| 291 | + /** | ||
| 292 | + * 导出动态时刻表数据。 | ||
| 293 | + * @param dtInfos | ||
| 294 | + * @return | ||
| 295 | + * @throws ScheduleException | ||
| 296 | + */ | ||
| 297 | + public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos) throws ScheduleException; | ||
| 298 | +} |
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
| @@ -19,6 +19,7 @@ import com.bsth.service.StationRouteService; | @@ -19,6 +19,7 @@ import com.bsth.service.StationRouteService; | ||
| 19 | import com.bsth.service.schedule.GuideboardInfoService; | 19 | import com.bsth.service.schedule.GuideboardInfoService; |
| 20 | import com.bsth.service.schedule.TTInfoDetailService; | 20 | import com.bsth.service.schedule.TTInfoDetailService; |
| 21 | import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; | 21 | import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; |
| 22 | +import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData; | ||
| 22 | import com.bsth.service.schedule.exception.ScheduleException; | 23 | import com.bsth.service.schedule.exception.ScheduleException; |
| 23 | import com.bsth.service.schedule.utils.DataToolsFile; | 24 | import com.bsth.service.schedule.utils.DataToolsFile; |
| 24 | import com.bsth.service.schedule.utils.DataToolsFileType; | 25 | import com.bsth.service.schedule.utils.DataToolsFileType; |
| @@ -86,6 +87,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im | @@ -86,6 +87,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im | ||
| 86 | private TTInfoDetailForEdit ttInfoDetailForEdit; | 87 | private TTInfoDetailForEdit ttInfoDetailForEdit; |
| 87 | 88 | ||
| 88 | @Autowired | 89 | @Autowired |
| 90 | + @Qualifier(value = "ttInfoDetail_dataTool") | ||
| 91 | + private TTinfoDetailDynamicData tTinfoDetailDynamicData; | ||
| 92 | + | ||
| 93 | + @Autowired | ||
| 89 | private JdbcTemplate jdbcTemplate; | 94 | private JdbcTemplate jdbcTemplate; |
| 90 | 95 | ||
| 91 | /** | 96 | /** |
| @@ -134,6 +139,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im | @@ -134,6 +139,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im | ||
| 134 | return dataToolsService.exportData(params); | 139 | return dataToolsService.exportData(params); |
| 135 | } | 140 | } |
| 136 | 141 | ||
| 142 | + @Override | ||
| 143 | + public DataToolsFile exportDynamicTTinfo(TTinfoDetailDynamicData.DTInfos dtInfos) throws ScheduleException { | ||
| 144 | + return tTinfoDetailDynamicData.exportDynamicTTinfo(dtInfos); | ||
| 145 | + } | ||
| 137 | 146 | ||
| 138 | @Override | 147 | @Override |
| 139 | public TTInfoDetailForEdit.EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException { | 148 | public TTInfoDetailForEdit.EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException { |
src/main/java/com/bsth/service/schedule/utils/PoiUtils.java
| 1 | package com.bsth.service.schedule.utils; | 1 | package com.bsth.service.schedule.utils; |
| 2 | 2 | ||
| 3 | import org.apache.poi.hssf.usermodel.HSSFDateUtil; | 3 | import org.apache.poi.hssf.usermodel.HSSFDateUtil; |
| 4 | -import org.apache.poi.ss.usermodel.Cell; | ||
| 5 | -import org.apache.poi.xssf.usermodel.XSSFCell; | 4 | +import org.apache.poi.ss.usermodel.*; |
| 5 | +import org.apache.poi.ss.util.WorkbookUtil; | ||
| 6 | +import org.apache.poi.xssf.usermodel.*; | ||
| 6 | 7 | ||
| 8 | +import java.awt.Color; | ||
| 7 | import java.text.DecimalFormat; | 9 | import java.text.DecimalFormat; |
| 8 | import java.text.SimpleDateFormat; | 10 | import java.text.SimpleDateFormat; |
| 9 | import java.util.Date; | 11 | import java.util.Date; |
| @@ -52,4 +54,152 @@ public class PoiUtils { | @@ -52,4 +54,152 @@ public class PoiUtils { | ||
| 52 | } | 54 | } |
| 53 | return cellValue; | 55 | return cellValue; |
| 54 | } | 56 | } |
| 57 | + | ||
| 58 | + public static XSSFCell createStringXSSFCell( | ||
| 59 | + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, String value, | ||
| 60 | + Color backgroundColor) { | ||
| 61 | + return createXSSFCell( | ||
| 62 | + xssfWorkbook, xssfRow, column, | ||
| 63 | + value, XSSFCell.CELL_TYPE_STRING, | ||
| 64 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | ||
| 65 | + BorderStyle.MEDIUM, new Color(0xdedede), | ||
| 66 | + (short) 13, new Color(0x2765A7), "宋体", | ||
| 67 | + backgroundColor, FillPatternType.SOLID_FOREGROUND | ||
| 68 | + ); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public static XSSFCell createStringXSSFCell( | ||
| 72 | + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, String value) { | ||
| 73 | + return createXSSFCell( | ||
| 74 | + xssfWorkbook, xssfRow, column, | ||
| 75 | + value, XSSFCell.CELL_TYPE_STRING, | ||
| 76 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | ||
| 77 | + BorderStyle.MEDIUM, new Color(0xdedede), | ||
| 78 | + (short) 13, new Color(0x2765A7), "宋体", | ||
| 79 | + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND | ||
| 80 | + ); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + public static XSSFCell createDoubleXSSFCell( | ||
| 84 | + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, Double value) { | ||
| 85 | + return createXSSFCell( | ||
| 86 | + xssfWorkbook, xssfRow, column, | ||
| 87 | + value, XSSFCell.CELL_TYPE_NUMERIC, | ||
| 88 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | ||
| 89 | + BorderStyle.MEDIUM, new Color(0xdedede), | ||
| 90 | + (short) 13, new Color(0x2765A7), "宋体", | ||
| 91 | + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND | ||
| 92 | + ); | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + public static XSSFCell createIntegerXSSFCell( | ||
| 96 | + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, Integer value) { | ||
| 97 | + return createXSSFCell( | ||
| 98 | + xssfWorkbook, xssfRow, column, | ||
| 99 | + value, XSSFCell.CELL_TYPE_NUMERIC, | ||
| 100 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | ||
| 101 | + BorderStyle.MEDIUM, new Color(0xdedede), | ||
| 102 | + (short) 13, new Color(0x2765A7), "宋体", | ||
| 103 | + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND | ||
| 104 | + ); | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + public static XSSFCell createBlankXSSFCell( | ||
| 108 | + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column) { | ||
| 109 | + return createXSSFCell( | ||
| 110 | + xssfWorkbook, xssfRow, column, | ||
| 111 | + null, XSSFCell.CELL_TYPE_BLANK, | ||
| 112 | + HorizontalAlignment.CENTER, VerticalAlignment.CENTER, | ||
| 113 | + BorderStyle.MEDIUM, new Color(0xdedede), | ||
| 114 | + (short) 13, new Color(0x2765A7), "宋体", | ||
| 115 | + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND | ||
| 116 | + ); | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + public static XSSFCell setIntegerStyleXSSFCellStyle(XSSFWorkbook xssfWorkbook, XSSFCell xssfCell) { | ||
| 120 | + CreationHelper creationHelper = xssfWorkbook.getCreationHelper(); | ||
| 121 | + XSSFCellStyle xssfCellStyle = xssfCell.getCellStyle(); | ||
| 122 | + xssfCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0")); | ||
| 123 | + return xssfCell; | ||
| 124 | + } | ||
| 125 | + public static XSSFCell setDoubleStyleXSSFCellStyle(XSSFWorkbook xssfWorkbook, XSSFCell xssfCell) { | ||
| 126 | + CreationHelper creationHelper = xssfWorkbook.getCreationHelper(); | ||
| 127 | + XSSFCellStyle xssfCellStyle = xssfCell.getCellStyle(); | ||
| 128 | + xssfCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00")); | ||
| 129 | + return xssfCell; | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + public static XSSFCell createXSSFCell( | ||
| 133 | + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, | ||
| 134 | + Object value, int valueType, | ||
| 135 | + HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment, | ||
| 136 | + BorderStyle borderStyle, Color borderColor, | ||
| 137 | + short fontSize, Color fontColor, String fontName, | ||
| 138 | + Color backgroudColor, FillPatternType fillPatternType) { | ||
| 139 | + CreationHelper creationHelper = xssfWorkbook.getCreationHelper(); | ||
| 140 | + | ||
| 141 | + // 1、创建单元格对象 | ||
| 142 | + XSSFCell cell = xssfRow.createCell(column); | ||
| 143 | + | ||
| 144 | + // 2、设定样式 | ||
| 145 | + XSSFCellStyle cellStyle = xssfWorkbook.createCellStyle(); | ||
| 146 | + | ||
| 147 | + // 设定值 | ||
| 148 | + if (valueType == XSSFCell.CELL_TYPE_STRING) { | ||
| 149 | + cell.setCellValue(creationHelper.createRichTextString( | ||
| 150 | + WorkbookUtil.createSafeSheetName(String.valueOf(value)))); | ||
| 151 | + } else if (valueType == XSSFCell.CELL_TYPE_NUMERIC) { | ||
| 152 | + if (value instanceof Date) { // 日期 | ||
| 153 | + cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-mm-dd")); | ||
| 154 | + cell.setCellValue((Date) value); | ||
| 155 | + } else if (value instanceof Double) { | ||
| 156 | + cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00")); | ||
| 157 | + cell.setCellValue((Double) value); | ||
| 158 | + } else if (value instanceof Integer) { | ||
| 159 | + cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0")); | ||
| 160 | + cell.setCellValue(Double.valueOf(value.toString())); | ||
| 161 | + } else { | ||
| 162 | + throw new RuntimeException("只支持 Date Double Integer 单元格类型"); | ||
| 163 | + } | ||
| 164 | + } else if (valueType == XSSFCell.CELL_TYPE_BLANK) { | ||
| 165 | + cell.setCellType(Cell.CELL_TYPE_BLANK); | ||
| 166 | + } | ||
| 167 | + | ||
| 168 | + else { | ||
| 169 | + throw new RuntimeException("暂时不支持字符串、日期、数字以为的类型"); | ||
| 170 | + } | ||
| 171 | + | ||
| 172 | + // 对齐方式 | ||
| 173 | + cellStyle.setAlignment(horizontalAlignment); | ||
| 174 | + cellStyle.setVerticalAlignment(verticalAlignment); | ||
| 175 | + | ||
| 176 | + // 边框样式 | ||
| 177 | + cellStyle.setBorderTop(borderStyle); | ||
| 178 | + cellStyle.setTopBorderColor(new XSSFColor(borderColor)); | ||
| 179 | + cellStyle.setBorderBottom(borderStyle); | ||
| 180 | + cellStyle.setBottomBorderColor(new XSSFColor(borderColor)); | ||
| 181 | + cellStyle.setBorderLeft(borderStyle); | ||
| 182 | + cellStyle.setLeftBorderColor(new XSSFColor(borderColor)); | ||
| 183 | + cellStyle.setBorderRight(borderStyle); | ||
| 184 | + cellStyle.setRightBorderColor(new XSSFColor(borderColor)); | ||
| 185 | + | ||
| 186 | + // 字体颜色 | ||
| 187 | + XSSFFont font = xssfWorkbook.createFont(); | ||
| 188 | + font.setColor(new XSSFColor(fontColor)); | ||
| 189 | + font.setFontHeightInPoints(fontSize); | ||
| 190 | + font.setFontName(fontName); | ||
| 191 | + cellStyle.setFont(font); | ||
| 192 | + | ||
| 193 | + | ||
| 194 | + // 单元背景色 | ||
| 195 | + cellStyle.setFillForegroundColor(new XSSFColor(backgroudColor)); | ||
| 196 | + cellStyle.setFillPattern(fillPatternType); | ||
| 197 | + | ||
| 198 | + // TODO | ||
| 199 | + | ||
| 200 | + cell.setCellStyle(cellStyle); | ||
| 201 | + return cell; | ||
| 202 | + } | ||
| 203 | + | ||
| 55 | } | 204 | } |
| 205 | + |
src/main/resources/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
| 1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | -<transformation> | ||
| 3 | - <info> | ||
| 4 | - <name>时刻表明细导出元数据</name> | ||
| 5 | - <description/> | ||
| 6 | - <extended_description/> | ||
| 7 | - <trans_version/> | ||
| 8 | - <trans_type>Normal</trans_type> | ||
| 9 | - <trans_status>0</trans_status> | ||
| 10 | - <directory>/</directory> | ||
| 11 | - <parameters> | ||
| 12 | - <parameter> | ||
| 13 | - <name>filepath</name> | ||
| 14 | - <default_value>/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/ttinfodetail_test.xls</default_value> | ||
| 15 | - <description>时刻表excel导出文件路径名</description> | ||
| 16 | - </parameter> | ||
| 17 | - <parameter> | ||
| 18 | - <name>injectktrfile</name> | ||
| 19 | - <default_value>/Users/xu/resource/project_code/bsth_project/bsth_control_parent/bsth_control/src/main/resources/datatools/ktrs/ttinfodetailDataOutput.ktr</default_value> | ||
| 20 | - <description>注入元数据的ktr文件</description> | ||
| 21 | - </parameter> | ||
| 22 | - <parameter> | ||
| 23 | - <name>ttinfoid</name> | ||
| 24 | - <default_value>56</default_value> | ||
| 25 | - <description>时刻表id</description> | ||
| 26 | - </parameter> | ||
| 27 | - </parameters> | ||
| 28 | - <log> | ||
| 29 | -<trans-log-table><connection/> | ||
| 30 | -<schema/> | ||
| 31 | -<table/> | ||
| 32 | -<size_limit_lines/> | ||
| 33 | -<interval/> | ||
| 34 | -<timeout_days/> | ||
| 35 | -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table> | ||
| 36 | -<perf-log-table><connection/> | ||
| 37 | -<schema/> | ||
| 38 | -<table/> | ||
| 39 | -<interval/> | ||
| 40 | -<timeout_days/> | ||
| 41 | -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table> | ||
| 42 | -<channel-log-table><connection/> | ||
| 43 | -<schema/> | ||
| 44 | -<table/> | ||
| 45 | -<timeout_days/> | ||
| 46 | -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table> | ||
| 47 | -<step-log-table><connection/> | ||
| 48 | -<schema/> | ||
| 49 | -<table/> | ||
| 50 | -<timeout_days/> | ||
| 51 | -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table> | ||
| 52 | -<metrics-log-table><connection/> | ||
| 53 | -<schema/> | ||
| 54 | -<table/> | ||
| 55 | -<timeout_days/> | ||
| 56 | -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table> | ||
| 57 | - </log> | ||
| 58 | - <maxdate> | ||
| 59 | - <connection/> | ||
| 60 | - <table/> | ||
| 61 | - <field/> | ||
| 62 | - <offset>0.0</offset> | ||
| 63 | - <maxdiff>0.0</maxdiff> | ||
| 64 | - </maxdate> | ||
| 65 | - <size_rowset>10000</size_rowset> | ||
| 66 | - <sleep_time_empty>50</sleep_time_empty> | ||
| 67 | - <sleep_time_full>50</sleep_time_full> | ||
| 68 | - <unique_connections>N</unique_connections> | ||
| 69 | - <feedback_shown>Y</feedback_shown> | ||
| 70 | - <feedback_size>50000</feedback_size> | ||
| 71 | - <using_thread_priorities>Y</using_thread_priorities> | ||
| 72 | - <shared_objects_file/> | ||
| 73 | - <capture_step_performance>N</capture_step_performance> | ||
| 74 | - <step_performance_capturing_delay>1000</step_performance_capturing_delay> | ||
| 75 | - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit> | ||
| 76 | - <dependencies> | ||
| 77 | - </dependencies> | ||
| 78 | - <partitionschemas> | ||
| 79 | - </partitionschemas> | ||
| 80 | - <slaveservers> | ||
| 81 | - </slaveservers> | ||
| 82 | - <clusterschemas> | ||
| 83 | - </clusterschemas> | ||
| 84 | - <created_user>-</created_user> | ||
| 85 | - <created_date>2016/11/15 15:02:41.624</created_date> | ||
| 86 | - <modified_user>-</modified_user> | ||
| 87 | - <modified_date>2016/11/15 15:02:41.624</modified_date> | ||
| 88 | - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key> | ||
| 89 | - <is_key_private>N</is_key_private> | ||
| 90 | - </info> | ||
| 91 | - <notepads> | ||
| 92 | - <notepad> | ||
| 93 | - <note>TODO:如果groupby 加入bctype,
则以发车顺序号,班次类型分组的数据可能重复,
应为班次类型可能不一样(导入之后人为修改的,如正常班次改成区间),
因为导出时必须数据不重复,这里的解决方法,只使用发车顺序号分组,
以后建议,还是原来的方式分组,然后把更新时间晚的去除

以后改成去除重复纪录</note> | ||
| 94 | - <xloc>46</xloc> | ||
| 95 | - <yloc>400</yloc> | ||
| 96 | - <width>406</width> | ||
| 97 | - <heigth>122</heigth> | ||
| 98 | - <fontname>YaHei Consolas Hybrid</fontname> | ||
| 99 | - <fontsize>12</fontsize> | ||
| 100 | - <fontbold>N</fontbold> | ||
| 101 | - <fontitalic>N</fontitalic> | ||
| 102 | - <fontcolorred>0</fontcolorred> | ||
| 103 | - <fontcolorgreen>0</fontcolorgreen> | ||
| 104 | - <fontcolorblue>0</fontcolorblue> | ||
| 105 | - <backgroundcolorred>255</backgroundcolorred> | ||
| 106 | - <backgroundcolorgreen>205</backgroundcolorgreen> | ||
| 107 | - <backgroundcolorblue>112</backgroundcolorblue> | ||
| 108 | - <bordercolorred>100</bordercolorred> | ||
| 109 | - <bordercolorgreen>100</bordercolorgreen> | ||
| 110 | - <bordercolorblue>100</bordercolorblue> | ||
| 111 | - <drawshadow>Y</drawshadow> | ||
| 112 | - </notepad> | ||
| 113 | - </notepads> | ||
| 114 | - <connection> | ||
| 115 | - <name>192.168.168.1_jwgl_dw</name> | ||
| 116 | - <server>192.168.168.1</server> | ||
| 117 | - <type>ORACLE</type> | ||
| 118 | - <access>Native</access> | ||
| 119 | - <database>orcl</database> | ||
| 120 | - <port>1521</port> | ||
| 121 | - <username>jwgl_dw</username> | ||
| 122 | - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password> | ||
| 123 | - <servername/> | ||
| 124 | - <data_tablespace/> | ||
| 125 | - <index_tablespace/> | ||
| 126 | - <attributes> | ||
| 127 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 128 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 129 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 130 | - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 131 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 132 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 133 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 134 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 135 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 136 | - </attributes> | ||
| 137 | - </connection> | ||
| 138 | - <connection> | ||
| 139 | - <name>bus_control_variable</name> | ||
| 140 | - <server>${v_db_ip}</server> | ||
| 141 | - <type>MYSQL</type> | ||
| 142 | - <access>Native</access> | ||
| 143 | - <database>${v_db_dname}</database> | ||
| 144 | - <port>3306</port> | ||
| 145 | - <username>${v_db_uname}</username> | ||
| 146 | - <password>${v_db_pwd}</password> | ||
| 147 | - <servername/> | ||
| 148 | - <data_tablespace/> | ||
| 149 | - <index_tablespace/> | ||
| 150 | - <attributes> | ||
| 151 | - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute> | ||
| 152 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 153 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 154 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 155 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 156 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 157 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 158 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 159 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 160 | - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 161 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 162 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 163 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 164 | - </attributes> | ||
| 165 | - </connection> | ||
| 166 | - <connection> | ||
| 167 | - <name>bus_control_公司_201</name> | ||
| 168 | - <server>localhost</server> | ||
| 169 | - <type>MYSQL</type> | ||
| 170 | - <access>Native</access> | ||
| 171 | - <database>control</database> | ||
| 172 | - <port>3306</port> | ||
| 173 | - <username>root</username> | ||
| 174 | - <password>Encrypted </password> | ||
| 175 | - <servername/> | ||
| 176 | - <data_tablespace/> | ||
| 177 | - <index_tablespace/> | ||
| 178 | - <attributes> | ||
| 179 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 180 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 181 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 182 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 183 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 184 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 185 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 186 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 187 | - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 188 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 189 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 190 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 191 | - </attributes> | ||
| 192 | - </connection> | ||
| 193 | - <connection> | ||
| 194 | - <name>bus_control_本机</name> | ||
| 195 | - <server>localhost</server> | ||
| 196 | - <type>MYSQL</type> | ||
| 197 | - <access>Native</access> | ||
| 198 | - <database>control</database> | ||
| 199 | - <port>3306</port> | ||
| 200 | - <username>root</username> | ||
| 201 | - <password>Encrypted </password> | ||
| 202 | - <servername/> | ||
| 203 | - <data_tablespace/> | ||
| 204 | - <index_tablespace/> | ||
| 205 | - <attributes> | ||
| 206 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 207 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 208 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 209 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 210 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 211 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 212 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 213 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 214 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 215 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 216 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 217 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 218 | - </attributes> | ||
| 219 | - </connection> | ||
| 220 | - <connection> | ||
| 221 | - <name>xlab_mysql_youle</name> | ||
| 222 | - <server>101.231.124.8</server> | ||
| 223 | - <type>MYSQL</type> | ||
| 224 | - <access>Native</access> | ||
| 225 | - <database>xlab_youle</database> | ||
| 226 | - <port>45687</port> | ||
| 227 | - <username>xlab-youle</username> | ||
| 228 | - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password> | ||
| 229 | - <servername/> | ||
| 230 | - <data_tablespace/> | ||
| 231 | - <index_tablespace/> | ||
| 232 | - <attributes> | ||
| 233 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 234 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 235 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 236 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 237 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 238 | - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute> | ||
| 239 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 240 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 241 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 242 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 243 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 244 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 245 | - </attributes> | ||
| 246 | - </connection> | ||
| 247 | - <connection> | ||
| 248 | - <name>xlab_mysql_youle(本机)</name> | ||
| 249 | - <server>localhost</server> | ||
| 250 | - <type>MYSQL</type> | ||
| 251 | - <access>Native</access> | ||
| 252 | - <database>xlab_youle</database> | ||
| 253 | - <port>3306</port> | ||
| 254 | - <username>root</username> | ||
| 255 | - <password>Encrypted </password> | ||
| 256 | - <servername/> | ||
| 257 | - <data_tablespace/> | ||
| 258 | - <index_tablespace/> | ||
| 259 | - <attributes> | ||
| 260 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 261 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 262 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 263 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 264 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 265 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 266 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 267 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 268 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 269 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 270 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 271 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 272 | - </attributes> | ||
| 273 | - </connection> | ||
| 274 | - <connection> | ||
| 275 | - <name>xlab_youle</name> | ||
| 276 | - <server/> | ||
| 277 | - <type>MYSQL</type> | ||
| 278 | - <access>JNDI</access> | ||
| 279 | - <database>xlab_youle</database> | ||
| 280 | - <port>1521</port> | ||
| 281 | - <username/> | ||
| 282 | - <password>Encrypted </password> | ||
| 283 | - <servername/> | ||
| 284 | - <data_tablespace/> | ||
| 285 | - <index_tablespace/> | ||
| 286 | - <attributes> | ||
| 287 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 288 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 289 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 290 | - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 291 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 292 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 293 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 294 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 295 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 296 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 297 | - </attributes> | ||
| 298 | - </connection> | ||
| 299 | - <order> | ||
| 300 | - <hop> <from>时刻表明细分组数据</from><to>过滤记录</to><enabled>Y</enabled> </hop> | ||
| 301 | - <hop> <from>过滤记录</from><to>计算站点</to><enabled>Y</enabled> </hop> | ||
| 302 | - <hop> <from>计算站点</from><to>查找站点名</to><enabled>Y</enabled> </hop> | ||
| 303 | - <hop> <from>查找站点名</from><to>计算反范式元数据</to><enabled>Y</enabled> </hop> | ||
| 304 | - <hop> <from>查找站点名</from><to>计算excel输出字段</to><enabled>Y</enabled> </hop> | ||
| 305 | - <hop> <from>计算excel输出字段</from><to>字段选择</to><enabled>Y</enabled> </hop> | ||
| 306 | - <hop> <from>字段选择</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 307 | - <hop> <from>生成路牌字段</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 308 | - <hop> <from>计算反范式元数据</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 309 | - <hop> <from>排序记录</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 310 | - </order> | ||
| 311 | - <step> | ||
| 312 | - <name>ETL元数据注入</name> | ||
| 313 | - <type>MetaInject</type> | ||
| 314 | - <description/> | ||
| 315 | - <distribute>Y</distribute> | ||
| 316 | - <custom_distribution/> | ||
| 317 | - <copies>1</copies> | ||
| 318 | - <partitioning> | ||
| 319 | - <method>none</method> | ||
| 320 | - <schema_name/> | ||
| 321 | - </partitioning> | ||
| 322 | - <specification_method>filename</specification_method> | ||
| 323 | - <trans_object_id/> | ||
| 324 | - <trans_name/> | ||
| 325 | - <filename>${injectktrfile}</filename> | ||
| 326 | - <directory_path/> | ||
| 327 | - <source_step/> | ||
| 328 | - <source_output_fields> </source_output_fields> <target_file/> | ||
| 329 | - <no_execution>N</no_execution> | ||
| 330 | - <stream_source_step/> | ||
| 331 | - <stream_target_step/> | ||
| 332 | - <mappings> <mapping> <target_step_name>列转行</target_step_name> | ||
| 333 | - <target_attribute_key>TARGET_TYPE</target_attribute_key> | ||
| 334 | - <target_detail>Y</target_detail> | ||
| 335 | - <source_step>计算反范式元数据</source_step> | ||
| 336 | - <source_field>targettype</source_field> | ||
| 337 | - </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 338 | - <target_attribute_key>TYPE</target_attribute_key> | ||
| 339 | - <target_detail>Y</target_detail> | ||
| 340 | - <source_step>排序记录</source_step> | ||
| 341 | - <source_field>fieldtype</source_field> | ||
| 342 | - </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 343 | - <target_attribute_key>NAME</target_attribute_key> | ||
| 344 | - <target_detail>Y</target_detail> | ||
| 345 | - <source_step>计算反范式元数据</source_step> | ||
| 346 | - <source_field>valuefieldname</source_field> | ||
| 347 | - </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 348 | - <target_attribute_key>NAME</target_attribute_key> | ||
| 349 | - <target_detail>Y</target_detail> | ||
| 350 | - <source_step>排序记录</source_step> | ||
| 351 | - <source_field>fieldname</source_field> | ||
| 352 | - </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 353 | - <target_attribute_key>TARGET_NAME</target_attribute_key> | ||
| 354 | - <target_detail>Y</target_detail> | ||
| 355 | - <source_step>计算反范式元数据</source_step> | ||
| 356 | - <source_field>targetfieldname</source_field> | ||
| 357 | - </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 358 | - <target_attribute_key>KEY_VALUE</target_attribute_key> | ||
| 359 | - <target_detail>Y</target_detail> | ||
| 360 | - <source_step>计算反范式元数据</source_step> | ||
| 361 | - <source_field>keyvalue</source_field> | ||
| 362 | - </mapping> </mappings> <cluster_schema/> | ||
| 363 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 364 | - <xloc>640</xloc> | ||
| 365 | - <yloc>64</yloc> | ||
| 366 | - <draw>Y</draw> | ||
| 367 | - </GUI> | ||
| 368 | - </step> | ||
| 369 | - | ||
| 370 | - <step> | ||
| 371 | - <name>去除重复记录</name> | ||
| 372 | - <type>Unique</type> | ||
| 373 | - <description/> | ||
| 374 | - <distribute>Y</distribute> | ||
| 375 | - <custom_distribution/> | ||
| 376 | - <copies>1</copies> | ||
| 377 | - <partitioning> | ||
| 378 | - <method>none</method> | ||
| 379 | - <schema_name/> | ||
| 380 | - </partitioning> | ||
| 381 | - <count_rows>N</count_rows> | ||
| 382 | - <count_field/> | ||
| 383 | - <reject_duplicate_row>N</reject_duplicate_row> | ||
| 384 | - <error_description/> | ||
| 385 | - <fields> </fields> <cluster_schema/> | ||
| 386 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 387 | - <xloc>842</xloc> | ||
| 388 | - <yloc>592</yloc> | ||
| 389 | - <draw>Y</draw> | ||
| 390 | - </GUI> | ||
| 391 | - </step> | ||
| 392 | - | ||
| 393 | - <step> | ||
| 394 | - <name>字段选择</name> | ||
| 395 | - <type>SelectValues</type> | ||
| 396 | - <description/> | ||
| 397 | - <distribute>Y</distribute> | ||
| 398 | - <custom_distribution/> | ||
| 399 | - <copies>1</copies> | ||
| 400 | - <partitioning> | ||
| 401 | - <method>none</method> | ||
| 402 | - <schema_name/> | ||
| 403 | - </partitioning> | ||
| 404 | - <fields> <field> <name>fieldname</name> | ||
| 405 | - <rename/> | ||
| 406 | - <length>-2</length> | ||
| 407 | - <precision>-2</precision> | ||
| 408 | - </field> <field> <name>fieldtype</name> | ||
| 409 | - <rename/> | ||
| 410 | - <length>-2</length> | ||
| 411 | - <precision>-2</precision> | ||
| 412 | - </field> <field> <name>fcno</name> | ||
| 413 | - <rename/> | ||
| 414 | - <length>-2</length> | ||
| 415 | - <precision>-2</precision> | ||
| 416 | - </field> <select_unspecified>N</select_unspecified> | ||
| 417 | - </fields> <cluster_schema/> | ||
| 418 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 419 | - <xloc>533</xloc> | ||
| 420 | - <yloc>325</yloc> | ||
| 421 | - <draw>Y</draw> | ||
| 422 | - </GUI> | ||
| 423 | - </step> | ||
| 424 | - | ||
| 425 | - <step> | ||
| 426 | - <name>排序记录</name> | ||
| 427 | - <type>SortRows</type> | ||
| 428 | - <description/> | ||
| 429 | - <distribute>Y</distribute> | ||
| 430 | - <custom_distribution/> | ||
| 431 | - <copies>1</copies> | ||
| 432 | - <partitioning> | ||
| 433 | - <method>none</method> | ||
| 434 | - <schema_name/> | ||
| 435 | - </partitioning> | ||
| 436 | - <directory>%%java.io.tmpdir%%</directory> | ||
| 437 | - <prefix>out</prefix> | ||
| 438 | - <sort_size>1000000</sort_size> | ||
| 439 | - <free_memory/> | ||
| 440 | - <compress>N</compress> | ||
| 441 | - <compress_variable/> | ||
| 442 | - <unique_rows>N</unique_rows> | ||
| 443 | - <fields> | ||
| 444 | - <field> | ||
| 445 | - <name>fcno</name> | ||
| 446 | - <ascending>Y</ascending> | ||
| 447 | - <case_sensitive>N</case_sensitive> | ||
| 448 | - <presorted>N</presorted> | ||
| 449 | - </field> | ||
| 450 | - </fields> | ||
| 451 | - <cluster_schema/> | ||
| 452 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 453 | - <xloc>642</xloc> | ||
| 454 | - <yloc>325</yloc> | ||
| 455 | - <draw>Y</draw> | ||
| 456 | - </GUI> | ||
| 457 | - </step> | ||
| 458 | - | ||
| 459 | - <step> | ||
| 460 | - <name>时刻表明细分组数据</name> | ||
| 461 | - <type>TableInput</type> | ||
| 462 | - <description/> | ||
| 463 | - <distribute>Y</distribute> | ||
| 464 | - <custom_distribution/> | ||
| 465 | - <copies>1</copies> | ||
| 466 | - <partitioning> | ||
| 467 | - <method>none</method> | ||
| 468 | - <schema_name/> | ||
| 469 | - </partitioning> | ||
| 470 | - <connection>bus_control_variable</connection> | ||
| 471 | - <sql>select 
fcno
, min(xl) xl 
, min(xl_dir) xl_dir
, min(qdz_code) qdz
, min(zdz_code) zdz
, min(bc_type) bc_type 
from bsth_c_s_ttinfo_detail
where ttinfo = ${ttinfoid}
group by fcno</sql> | ||
| 472 | - <limit>0</limit> | ||
| 473 | - <lookup/> | ||
| 474 | - <execute_each_row>N</execute_each_row> | ||
| 475 | - <variables_active>Y</variables_active> | ||
| 476 | - <lazy_conversion_active>N</lazy_conversion_active> | ||
| 477 | - <cluster_schema/> | ||
| 478 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 479 | - <xloc>56</xloc> | ||
| 480 | - <yloc>185</yloc> | ||
| 481 | - <draw>Y</draw> | ||
| 482 | - </GUI> | ||
| 483 | - </step> | ||
| 484 | - | ||
| 485 | - <step> | ||
| 486 | - <name>查找站点名</name> | ||
| 487 | - <type>DBLookup</type> | ||
| 488 | - <description/> | ||
| 489 | - <distribute>N</distribute> | ||
| 490 | - <custom_distribution/> | ||
| 491 | - <copies>1</copies> | ||
| 492 | - <partitioning> | ||
| 493 | - <method>none</method> | ||
| 494 | - <schema_name/> | ||
| 495 | - </partitioning> | ||
| 496 | - <connection>bus_control_variable</connection> | ||
| 497 | - <cache>N</cache> | ||
| 498 | - <cache_load_all>Y</cache_load_all> | ||
| 499 | - <cache_size>0</cache_size> | ||
| 500 | - <lookup> | ||
| 501 | - <schema/> | ||
| 502 | - <table>bsth_c_stationroute</table> | ||
| 503 | - <orderby/> | ||
| 504 | - <fail_on_multiple>N</fail_on_multiple> | ||
| 505 | - <eat_row_on_failure>N</eat_row_on_failure> | ||
| 506 | - <key> | ||
| 507 | - <name>xl</name> | ||
| 508 | - <field>line</field> | ||
| 509 | - <condition>=</condition> | ||
| 510 | - <name2/> | ||
| 511 | - </key> | ||
| 512 | - <key> | ||
| 513 | - <name>xl_dir</name> | ||
| 514 | - <field>directions</field> | ||
| 515 | - <condition>=</condition> | ||
| 516 | - <name2/> | ||
| 517 | - </key> | ||
| 518 | - <key> | ||
| 519 | - <name>zd</name> | ||
| 520 | - <field>station_code</field> | ||
| 521 | - <condition>=</condition> | ||
| 522 | - <name2/> | ||
| 523 | - </key> | ||
| 524 | - <value> | ||
| 525 | - <name>station_name</name> | ||
| 526 | - <rename>zdname</rename> | ||
| 527 | - <default/> | ||
| 528 | - <type>String</type> | ||
| 529 | - </value> | ||
| 530 | - </lookup> | ||
| 531 | - <cluster_schema/> | ||
| 532 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 533 | - <xloc>410</xloc> | ||
| 534 | - <yloc>191</yloc> | ||
| 535 | - <draw>Y</draw> | ||
| 536 | - </GUI> | ||
| 537 | - </step> | ||
| 538 | - | ||
| 539 | - <step> | ||
| 540 | - <name>生成路牌字段</name> | ||
| 541 | - <type>RowGenerator</type> | ||
| 542 | - <description/> | ||
| 543 | - <distribute>Y</distribute> | ||
| 544 | - <custom_distribution/> | ||
| 545 | - <copies>1</copies> | ||
| 546 | - <partitioning> | ||
| 547 | - <method>none</method> | ||
| 548 | - <schema_name/> | ||
| 549 | - </partitioning> | ||
| 550 | - <fields> | ||
| 551 | - <field> | ||
| 552 | - <name>fieldname</name> | ||
| 553 | - <type>String</type> | ||
| 554 | - <format/> | ||
| 555 | - <currency/> | ||
| 556 | - <decimal/> | ||
| 557 | - <group/> | ||
| 558 | - <nullif>路牌</nullif> | ||
| 559 | - <length>-1</length> | ||
| 560 | - <precision>-1</precision> | ||
| 561 | - <set_empty_string>N</set_empty_string> | ||
| 562 | - </field> | ||
| 563 | - <field> | ||
| 564 | - <name>fieldtype</name> | ||
| 565 | - <type>String</type> | ||
| 566 | - <format/> | ||
| 567 | - <currency/> | ||
| 568 | - <decimal/> | ||
| 569 | - <group/> | ||
| 570 | - <nullif>String</nullif> | ||
| 571 | - <length>-1</length> | ||
| 572 | - <precision>-1</precision> | ||
| 573 | - <set_empty_string>N</set_empty_string> | ||
| 574 | - </field> | ||
| 575 | - <field> | ||
| 576 | - <name>fcno</name> | ||
| 577 | - <type>Integer</type> | ||
| 578 | - <format/> | ||
| 579 | - <currency/> | ||
| 580 | - <decimal/> | ||
| 581 | - <group/> | ||
| 582 | - <nullif>0</nullif> | ||
| 583 | - <length>-1</length> | ||
| 584 | - <precision>-1</precision> | ||
| 585 | - <set_empty_string>N</set_empty_string> | ||
| 586 | - </field> | ||
| 587 | - </fields> | ||
| 588 | - <limit>1</limit> | ||
| 589 | - <never_ending>N</never_ending> | ||
| 590 | - <interval_in_ms>5000</interval_in_ms> | ||
| 591 | - <row_time_field>now</row_time_field> | ||
| 592 | - <last_time_field>FiveSecondsAgo</last_time_field> | ||
| 593 | - <cluster_schema/> | ||
| 594 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 595 | - <xloc>530</xloc> | ||
| 596 | - <yloc>194</yloc> | ||
| 597 | - <draw>Y</draw> | ||
| 598 | - </GUI> | ||
| 599 | - </step> | ||
| 600 | - | ||
| 601 | - <step> | ||
| 602 | - <name>计算excel输出字段</name> | ||
| 603 | - <type>ScriptValueMod</type> | ||
| 604 | - <description/> | ||
| 605 | - <distribute>Y</distribute> | ||
| 606 | - <custom_distribution/> | ||
| 607 | - <copies>1</copies> | ||
| 608 | - <partitioning> | ||
| 609 | - <method>none</method> | ||
| 610 | - <schema_name/> | ||
| 611 | - </partitioning> | ||
| 612 | - <compatible>N</compatible> | ||
| 613 | - <optimizationLevel>9</optimizationLevel> | ||
| 614 | - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 615 | - <jsScript_name>Script 1</jsScript_name> | ||
| 616 | - <jsScript_script>//Script here

var fieldname; // 字段名
var fieldtype; // 字段类型

if (bc_type == 'in') {
 fieldname = '进场' + "->" + fcno;
} else if (bc_type == 'out') {
 fieldname = '出场' + "->" + fcno;
} else if (bc_type == 'normal') {
 fieldname = zdname + "->" + fcno;
} else {
 fieldname = zdname + "->" + fcno;
} 

fieldtype = 'String';
</jsScript_script> | ||
| 617 | - </jsScript> </jsScripts> <fields> <field> <name>fieldname</name> | ||
| 618 | - <rename>fieldname</rename> | ||
| 619 | - <type>String</type> | ||
| 620 | - <length>-1</length> | ||
| 621 | - <precision>-1</precision> | ||
| 622 | - <replace>N</replace> | ||
| 623 | - </field> <field> <name>fieldtype</name> | ||
| 624 | - <rename>fieldtype</rename> | ||
| 625 | - <type>String</type> | ||
| 626 | - <length>-1</length> | ||
| 627 | - <precision>-1</precision> | ||
| 628 | - <replace>N</replace> | ||
| 629 | - </field> </fields> <cluster_schema/> | ||
| 630 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 631 | - <xloc>410</xloc> | ||
| 632 | - <yloc>326</yloc> | ||
| 633 | - <draw>Y</draw> | ||
| 634 | - </GUI> | ||
| 635 | - </step> | ||
| 636 | - | ||
| 637 | - <step> | ||
| 638 | - <name>计算反范式元数据</name> | ||
| 639 | - <type>ScriptValueMod</type> | ||
| 640 | - <description/> | ||
| 641 | - <distribute>Y</distribute> | ||
| 642 | - <custom_distribution/> | ||
| 643 | - <copies>1</copies> | ||
| 644 | - <partitioning> | ||
| 645 | - <method>none</method> | ||
| 646 | - <schema_name/> | ||
| 647 | - </partitioning> | ||
| 648 | - <compatible>N</compatible> | ||
| 649 | - <optimizationLevel>9</optimizationLevel> | ||
| 650 | - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 651 | - <jsScript_name>Script 1</jsScript_name> | ||
| 652 | - <jsScript_script>//Script here

var targetfieldname; // 目标字段名
var targettype; // 目标类型
var valuefieldname; // 值字段名
var keyvalue; // 关键字值

if (bc_type == 'in') {
 targetfieldname = '进场' + "->" + fcno;
} else if (bc_type == 'out') {
 targetfieldname = '出场' + "->" + fcno;
} else if (bc_type == 'normal') {
 targetfieldname = zdname + "->" + fcno;
} else {
 targetfieldname = zdname + "->" + fcno;
} 

targettype = 'String';
valuefieldname = 'fcsj';
keyvalue = fcno;
</jsScript_script> | ||
| 653 | - </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name> | ||
| 654 | - <rename>targetfieldname</rename> | ||
| 655 | - <type>String</type> | ||
| 656 | - <length>-1</length> | ||
| 657 | - <precision>-1</precision> | ||
| 658 | - <replace>N</replace> | ||
| 659 | - </field> <field> <name>targettype</name> | ||
| 660 | - <rename>targettype</rename> | ||
| 661 | - <type>String</type> | ||
| 662 | - <length>-1</length> | ||
| 663 | - <precision>-1</precision> | ||
| 664 | - <replace>N</replace> | ||
| 665 | - </field> <field> <name>valuefieldname</name> | ||
| 666 | - <rename>valuefieldname</rename> | ||
| 667 | - <type>String</type> | ||
| 668 | - <length>-1</length> | ||
| 669 | - <precision>-1</precision> | ||
| 670 | - <replace>N</replace> | ||
| 671 | - </field> <field> <name>keyvalue</name> | ||
| 672 | - <rename>keyvalue</rename> | ||
| 673 | - <type>String</type> | ||
| 674 | - <length>-1</length> | ||
| 675 | - <precision>-1</precision> | ||
| 676 | - <replace>N</replace> | ||
| 677 | - </field> </fields> <cluster_schema/> | ||
| 678 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 679 | - <xloc>410</xloc> | ||
| 680 | - <yloc>64</yloc> | ||
| 681 | - <draw>Y</draw> | ||
| 682 | - </GUI> | ||
| 683 | - </step> | ||
| 684 | - | ||
| 685 | - <step> | ||
| 686 | - <name>计算站点</name> | ||
| 687 | - <type>ScriptValueMod</type> | ||
| 688 | - <description/> | ||
| 689 | - <distribute>Y</distribute> | ||
| 690 | - <custom_distribution/> | ||
| 691 | - <copies>1</copies> | ||
| 692 | - <partitioning> | ||
| 693 | - <method>none</method> | ||
| 694 | - <schema_name/> | ||
| 695 | - </partitioning> | ||
| 696 | - <compatible>N</compatible> | ||
| 697 | - <optimizationLevel>9</optimizationLevel> | ||
| 698 | - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 699 | - <jsScript_name>Script 1</jsScript_name> | ||
| 700 | - <jsScript_script>//Script here

var zd;

if (bc_type == 'in') {
 zd = qdz;
} else if (bc_type == 'out') {
 zd = zdz;
} else if (bc_type == 'normal') {
 zd = qdz;
} else {
 zd = qdz;
}
</jsScript_script> | ||
| 701 | - </jsScript> </jsScripts> <fields> <field> <name>zd</name> | ||
| 702 | - <rename>zd</rename> | ||
| 703 | - <type>String</type> | ||
| 704 | - <length>-1</length> | ||
| 705 | - <precision>-1</precision> | ||
| 706 | - <replace>N</replace> | ||
| 707 | - </field> </fields> <cluster_schema/> | ||
| 708 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 709 | - <xloc>300</xloc> | ||
| 710 | - <yloc>190</yloc> | ||
| 711 | - <draw>Y</draw> | ||
| 712 | - </GUI> | ||
| 713 | - </step> | ||
| 714 | - | ||
| 715 | - <step> | ||
| 716 | - <name>过滤记录</name> | ||
| 717 | - <type>FilterRows</type> | ||
| 718 | - <description/> | ||
| 719 | - <distribute>Y</distribute> | ||
| 720 | - <custom_distribution/> | ||
| 721 | - <copies>1</copies> | ||
| 722 | - <partitioning> | ||
| 723 | - <method>none</method> | ||
| 724 | - <schema_name/> | ||
| 725 | - </partitioning> | ||
| 726 | -<send_true_to/> | ||
| 727 | -<send_false_to/> | ||
| 728 | - <compare> | ||
| 729 | -<condition> | ||
| 730 | - <negated>N</negated> | ||
| 731 | - <leftvalue>bc_type</leftvalue> | ||
| 732 | - <function>IS NOT NULL</function> | ||
| 733 | - <rightvalue/> | ||
| 734 | - </condition> | ||
| 735 | - </compare> | ||
| 736 | - <cluster_schema/> | ||
| 737 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 738 | - <xloc>182</xloc> | ||
| 739 | - <yloc>189</yloc> | ||
| 740 | - <draw>Y</draw> | ||
| 741 | - </GUI> | ||
| 742 | - </step> | ||
| 743 | - | ||
| 744 | - <step_error_handling> | ||
| 745 | - </step_error_handling> | ||
| 746 | - <slave-step-copy-partition-distribution> | ||
| 747 | -</slave-step-copy-partition-distribution> | ||
| 748 | - <slave_transformation>N</slave_transformation> | ||
| 749 | - | ||
| 750 | -</transformation> | 1 | +<?xml version="1.0" encoding="UTF-8"?> |
| 2 | +<transformation> | ||
| 3 | + <info> | ||
| 4 | + <name>时刻表明细导出元数据</name> | ||
| 5 | + <description/> | ||
| 6 | + <extended_description/> | ||
| 7 | + <trans_version/> | ||
| 8 | + <trans_type>Normal</trans_type> | ||
| 9 | + <trans_status>0</trans_status> | ||
| 10 | + <directory>/</directory> | ||
| 11 | + <parameters> | ||
| 12 | + <parameter> | ||
| 13 | + <name>filepath</name> | ||
| 14 | + <default_value>/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/ttinfodetail_test.xls</default_value> | ||
| 15 | + <description>时刻表excel导出文件路径名</description> | ||
| 16 | + </parameter> | ||
| 17 | + <parameter> | ||
| 18 | + <name>injectktrfile</name> | ||
| 19 | + <default_value>/Users/xu/resource/project_code/bsth_project/bsth_control_parent/bsth_control/src/main/resources/datatools/ktrs/ttinfodetailDataOutput.ktr</default_value> | ||
| 20 | + <description>注入元数据的ktr文件</description> | ||
| 21 | + </parameter> | ||
| 22 | + <parameter> | ||
| 23 | + <name>ttinfoid</name> | ||
| 24 | + <default_value>56</default_value> | ||
| 25 | + <description>时刻表id</description> | ||
| 26 | + </parameter> | ||
| 27 | + </parameters> | ||
| 28 | + <log> | ||
| 29 | +<trans-log-table><connection/> | ||
| 30 | +<schema/> | ||
| 31 | +<table/> | ||
| 32 | +<size_limit_lines/> | ||
| 33 | +<interval/> | ||
| 34 | +<timeout_days/> | ||
| 35 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table> | ||
| 36 | +<perf-log-table><connection/> | ||
| 37 | +<schema/> | ||
| 38 | +<table/> | ||
| 39 | +<interval/> | ||
| 40 | +<timeout_days/> | ||
| 41 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table> | ||
| 42 | +<channel-log-table><connection/> | ||
| 43 | +<schema/> | ||
| 44 | +<table/> | ||
| 45 | +<timeout_days/> | ||
| 46 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table> | ||
| 47 | +<step-log-table><connection/> | ||
| 48 | +<schema/> | ||
| 49 | +<table/> | ||
| 50 | +<timeout_days/> | ||
| 51 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table> | ||
| 52 | +<metrics-log-table><connection/> | ||
| 53 | +<schema/> | ||
| 54 | +<table/> | ||
| 55 | +<timeout_days/> | ||
| 56 | +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table> | ||
| 57 | + </log> | ||
| 58 | + <maxdate> | ||
| 59 | + <connection/> | ||
| 60 | + <table/> | ||
| 61 | + <field/> | ||
| 62 | + <offset>0.0</offset> | ||
| 63 | + <maxdiff>0.0</maxdiff> | ||
| 64 | + </maxdate> | ||
| 65 | + <size_rowset>10000</size_rowset> | ||
| 66 | + <sleep_time_empty>50</sleep_time_empty> | ||
| 67 | + <sleep_time_full>50</sleep_time_full> | ||
| 68 | + <unique_connections>N</unique_connections> | ||
| 69 | + <feedback_shown>Y</feedback_shown> | ||
| 70 | + <feedback_size>50000</feedback_size> | ||
| 71 | + <using_thread_priorities>Y</using_thread_priorities> | ||
| 72 | + <shared_objects_file/> | ||
| 73 | + <capture_step_performance>N</capture_step_performance> | ||
| 74 | + <step_performance_capturing_delay>1000</step_performance_capturing_delay> | ||
| 75 | + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit> | ||
| 76 | + <dependencies> | ||
| 77 | + </dependencies> | ||
| 78 | + <partitionschemas> | ||
| 79 | + </partitionschemas> | ||
| 80 | + <slaveservers> | ||
| 81 | + </slaveservers> | ||
| 82 | + <clusterschemas> | ||
| 83 | + </clusterschemas> | ||
| 84 | + <created_user>-</created_user> | ||
| 85 | + <created_date>2016/11/15 15:02:41.624</created_date> | ||
| 86 | + <modified_user>-</modified_user> | ||
| 87 | + <modified_date>2016/11/15 15:02:41.624</modified_date> | ||
| 88 | + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key> | ||
| 89 | + <is_key_private>N</is_key_private> | ||
| 90 | + </info> | ||
| 91 | + <notepads> | ||
| 92 | + <notepad> | ||
| 93 | + <note>TODO:如果groupby 加入bctype,
则以发车顺序号,班次类型分组的数据可能重复,
应为班次类型可能不一样(导入之后人为修改的,如正常班次改成区间),
因为导出时必须数据不重复,这里的解决方法,只使用发车顺序号分组,
以后建议,还是原来的方式分组,然后把更新时间晚的去除

以后改成去除重复纪录</note> | ||
| 94 | + <xloc>178</xloc> | ||
| 95 | + <yloc>547</yloc> | ||
| 96 | + <width>406</width> | ||
| 97 | + <heigth>122</heigth> | ||
| 98 | + <fontname>YaHei Consolas Hybrid</fontname> | ||
| 99 | + <fontsize>12</fontsize> | ||
| 100 | + <fontbold>N</fontbold> | ||
| 101 | + <fontitalic>N</fontitalic> | ||
| 102 | + <fontcolorred>0</fontcolorred> | ||
| 103 | + <fontcolorgreen>0</fontcolorgreen> | ||
| 104 | + <fontcolorblue>0</fontcolorblue> | ||
| 105 | + <backgroundcolorred>255</backgroundcolorred> | ||
| 106 | + <backgroundcolorgreen>205</backgroundcolorgreen> | ||
| 107 | + <backgroundcolorblue>112</backgroundcolorblue> | ||
| 108 | + <bordercolorred>100</bordercolorred> | ||
| 109 | + <bordercolorgreen>100</bordercolorgreen> | ||
| 110 | + <bordercolorblue>100</bordercolorblue> | ||
| 111 | + <drawshadow>Y</drawshadow> | ||
| 112 | + </notepad> | ||
| 113 | + </notepads> | ||
| 114 | + <connection> | ||
| 115 | + <name>192.168.168.1_jwgl_dw</name> | ||
| 116 | + <server>192.168.168.1</server> | ||
| 117 | + <type>ORACLE</type> | ||
| 118 | + <access>Native</access> | ||
| 119 | + <database>orcl</database> | ||
| 120 | + <port>1521</port> | ||
| 121 | + <username>jwgl_dw</username> | ||
| 122 | + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password> | ||
| 123 | + <servername/> | ||
| 124 | + <data_tablespace/> | ||
| 125 | + <index_tablespace/> | ||
| 126 | + <attributes> | ||
| 127 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 128 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 129 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 130 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 131 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 132 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 133 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 134 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 135 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 136 | + </attributes> | ||
| 137 | + </connection> | ||
| 138 | + <connection> | ||
| 139 | + <name>bus_control_variable</name> | ||
| 140 | + <server>${v_db_ip}</server> | ||
| 141 | + <type>MYSQL</type> | ||
| 142 | + <access>Native</access> | ||
| 143 | + <database>${v_db_dname}</database> | ||
| 144 | + <port>3306</port> | ||
| 145 | + <username>${v_db_uname}</username> | ||
| 146 | + <password>${v_db_pwd}</password> | ||
| 147 | + <servername/> | ||
| 148 | + <data_tablespace/> | ||
| 149 | + <index_tablespace/> | ||
| 150 | + <attributes> | ||
| 151 | + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute> | ||
| 152 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 153 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 154 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 155 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 156 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 157 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 158 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 159 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 160 | + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 161 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 162 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 163 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 164 | + </attributes> | ||
| 165 | + </connection> | ||
| 166 | + <connection> | ||
| 167 | + <name>bus_control_公司_201</name> | ||
| 168 | + <server>localhost</server> | ||
| 169 | + <type>MYSQL</type> | ||
| 170 | + <access>Native</access> | ||
| 171 | + <database>control</database> | ||
| 172 | + <port>3306</port> | ||
| 173 | + <username>root</username> | ||
| 174 | + <password>Encrypted </password> | ||
| 175 | + <servername/> | ||
| 176 | + <data_tablespace/> | ||
| 177 | + <index_tablespace/> | ||
| 178 | + <attributes> | ||
| 179 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 180 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 181 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 182 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 183 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 184 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 185 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 186 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 187 | + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 188 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 189 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 190 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 191 | + </attributes> | ||
| 192 | + </connection> | ||
| 193 | + <connection> | ||
| 194 | + <name>bus_control_本机</name> | ||
| 195 | + <server>localhost</server> | ||
| 196 | + <type>MYSQL</type> | ||
| 197 | + <access>Native</access> | ||
| 198 | + <database>control</database> | ||
| 199 | + <port>3306</port> | ||
| 200 | + <username>root</username> | ||
| 201 | + <password>Encrypted </password> | ||
| 202 | + <servername/> | ||
| 203 | + <data_tablespace/> | ||
| 204 | + <index_tablespace/> | ||
| 205 | + <attributes> | ||
| 206 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 207 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 208 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 209 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 210 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 211 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 212 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 213 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 214 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 215 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 216 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 217 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 218 | + </attributes> | ||
| 219 | + </connection> | ||
| 220 | + <connection> | ||
| 221 | + <name>xlab_mysql_youle</name> | ||
| 222 | + <server>101.231.124.8</server> | ||
| 223 | + <type>MYSQL</type> | ||
| 224 | + <access>Native</access> | ||
| 225 | + <database>xlab_youle</database> | ||
| 226 | + <port>45687</port> | ||
| 227 | + <username>xlab-youle</username> | ||
| 228 | + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password> | ||
| 229 | + <servername/> | ||
| 230 | + <data_tablespace/> | ||
| 231 | + <index_tablespace/> | ||
| 232 | + <attributes> | ||
| 233 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 234 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 235 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 236 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 237 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 238 | + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute> | ||
| 239 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 240 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 241 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 242 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 243 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 244 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 245 | + </attributes> | ||
| 246 | + </connection> | ||
| 247 | + <connection> | ||
| 248 | + <name>xlab_mysql_youle(本机)</name> | ||
| 249 | + <server>localhost</server> | ||
| 250 | + <type>MYSQL</type> | ||
| 251 | + <access>Native</access> | ||
| 252 | + <database>xlab_youle</database> | ||
| 253 | + <port>3306</port> | ||
| 254 | + <username>root</username> | ||
| 255 | + <password>Encrypted </password> | ||
| 256 | + <servername/> | ||
| 257 | + <data_tablespace/> | ||
| 258 | + <index_tablespace/> | ||
| 259 | + <attributes> | ||
| 260 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 261 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 262 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 263 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 264 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 265 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 266 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 267 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 268 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 269 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 270 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 271 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 272 | + </attributes> | ||
| 273 | + </connection> | ||
| 274 | + <connection> | ||
| 275 | + <name>xlab_youle</name> | ||
| 276 | + <server/> | ||
| 277 | + <type>MYSQL</type> | ||
| 278 | + <access>JNDI</access> | ||
| 279 | + <database>xlab_youle</database> | ||
| 280 | + <port>1521</port> | ||
| 281 | + <username/> | ||
| 282 | + <password>Encrypted </password> | ||
| 283 | + <servername/> | ||
| 284 | + <data_tablespace/> | ||
| 285 | + <index_tablespace/> | ||
| 286 | + <attributes> | ||
| 287 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 288 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 289 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 290 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 291 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 292 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 293 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 294 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 295 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 296 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 297 | + </attributes> | ||
| 298 | + </connection> | ||
| 299 | + <order> | ||
| 300 | + <hop> <from>时刻表明细分组数据</from><to>过滤记录</to><enabled>Y</enabled> </hop> | ||
| 301 | + <hop> <from>过滤记录</from><to>计算站点</to><enabled>Y</enabled> </hop> | ||
| 302 | + <hop> <from>计算excel输出字段</from><to>字段选择</to><enabled>Y</enabled> </hop> | ||
| 303 | + <hop> <from>字段选择</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 304 | + <hop> <from>生成路牌字段</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 305 | + <hop> <from>计算反范式元数据</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 306 | + <hop> <from>排序记录</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 307 | + <hop> <from>计算站点</from><to>查找起点站</to><enabled>Y</enabled> </hop> | ||
| 308 | + <hop> <from>查找起点站</from><to>计算反范式元数据</to><enabled>Y</enabled> </hop> | ||
| 309 | + <hop> <from>查找起点站</from><to>计算excel输出字段</to><enabled>Y</enabled> </hop> | ||
| 310 | + </order> | ||
| 311 | + <step> | ||
| 312 | + <name>ETL元数据注入</name> | ||
| 313 | + <type>MetaInject</type> | ||
| 314 | + <description/> | ||
| 315 | + <distribute>Y</distribute> | ||
| 316 | + <custom_distribution/> | ||
| 317 | + <copies>1</copies> | ||
| 318 | + <partitioning> | ||
| 319 | + <method>none</method> | ||
| 320 | + <schema_name/> | ||
| 321 | + </partitioning> | ||
| 322 | + <specification_method>filename</specification_method> | ||
| 323 | + <trans_object_id/> | ||
| 324 | + <trans_name/> | ||
| 325 | + <filename>${injectktrfile}</filename> | ||
| 326 | + <directory_path/> | ||
| 327 | + <source_step/> | ||
| 328 | + <source_output_fields> </source_output_fields> <target_file/> | ||
| 329 | + <no_execution>N</no_execution> | ||
| 330 | + <stream_source_step/> | ||
| 331 | + <stream_target_step/> | ||
| 332 | + <mappings> <mapping> <target_step_name>列转行</target_step_name> | ||
| 333 | + <target_attribute_key>TARGET_TYPE</target_attribute_key> | ||
| 334 | + <target_detail>Y</target_detail> | ||
| 335 | + <source_step>计算反范式元数据</source_step> | ||
| 336 | + <source_field>targettype</source_field> | ||
| 337 | + </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 338 | + <target_attribute_key>TYPE</target_attribute_key> | ||
| 339 | + <target_detail>Y</target_detail> | ||
| 340 | + <source_step>排序记录</source_step> | ||
| 341 | + <source_field>fieldtype</source_field> | ||
| 342 | + </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 343 | + <target_attribute_key>NAME</target_attribute_key> | ||
| 344 | + <target_detail>Y</target_detail> | ||
| 345 | + <source_step>计算反范式元数据</source_step> | ||
| 346 | + <source_field>valuefieldname</source_field> | ||
| 347 | + </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 348 | + <target_attribute_key>NAME</target_attribute_key> | ||
| 349 | + <target_detail>Y</target_detail> | ||
| 350 | + <source_step>排序记录</source_step> | ||
| 351 | + <source_field>fieldname</source_field> | ||
| 352 | + </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 353 | + <target_attribute_key>TARGET_NAME</target_attribute_key> | ||
| 354 | + <target_detail>Y</target_detail> | ||
| 355 | + <source_step>计算反范式元数据</source_step> | ||
| 356 | + <source_field>targetfieldname</source_field> | ||
| 357 | + </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 358 | + <target_attribute_key>KEY_VALUE</target_attribute_key> | ||
| 359 | + <target_detail>Y</target_detail> | ||
| 360 | + <source_step>计算反范式元数据</source_step> | ||
| 361 | + <source_field>keyvalue</source_field> | ||
| 362 | + </mapping> </mappings> <cluster_schema/> | ||
| 363 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 364 | + <xloc>640</xloc> | ||
| 365 | + <yloc>64</yloc> | ||
| 366 | + <draw>Y</draw> | ||
| 367 | + </GUI> | ||
| 368 | + </step> | ||
| 369 | + | ||
| 370 | + <step> | ||
| 371 | + <name>字段选择</name> | ||
| 372 | + <type>SelectValues</type> | ||
| 373 | + <description/> | ||
| 374 | + <distribute>Y</distribute> | ||
| 375 | + <custom_distribution/> | ||
| 376 | + <copies>1</copies> | ||
| 377 | + <partitioning> | ||
| 378 | + <method>none</method> | ||
| 379 | + <schema_name/> | ||
| 380 | + </partitioning> | ||
| 381 | + <fields> <field> <name>fieldname</name> | ||
| 382 | + <rename/> | ||
| 383 | + <length>-2</length> | ||
| 384 | + <precision>-2</precision> | ||
| 385 | + </field> <field> <name>fieldtype</name> | ||
| 386 | + <rename/> | ||
| 387 | + <length>-2</length> | ||
| 388 | + <precision>-2</precision> | ||
| 389 | + </field> <field> <name>fcno</name> | ||
| 390 | + <rename/> | ||
| 391 | + <length>-2</length> | ||
| 392 | + <precision>-2</precision> | ||
| 393 | + </field> <select_unspecified>N</select_unspecified> | ||
| 394 | + </fields> <cluster_schema/> | ||
| 395 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 396 | + <xloc>533</xloc> | ||
| 397 | + <yloc>325</yloc> | ||
| 398 | + <draw>Y</draw> | ||
| 399 | + </GUI> | ||
| 400 | + </step> | ||
| 401 | + | ||
| 402 | + <step> | ||
| 403 | + <name>排序记录</name> | ||
| 404 | + <type>SortRows</type> | ||
| 405 | + <description/> | ||
| 406 | + <distribute>Y</distribute> | ||
| 407 | + <custom_distribution/> | ||
| 408 | + <copies>1</copies> | ||
| 409 | + <partitioning> | ||
| 410 | + <method>none</method> | ||
| 411 | + <schema_name/> | ||
| 412 | + </partitioning> | ||
| 413 | + <directory>%%java.io.tmpdir%%</directory> | ||
| 414 | + <prefix>out</prefix> | ||
| 415 | + <sort_size>1000000</sort_size> | ||
| 416 | + <free_memory/> | ||
| 417 | + <compress>N</compress> | ||
| 418 | + <compress_variable/> | ||
| 419 | + <unique_rows>N</unique_rows> | ||
| 420 | + <fields> | ||
| 421 | + <field> | ||
| 422 | + <name>fcno</name> | ||
| 423 | + <ascending>Y</ascending> | ||
| 424 | + <case_sensitive>N</case_sensitive> | ||
| 425 | + <presorted>N</presorted> | ||
| 426 | + </field> | ||
| 427 | + </fields> | ||
| 428 | + <cluster_schema/> | ||
| 429 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 430 | + <xloc>642</xloc> | ||
| 431 | + <yloc>325</yloc> | ||
| 432 | + <draw>Y</draw> | ||
| 433 | + </GUI> | ||
| 434 | + </step> | ||
| 435 | + | ||
| 436 | + <step> | ||
| 437 | + <name>时刻表明细分组数据</name> | ||
| 438 | + <type>TableInput</type> | ||
| 439 | + <description/> | ||
| 440 | + <distribute>Y</distribute> | ||
| 441 | + <custom_distribution/> | ||
| 442 | + <copies>1</copies> | ||
| 443 | + <partitioning> | ||
| 444 | + <method>none</method> | ||
| 445 | + <schema_name/> | ||
| 446 | + </partitioning> | ||
| 447 | + <connection>bus_control_variable</connection> | ||
| 448 | + <sql>select 
fcno
, min(xl) xl 
, min(xl_dir) xl_dir
, min(qdz_code) qdz
, min(zdz_code) zdz
, min(bc_type) bc_type 
, min(line_version) line_version
from bsth_c_s_ttinfo_detail
where ttinfo = ${ttinfoid}
group by fcno</sql> | ||
| 449 | + <limit>0</limit> | ||
| 450 | + <lookup/> | ||
| 451 | + <execute_each_row>N</execute_each_row> | ||
| 452 | + <variables_active>Y</variables_active> | ||
| 453 | + <lazy_conversion_active>N</lazy_conversion_active> | ||
| 454 | + <cluster_schema/> | ||
| 455 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 456 | + <xloc>56</xloc> | ||
| 457 | + <yloc>192</yloc> | ||
| 458 | + <draw>Y</draw> | ||
| 459 | + </GUI> | ||
| 460 | + </step> | ||
| 461 | + | ||
| 462 | + <step> | ||
| 463 | + <name>生成路牌字段</name> | ||
| 464 | + <type>RowGenerator</type> | ||
| 465 | + <description/> | ||
| 466 | + <distribute>Y</distribute> | ||
| 467 | + <custom_distribution/> | ||
| 468 | + <copies>1</copies> | ||
| 469 | + <partitioning> | ||
| 470 | + <method>none</method> | ||
| 471 | + <schema_name/> | ||
| 472 | + </partitioning> | ||
| 473 | + <fields> | ||
| 474 | + <field> | ||
| 475 | + <name>fieldname</name> | ||
| 476 | + <type>String</type> | ||
| 477 | + <format/> | ||
| 478 | + <currency/> | ||
| 479 | + <decimal/> | ||
| 480 | + <group/> | ||
| 481 | + <nullif>路牌</nullif> | ||
| 482 | + <length>-1</length> | ||
| 483 | + <precision>-1</precision> | ||
| 484 | + <set_empty_string>N</set_empty_string> | ||
| 485 | + </field> | ||
| 486 | + <field> | ||
| 487 | + <name>fieldtype</name> | ||
| 488 | + <type>String</type> | ||
| 489 | + <format/> | ||
| 490 | + <currency/> | ||
| 491 | + <decimal/> | ||
| 492 | + <group/> | ||
| 493 | + <nullif>String</nullif> | ||
| 494 | + <length>-1</length> | ||
| 495 | + <precision>-1</precision> | ||
| 496 | + <set_empty_string>N</set_empty_string> | ||
| 497 | + </field> | ||
| 498 | + <field> | ||
| 499 | + <name>fcno</name> | ||
| 500 | + <type>Integer</type> | ||
| 501 | + <format/> | ||
| 502 | + <currency/> | ||
| 503 | + <decimal/> | ||
| 504 | + <group/> | ||
| 505 | + <nullif>0</nullif> | ||
| 506 | + <length>-1</length> | ||
| 507 | + <precision>-1</precision> | ||
| 508 | + <set_empty_string>N</set_empty_string> | ||
| 509 | + </field> | ||
| 510 | + </fields> | ||
| 511 | + <limit>1</limit> | ||
| 512 | + <never_ending>N</never_ending> | ||
| 513 | + <interval_in_ms>5000</interval_in_ms> | ||
| 514 | + <row_time_field>now</row_time_field> | ||
| 515 | + <last_time_field>FiveSecondsAgo</last_time_field> | ||
| 516 | + <cluster_schema/> | ||
| 517 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 518 | + <xloc>530</xloc> | ||
| 519 | + <yloc>194</yloc> | ||
| 520 | + <draw>Y</draw> | ||
| 521 | + </GUI> | ||
| 522 | + </step> | ||
| 523 | + | ||
| 524 | + <step> | ||
| 525 | + <name>计算excel输出字段</name> | ||
| 526 | + <type>ScriptValueMod</type> | ||
| 527 | + <description/> | ||
| 528 | + <distribute>Y</distribute> | ||
| 529 | + <custom_distribution/> | ||
| 530 | + <copies>1</copies> | ||
| 531 | + <partitioning> | ||
| 532 | + <method>none</method> | ||
| 533 | + <schema_name/> | ||
| 534 | + </partitioning> | ||
| 535 | + <compatible>N</compatible> | ||
| 536 | + <optimizationLevel>9</optimizationLevel> | ||
| 537 | + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 538 | + <jsScript_name>Script 1</jsScript_name> | ||
| 539 | + <jsScript_script>//Script here

var fieldname; // 字段名
var fieldtype; // 字段类型

if (bc_type == 'in') {
 fieldname = '进场' + "->" + fcno;
} else if (bc_type == 'out') {
 fieldname = '出场' + "->" + fcno;
} else if (bc_type == 'normal') {
 fieldname = zdname + "->" + fcno;
} else {
 fieldname = zdname + "->" + fcno;
} 

fieldtype = 'String';
</jsScript_script> | ||
| 540 | + </jsScript> </jsScripts> <fields> <field> <name>fieldname</name> | ||
| 541 | + <rename>fieldname</rename> | ||
| 542 | + <type>String</type> | ||
| 543 | + <length>-1</length> | ||
| 544 | + <precision>-1</precision> | ||
| 545 | + <replace>N</replace> | ||
| 546 | + </field> <field> <name>fieldtype</name> | ||
| 547 | + <rename>fieldtype</rename> | ||
| 548 | + <type>String</type> | ||
| 549 | + <length>-1</length> | ||
| 550 | + <precision>-1</precision> | ||
| 551 | + <replace>N</replace> | ||
| 552 | + </field> </fields> <cluster_schema/> | ||
| 553 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 554 | + <xloc>410</xloc> | ||
| 555 | + <yloc>326</yloc> | ||
| 556 | + <draw>Y</draw> | ||
| 557 | + </GUI> | ||
| 558 | + </step> | ||
| 559 | + | ||
| 560 | + <step> | ||
| 561 | + <name>计算反范式元数据</name> | ||
| 562 | + <type>ScriptValueMod</type> | ||
| 563 | + <description/> | ||
| 564 | + <distribute>Y</distribute> | ||
| 565 | + <custom_distribution/> | ||
| 566 | + <copies>1</copies> | ||
| 567 | + <partitioning> | ||
| 568 | + <method>none</method> | ||
| 569 | + <schema_name/> | ||
| 570 | + </partitioning> | ||
| 571 | + <compatible>N</compatible> | ||
| 572 | + <optimizationLevel>9</optimizationLevel> | ||
| 573 | + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 574 | + <jsScript_name>Script 1</jsScript_name> | ||
| 575 | + <jsScript_script>//Script here

var targetfieldname; // 目标字段名
var targettype; // 目标类型
var valuefieldname; // 值字段名
var keyvalue; // 关键字值

if (bc_type == 'in') {
 targetfieldname = '进场' + "->" + fcno;
} else if (bc_type == 'out') {
 targetfieldname = '出场' + "->" + fcno;
} else if (bc_type == 'normal') {
 targetfieldname = zdname + "->" + fcno;
} else {
 targetfieldname = zdname + "->" + fcno;
} 

targettype = 'String';
valuefieldname = 'fcsj';
keyvalue = fcno;
</jsScript_script> | ||
| 576 | + </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name> | ||
| 577 | + <rename>targetfieldname</rename> | ||
| 578 | + <type>String</type> | ||
| 579 | + <length>-1</length> | ||
| 580 | + <precision>-1</precision> | ||
| 581 | + <replace>N</replace> | ||
| 582 | + </field> <field> <name>targettype</name> | ||
| 583 | + <rename>targettype</rename> | ||
| 584 | + <type>String</type> | ||
| 585 | + <length>-1</length> | ||
| 586 | + <precision>-1</precision> | ||
| 587 | + <replace>N</replace> | ||
| 588 | + </field> <field> <name>valuefieldname</name> | ||
| 589 | + <rename>valuefieldname</rename> | ||
| 590 | + <type>String</type> | ||
| 591 | + <length>-1</length> | ||
| 592 | + <precision>-1</precision> | ||
| 593 | + <replace>N</replace> | ||
| 594 | + </field> <field> <name>keyvalue</name> | ||
| 595 | + <rename>keyvalue</rename> | ||
| 596 | + <type>String</type> | ||
| 597 | + <length>-1</length> | ||
| 598 | + <precision>-1</precision> | ||
| 599 | + <replace>N</replace> | ||
| 600 | + </field> </fields> <cluster_schema/> | ||
| 601 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 602 | + <xloc>410</xloc> | ||
| 603 | + <yloc>64</yloc> | ||
| 604 | + <draw>Y</draw> | ||
| 605 | + </GUI> | ||
| 606 | + </step> | ||
| 607 | + | ||
| 608 | + <step> | ||
| 609 | + <name>计算站点</name> | ||
| 610 | + <type>ScriptValueMod</type> | ||
| 611 | + <description/> | ||
| 612 | + <distribute>Y</distribute> | ||
| 613 | + <custom_distribution/> | ||
| 614 | + <copies>1</copies> | ||
| 615 | + <partitioning> | ||
| 616 | + <method>none</method> | ||
| 617 | + <schema_name/> | ||
| 618 | + </partitioning> | ||
| 619 | + <compatible>N</compatible> | ||
| 620 | + <optimizationLevel>9</optimizationLevel> | ||
| 621 | + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 622 | + <jsScript_name>Script 1</jsScript_name> | ||
| 623 | + <jsScript_script>//Script here

/*
var zd;

if (bc_type == 'in') {
 zd = qdz;
} else if (bc_type == 'out') {
 zd = zdz;
} else if (bc_type == 'normal') {
 zd = qdz;
} else {
 zd = qdz;
}
*/

// 站点标志
var smark = "B";
var destroy = 0;</jsScript_script> | ||
| 624 | + </jsScript> </jsScripts> <fields> <field> <name>smark</name> | ||
| 625 | + <rename>smark</rename> | ||
| 626 | + <type>String</type> | ||
| 627 | + <length>-1</length> | ||
| 628 | + <precision>-1</precision> | ||
| 629 | + <replace>N</replace> | ||
| 630 | + </field> <field> <name>destroy</name> | ||
| 631 | + <rename>destroy</rename> | ||
| 632 | + <type>Number</type> | ||
| 633 | + <length>16</length> | ||
| 634 | + <precision>2</precision> | ||
| 635 | + <replace>N</replace> | ||
| 636 | + </field> </fields> <cluster_schema/> | ||
| 637 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 638 | + <xloc>300</xloc> | ||
| 639 | + <yloc>190</yloc> | ||
| 640 | + <draw>Y</draw> | ||
| 641 | + </GUI> | ||
| 642 | + </step> | ||
| 643 | + | ||
| 644 | + <step> | ||
| 645 | + <name>过滤记录</name> | ||
| 646 | + <type>FilterRows</type> | ||
| 647 | + <description/> | ||
| 648 | + <distribute>Y</distribute> | ||
| 649 | + <custom_distribution/> | ||
| 650 | + <copies>1</copies> | ||
| 651 | + <partitioning> | ||
| 652 | + <method>none</method> | ||
| 653 | + <schema_name/> | ||
| 654 | + </partitioning> | ||
| 655 | +<send_true_to/> | ||
| 656 | +<send_false_to/> | ||
| 657 | + <compare> | ||
| 658 | +<condition> | ||
| 659 | + <negated>N</negated> | ||
| 660 | + <conditions> | ||
| 661 | + <condition> | ||
| 662 | + <negated>N</negated> | ||
| 663 | + <leftvalue>bc_type</leftvalue> | ||
| 664 | + <function>IS NOT NULL</function> | ||
| 665 | + <rightvalue/> | ||
| 666 | + </condition> | ||
| 667 | + </conditions> | ||
| 668 | + </condition> | ||
| 669 | + </compare> | ||
| 670 | + <cluster_schema/> | ||
| 671 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 672 | + <xloc>182</xloc> | ||
| 673 | + <yloc>189</yloc> | ||
| 674 | + <draw>Y</draw> | ||
| 675 | + </GUI> | ||
| 676 | + </step> | ||
| 677 | + | ||
| 678 | + <step> | ||
| 679 | + <name>查找起点站</name> | ||
| 680 | + <type>DBLookup</type> | ||
| 681 | + <description/> | ||
| 682 | + <distribute>N</distribute> | ||
| 683 | + <custom_distribution/> | ||
| 684 | + <copies>1</copies> | ||
| 685 | + <partitioning> | ||
| 686 | + <method>none</method> | ||
| 687 | + <schema_name/> | ||
| 688 | + </partitioning> | ||
| 689 | + <connection>bus_control_variable</connection> | ||
| 690 | + <cache>N</cache> | ||
| 691 | + <cache_load_all>Y</cache_load_all> | ||
| 692 | + <cache_size>0</cache_size> | ||
| 693 | + <lookup> | ||
| 694 | + <schema/> | ||
| 695 | + <table>bsth_c_ls_stationroute</table> | ||
| 696 | + <orderby/> | ||
| 697 | + <fail_on_multiple>N</fail_on_multiple> | ||
| 698 | + <eat_row_on_failure>N</eat_row_on_failure> | ||
| 699 | + <key> | ||
| 700 | + <name>xl</name> | ||
| 701 | + <field>line</field> | ||
| 702 | + <condition>=</condition> | ||
| 703 | + <name2/> | ||
| 704 | + </key> | ||
| 705 | + <key> | ||
| 706 | + <name>xl_dir</name> | ||
| 707 | + <field>directions</field> | ||
| 708 | + <condition>=</condition> | ||
| 709 | + <name2/> | ||
| 710 | + </key> | ||
| 711 | + <key> | ||
| 712 | + <name>line_version</name> | ||
| 713 | + <field>versions</field> | ||
| 714 | + <condition>=</condition> | ||
| 715 | + <name2/> | ||
| 716 | + </key> | ||
| 717 | + <key> | ||
| 718 | + <name>smark</name> | ||
| 719 | + <field>station_mark</field> | ||
| 720 | + <condition>=</condition> | ||
| 721 | + <name2/> | ||
| 722 | + </key> | ||
| 723 | + <key> | ||
| 724 | + <name>destroy</name> | ||
| 725 | + <field>destroy</field> | ||
| 726 | + <condition>=</condition> | ||
| 727 | + <name2/> | ||
| 728 | + </key> | ||
| 729 | + <value> | ||
| 730 | + <name>station_name</name> | ||
| 731 | + <rename>zdname</rename> | ||
| 732 | + <default/> | ||
| 733 | + <type>String</type> | ||
| 734 | + </value> | ||
| 735 | + </lookup> | ||
| 736 | + <cluster_schema/> | ||
| 737 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 738 | + <xloc>412</xloc> | ||
| 739 | + <yloc>189</yloc> | ||
| 740 | + <draw>Y</draw> | ||
| 741 | + </GUI> | ||
| 742 | + </step> | ||
| 743 | + | ||
| 744 | + <step_error_handling> | ||
| 745 | + </step_error_handling> | ||
| 746 | + <slave-step-copy-partition-distribution> | ||
| 747 | +</slave-step-copy-partition-distribution> | ||
| 748 | + <slave_transformation>N</slave_transformation> | ||
| 749 | + | ||
| 750 | +</transformation> |
src/main/resources/static/pages/base/geo_data_edit/js/change_line.js
| 1 | -/** | ||
| 2 | - * 线路切换面板 | ||
| 3 | - */ | ||
| 4 | - | ||
| 5 | -var gb_change_line = (function () { | ||
| 6 | - | ||
| 7 | - var data; | ||
| 8 | - | ||
| 9 | - var init = function () { | ||
| 10 | - | ||
| 11 | - var ep = EventProxy.create("findLine", "findCompanyData", function (lines, comps) { | ||
| 12 | - //根据公司权限过滤线路 | ||
| 13 | - var lineArray = []; | ||
| 14 | - for(var i=0,line;line=lines[i++];){ | ||
| 15 | - if(comps.indexOf(line.company + '_' + line.brancheCompany)){ | ||
| 16 | - //拼音映射 | ||
| 17 | - lineArray.push({ | ||
| 18 | - name: line.name, | ||
| 19 | - code: line.lineCode, | ||
| 20 | - came: pinyin.getCamelChars(line.name), | ||
| 21 | - full: pinyin.getFullChars(line.name).toUpperCase() | ||
| 22 | - }); | ||
| 23 | - } | ||
| 24 | - } | ||
| 25 | - | ||
| 26 | - data = lineArray; | ||
| 27 | - | ||
| 28 | - //按更新时间排序 | ||
| 29 | - lineArray.sort(function (a, b) { | ||
| 30 | - return b.updateDate - a.updateDate; | ||
| 31 | - }); | ||
| 32 | - | ||
| 33 | - //渲染页面 | ||
| 34 | - var htmlStr = template('geo_d_e_dropdown_list-temp', {list: lineArray.slice(0, 10), ellipsis: lineArray.length > 10}); | ||
| 35 | - $('.line_change_panel ul.uk-list').html(htmlStr); | ||
| 36 | - }); | ||
| 37 | - | ||
| 38 | - $.get('/line/all', {destroy_eq: 0}, function (rs) { | ||
| 39 | - ep.emit('findLine', rs); | ||
| 40 | - }); | ||
| 41 | - | ||
| 42 | - $.get('/user/companyData', {}, function (rs) { | ||
| 43 | - var filters = []; | ||
| 44 | - for(var i=0,obj;obj=rs[i++];){ | ||
| 45 | - | ||
| 46 | - for(var j=0,sCom;sCom=obj.children[j++];){ | ||
| 47 | - filters.push(obj.companyCode + '_' + sCom.code); | ||
| 48 | - } | ||
| 49 | - } | ||
| 50 | - ep.emit('findCompanyData', filters); | ||
| 51 | - }); | ||
| 52 | - }; | ||
| 53 | - | ||
| 54 | - /** | ||
| 55 | - * 线路搜索 | ||
| 56 | - */ | ||
| 57 | - var search_k; | ||
| 58 | - var search_flag; | ||
| 59 | - $('.line_change_panel #line_search_input').on('input', function () { | ||
| 60 | - search_k = $(this).val(); | ||
| 61 | - if(search_flag) | ||
| 62 | - return; | ||
| 63 | - search_flag = true; | ||
| 64 | - | ||
| 65 | - setTimeout(function () { | ||
| 66 | - _search(search_k); | ||
| 67 | - search_flag = false; | ||
| 68 | - }, 300); | ||
| 69 | - }); | ||
| 70 | - | ||
| 71 | - function _search(v) { | ||
| 72 | - v = v.toUpperCase(); | ||
| 73 | - var rs = [], ellipsis; | ||
| 74 | - for(var i=0,obj;obj=data[i++];){ | ||
| 75 | - if(obj.came.indexOf(v)!=-1 | ||
| 76 | - || obj.full.indexOf(v)!=-1 | ||
| 77 | - || obj.name.indexOf(v)!=-1) | ||
| 78 | - rs.push(obj); | ||
| 79 | - | ||
| 80 | - if(rs.length >= 10){ | ||
| 81 | - ellipsis = true; | ||
| 82 | - break; | ||
| 83 | - } | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - var htmlStr = template('geo_d_e_dropdown_list-temp', {list: rs, ellipsis: ellipsis}); | ||
| 87 | - $('.line_change_panel ul.uk-list').empty().html(htmlStr); | ||
| 88 | - } | ||
| 89 | - | ||
| 90 | - /** | ||
| 91 | - * 点击切换线路 data-code | ||
| 92 | - */ | ||
| 93 | - $('.line_change_panel ul.uk-list').on('click', 'li[data-code]', function () { | ||
| 94 | - var lineCode = $(this).data('code'); | ||
| 95 | - storage.setItem('geo_data_edit_line_code' , lineCode); | ||
| 96 | - storage.removeItem('geo_data_edit_line_version'); | ||
| 97 | - | ||
| 98 | - $loadPanel.show(); | ||
| 99 | - clearAll(); | ||
| 100 | - startup(); | ||
| 101 | - }); | ||
| 102 | - | ||
| 103 | - return { | ||
| 104 | - init: init | ||
| 105 | - }; | 1 | +/** |
| 2 | + * 线路切换面板 | ||
| 3 | + */ | ||
| 4 | + | ||
| 5 | +var gb_change_line = (function () { | ||
| 6 | + | ||
| 7 | + var data; | ||
| 8 | + | ||
| 9 | + var init = function () { | ||
| 10 | + | ||
| 11 | + var ep = EventProxy.create("findLine", "findCompanyData", function (lines, comps) { | ||
| 12 | + //根据公司权限过滤线路 | ||
| 13 | + var lineArray = []; | ||
| 14 | + for(var i=0,line;line=lines[i++];){ | ||
| 15 | + if(comps.indexOf(line.company + '_' + line.brancheCompany)){ | ||
| 16 | + //拼音映射 | ||
| 17 | + lineArray.push({ | ||
| 18 | + name: line.name, | ||
| 19 | + code: line.lineCode, | ||
| 20 | + came: pinyin.getCamelChars(line.name), | ||
| 21 | + full: pinyin.getFullChars(line.name).toUpperCase() | ||
| 22 | + }); | ||
| 23 | + } | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + data = lineArray; | ||
| 27 | + | ||
| 28 | + //按更新时间排序 | ||
| 29 | + lineArray.sort(function (a, b) { | ||
| 30 | + return b.updateDate - a.updateDate; | ||
| 31 | + }); | ||
| 32 | + | ||
| 33 | + //渲染页面 | ||
| 34 | + var htmlStr = template('geo_d_e_dropdown_list-temp', {list: lineArray.slice(0, 10), ellipsis: lineArray.length > 10}); | ||
| 35 | + $('.line_change_panel ul.uk-list').html(htmlStr); | ||
| 36 | + }); | ||
| 37 | + | ||
| 38 | + $.get('/line/all', {destroy_eq: 0}, function (rs) { | ||
| 39 | + ep.emit('findLine', rs); | ||
| 40 | + }); | ||
| 41 | + | ||
| 42 | + $.get('/user/companyData', {}, function (rs) { | ||
| 43 | + var filters = []; | ||
| 44 | + for(var i=0,obj;obj=rs[i++];){ | ||
| 45 | + | ||
| 46 | + for(var j=0,sCom;sCom=obj.children[j++];){ | ||
| 47 | + filters.push(obj.companyCode + '_' + sCom.code); | ||
| 48 | + } | ||
| 49 | + } | ||
| 50 | + ep.emit('findCompanyData', filters); | ||
| 51 | + }); | ||
| 52 | + }; | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 线路搜索 | ||
| 56 | + */ | ||
| 57 | + var search_k; | ||
| 58 | + var search_flag; | ||
| 59 | + $('.line_change_panel #line_search_input').on('input', function () { | ||
| 60 | + search_k = $(this).val(); | ||
| 61 | + if(search_flag) | ||
| 62 | + return; | ||
| 63 | + search_flag = true; | ||
| 64 | + | ||
| 65 | + setTimeout(function () { | ||
| 66 | + _search(search_k); | ||
| 67 | + search_flag = false; | ||
| 68 | + }, 300); | ||
| 69 | + }); | ||
| 70 | + | ||
| 71 | + function _search(v) { | ||
| 72 | + v = v.toUpperCase(); | ||
| 73 | + var rs = [], ellipsis; | ||
| 74 | + for(var i=0,obj;obj=data[i++];){ | ||
| 75 | + if(obj.came.indexOf(v)!=-1 | ||
| 76 | + || obj.full.indexOf(v)!=-1 | ||
| 77 | + || obj.name.indexOf(v)!=-1) | ||
| 78 | + rs.push(obj); | ||
| 79 | + | ||
| 80 | + if(rs.length >= 10){ | ||
| 81 | + ellipsis = true; | ||
| 82 | + break; | ||
| 83 | + } | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + var htmlStr = template('geo_d_e_dropdown_list-temp', {list: rs, ellipsis: ellipsis}); | ||
| 87 | + $('.line_change_panel ul.uk-list').empty().html(htmlStr); | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + /** | ||
| 91 | + * 点击切换线路 data-code | ||
| 92 | + */ | ||
| 93 | + $('.line_change_panel ul.uk-list').on('click', 'li[data-code]', function () { | ||
| 94 | + var lineCode = $(this).data('code'); | ||
| 95 | + storage.setItem('geo_data_edit_line_code' , lineCode); | ||
| 96 | + storage.removeItem('geo_data_edit_line_version'); | ||
| 97 | + | ||
| 98 | + $loadPanel.show(); | ||
| 99 | + clearAll(); | ||
| 100 | + startup(); | ||
| 101 | + }); | ||
| 102 | + | ||
| 103 | + return { | ||
| 104 | + init: init | ||
| 105 | + }; | ||
| 106 | })(); | 106 | })(); |
| 107 | \ No newline at end of file | 107 | \ No newline at end of file |
src/main/resources/static/pages/base/timesmodel/gantt.html
| @@ -44,9 +44,12 @@ | @@ -44,9 +44,12 @@ | ||
| 44 | <div class="btn-group btn-group-devided countbtn" data-toggle="buttons"> | 44 | <div class="btn-group btn-group-devided countbtn" data-toggle="buttons"> |
| 45 | <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 统计数据</a> | 45 | <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 统计数据</a> |
| 46 | </div> | 46 | </div> |
| 47 | - <div class="btn-group btn-group-devided checkbtn" data-toggle="buttons"> | ||
| 48 | - <a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a> | ||
| 49 | - </div> | 47 | + <!--<div class="btn-group btn-group-devided checkbtn" data-toggle="buttons">--> |
| 48 | + <!--<a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a>--> | ||
| 49 | + <!--</div>--> | ||
| 50 | + <div class="btn-group btn-group-devided exportbtn" data-toggle="buttons"> | ||
| 51 | + <!--<a class="btn btn-circle blue exportAdd" href="javascript:;" data-pjax><i class="fa fa-file-excel-o"></i> 导出数据</a>--> | ||
| 52 | + </div> | ||
| 50 | <div class="btn-group checkbtn"> | 53 | <div class="btn-group checkbtn"> |
| 51 | <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown" aria-expanded="false"> | 54 | <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown" aria-expanded="false"> |
| 52 | <i class="fa fa-cog"></i> | 55 | <i class="fa fa-cog"></i> |
src/main/resources/static/pages/base/timesmodel/js/add-form-reload.js
| @@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
| 7 | $('.openHaveSkb').on('click',function() { | 7 | $('.openHaveSkb').on('click',function() { |
| 8 | var skbId = $("#skbNameSelect").val(); | 8 | var skbId = $("#skbNameSelect").val(); |
| 9 | var argus = { | 9 | var argus = { |
| 10 | - baseRes:"0",carPark:"FFFFFF68",downInMileage:"0", | 10 | + baseRes:"0",czarPark:"FFFFFF68",downInMileage:"0", |
| 11 | downInTimer:"0",downMileage:"3.5",downOutMileage:"0", | 11 | downInTimer:"0",downMileage:"3.5",downOutMileage:"0", |
| 12 | downOutTimer:"0",downStopTime:"10",downTravelTime:"7", | 12 | downOutTimer:"0",downStopTime:"10",downTravelTime:"7", |
| 13 | down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30", | 13 | down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30", |
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
| @@ -372,11 +372,22 @@ var SKBFormWizard = function() { | @@ -372,11 +372,22 @@ var SKBFormWizard = function() { | ||
| 372 | } | 372 | } |
| 373 | sjdArr[s].num = num; | 373 | sjdArr[s].num = num; |
| 374 | } | 374 | } |
| 375 | - map.zgfbeforepcs = sjdArr[0].num;// 早高峰前配车数 | ||
| 376 | - map.zgfpcs = sjdArr[2].num;// 早高峰配车数 | ||
| 377 | - map.gfzjpcs = sjdArr[4].num;// 高峰之间配车数 | ||
| 378 | - map.wgfpcs = sjdArr[2].num ;// 晚高峰配车数 | ||
| 379 | - map.wgfafterpcs = sjdArr[1].num + sjdArr[3].num;// 晚高峰后配车数 | 375 | + |
| 376 | + // 注意:如果为0,设置成 10 17默认值 | ||
| 377 | + map.zgfbeforepcs = sjdArr[0].num == 0 ? 10 : sjdArr[0].num;// 早高峰前配车数 | ||
| 378 | + map.zgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num;// 早高峰配车数 | ||
| 379 | + map.gfzjpcs = sjdArr[4].num == 0 ? 10 : sjdArr[4].num;// 高峰之间配车数 | ||
| 380 | + map.wgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num ;// 晚高峰配车数 | ||
| 381 | + map.wgfafterpcs = (sjdArr[1].num + sjdArr[3].num) == 0 ? 10 : sjdArr[1].num + sjdArr[3].num;// 晚高峰后配车数 | ||
| 382 | + | ||
| 383 | + // 注意:高峰 5 低谷 20 其他 10 | ||
| 384 | + map.upStopTime = 10; | ||
| 385 | + map.downStopTime = 10; | ||
| 386 | + map.mixstopTime = 5; | ||
| 387 | + map.maxstopTime = 20; | ||
| 388 | + | ||
| 389 | + //alert("dddd"); | ||
| 390 | + | ||
| 380 | // 返回参数详情模版. | 391 | // 返回参数详情模版. |
| 381 | return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); | 392 | return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); |
| 382 | }); | 393 | }); |
| @@ -640,13 +651,49 @@ var SKBFormWizard = function() { | @@ -640,13 +651,49 @@ var SKBFormWizard = function() { | ||
| 640 | 651 | ||
| 641 | // 表单提交. | 652 | // 表单提交. |
| 642 | function submit(p,argus) { | 653 | function submit(p,argus) { |
| 643 | - storage.setItem("Gantt_AgursData",JSON.stringify(argus)); | ||
| 644 | - if(p!=null) { | ||
| 645 | - storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | ||
| 646 | - }else { | ||
| 647 | - storage.setItem('isDoDate',''); | ||
| 648 | - } | ||
| 649 | - loadPage('gantt.html'); | 654 | + var baseRes2 = $('#submit_argus_form input[name="baseRes"]:checked').val();// 获取参数方式值. |
| 655 | + if (baseRes2 == 0) { | ||
| 656 | + // TODO:客流暂时有问题,直接使用现有时刻表打开,日后有机会再改好 | ||
| 657 | + var skbId2 = $("#skbNameSelect").val(); | ||
| 658 | + var argus2 = { | ||
| 659 | + baseRes:"0",carPark:"FFFFFF68",downInMileage:"0", | ||
| 660 | + downInTimer:"0",downMileage:"3.5",downOutMileage:"0", | ||
| 661 | + downOutTimer:"0",downStopTime:"10",downTravelTime:"7", | ||
| 662 | + down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30", | ||
| 663 | + earlyStartTime:"06:31",earlyUpTime:"10",endStationEndTime:"22:30", | ||
| 664 | + endStationFirstTime:"05:50",gfzjpcs:"7",istidc:1,kfsj:"",krl:"50", | ||
| 665 | + lateDownTime:"7",lateEndTime:"18:30",lateStartTime:"16:31", | ||
| 666 | + lateUpTime:"10",lb:"15",lineName:"801702_801702_1109路", | ||
| 667 | + linePlayType:"0",maxstopTime:"20",mixstopTime:"8",qjDownTime:"", | ||
| 668 | + qjUpTime:"",skbName:skbId2,skbmc:"2016.4.6双时刻表", | ||
| 669 | + startStationEndTime:"23:00",startStationFirstTime:"06:15",tcc_id:45,troughDownTime:"7",troughUpTime:"10",upInMileage:"0", | ||
| 670 | + upInTimer:"10",upMileage:"3.5",upOutMileage:"0",upOutTimer:"10",upStopTime:"10",upTravelTime:"10", | ||
| 671 | + up_s:"26912_26921",wgfafterpcs:"5",wgfpcs:"10",workeDinner:"20",workeLunch:"20",xlmc:"1109路",zgfbeforepcs:"3",zgfpcs:"10",} | ||
| 672 | + // 获取时刻表明细. | ||
| 673 | + $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) { | ||
| 674 | + var p = formatData(data.data,argus2); | ||
| 675 | + // TODO:添加parent | ||
| 676 | + for (var ii = 0; ii < p.rsD.length; ii++) { | ||
| 677 | + p.rsD[ii].parent = p.rsD[ii].lpNo;// 路牌名称 | ||
| 678 | + } | ||
| 679 | + | ||
| 680 | + argus2.istidc = 1; | ||
| 681 | + var storage = window.localStorage; | ||
| 682 | + storage.setItem("Gantt_AgursData",JSON.stringify(argus2)); | ||
| 683 | + storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | ||
| 684 | + loadPage('gantt.html'); | ||
| 685 | + }); | ||
| 686 | + } else { | ||
| 687 | + storage.setItem("Gantt_AgursData",JSON.stringify(argus)); | ||
| 688 | + if(p!=null) { | ||
| 689 | + storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | ||
| 690 | + }else { | ||
| 691 | + storage.setItem('isDoDate',''); | ||
| 692 | + } | ||
| 693 | + loadPage('gantt.html'); | ||
| 694 | + } | ||
| 695 | + | ||
| 696 | + | ||
| 650 | } | 697 | } |
| 651 | } | 698 | } |
| 652 | }); | 699 | }); |
src/main/resources/static/pages/base/timesmodel/js/gantt.js
| @@ -83,7 +83,9 @@ | @@ -83,7 +83,9 @@ | ||
| 83 | // TODO:绘制gantt图表 | 83 | // TODO:绘制gantt图表 |
| 84 | // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置 | 84 | // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置 |
| 85 | // TODO:CSMap.maxCar 之后要设定一下的 | 85 | // TODO:CSMap.maxCar 之后要设定一下的 |
| 86 | + $(".exportbtn").html("<a class=\"btn btn-circle blue exportAdd\" href=\"javascript:;\" data-pjax><i class=\"fa fa-file-excel-o\"></i> 导出数据</a>"); | ||
| 86 | data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar); | 87 | data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar); |
| 88 | + Main_v2.exportDataConfig(data.aInternalLpObj); | ||
| 87 | } | 89 | } |
| 88 | 90 | ||
| 89 | }else { | 91 | }else { |
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalBcObj.js
| @@ -51,7 +51,7 @@ var InternalBcObj = function( | @@ -51,7 +51,7 @@ var InternalBcObj = function( | ||
| 51 | //------------------- get/set 方法 -------------------// | 51 | //------------------- get/set 方法 -------------------// |
| 52 | 52 | ||
| 53 | InternalBcObj.prototype.fnSetIsFirstBc = function(bFlag) { | 53 | InternalBcObj.prototype.fnSetIsFirstBc = function(bFlag) { |
| 54 | - this._$_bIsFirstBc = true; | 54 | + this._$_bIsFirstBc = bFlag; |
| 55 | }; | 55 | }; |
| 56 | InternalBcObj.prototype.fnIsFirstBc = function() { | 56 | InternalBcObj.prototype.fnIsFirstBc = function() { |
| 57 | return this._$_bIsFirstBc; | 57 | return this._$_bIsFirstBc; |