Commit 66b6571869eadb2eda47e9a93111d729668d926f

Authored by 廖磊
2 parents 19d2ac06 9f06b228

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing 34 changed files with 710 additions and 249 deletions
@@ -106,11 +106,11 @@ @@ -106,11 +106,11 @@
106 <artifactId>janino</artifactId> 106 <artifactId>janino</artifactId>
107 </dependency> 107 </dependency>
108 108
109 - <dependency>  
110 - <groupId>org.apache.poi</groupId>  
111 - <artifactId>poi</artifactId>  
112 - <version>3.13</version>  
113 - </dependency> 109 + <dependency>
  110 + <groupId>org.apache.poi</groupId>
  111 + <artifactId>poi-ooxml</artifactId>
  112 + <version>3.13</version>
  113 + </dependency>
114 114
115 <dependency> 115 <dependency>
116 <groupId>com.google.guava</groupId> 116 <groupId>com.google.guava</groupId>
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -488,7 +488,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -488,7 +488,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
488 long t = new Date().getTime(); 488 long t = new Date().getTime();
489 if(c != 1) 489 if(c != 1)
490 t -= ONE_DAY - (1000 * 60 * 60 * 2); 490 t -= ONE_DAY - (1000 * 60 * 60 * 2);
491 - for(int i = 0; i < 10; i ++){ 491 + for(int i = 0; i < 3; i ++){
492 rs.add(fmtyyyyMMdd.print(t)); 492 rs.add(fmtyyyyMMdd.print(t));
493 t -= ONE_DAY; 493 t -= ONE_DAY;
494 } 494 }
src/main/java/com/bsth/controller/schedule/BController.java
@@ -6,11 +6,11 @@ import com.bsth.entity.schedule.BEntity; @@ -6,11 +6,11 @@ import com.bsth.entity.schedule.BEntity;
6 import com.bsth.entity.sys.SysUser; 6 import com.bsth.entity.sys.SysUser;
7 import com.bsth.service.schedule.BService; 7 import com.bsth.service.schedule.BService;
8 import com.bsth.service.schedule.exception.ScheduleException; 8 import com.bsth.service.schedule.exception.ScheduleException;
  9 +import com.bsth.service.schedule.utils.DataToolsFile;
9 import com.bsth.service.sys.SysUserService; 10 import com.bsth.service.sys.SysUserService;
10 import com.google.common.base.Splitter; 11 import com.google.common.base.Splitter;
11 -import jxl.Sheet;  
12 -import jxl.Workbook;  
13 import org.apache.commons.lang3.StringUtils; 12 import org.apache.commons.lang3.StringUtils;
  13 +import org.apache.poi.ss.usermodel.Workbook;
14 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.data.domain.PageRequest; 15 import org.springframework.data.domain.PageRequest;
16 import org.springframework.data.domain.Sort; 16 import org.springframework.data.domain.Sort;
@@ -154,20 +154,24 @@ public class BController&lt;T, ID extends Serializable&gt; { @@ -154,20 +154,24 @@ public class BController&lt;T, ID extends Serializable&gt; {
154 public Map<String, Object> uploadFile(MultipartFile file) { 154 public Map<String, Object> uploadFile(MultipartFile file) {
155 Map<String, Object> rtn = new HashMap<>(); 155 Map<String, Object> rtn = new HashMap<>();
156 try { 156 try {
157 - File file1 = bService.uploadFile(file.getOriginalFilename(), file.getBytes()); 157 + DataToolsFile dataToolsFile = bService.uploadFile(file.getOriginalFilename(), file.getBytes());
158 // excel文件名 158 // excel文件名
159 - String fileName = file1.getAbsolutePath(); 159 + String fileName = dataToolsFile.getFile().getAbsolutePath();
  160 + Workbook wb = dataToolsFile.getFileType().getWorkBook(dataToolsFile.getFile());
  161 +
160 // excel文件sheet 162 // excel文件sheet
161 List<String> sheetnames = new ArrayList<>(); 163 List<String> sheetnames = new ArrayList<>();
162 - Workbook book = Workbook.getWorkbook(file1);  
163 - for (Sheet sheet : book.getSheets()) {  
164 - sheetnames.add(sheet.getName()); 164 + for (int i = 0; i < wb.getNumberOfSheets(); i ++) {
  165 + sheetnames.add(wb.getSheetAt(i).getSheetName());
165 } 166 }
166 167
  168 + wb.close();
  169 +
167 rtn.put("status", ResponseCode.SUCCESS); 170 rtn.put("status", ResponseCode.SUCCESS);
168 rtn.put("filename", fileName); 171 rtn.put("filename", fileName);
169 rtn.put("sheetnames", StringUtils.join(sheetnames, ",")); 172 rtn.put("sheetnames", StringUtils.join(sheetnames, ","));
170 } catch (Exception exp) { 173 } catch (Exception exp) {
  174 + exp.printStackTrace();
171 rtn.put("status", ResponseCode.ERROR); 175 rtn.put("status", ResponseCode.ERROR);
172 rtn.put("msg", exp.getMessage()); 176 rtn.put("msg", exp.getMessage());
173 } 177 }
@@ -202,9 +206,9 @@ public class BController&lt;T, ID extends Serializable&gt; { @@ -202,9 +206,9 @@ public class BController&lt;T, ID extends Serializable&gt; {
202 Map<String, Object> rtn = new HashMap<>(); 206 Map<String, Object> rtn = new HashMap<>();
203 207
204 try { 208 try {
205 - File file1 = bService.uploadFile(file.getOriginalFilename(), file.getBytes()); 209 + DataToolsFile dataToolsFile = bService.uploadFile(file.getOriginalFilename(), file.getBytes());
206 Map<String, Object> params = new HashMap<>(); 210 Map<String, Object> params = new HashMap<>();
207 - bService.importData(file1, params); 211 + bService.importData(dataToolsFile.getFile(), params);
208 212
209 rtn.put("status", ResponseCode.SUCCESS); 213 rtn.put("status", ResponseCode.SUCCESS);
210 rtn.put("msg", "上传&导入文件成功"); 214 rtn.put("msg", "上传&导入文件成功");
@@ -220,16 +224,16 @@ public class BController&lt;T, ID extends Serializable&gt; { @@ -220,16 +224,16 @@ public class BController&lt;T, ID extends Serializable&gt; {
220 @RequestMapping(value = "/exportFile", method = RequestMethod.GET) 224 @RequestMapping(value = "/exportFile", method = RequestMethod.GET)
221 public void exportFile(HttpServletResponse response, 225 public void exportFile(HttpServletResponse response,
222 @RequestParam Map<String, Object> params) throws Exception { 226 @RequestParam Map<String, Object> params) throws Exception {
223 - File file = bService.exportData(params); 227 + DataToolsFile dataToolsFile = bService.exportData(params);
224 // 流输出导出文件 228 // 流输出导出文件
225 response.setHeader("content-type", "application/octet-stream"); 229 response.setHeader("content-type", "application/octet-stream");
226 - response.setHeader("Content-Disposition", "attachment; filename=" + file.getName()); 230 + response.setHeader("Content-Disposition", "attachment; filename=" + dataToolsFile.getFile().getName());
227 response.setContentType("application/octet-stream"); 231 response.setContentType("application/octet-stream");
228 232
229 OutputStream os = response.getOutputStream(); 233 OutputStream os = response.getOutputStream();
230 BufferedOutputStream bos = new BufferedOutputStream(os); 234 BufferedOutputStream bos = new BufferedOutputStream(os);
231 235
232 - InputStream is = new FileInputStream(file); 236 + InputStream is = new FileInputStream(dataToolsFile.getFile());
233 BufferedInputStream bis = new BufferedInputStream(is); 237 BufferedInputStream bis = new BufferedInputStream(is);
234 238
235 int length = 0; 239 int length = 0;
src/main/java/com/bsth/data/gpsdata/GpsEntity.java
@@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
11 * @date 2016年5月11日 下午4:32:07 11 * @date 2016年5月11日 下午4:32:07
12 * 12 *
13 */ 13 */
14 -public class GpsEntity { 14 +public class GpsEntity implements Cloneable{
15 15
16 /** 公司代码 */ 16 /** 公司代码 */
17 private Short companyCode; 17 private Short companyCode;
@@ -98,6 +98,14 @@ public class GpsEntity { @@ -98,6 +98,14 @@ public class GpsEntity {
98 */ 98 */
99 private int source = -1; 99 private int source = -1;
100 100
  101 + public Object clone() {
  102 + try {
  103 + return super.clone();
  104 + } catch (CloneNotSupportedException e) {
  105 + return null;
  106 + }
  107 + }
  108 +
101 public String getDeviceId() { 109 public String getDeviceId() {
102 return deviceId; 110 return deviceId;
103 } 111 }
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
@@ -41,7 +41,7 @@ public class GpsRealAnalyse { @@ -41,7 +41,7 @@ public class GpsRealAnalyse {
41 @Autowired 41 @Autowired
42 GpsRealData gpsRealData; 42 GpsRealData gpsRealData;
43 43
44 - static ExecutorService threadPool = Executors.newFixedThreadPool(20); 44 + static ExecutorService threadPool = Executors.newFixedThreadPool(25);
45 45
46 public static long st; 46 public static long st;
47 public static CountDownLatch count; 47 public static CountDownLatch count;
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
@@ -90,6 +90,11 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -90,6 +90,11 @@ public class InOutStationSignalHandle extends SignalHandle{
90 if(prev.getInstation() > 0 && gps.getInstation() > 0 90 if(prev.getInstation() > 0 && gps.getInstation() > 0
91 && !prev.getStopNo().equals(gps.getStopNo())) 91 && !prev.getStopNo().equals(gps.getStopNo()))
92 return true; 92 return true;
  93 +
  94 + //在被起点站覆盖的情况下出场
  95 + if(isOutPark(gps, prev)){
  96 + return true;
  97 + }
93 return false; 98 return false;
94 } 99 }
95 100
@@ -110,11 +115,15 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -110,11 +115,15 @@ public class InOutStationSignalHandle extends SignalHandle{
110 if(prev.getInstation() == 2 && gps.getInstation() == 1){ 115 if(prev.getInstation() == 2 && gps.getInstation() == 1){
111 return true; 116 return true;
112 } 117 }
  118 +
  119 + //被起点站覆盖的情况下进场
  120 + if(isInPark(gps, prev))
  121 + return true;
113 return false; 122 return false;
114 } 123 }
115 124
116 /** 125 /**
117 - * 出站 126 + * 出站/出场
118 * @param gps 当前点 127 * @param gps 当前点
119 * @param prev 上一个点 128 * @param prev 上一个点
120 */ 129 */
@@ -133,7 +142,9 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -133,7 +142,9 @@ public class InOutStationSignalHandle extends SignalHandle{
133 return; 142 return;
134 143
135 //起点发车 144 //起点发车
136 - if(qdzCode != null && prev.getStopNo().equals(qdzCode) 145 + if(qdzCode != null
  146 + && prev.getStopNo().equals(qdzCode)
  147 + && (gps.getInstation()==0 || !gps.getStopNo().equals(prev.getStopNo()))
137 && !willDepart(gps, prev, sch)){ 148 && !willDepart(gps, prev, sch)){
138 149
139 //发车班次匹配 150 //发车班次匹配
@@ -168,6 +179,21 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -168,6 +179,21 @@ public class InOutStationSignalHandle extends SignalHandle{
168 logger.info("车辆:" + sch.getClZbh() + " 班次:" + sch.getDfsj() + "发车, 时间:" + sch.getFcsjActual()); 179 logger.info("车辆:" + sch.getClZbh() + " 班次:" + sch.getDfsj() + "发车, 时间:" + sch.getFcsjActual());
169 } 180 }
170 else if(sch.getBcType().equals("out")){ 181 else if(sch.getBcType().equals("out")){
  182 + //有出场动作(起点站覆盖停车场时,并且不设置出站既出场,逻辑可能会走到这里)
  183 + try{
  184 + if(isOutPark(gps, prev)){
  185 + if(prev.getCarparkNo().equals(sch.getQdzCode())){
  186 + //再试一下出场
  187 + GpsEntity prevClone = (GpsEntity) prev.clone(),
  188 + gpsClone = (GpsEntity) gps.clone();
  189 + prevClone.setStopNo(prevClone.getCarparkNo());
  190 + gpsClone.setInstation(0);
  191 + outStation(gpsClone, prevClone);
  192 + return;
  193 + }
  194 + }
  195 + }catch (Exception e){logger.error("",e);}
  196 +
171 ScheduleRealInfo next = dayOfSchedule.nextSame(sch); 197 ScheduleRealInfo next = dayOfSchedule.nextSame(sch);
172 //如果下一个班次是区间,并且是环线 198 //如果下一个班次是区间,并且是环线
173 if(next != null && next.getBcType().equals("region")){ 199 if(next != null && next.getBcType().equals("region")){
@@ -255,7 +281,8 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -255,7 +281,8 @@ public class InOutStationSignalHandle extends SignalHandle{
255 private void inStation(GpsEntity gps, GpsEntity prev){ 281 private void inStation(GpsEntity gps, GpsEntity prev){
256 ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm()); 282 ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
257 283
258 - if(gps.getStopNo().equals(sch.getZdzCode())){ 284 + if(gps.getStopNo().equals(sch.getZdzCode())
  285 + && !gps.getStopNo().equals(prev.getStopNo())){
259 286
260 int diff = 0; 287 int diff = 0;
261 try{ 288 try{
@@ -336,6 +363,25 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -336,6 +363,25 @@ public class InOutStationSignalHandle extends SignalHandle{
336 scheduleSignalState.signalRetrospect(gps, sch); 363 scheduleSignalState.signalRetrospect(gps, sch);
337 } 364 }
338 */ 365 */
  366 + //被起点站覆盖的情况下进场,没有设置出站既是出场,逻辑会走到这里(模拟进站信号)
  367 + if(sch.getBcType().equals("in")){
  368 + try{
  369 + if(isInPark(gps, prev)){
  370 + if(gps.getCarparkNo().equals(sch.getZdzCode())){
  371 + //再试一下进场
  372 + GpsEntity gpsClone = (GpsEntity) gps.clone(),
  373 + prevClone = (GpsEntity) prev.clone();
  374 + gpsClone.setStopNo(gpsClone.getCarparkNo());
  375 + prevClone.setStopNo(null);
  376 + inStation(gpsClone, prevClone);
  377 + return;
  378 + }
  379 + }
  380 + }catch (Exception e){
  381 + logger.error("", e);
  382 + }
  383 + }
  384 +
339 //如果当前班次是出场,并且进的是下一个班次的终点 385 //如果当前班次是出场,并且进的是下一个班次的终点
340 if(sch.getBcType().equals("out")){ 386 if(sch.getBcType().equals("out")){
341 ScheduleRealInfo next = dayOfSchedule.next(sch); 387 ScheduleRealInfo next = dayOfSchedule.next(sch);
@@ -447,4 +493,16 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -447,4 +493,16 @@ public class InOutStationSignalHandle extends SignalHandle{
447 }*/ 493 }*/
448 return false; 494 return false;
449 } 495 }
  496 +
  497 + private boolean isOutPark(GpsEntity gps, GpsEntity prve){
  498 + if(StringUtils.isNotEmpty(prve.getCarparkNo()) && StringUtils.isEmpty(gps.getCarparkNo()))
  499 + return true;
  500 + return false;
  501 + }
  502 +
  503 + private boolean isInPark(GpsEntity gps, GpsEntity prve){
  504 + if(StringUtils.isNotEmpty(gps.getCarparkNo()) && StringUtils.isEmpty(prve.getCarparkNo()))
  505 + return true;
  506 + return false;
  507 + }
450 } 508 }
451 \ No newline at end of file 509 \ No newline at end of file
src/main/java/com/bsth/data/gpsdata/arrival/handlers/StationInsideHandle.java
@@ -25,6 +25,7 @@ public class StationInsideHandle extends SignalHandle { @@ -25,6 +25,7 @@ public class StationInsideHandle extends SignalHandle {
25 if (parkCode != null) { 25 if (parkCode != null) {
26 gps.setInstation(2); 26 gps.setInstation(2);
27 gps.setStopNo(parkCode); 27 gps.setStopNo(parkCode);
  28 + gps.setCarparkNo(parkCode);
28 } 29 }
29 30
30 //是否在站内 31 //是否在站内
src/main/java/com/bsth/data/gpsdata/recovery/GpsDataRecovery.java
@@ -48,8 +48,8 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -48,8 +48,8 @@ public class GpsDataRecovery implements ApplicationContextAware {
48 //按线路分组数据 48 //按线路分组数据
49 ArrayListMultimap<String, GpsEntity> listMap = ArrayListMultimap.create(); 49 ArrayListMultimap<String, GpsEntity> listMap = ArrayListMultimap.create();
50 for (GpsEntity gps : list) { 50 for (GpsEntity gps : list) {
51 - if (gps.getLineId() != null)  
52 - listMap.put(gps.getLineId(), gps); 51 + if (gps.getNbbm() != null)
  52 + listMap.put(gps.getNbbm(), gps);
53 } 53 }
54 54
55 55
@@ -57,10 +57,10 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -57,10 +57,10 @@ public class GpsDataRecovery implements ApplicationContextAware {
57 57
58 CountDownLatch count = new CountDownLatch(keys.size()); 58 CountDownLatch count = new CountDownLatch(keys.size());
59 GpsComp comp = new GpsComp(); 59 GpsComp comp = new GpsComp();
60 - for (String lineId : keys) {  
61 - Collections.sort(listMap.get(lineId), comp);  
62 - threadPool.execute(new RecoveryThread(listMap.get(lineId), count));  
63 - /*if(nbbm.equals("W7E-016")) 60 + for (String nbbm : keys) {
  61 + Collections.sort(listMap.get(nbbm), comp);
  62 + threadPool.execute(new RecoveryThread(listMap.get(nbbm), count));
  63 + /*if(nbbm.equals("W9H-088"))
64 new RecoveryThread(listMap.get(nbbm), count).run();*/ 64 new RecoveryThread(listMap.get(nbbm), count).run();*/
65 /*if(lineId.equals("60028")) 65 /*if(lineId.equals("60028"))
66 new RecoveryThread(listMap.get(lineId), count).run();*/ 66 new RecoveryThread(listMap.get(lineId), count).run();*/
@@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
84 Calendar calendar = Calendar.getInstance(); 84 Calendar calendar = Calendar.getInstance();
85 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); 85 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
86 86
87 - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=194";// + dayOfYear; 87 + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=207";// + dayOfYear;
88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); 88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource());
89 89
90 List<GpsEntity> list = 90 List<GpsEntity> list =
@@ -153,7 +153,7 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -153,7 +153,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
153 boolean task; 153 boolean task;
154 for (GpsEntity gps : list) { 154 for (GpsEntity gps : list) {
155 try { 155 try {
156 - /*if(gps.getTimestamp() >= 1495512240000L){ 156 + /*if(gps.getTimestamp() >= 1500942270000L){
157 System.out.println("debugger..."); 157 System.out.println("debugger...");
158 }*/ 158 }*/
159 //是否有任务 159 //是否有任务
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -884,8 +884,12 @@ public class DayOfSchedule { @@ -884,8 +884,12 @@ public class DayOfSchedule {
884 } 884 }
885 885
886 public void addExecPlan(ScheduleRealInfo sch) { 886 public void addExecPlan(ScheduleRealInfo sch) {
887 - if (sch != null)  
888 - carExecutePlanMap.put(sch.getClZbh(), sch); 887 + if (sch != null){
  888 + if(sch.getStatus()==2)
  889 + reCalcExecPlan(sch.getClZbh());
  890 + else
  891 + carExecutePlanMap.put(sch.getClZbh(), sch);
  892 + }
889 else 893 else
890 carExecutePlanMap.remove(sch.getClZbh()); 894 carExecutePlanMap.remove(sch.getClZbh());
891 } 895 }
src/main/java/com/bsth/service/schedule/datatools/CarConfigInfoDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook; 4 +import com.bsth.service.schedule.utils.*;
9 import jxl.write.Label; 5 import jxl.write.Label;
10 import jxl.write.WritableSheet; 6 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 7 import jxl.write.WritableWorkbook;
  8 +import org.apache.poi.ss.usermodel.Sheet;
  9 +import org.apache.poi.ss.usermodel.Workbook;
12 import org.slf4j.Logger; 10 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory; 11 import org.slf4j.LoggerFactory;
14 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,26 +37,45 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService { @@ -39,26 +37,45 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService {
39 private DataToolsProperties dataToolsProperties; 37 private DataToolsProperties dataToolsProperties;
40 38
41 @Override 39 @Override
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 40 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
43 try { 41 try {
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0); 42 + // 对上传的excel文件做处理
  43 + // 将第一个sheet保存成一个xls文件
  44 + DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);
  45 + File file = dataToolsFile.getFile();
  46 +
  47 + // poi api
  48 + Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);
  49 + Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet
  50 + int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行
  51 + if (rowNum < 0) {
  52 + throw new RuntimeException("表格内容为空!");
  53 + }
  54 + int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主
48 55
  56 + // jxl api
49 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls"); 57 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal); 58 + WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);
51 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0); 59 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents())); 60 +
  61 + for (int i = 0; i <= rowNum; i++) {
  62 + for (int j = 0; j <= colNum; j++) {
  63 + // poi读
  64 + String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));
  65 + // jxl写
  66 + writableSheet.addCell(new Label(j, i, cellContent));
56 } 67 }
  68 +
57 } 69 }
58 writableWorkbook.write(); 70 writableWorkbook.write();
59 writableWorkbook.close(); 71 writableWorkbook.close();
  72 + poi_workbook.close();
  73 +
  74 + DataToolsFile dataToolsFile1 = new DataToolsFile();
  75 + dataToolsFile1.setFile(fileCal);
  76 + dataToolsFile1.setFileType(DataToolsFileType.XLS);
60 77
61 - return fileCal; 78 + return dataToolsFile1;
62 79
63 } catch (Exception exp) { 80 } catch (Exception exp) {
64 throw new ScheduleException(exp); 81 throw new ScheduleException(exp);
@@ -96,7 +113,7 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService { @@ -96,7 +113,7 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService {
96 } 113 }
97 114
98 @Override 115 @Override
99 - public File exportData(Map<String, Object> params) throws ScheduleException { 116 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
100 try { 117 try {
101 LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//"); 118 LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//");
102 // 创建ktr转换所需参数 119 // 创建ktr转换所需参数
@@ -110,7 +127,7 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService { @@ -110,7 +127,7 @@ public class CarConfigInfoDataToolsImpl implements DataToolsService {
110 127
111 ktrParms.putAll(params); 128 ktrParms.putAll(params);
112 129
113 - File file = dataToolsService.exportData(ktrParms); 130 + DataToolsFile file = dataToolsService.exportData(ktrParms);
114 131
115 LOGGER.info("//---------------- 导出车辆配置信息 success... ----------------//"); 132 LOGGER.info("//---------------- 导出车辆配置信息 success... ----------------//");
116 133
src/main/java/com/bsth/service/schedule/datatools/CarsDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook; 4 +import com.bsth.service.schedule.utils.*;
9 import jxl.write.Label; 5 import jxl.write.Label;
10 import jxl.write.WritableSheet; 6 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 7 import jxl.write.WritableWorkbook;
@@ -39,26 +35,45 @@ public class CarsDataToolsImpl implements DataToolsService { @@ -39,26 +35,45 @@ public class CarsDataToolsImpl implements DataToolsService {
39 private DataToolsProperties dataToolsProperties; 35 private DataToolsProperties dataToolsProperties;
40 36
41 @Override 37 @Override
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 38 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
43 try { 39 try {
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0); 40 + // 对上传的excel文件做处理
  41 + // 将第一个sheet保存成一个xls文件
  42 + DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);
  43 + File file = dataToolsFile.getFile();
  44 +
  45 + // poi api
  46 + org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);
  47 + org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet
  48 + int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行
  49 + if (rowNum < 0) {
  50 + throw new RuntimeException("表格内容为空!");
  51 + }
  52 + int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主
48 53
  54 + // jxl api
49 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls"); 55 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal); 56 + WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);
51 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0); 57 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents())); 58 +
  59 + for (int i = 0; i <= rowNum; i++) {
  60 + for (int j = 0; j <= colNum; j++) {
  61 + // poi读
  62 + String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));
  63 + // jxl写
  64 + writableSheet.addCell(new Label(j, i, cellContent));
56 } 65 }
  66 +
57 } 67 }
58 writableWorkbook.write(); 68 writableWorkbook.write();
59 writableWorkbook.close(); 69 writableWorkbook.close();
  70 + poi_workbook.close();
  71 +
  72 + DataToolsFile dataToolsFile1 = new DataToolsFile();
  73 + dataToolsFile1.setFile(fileCal);
  74 + dataToolsFile1.setFileType(DataToolsFileType.XLS);
60 75
61 - return fileCal; 76 + return dataToolsFile1;
62 77
63 } catch (Exception exp) { 78 } catch (Exception exp) {
64 throw new ScheduleException(exp); 79 throw new ScheduleException(exp);
@@ -94,7 +109,7 @@ public class CarsDataToolsImpl implements DataToolsService { @@ -94,7 +109,7 @@ public class CarsDataToolsImpl implements DataToolsService {
94 } 109 }
95 110
96 @Override 111 @Override
97 - public File exportData(Map<String, Object> params) throws ScheduleException { 112 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
98 try { 113 try {
99 LOGGER.info("//---------------- 导出车辆基础信息 start... ----------------//"); 114 LOGGER.info("//---------------- 导出车辆基础信息 start... ----------------//");
100 // 创建ktr转换所需参数 115 // 创建ktr转换所需参数
@@ -106,7 +121,7 @@ public class CarsDataToolsImpl implements DataToolsService { @@ -106,7 +121,7 @@ public class CarsDataToolsImpl implements DataToolsService {
106 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 121 ktrParms.put("transpath", ktrFile.getAbsolutePath());
107 ktrParms.put("filename", "车辆基础信息_download-"); 122 ktrParms.put("filename", "车辆基础信息_download-");
108 123
109 - File file = dataToolsService.exportData(ktrParms); 124 + DataToolsFile file = dataToolsService.exportData(ktrParms);
110 125
111 LOGGER.info("//---------------- 导出车辆基础信息 success... ----------------//"); 126 LOGGER.info("//---------------- 导出车辆基础信息 success... ----------------//");
112 127
src/main/java/com/bsth/service/schedule/datatools/EmployeeConfigInfoDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook; 4 +import com.bsth.service.schedule.utils.*;
9 import jxl.write.Label; 5 import jxl.write.Label;
10 import jxl.write.WritableSheet; 6 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 7 import jxl.write.WritableWorkbook;
@@ -39,26 +35,45 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService { @@ -39,26 +35,45 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {
39 private DataToolsProperties dataToolsProperties; 35 private DataToolsProperties dataToolsProperties;
40 36
41 @Override 37 @Override
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 38 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
43 try { 39 try {
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0); 40 + // 对上传的excel文件做处理
  41 + // 将第一个sheet保存成一个xls文件
  42 + DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);
  43 + File file = dataToolsFile.getFile();
  44 +
  45 + // poi api
  46 + org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);
  47 + org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet
  48 + int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行
  49 + if (rowNum < 0) {
  50 + throw new RuntimeException("表格内容为空!");
  51 + }
  52 + int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主
48 53
  54 + // jxl api
49 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls"); 55 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal); 56 + WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);
51 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0); 57 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents())); 58 +
  59 + for (int i = 0; i <= rowNum; i++) {
  60 + for (int j = 0; j <= colNum; j++) {
  61 + // poi读
  62 + String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));
  63 + // jxl写
  64 + writableSheet.addCell(new Label(j, i, cellContent));
56 } 65 }
  66 +
57 } 67 }
58 writableWorkbook.write(); 68 writableWorkbook.write();
59 writableWorkbook.close(); 69 writableWorkbook.close();
  70 + poi_workbook.close();
  71 +
  72 + DataToolsFile dataToolsFile1 = new DataToolsFile();
  73 + dataToolsFile1.setFile(fileCal);
  74 + dataToolsFile1.setFileType(DataToolsFileType.XLS);
60 75
61 - return fileCal; 76 + return dataToolsFile1;
62 77
63 } catch (Exception exp) { 78 } catch (Exception exp) {
64 throw new ScheduleException(exp); 79 throw new ScheduleException(exp);
@@ -96,7 +111,7 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService { @@ -96,7 +111,7 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {
96 } 111 }
97 112
98 @Override 113 @Override
99 - public File exportData(Map<String, Object> params) throws ScheduleException { 114 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
100 try { 115 try {
101 LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//"); 116 LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//");
102 // 创建ktr转换所需参数 117 // 创建ktr转换所需参数
@@ -110,7 +125,7 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService { @@ -110,7 +125,7 @@ public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {
110 125
111 ktrParms.putAll(params); 126 ktrParms.putAll(params);
112 127
113 - File file = dataToolsService.exportData(ktrParms); 128 + DataToolsFile file = dataToolsService.exportData(ktrParms);
114 129
115 LOGGER.info("//---------------- 导出人员配置信息 success... ----------------//"); 130 LOGGER.info("//---------------- 导出人员配置信息 success... ----------------//");
116 131
src/main/java/com/bsth/service/schedule/datatools/EmployeeDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook; 4 +import com.bsth.service.schedule.utils.*;
9 import jxl.write.Label; 5 import jxl.write.Label;
10 import jxl.write.WritableSheet; 6 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 7 import jxl.write.WritableWorkbook;
@@ -39,26 +35,45 @@ public class EmployeeDataToolsImpl implements DataToolsService { @@ -39,26 +35,45 @@ public class EmployeeDataToolsImpl implements DataToolsService {
39 private DataToolsProperties dataToolsProperties; 35 private DataToolsProperties dataToolsProperties;
40 36
41 @Override 37 @Override
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 38 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
43 try { 39 try {
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0); 40 + // 对上传的excel文件做处理
  41 + // 将第一个sheet保存成一个xls文件
  42 + DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);
  43 + File file = dataToolsFile.getFile();
  44 +
  45 + // poi api
  46 + org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);
  47 + org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet
  48 + int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行
  49 + if (rowNum < 0) {
  50 + throw new RuntimeException("表格内容为空!");
  51 + }
  52 + int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主
48 53
  54 + // jxl api
49 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls"); 55 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal); 56 + WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);
51 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0); 57 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents())); 58 +
  59 + for (int i = 0; i <= rowNum; i++) {
  60 + for (int j = 0; j <= colNum; j++) {
  61 + // poi读
  62 + String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));
  63 + // jxl写
  64 + writableSheet.addCell(new Label(j, i, cellContent));
56 } 65 }
  66 +
57 } 67 }
58 writableWorkbook.write(); 68 writableWorkbook.write();
59 writableWorkbook.close(); 69 writableWorkbook.close();
  70 + poi_workbook.close();
  71 +
  72 + DataToolsFile dataToolsFile1 = new DataToolsFile();
  73 + dataToolsFile1.setFile(fileCal);
  74 + dataToolsFile1.setFileType(DataToolsFileType.XLS);
60 75
61 - return fileCal; 76 + return dataToolsFile1;
62 77
63 } catch (Exception exp) { 78 } catch (Exception exp) {
64 throw new ScheduleException(exp); 79 throw new ScheduleException(exp);
@@ -94,7 +109,7 @@ public class EmployeeDataToolsImpl implements DataToolsService { @@ -94,7 +109,7 @@ public class EmployeeDataToolsImpl implements DataToolsService {
94 } 109 }
95 110
96 @Override 111 @Override
97 - public File exportData(Map<String, Object> params) throws ScheduleException { 112 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
98 try { 113 try {
99 LOGGER.info("//---------------- 导出人员基础信息 start... ----------------//"); 114 LOGGER.info("//---------------- 导出人员基础信息 start... ----------------//");
100 // 创建ktr转换所需参数 115 // 创建ktr转换所需参数
@@ -106,7 +121,7 @@ public class EmployeeDataToolsImpl implements DataToolsService { @@ -106,7 +121,7 @@ public class EmployeeDataToolsImpl implements DataToolsService {
106 ktrParms.put("transpath", ktrFile.getAbsolutePath()); 121 ktrParms.put("transpath", ktrFile.getAbsolutePath());
107 ktrParms.put("filename", "人员基础信息_download-"); 122 ktrParms.put("filename", "人员基础信息_download-");
108 123
109 - File file = dataToolsService.exportData(ktrParms); 124 + DataToolsFile file = dataToolsService.exportData(ktrParms);
110 125
111 LOGGER.info("//---------------- 导出人员基础信息 success... ----------------//"); 126 LOGGER.info("//---------------- 导出人员基础信息 success... ----------------//");
112 127
src/main/java/com/bsth/service/schedule/datatools/GuideboardInfoDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook; 4 +import com.bsth.service.schedule.utils.*;
9 import jxl.write.Label; 5 import jxl.write.Label;
10 import jxl.write.WritableSheet; 6 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 7 import jxl.write.WritableWorkbook;
@@ -39,26 +35,45 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService { @@ -39,26 +35,45 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService {
39 private DataToolsProperties dataToolsProperties; 35 private DataToolsProperties dataToolsProperties;
40 36
41 @Override 37 @Override
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 38 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
43 try { 39 try {
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0); 40 + // 对上传的excel文件做处理
  41 + // 将第一个sheet保存成一个xls文件
  42 + DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);
  43 + File file = dataToolsFile.getFile();
  44 +
  45 + // poi api
  46 + org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);
  47 + org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet
  48 + int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行
  49 + if (rowNum < 0) {
  50 + throw new RuntimeException("表格内容为空!");
  51 + }
  52 + int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主
48 53
  54 + // jxl api
49 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls"); 55 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal); 56 + WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);
51 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0); 57 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents())); 58 +
  59 + for (int i = 0; i <= rowNum; i++) {
  60 + for (int j = 0; j <= colNum; j++) {
  61 + // poi读
  62 + String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));
  63 + // jxl写
  64 + writableSheet.addCell(new Label(j, i, cellContent));
56 } 65 }
  66 +
57 } 67 }
58 writableWorkbook.write(); 68 writableWorkbook.write();
59 writableWorkbook.close(); 69 writableWorkbook.close();
  70 + poi_workbook.close();
  71 +
  72 + DataToolsFile dataToolsFile1 = new DataToolsFile();
  73 + dataToolsFile1.setFile(fileCal);
  74 + dataToolsFile1.setFileType(DataToolsFileType.XLS);
60 75
61 - return fileCal; 76 + return dataToolsFile1;
62 77
63 } catch (Exception exp) { 78 } catch (Exception exp) {
64 throw new ScheduleException(exp); 79 throw new ScheduleException(exp);
@@ -96,7 +111,7 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService { @@ -96,7 +111,7 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService {
96 } 111 }
97 112
98 @Override 113 @Override
99 - public File exportData(Map<String, Object> params) throws ScheduleException { 114 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
100 try { 115 try {
101 LOGGER.info("//---------------- 导出路牌信息 start... ----------------//"); 116 LOGGER.info("//---------------- 导出路牌信息 start... ----------------//");
102 // 创建ktr转换所需参数 117 // 创建ktr转换所需参数
@@ -110,7 +125,7 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService { @@ -110,7 +125,7 @@ public class GuideboardInfoDataToolsImpl implements DataToolsService {
110 125
111 ktrParms.putAll(params); 126 ktrParms.putAll(params);
112 127
113 - File file = dataToolsService.exportData(ktrParms); 128 + DataToolsFile file = dataToolsService.exportData(ktrParms);
114 129
115 LOGGER.info("//---------------- 导出路牌信息 success... ----------------//"); 130 LOGGER.info("//---------------- 导出路牌信息 success... ----------------//");
116 131
src/main/java/com/bsth/service/schedule/datatools/ScheduleRule1FlatDataToolsImpl.java
1 package com.bsth.service.schedule.datatools; 1 package com.bsth.service.schedule.datatools;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook; 4 +import com.bsth.service.schedule.utils.*;
9 import jxl.write.Label; 5 import jxl.write.Label;
10 import jxl.write.WritableSheet; 6 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 7 import jxl.write.WritableWorkbook;
@@ -39,26 +35,45 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService { @@ -39,26 +35,45 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {
39 private DataToolsProperties dataToolsProperties; 35 private DataToolsProperties dataToolsProperties;
40 36
41 @Override 37 @Override
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 38 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
43 try { 39 try {
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0); 40 + // 对上传的excel文件做处理
  41 + // 将第一个sheet保存成一个xls文件
  42 + DataToolsFile dataToolsFile = dataToolsService.uploadFile(filename, filedata);
  43 + File file = dataToolsFile.getFile();
  44 +
  45 + // poi api
  46 + org.apache.poi.ss.usermodel.Workbook poi_workbook = dataToolsFile.getFileType().getWorkBook(file);
  47 + org.apache.poi.ss.usermodel.Sheet poi_sheet = poi_workbook.getSheetAt(0); // 第一个sheet
  48 + int rowNum = poi_sheet.getLastRowNum(); // 获取总共多少行
  49 + if (rowNum < 0) {
  50 + throw new RuntimeException("表格内容为空!");
  51 + }
  52 + int colNum = poi_sheet.getRow(0).getLastCellNum(); // 获取总共多少列,以第一行为主
48 53
  54 + // jxl api
49 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls"); 55 File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal); 56 + WritableWorkbook writableWorkbook = jxl.Workbook.createWorkbook(fileCal);
51 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0); 57 WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents())); 58 +
  59 + for (int i = 0; i <= rowNum; i++) {
  60 + for (int j = 0; j <= colNum; j++) {
  61 + // poi读
  62 + String cellContent = PoiUtils.getStringValueFromCell(poi_sheet.getRow(i).getCell(j));
  63 + // jxl写
  64 + writableSheet.addCell(new Label(j, i, cellContent));
56 } 65 }
  66 +
57 } 67 }
58 writableWorkbook.write(); 68 writableWorkbook.write();
59 writableWorkbook.close(); 69 writableWorkbook.close();
  70 + poi_workbook.close();
  71 +
  72 + DataToolsFile dataToolsFile1 = new DataToolsFile();
  73 + dataToolsFile1.setFile(fileCal);
  74 + dataToolsFile1.setFileType(DataToolsFileType.XLS);
60 75
61 - return fileCal; 76 + return dataToolsFile1;
62 77
63 } catch (Exception exp) { 78 } catch (Exception exp) {
64 throw new ScheduleException(exp); 79 throw new ScheduleException(exp);
@@ -96,7 +111,7 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService { @@ -96,7 +111,7 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {
96 } 111 }
97 112
98 @Override 113 @Override
99 - public File exportData(Map<String, Object> params) throws ScheduleException { 114 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
100 try { 115 try {
101 LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//"); 116 LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//");
102 // 创建ktr转换所需参数 117 // 创建ktr转换所需参数
@@ -110,7 +125,7 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService { @@ -110,7 +125,7 @@ public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {
110 125
111 ktrParms.putAll(params); 126 ktrParms.putAll(params);
112 127
113 - File file = dataToolsService.exportData(ktrParms); 128 + DataToolsFile file = dataToolsService.exportData(ktrParms);
114 129
115 LOGGER.info("//---------------- 导出排版规则信息 success... ----------------//"); 130 LOGGER.info("//---------------- 导出排版规则信息 success... ----------------//");
116 131
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.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell; 4 +import com.bsth.service.schedule.utils.*;
7 import jxl.Sheet; 5 import jxl.Sheet;
8 import jxl.Workbook; 6 import jxl.Workbook;
9 import jxl.write.Label; 7 import jxl.write.Label;
10 import jxl.write.WritableSheet; 8 import jxl.write.WritableSheet;
11 import jxl.write.WritableWorkbook; 9 import jxl.write.WritableWorkbook;
12 import org.apache.commons.lang3.StringUtils; 10 import org.apache.commons.lang3.StringUtils;
  11 +import org.apache.poi.ss.usermodel.Row;
13 import org.joda.time.DateTime; 12 import org.joda.time.DateTime;
14 import org.slf4j.Logger; 13 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory; 14 import org.slf4j.LoggerFactory;
@@ -40,10 +39,10 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -40,10 +39,10 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
40 private DataToolsProperties dataToolsProperties; 39 private DataToolsProperties dataToolsProperties;
41 40
42 @Override 41 @Override
43 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 42 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
44 try { 43 try {
45 // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1 44 // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
46 - File file = dataToolsService.uploadFile(filename, filedata); 45 + DataToolsFile file = dataToolsService.uploadFile(filename, filedata);
47 // Workbook workbook = Workbook.getWorkbook(file); 46 // Workbook workbook = Workbook.getWorkbook(file);
48 // Sheet sheet = workbook.getSheet(0); 47 // Sheet sheet = workbook.getSheet(0);
49 // 48 //
@@ -73,7 +72,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -73,7 +72,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
73 try { 72 try {
74 LOGGER.info("//---------------- 导入时刻表明细 start... ----------------//"); 73 LOGGER.info("//---------------- 导入时刻表明细 start... ----------------//");
75 74
76 - String filename = file.getAbsolutePath(); // xls文件名 75 + String filename = file.getAbsolutePath(); // xls xlsx 文件名
77 String sheetname = String.valueOf(params.get("sheetname")); // sheet名字 76 String sheetname = String.valueOf(params.get("sheetname")); // sheet名字
78 Long ttid = Long.valueOf(String.valueOf(params.get("ttid"))); // 时刻表id 77 Long ttid = Long.valueOf(String.valueOf(params.get("ttid"))); // 时刻表id
79 Long xlid = Long.valueOf(String.valueOf(params.get("xlid"))); // 线路id 78 Long xlid = Long.valueOf(String.valueOf(params.get("xlid"))); // 线路id
@@ -89,27 +88,45 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -89,27 +88,45 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
89 // 1、修改已经上传的excel文件,在每个起点站后标示数字,表示第几个班次 88 // 1、修改已经上传的excel文件,在每个起点站后标示数字,表示第几个班次
90 // 2、由于格式问题,需要把内容都转换成字符串 89 // 2、由于格式问题,需要把内容都转换成字符串
91 List<String> colList = new ArrayList<>(); 90 List<String> colList = new ArrayList<>();
92 - Workbook workbook = Workbook.getWorkbook(new File(filename));  
93 - Sheet sheet = workbook.getSheet(sheetname);  
94 - Cell[] cells = sheet.getRow(0);  
95 - for (int i = 0; i < cells.length; i++) { 91 +
  92 + // poi api,并读取第一行数据,组合成站点列表,逗号分隔
  93 + org.apache.poi.ss.usermodel.Workbook poi_workbook;
  94 + org.apache.poi.ss.usermodel.Sheet poi_sheet;
  95 + if (DataToolsFileType.XLS.isThisType(file)) {
  96 + poi_workbook = DataToolsFileType.XLS.getWorkBook(file);
  97 + } else if (DataToolsFileType.XLSX.isThisType(file)) {
  98 + poi_workbook = DataToolsFileType.XLSX.getWorkBook(file);
  99 + } else {
  100 + throw new Exception("不是xls xlsx文件!");
  101 + }
  102 + poi_sheet = poi_workbook.getSheet(sheetname);
  103 + int rownums = poi_sheet.getLastRowNum() + 1;
  104 + int colnums = poi_sheet.getRow(0).getLastCellNum();
  105 + Row firstrow = poi_sheet.getRow(0);
  106 + for (int i = 0; i < colnums; i++) {
  107 + org.apache.poi.ss.usermodel.Cell cell = firstrow.getCell(i);
96 if (i == 0) { 108 if (i == 0) {
97 - colList.add(cells[i].getContents().trim()); 109 + colList.add(PoiUtils.getStringValueFromCell(cell).trim());
98 } else { 110 } else {
99 - colList.add(cells[i].getContents() + i); 111 + colList.add(PoiUtils.getStringValueFromCell(cell) + i);
100 } 112 }
101 } 113 }
102 114
  115 + // jxl api
103 File fileCal = new File(filename + "_stringType.xls"); 116 File fileCal = new File(filename + "_stringType.xls");
104 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal, workbook);  
105 - WritableSheet sheet1 = writableWorkbook.getSheet(sheetname);  
106 - for (int i = 0; i < sheet1.getColumns(); i++) { // 第一行数据 117 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  118 + WritableSheet sheet1 = writableWorkbook.createSheet(sheetname, 0);
  119 + for (int i = 0; i < colnums; i++) { // 第一行数据
107 sheet1.addCell(new Label(i, 0, colList.get(i))); 120 sheet1.addCell(new Label(i, 0, colList.get(i)));
108 } 121 }
109 - for (int i = 1; i < sheet1.getRows(); i++) { // 第二行开始  
110 - Cell[] cells1 = sheet.getRow(i);  
111 - for (int j = 0; j < cells1.length; j++) {  
112 - sheet1.addCell(new Label(j, i, cells1[j].getContents())); 122 + for (int i = 1; i < rownums; i++) { // 第二行开始
  123 + for (int j = 0; j < colnums; j++) {
  124 + // poi读
  125 + String cellContent = PoiUtils.getStringValueFromCell(
  126 + poi_sheet.getRow(i).getCell(j)
  127 + );
  128 + // jxl写
  129 + sheet1.addCell(new Label(j, i, cellContent));
113 } 130 }
114 } 131 }
115 writableWorkbook.write(); 132 writableWorkbook.write();
@@ -169,7 +186,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -169,7 +186,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
169 } 186 }
170 187
171 @Override 188 @Override
172 - public File exportData(Map<String, Object> params) throws ScheduleException { 189 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
173 try { 190 try {
174 LOGGER.info("//---------------- 导出时刻表明细 start... ----------------//"); 191 LOGGER.info("//---------------- 导出时刻表明细 start... ----------------//");
175 192
@@ -188,7 +205,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -188,7 +205,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
188 ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件 205 ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件
189 ktrParms.put("ttinfoid", String.valueOf(params.get("ttinfoid"))); 206 ktrParms.put("ttinfoid", String.valueOf(params.get("ttinfoid")));
190 207
191 - File file = dataToolsService.exportData(ktrParms); 208 + DataToolsFile file = dataToolsService.exportData(ktrParms);
192 209
193 LOGGER.info("//---------------- 导出时刻表明细 success... ----------------//"); 210 LOGGER.info("//---------------- 导出时刻表明细 success... ----------------//");
194 211
src/main/java/com/bsth/service/schedule/impl/BServiceImpl.java
@@ -4,6 +4,7 @@ import com.bsth.entity.search.CustomerSpecs; @@ -4,6 +4,7 @@ import com.bsth.entity.search.CustomerSpecs;
4 import com.bsth.repository.BaseRepository; 4 import com.bsth.repository.BaseRepository;
5 import com.bsth.service.schedule.BService; 5 import com.bsth.service.schedule.BService;
6 import com.bsth.service.schedule.exception.ScheduleException; 6 import com.bsth.service.schedule.exception.ScheduleException;
  7 +import com.bsth.service.schedule.utils.DataToolsFile;
7 import org.slf4j.Logger; 8 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
@@ -111,7 +112,7 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt; @@ -111,7 +112,7 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt;
111 } 112 }
112 113
113 @Override 114 @Override
114 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 115 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
115 throw new ScheduleException("子类自己复写此方法!"); 116 throw new ScheduleException("子类自己复写此方法!");
116 } 117 }
117 118
@@ -121,7 +122,7 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt; @@ -121,7 +122,7 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt;
121 } 122 }
122 123
123 @Override 124 @Override
124 - public File exportData(Map<String, Object> params) throws ScheduleException { 125 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
125 throw new ScheduleException("子类自己复写此方法!"); 126 throw new ScheduleException("子类自己复写此方法!");
126 } 127 }
127 } 128 }
src/main/java/com/bsth/service/schedule/impl/CarConfigInfoServiceImpl.java
@@ -5,6 +5,7 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat; @@ -5,6 +5,7 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
5 import com.bsth.service.schedule.CarConfigInfoService; 5 import com.bsth.service.schedule.CarConfigInfoService;
6 import com.bsth.service.schedule.ScheduleRule1FlatService; 6 import com.bsth.service.schedule.ScheduleRule1FlatService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
  8 +import com.bsth.service.schedule.utils.DataToolsFile;
8 import com.bsth.service.schedule.utils.DataToolsService; 9 import com.bsth.service.schedule.utils.DataToolsService;
9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
@@ -30,7 +31,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -30,7 +31,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
30 private DataToolsService dataToolsService; 31 private DataToolsService dataToolsService;
31 32
32 @Override 33 @Override
33 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 34 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
34 return dataToolsService.uploadFile(filename, filedata); 35 return dataToolsService.uploadFile(filename, filedata);
35 } 36 }
36 37
@@ -40,7 +41,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt; @@ -40,7 +41,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl&lt;CarConfigInfo, Long&gt;
40 } 41 }
41 42
42 @Override 43 @Override
43 - public File exportData(Map<String, Object> params) throws ScheduleException { 44 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
44 return dataToolsService.exportData(params); 45 return dataToolsService.exportData(params);
45 } 46 }
46 47
src/main/java/com/bsth/service/schedule/impl/CarsServiceImpl.java
@@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl; @@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.Cars; 3 import com.bsth.entity.Cars;
4 import com.bsth.service.schedule.CarsService; 4 import com.bsth.service.schedule.CarsService;
5 import com.bsth.service.schedule.exception.ScheduleException; 5 import com.bsth.service.schedule.exception.ScheduleException;
  6 +import com.bsth.service.schedule.utils.DataToolsFile;
6 import com.bsth.service.schedule.utils.DataToolsService; 7 import com.bsth.service.schedule.utils.DataToolsService;
7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.beans.factory.annotation.Qualifier; 9 import org.springframework.beans.factory.annotation.Qualifier;
@@ -29,12 +30,12 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars @@ -29,12 +30,12 @@ public class CarsServiceImpl extends BServiceImpl&lt;Cars, Integer&gt; implements Cars
29 } 30 }
30 31
31 @Override 32 @Override
32 - public File exportData(Map<String, Object> params) throws ScheduleException { 33 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
33 return dataToolsService.exportData(params); 34 return dataToolsService.exportData(params);
34 } 35 }
35 36
36 @Override 37 @Override
37 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 38 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
38 return dataToolsService.uploadFile(filename, filedata); 39 return dataToolsService.uploadFile(filename, filedata);
39 } 40 }
40 41
src/main/java/com/bsth/service/schedule/impl/EmployeeConfigInfoServiceImpl.java
@@ -5,6 +5,7 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat; @@ -5,6 +5,7 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
5 import com.bsth.service.schedule.EmployeeConfigInfoService; 5 import com.bsth.service.schedule.EmployeeConfigInfoService;
6 import com.bsth.service.schedule.ScheduleRule1FlatService; 6 import com.bsth.service.schedule.ScheduleRule1FlatService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
  8 +import com.bsth.service.schedule.utils.DataToolsFile;
8 import com.bsth.service.schedule.utils.DataToolsService; 9 import com.bsth.service.schedule.utils.DataToolsService;
9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
@@ -36,7 +37,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -36,7 +37,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
36 private JdbcTemplate jdbcTemplate; 37 private JdbcTemplate jdbcTemplate;
37 38
38 @Override 39 @Override
39 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 40 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
40 return dataToolsService.uploadFile(filename, filedata); 41 return dataToolsService.uploadFile(filename, filedata);
41 } 42 }
42 43
@@ -46,7 +47,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn @@ -46,7 +47,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
46 } 47 }
47 48
48 @Override 49 @Override
49 - public File exportData(Map<String, Object> params) throws ScheduleException { 50 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
50 return dataToolsService.exportData(params); 51 return dataToolsService.exportData(params);
51 } 52 }
52 53
src/main/java/com/bsth/service/schedule/impl/EmployeeServiceImpl.java
@@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl; @@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.Personnel; 3 import com.bsth.entity.Personnel;
4 import com.bsth.service.schedule.EmployeeService; 4 import com.bsth.service.schedule.EmployeeService;
5 import com.bsth.service.schedule.exception.ScheduleException; 5 import com.bsth.service.schedule.exception.ScheduleException;
  6 +import com.bsth.service.schedule.utils.DataToolsFile;
6 import com.bsth.service.schedule.utils.DataToolsService; 7 import com.bsth.service.schedule.utils.DataToolsService;
7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.beans.factory.annotation.Qualifier; 9 import org.springframework.beans.factory.annotation.Qualifier;
@@ -24,7 +25,7 @@ public class EmployeeServiceImpl extends BServiceImpl&lt;Personnel, Integer&gt; implem @@ -24,7 +25,7 @@ public class EmployeeServiceImpl extends BServiceImpl&lt;Personnel, Integer&gt; implem
24 private DataToolsService dataToolsService; 25 private DataToolsService dataToolsService;
25 26
26 @Override 27 @Override
27 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 28 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
28 return dataToolsService.uploadFile(filename, filedata); 29 return dataToolsService.uploadFile(filename, filedata);
29 } 30 }
30 31
@@ -34,7 +35,7 @@ public class EmployeeServiceImpl extends BServiceImpl&lt;Personnel, Integer&gt; implem @@ -34,7 +35,7 @@ public class EmployeeServiceImpl extends BServiceImpl&lt;Personnel, Integer&gt; implem
34 } 35 }
35 36
36 @Override 37 @Override
37 - public File exportData(Map<String, Object> params) throws ScheduleException { 38 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
38 return dataToolsService.exportData(params); 39 return dataToolsService.exportData(params);
39 } 40 }
40 41
src/main/java/com/bsth/service/schedule/impl/GuideboardInfoServiceImpl.java
@@ -5,6 +5,7 @@ import com.bsth.entity.schedule.TTInfoDetail; @@ -5,6 +5,7 @@ import com.bsth.entity.schedule.TTInfoDetail;
5 import com.bsth.service.schedule.GuideboardInfoService; 5 import com.bsth.service.schedule.GuideboardInfoService;
6 import com.bsth.service.schedule.TTInfoDetailService; 6 import com.bsth.service.schedule.TTInfoDetailService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
  8 +import com.bsth.service.schedule.utils.DataToolsFile;
8 import com.bsth.service.schedule.utils.DataToolsService; 9 import com.bsth.service.schedule.utils.DataToolsService;
9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
@@ -128,7 +129,7 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long @@ -128,7 +129,7 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
128 } 129 }
129 130
130 @Override 131 @Override
131 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 132 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
132 return dataToolsService.uploadFile(filename, filedata); 133 return dataToolsService.uploadFile(filename, filedata);
133 } 134 }
134 135
@@ -138,7 +139,7 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long @@ -138,7 +139,7 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
138 } 139 }
139 140
140 @Override 141 @Override
141 - public File exportData(Map<String, Object> params) throws ScheduleException { 142 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
142 return dataToolsService.exportData(params); 143 return dataToolsService.exportData(params);
143 } 144 }
144 145
src/main/java/com/bsth/service/schedule/impl/ScheduleRule1FlatServiceImpl.java
@@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl; @@ -3,6 +3,7 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.schedule.rule.ScheduleRule1Flat; 3 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
4 import com.bsth.service.schedule.ScheduleRule1FlatService; 4 import com.bsth.service.schedule.ScheduleRule1FlatService;
5 import com.bsth.service.schedule.exception.ScheduleException; 5 import com.bsth.service.schedule.exception.ScheduleException;
  6 +import com.bsth.service.schedule.utils.DataToolsFile;
6 import com.bsth.service.schedule.utils.DataToolsService; 7 import com.bsth.service.schedule.utils.DataToolsService;
7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.beans.factory.annotation.Qualifier; 9 import org.springframework.beans.factory.annotation.Qualifier;
@@ -21,7 +22,7 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl&lt;ScheduleRule1Flat @@ -21,7 +22,7 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl&lt;ScheduleRule1Flat
21 private DataToolsService dataToolsService; 22 private DataToolsService dataToolsService;
22 23
23 @Override 24 @Override
24 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 25 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
25 return dataToolsService.uploadFile(filename, filedata); 26 return dataToolsService.uploadFile(filename, filedata);
26 } 27 }
27 28
@@ -31,7 +32,7 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl&lt;ScheduleRule1Flat @@ -31,7 +32,7 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl&lt;ScheduleRule1Flat
31 } 32 }
32 33
33 @Override 34 @Override
34 - public File exportData(Map<String, Object> params) throws ScheduleException { 35 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
35 return dataToolsService.exportData(params); 36 return dataToolsService.exportData(params);
36 } 37 }
37 } 38 }
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
@@ -23,30 +23,29 @@ import com.bsth.service.schedule.GuideboardInfoService; @@ -23,30 +23,29 @@ import com.bsth.service.schedule.GuideboardInfoService;
23 import com.bsth.service.schedule.TTInfoDetailService; 23 import com.bsth.service.schedule.TTInfoDetailService;
24 import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; 24 import com.bsth.service.schedule.datatools.TTInfoDetailForEdit;
25 import com.bsth.service.schedule.exception.ScheduleException; 25 import com.bsth.service.schedule.exception.ScheduleException;
26 -import com.bsth.service.schedule.utils.DataToolsProperties; 26 +import com.bsth.service.schedule.utils.DataToolsFile;
  27 +import com.bsth.service.schedule.utils.DataToolsFileType;
27 import com.bsth.service.schedule.utils.DataToolsService; 28 import com.bsth.service.schedule.utils.DataToolsService;
28 -import jxl.Cell;  
29 -import jxl.Sheet;  
30 -import jxl.Workbook;  
31 -import jxl.write.Label;  
32 -import jxl.write.WritableSheet;  
33 -import jxl.write.WritableWorkbook; 29 +import com.bsth.service.schedule.utils.PoiUtils;
34 import org.apache.commons.lang3.StringUtils; 30 import org.apache.commons.lang3.StringUtils;
35 -import org.joda.time.DateTime; 31 +import org.apache.poi.ss.usermodel.Cell;
  32 +import org.apache.poi.ss.usermodel.Row;
  33 +import org.apache.poi.ss.usermodel.Sheet;
  34 +import org.apache.poi.ss.usermodel.Workbook;
36 import org.slf4j.Logger; 35 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory; 36 import org.slf4j.LoggerFactory;
38 import org.springframework.beans.factory.annotation.Autowired; 37 import org.springframework.beans.factory.annotation.Autowired;
39 import org.springframework.beans.factory.annotation.Qualifier; 38 import org.springframework.beans.factory.annotation.Qualifier;
40 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
41 import org.springframework.jdbc.core.JdbcTemplate; 39 import org.springframework.jdbc.core.JdbcTemplate;
42 import org.springframework.stereotype.Service; 40 import org.springframework.stereotype.Service;
43 import org.springframework.transaction.annotation.Transactional; 41 import org.springframework.transaction.annotation.Transactional;
44 import org.springframework.util.CollectionUtils; 42 import org.springframework.util.CollectionUtils;
45 43
46 import java.io.File; 44 import java.io.File;
47 -import java.io.PrintWriter;  
48 -import java.io.StringWriter;  
49 -import java.util.*; 45 +import java.util.ArrayList;
  46 +import java.util.HashMap;
  47 +import java.util.List;
  48 +import java.util.Map;
50 import java.util.regex.Matcher; 49 import java.util.regex.Matcher;
51 import java.util.regex.Pattern; 50 import java.util.regex.Pattern;
52 51
@@ -122,7 +121,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -122,7 +121,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
122 } 121 }
123 122
124 @Override 123 @Override
125 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 124 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
126 return dataToolsService.uploadFile(filename, filedata); 125 return dataToolsService.uploadFile(filename, filedata);
127 } 126 }
128 127
@@ -134,7 +133,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -134,7 +133,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
134 } 133 }
135 134
136 @Override 135 @Override
137 - public File exportData(Map<String, Object> params) throws ScheduleException { 136 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
138 return dataToolsService.exportData(params); 137 return dataToolsService.exportData(params);
139 } 138 }
140 139
@@ -152,17 +151,30 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -152,17 +151,30 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
152 @Override 151 @Override
153 public void validateExcelSheet(String filename, String sheetname, Integer lineid, String linename) throws ScheduleException { 152 public void validateExcelSheet(String filename, String sheetname, Integer lineid, String linename) throws ScheduleException {
154 try { 153 try {
155 - Workbook book = Workbook.getWorkbook(new File(filename));  
156 - Sheet sheet = book.getSheet(sheetname);  
157 - if (sheet.getRows() == 0 || sheet.getColumns() == 0) { // 工作区是否为空 154 + File file = new File(filename);
  155 + Workbook workbook;
  156 +
  157 + if (DataToolsFileType.XLS.isThisType(file)) {
  158 + workbook = DataToolsFileType.XLS.getWorkBook(file);
  159 + } else if (DataToolsFileType.XLSX.isThisType(file)) {
  160 + workbook = DataToolsFileType.XLSX.getWorkBook(file);
  161 + } else {
  162 + throw new Exception("不是xls xlsx文件!");
  163 + }
  164 +
  165 + Sheet sheet = workbook.getSheet(sheetname);
  166 + int rowNums = sheet.getLastRowNum() + 1; // 基于0 base的,长度加1
  167 + int colNums = sheet.getRow(0).getLastCellNum(); // 不需要加1,就是长度
  168 +
  169 + if (rowNums == 0 || colNums == 0) { // 工作区是否为空
158 throw new Exception(String.format("%s 工作区没有数据!", sheetname)); 170 throw new Exception(String.format("%s 工作区没有数据!", sheetname));
159 } else { 171 } else {
160 - if (sheet.getRows() <= 1 || sheet.getColumns() <= 1) { 172 + if (rowNums <= 1 || rowNums <= 1) {
161 throw new Exception(String.format("工作区至少包含2行2列的数据")); 173 throw new Exception(String.format("工作区至少包含2行2列的数据"));
162 } else { 174 } else {
163 - Cell[] cells = sheet.getRow(0); // 获取第一行数据列  
164 - for (int i = 0; i < cells.length; i++) {  
165 - String cell_con = StringUtils.trimToEmpty(cells[i].getContents()); // trimToEmpty 175 + Row firstRow = sheet.getRow(0); // 获取第一行数据列
  176 + for (int i = 0; i < colNums; i++) {
  177 + String cell_con = StringUtils.trimToEmpty(PoiUtils.getStringValueFromCell(firstRow.getCell(i))); // trimToEmpty
166 178
167 if (StringUtils.isEmpty(cell_con)) { 179 if (StringUtils.isEmpty(cell_con)) {
168 throw new Exception(String.format("第1行,第%d列数据不能为空", i + 1)); 180 throw new Exception(String.format("第1行,第%d列数据不能为空", i + 1));
@@ -203,9 +215,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -203,9 +215,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
203 215
204 // 验证路牌内容 216 // 验证路牌内容
205 Map<String, Integer> gbindexmap = new HashMap<>(); // 记录每个路牌在第几行 217 Map<String, Integer> gbindexmap = new HashMap<>(); // 记录每个路牌在第几行
206 - for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据  
207 - Cell bcell = sheet.getRow(i)[0]; // 获取第1列  
208 - String bcell_con = StringUtils.trimToEmpty(bcell.getContents()); // trimToEmpty 218 + for (int i = 1; i < rowNums; i++) { // 从第2行开始验证数据
  219 + Cell cell = sheet.getRow(i).getCell(0); // 获取第1列
  220 + String bcell_con = StringUtils.trimToEmpty(PoiUtils.getStringValueFromCell(cell)); // trimToEmpty
209 if (StringUtils.isEmpty(bcell_con)) { 221 if (StringUtils.isEmpty(bcell_con)) {
210 throw new Exception(String.format("第%d行,第1列路牌无数据", i + 1)); 222 throw new Exception(String.format("第%d行,第1列路牌无数据", i + 1));
211 } else if (gbindexmap.get(bcell_con.trim()) != null) { 223 } else if (gbindexmap.get(bcell_con.trim()) != null) {
@@ -236,10 +248,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -236,10 +248,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
236 Pattern p2 = Pattern.compile(rex2); 248 Pattern p2 = Pattern.compile(rex2);
237 Pattern p3 = Pattern.compile(rex3); 249 Pattern p3 = Pattern.compile(rex3);
238 250
239 - for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据  
240 - Cell[] bcells = sheet.getRow(i);  
241 - for (int j = 1; j < bcells.length; j++) { // 从第2列开始  
242 - String bcell_con = StringUtils.trimToEmpty(bcells[j].getContents()); // trimToEmpty 251 + for (int i = 1; i < rowNums; i++) { // 从第2行开始验证数据
  252 + Row row = sheet.getRow(i);
  253 + for (int j = 1; j < colNums; j++) { // 从第2列开始
  254 + String bcell_con = StringUtils.trimToEmpty(PoiUtils.getStringValueFromCell(row.getCell(j))); // trimToEmpty
243 if (StringUtils.isNotEmpty(bcell_con)) { 255 if (StringUtils.isNotEmpty(bcell_con)) {
244 Matcher m1 = p1.matcher(bcell_con.trim()); 256 Matcher m1 = p1.matcher(bcell_con.trim());
245 Matcher m2 = p2.matcher(bcell_con.trim()); 257 Matcher m2 = p2.matcher(bcell_con.trim());
@@ -253,6 +265,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -253,6 +265,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
253 } 265 }
254 266
255 } 267 }
  268 +
256 } catch (Exception exp) { 269 } catch (Exception exp) {
257 exp.printStackTrace(); 270 exp.printStackTrace();
258 throw new ScheduleException(exp.getMessage()); 271 throw new ScheduleException(exp.getMessage());
@@ -315,13 +328,13 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -315,13 +328,13 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
315 } 328 }
316 329
317 /** 330 /**
318 - * @description : (TODO) 时刻表明细模型数据保存. 331 + * @description (TODO) 时刻表明细模型数据保存.
319 * 332 *
320 - * @param : [map] 333 + * @param map
321 * 334 *
322 * @return : 返回保存操作后的状态. 335 * @return : 返回保存操作后的状态.
323 * 336 *
324 - * @exception : 处理所有抛出来的异常. 337 + * @exception 处理所有抛出来的异常.
325 * */ 338 * */
326 @Transactional 339 @Transactional
327 public Map<String, Object> skbDetailMxSave(Map<String, Object> map) { 340 public Map<String, Object> skbDetailMxSave(Map<String, Object> map) {
@@ -347,11 +360,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -347,11 +360,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
347 /** 360 /**
348 * @description : (TODO) json班次数据转list班次. 361 * @description : (TODO) json班次数据转list班次.
349 * 362 *
350 - * @param : [jsonStr--班次json字符串] 363 + * @param jsonStr 班次json字符串]
351 * 364 *
352 - * @return :返回一个list分装的班次数据. 365 + * @return 返回一个list分装的班次数据.
353 * 366 *
354 - * @status : OK. 367 + * @status OK.
355 * */ 368 * */
356 public List<TTInfoDetail> jsonArrayToListEntity(String jsonStr) throws Exception { 369 public List<TTInfoDetail> jsonArrayToListEntity(String jsonStr) throws Exception {
357 // 1、创建list分装的时刻表明细实体对象数据. 370 // 1、创建list分装的时刻表明细实体对象数据.
@@ -369,9 +382,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -369,9 +382,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
369 /** 382 /**
370 * @description : (TODO) 班次map对象转实体对象. 383 * @description : (TODO) 班次map对象转实体对象.
371 * 384 *
372 - * @param : [obj-班次map对象]. 385 + * @param obj 班次map对象.
373 * 386 *
374 - * @return : 返回一个班次实体对象. 387 + * @return 返回一个班次实体对象.
375 * 388 *
376 * @exception 异常暂先抛出去. 389 * @exception 异常暂先抛出去.
377 * */ 390 * */
@@ -427,7 +440,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -427,7 +440,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
427 /** 440 /**
428 * @description : (TODO) int转boolean类型. 441 * @description : (TODO) int转boolean类型.
429 * 442 *
430 - * @param : [value--int类型的数值] 443 + * @param value--int类型的数值]
431 * 444 *
432 * @return : 返回一个布尔类型值. 445 * @return : 返回一个布尔类型值.
433 * */ 446 * */
@@ -441,9 +454,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -441,9 +454,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
441 } 454 }
442 455
443 /** 456 /**
444 - * @description : (TODO) 获取路牌. 457 + * @description (TODO) 获取路牌.
445 * 458 *
446 - * @param [xl--线路,name--路牌名称,code--路牌编码,lpType--路牌类型] 459 + * @param xl --线路,name--路牌名称,code--路牌编码,lpType--路牌类型]
447 * 460 *
448 * @return 返回路牌. 461 * @return 返回路牌.
449 * */ 462 * */
@@ -479,11 +492,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -479,11 +492,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
479 /** 492 /**
480 * @description : (TODO) 线路方向转代码. 493 * @description : (TODO) 线路方向转代码.
481 * 494 *
482 - * @param : [str--方向字符串] 495 + * @param str--方向字符串]
483 * 496 *
484 * @return 返回方向代码. 497 * @return 返回方向代码.
485 * 498 *
486 - * @exception : 异常暂先抛出. 499 + * @exception 异常暂先抛出.
487 * */ 500 * */
488 public String dirToCod(String str) throws Exception { 501 public String dirToCod(String str) throws Exception {
489 String c = ""; 502 String c = "";
src/main/java/com/bsth/service/schedule/utils/DataToolsFile.java 0 → 100644
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import java.io.File;
  4 +
  5 +/**
  6 + * 数据工具文件(操作后的)。
  7 + */
  8 +public class DataToolsFile {
  9 + /** 文件类型 */
  10 + private DataToolsFileType fileType;
  11 + /** 具体文件 */
  12 + private File file;
  13 +
  14 + public DataToolsFileType getFileType() {
  15 + return fileType;
  16 + }
  17 +
  18 + public void setFileType(DataToolsFileType fileType) {
  19 + this.fileType = fileType;
  20 + }
  21 +
  22 + public File getFile() {
  23 + return file;
  24 + }
  25 +
  26 + public void setFile(File file) {
  27 + this.file = file;
  28 + }
  29 +}
src/main/java/com/bsth/service/schedule/utils/DataToolsFileType.java 0 → 100644
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  4 +import org.apache.poi.ss.usermodel.Workbook;
  5 +import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  6 +import org.apache.tika.Tika;
  7 +
  8 +import java.io.File;
  9 +import java.io.FileInputStream;
  10 +
  11 +/**
  12 + * 数据工具文件类型。
  13 + */
  14 +public enum DataToolsFileType {
  15 + XLS { // excel xls 文件
  16 + @Override
  17 + public boolean isThisType(byte[] fileData) {
  18 + Tika tika = new Tika();
  19 + String type = tika.detect(fileData);
  20 +
  21 + // application/x-tika-msoffice
  22 + if ("application/vnd.ms-excel".equals(type) ||
  23 + "application/x-tika-msoffice".equals(type)) {
  24 + // .xls 2007的格式
  25 + return true;
  26 + } else {
  27 + return false;
  28 + }
  29 + }
  30 +
  31 + @Override
  32 + public boolean isThisType(File file) {
  33 + try {
  34 + Tika tika = new Tika();
  35 + String type = tika.detect(file);
  36 +
  37 + // application/x-tika-msoffice
  38 + if ("application/vnd.ms-excel".equals(type) ||
  39 + "application/x-tika-msoffice".equals(type)) {
  40 + // .xls 2007的格式
  41 + return true;
  42 + } else {
  43 + return false;
  44 + }
  45 +
  46 + } catch (Exception exp) {
  47 + throw new RuntimeException(exp);
  48 + }
  49 +
  50 + }
  51 +
  52 + @Override
  53 + public String getNewFileName(String... fileNames) {
  54 + StringBuilder stringBuilder = new StringBuilder();
  55 + for (String fn: fileNames) {
  56 + stringBuilder.append(fn);
  57 + }
  58 + stringBuilder.append(".xls");
  59 + return stringBuilder.toString();
  60 + }
  61 +
  62 + @Override
  63 + public Workbook getWorkBook(File file) {
  64 + try {
  65 + return new HSSFWorkbook(new FileInputStream(file));
  66 + } catch (Exception exp) {
  67 + throw new RuntimeException(exp);
  68 + }
  69 + }
  70 + },
  71 + XLSX { // excel xlsx 文件
  72 + @Override
  73 + public boolean isThisType(byte[] fileData) {
  74 + Tika tika = new Tika();
  75 + String type = tika.detect(fileData);
  76 +
  77 + // application/x-tika-ooxml
  78 + if ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(type) ||
  79 + "application/x-tika-ooxml".equals(type)) {
  80 + // .xlsx 2007之后的格式
  81 + return true;
  82 + } else {
  83 + return false;
  84 + }
  85 +
  86 + }
  87 +
  88 + @Override
  89 + public boolean isThisType(File file) {
  90 + try {
  91 + Tika tika = new Tika();
  92 + String type = tika.detect(file);
  93 +
  94 + // application/x-tika-ooxml
  95 + if ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(type) ||
  96 + "application/x-tika-ooxml".equals(type)) {
  97 + // .xlsx 2007之后的格式
  98 + return true;
  99 + } else {
  100 + return false;
  101 + }
  102 +
  103 + } catch (Exception exp) {
  104 + throw new RuntimeException(exp);
  105 + }
  106 + }
  107 +
  108 + @Override
  109 + public String getNewFileName(String... fileNames) {
  110 + StringBuilder stringBuilder = new StringBuilder();
  111 + for (String fn: fileNames) {
  112 + stringBuilder.append(fn);
  113 + }
  114 + stringBuilder.append(".xlsx");
  115 + return stringBuilder.toString();
  116 + }
  117 +
  118 + @Override
  119 + public Workbook getWorkBook(File file) {
  120 + try {
  121 + return new XSSFWorkbook(file);
  122 + } catch (Exception exp) {
  123 + throw new RuntimeException(exp);
  124 + }
  125 +
  126 + }
  127 + };
  128 +
  129 + /**
  130 + * 判定是否是此文件类型。
  131 + * @param fileData
  132 + * @return
  133 + */
  134 + public abstract boolean isThisType(byte[] fileData);
  135 +
  136 + /**
  137 + * 判定文件类型。
  138 + * @param file
  139 + * @return
  140 + */
  141 + public abstract boolean isThisType(File file);
  142 +
  143 + /**
  144 + * 生成对应的文件名
  145 + * @param fileNames 文件名组成部份
  146 + * @return
  147 + */
  148 + public abstract String getNewFileName(String ... fileNames);
  149 +
  150 + /**
  151 + * 获取Excel工作本对象。
  152 + * @param file 文件
  153 + * @return
  154 + */
  155 + public abstract Workbook getWorkBook(File file);
  156 +}
src/main/java/com/bsth/service/schedule/utils/DataToolsService.java
@@ -11,9 +11,9 @@ import java.util.Map; @@ -11,9 +11,9 @@ import java.util.Map;
11 public interface DataToolsService { 11 public interface DataToolsService {
12 //----------------- 数据服务操作 --------------// 12 //----------------- 数据服务操作 --------------//
13 // 上传文件 13 // 上传文件
14 - File uploadFile(String filename, byte[] filedata) throws ScheduleException; 14 + DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException;
15 // 导入数据 15 // 导入数据
16 void importData(File file, Map<String, Object> params) throws ScheduleException; 16 void importData(File file, Map<String, Object> params) throws ScheduleException;
17 // 导出数据 17 // 导出数据
18 - File exportData(Map<String, Object> params) throws ScheduleException; 18 + DataToolsFile exportData(Map<String, Object> params) throws ScheduleException;
19 } 19 }
src/main/java/com/bsth/service/schedule/utils/DataToolsServiceImpl.java
@@ -2,7 +2,6 @@ package com.bsth.service.schedule.utils; @@ -2,7 +2,6 @@ package com.bsth.service.schedule.utils;
2 2
3 import com.bsth.service.schedule.exception.ScheduleException; 3 import com.bsth.service.schedule.exception.ScheduleException;
4 import com.google.common.io.Files; 4 import com.google.common.io.Files;
5 -import org.apache.tika.Tika;  
6 import org.joda.time.DateTime; 5 import org.joda.time.DateTime;
7 import org.pentaho.di.core.KettleEnvironment; 6 import org.pentaho.di.core.KettleEnvironment;
8 import org.pentaho.di.core.logging.KettleLogStore; 7 import org.pentaho.di.core.logging.KettleLogStore;
@@ -91,33 +90,46 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -91,33 +90,46 @@ public class DataToolsServiceImpl implements DataToolsService {
91 } 90 }
92 91
93 @Override 92 @Override
94 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 93 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
95 // 上传文件 94 // 上传文件
96 try { 95 try {
97 initKettle(); 96 initKettle();
98 97
99 LOGGER.info("start uploadFile...originalFilename={}", filename); 98 LOGGER.info("start uploadFile...originalFilename={}", filename);
100 - File newFile = new File(dataToolsProperties.getFileuploadDir() + File.separator +  
101 - filename + "-upload-" + new DateTime().toString("yyyyMMddHHmmss") + ".xls");  
102 - // TODO:判定是否excel数据  
103 - Tika tika = new Tika();  
104 - String type = tika.detect(filedata);  
105 - // application/x-tika-msoffice  
106 - LOGGER.info("文件格式={}", type);  
107 - if ("application/vnd.ms-excel".equals(type) || "application/x-tika-msoffice".equals(type)) {  
108 - // .xls 2007的格式  
109 - Files.write(filedata, newFile);  
110 - } else if ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(type)) {  
111 - // .xlsx 2007之后的格式  
112 - throw new Exception("暂时不支持.xlsx格式文件!"); 99 +
  100 + DataToolsFile dataToolsFile = new DataToolsFile();
  101 +
  102 + // 判定文件类型(目前只支持xls,xlsx文件)
  103 + if (DataToolsFileType.XLS.isThisType(filedata)) {
  104 + // xls文件
  105 + dataToolsFile.setFileType(DataToolsFileType.XLS);
  106 + dataToolsFile.setFile(new File(DataToolsFileType.XLS.getNewFileName(
  107 + dataToolsProperties.getFileuploadDir(),
  108 + File.separator,
  109 + filename,
  110 + "-upload-",
  111 + new DateTime().toString("yyyyMMddHHmmss")
  112 + )));
  113 + Files.write(filedata, dataToolsFile.getFile());
  114 + } else if (DataToolsFileType.XLSX.isThisType(filedata)) {
  115 + // xlsx文件
  116 + dataToolsFile.setFileType(DataToolsFileType.XLSX);
  117 + dataToolsFile.setFile(new File(DataToolsFileType.XLSX.getNewFileName(
  118 + dataToolsProperties.getFileuploadDir(),
  119 + File.separator,
  120 + filename,
  121 + "-upload-",
  122 + new DateTime().toString("yyyyMMddHHmmss")
  123 + )));
  124 + Files.write(filedata, dataToolsFile.getFile());
113 } else { 125 } else {
114 // 非excel文件 126 // 非excel文件
115 - throw new Exception("非.xls格式文件!"); 127 + throw new Exception("非.xls .xlsx 格式文件!");
116 } 128 }
117 129
118 - LOGGER.info("uploadFile success...newFilename={}", newFile.getAbsolutePath()); 130 + LOGGER.info("uploadFile success...newFilename={}", dataToolsFile.getFile().getAbsolutePath());
119 131
120 - return newFile; 132 + return dataToolsFile;
121 } catch (Exception exp) { 133 } catch (Exception exp) {
122 LOGGER.info("uploadFile failed...stackTrace..."); 134 LOGGER.info("uploadFile failed...stackTrace...");
123 135
@@ -194,7 +206,7 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -194,7 +206,7 @@ public class DataToolsServiceImpl implements DataToolsService {
194 } 206 }
195 207
196 @Override 208 @Override
197 - public File exportData(Map<String, Object> params) throws ScheduleException { 209 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
198 // 导出数据 210 // 导出数据
199 String transLogId = ""; 211 String transLogId = "";
200 String transMetaLogId = ""; 212 String transMetaLogId = "";
@@ -251,7 +263,12 @@ public class DataToolsServiceImpl implements DataToolsService { @@ -251,7 +263,12 @@ public class DataToolsServiceImpl implements DataToolsService {
251 LOGGER.info(stringBuffer.toString()); 263 LOGGER.info(stringBuffer.toString());
252 LOGGER.info("exportData success..."); 264 LOGGER.info("exportData success...");
253 265
254 - return new File(filepath + ".xls"); 266 + // 导出目前是xls格式
  267 + DataToolsFile dataToolsFile = new DataToolsFile();
  268 + dataToolsFile.setFileType(DataToolsFileType.XLS);
  269 + dataToolsFile.setFile(new File(filepath + ".xls"));
  270 +
  271 + return dataToolsFile;
255 } catch (Exception exp) { 272 } catch (Exception exp) {
256 LOGGER.info("exportData failed...statckTrace..."); 273 LOGGER.info("exportData failed...statckTrace...");
257 274
src/main/java/com/bsth/service/schedule/utils/PoiUtils.java 0 → 100644
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  4 +import org.apache.poi.ss.usermodel.Cell;
  5 +import org.apache.poi.xssf.usermodel.XSSFCell;
  6 +
  7 +import java.text.DecimalFormat;
  8 +import java.text.SimpleDateFormat;
  9 +import java.util.Date;
  10 +
  11 +/**
  12 + * POI操作的until方法。
  13 + */
  14 +public class PoiUtils {
  15 + /**
  16 + * 使用poi读取cell中的值
  17 + * @param cell
  18 + * @return
  19 + */
  20 + public static String getStringValueFromCell(Cell cell) {
  21 + SimpleDateFormat sFormat = new SimpleDateFormat("MM/dd/yyyy");
  22 + DecimalFormat decimalFormat = new DecimalFormat("#.#");
  23 + String cellValue = "";
  24 + if(cell == null) {
  25 + return cellValue;
  26 + }
  27 + else if(cell.getCellType() == Cell.CELL_TYPE_STRING) {
  28 + cellValue = cell.getStringCellValue();
  29 + }
  30 +
  31 + else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
  32 + if(HSSFDateUtil.isCellDateFormatted(cell)) {
  33 + double d = cell.getNumericCellValue();
  34 + Date date = HSSFDateUtil.getJavaDate(d);
  35 + cellValue = sFormat.format(date);
  36 + }
  37 + else {
  38 + cellValue = decimalFormat.format((cell.getNumericCellValue()));
  39 + }
  40 + }
  41 + else if(cell.getCellType() == Cell.CELL_TYPE_BLANK) {
  42 + cellValue = "";
  43 + }
  44 + else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
  45 + cellValue = String.valueOf(cell.getBooleanCellValue());
  46 + }
  47 + else if(cell.getCellType() == Cell.CELL_TYPE_ERROR) {
  48 + cellValue = "";
  49 + }
  50 + else if(cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
  51 + cellValue = cell.getCellFormula().toString();
  52 + }
  53 + return cellValue;
  54 + }
  55 +}
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -828,7 +828,7 @@ @@ -828,7 +828,7 @@
828 <optimizationLevel>9</optimizationLevel> 828 <optimizationLevel>9</optimizationLevel>
829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
830 <jsScript_name>Script 1</jsScript_name> 830 <jsScript_name>Script 1</jsScript_name>
831 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script> 831 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name> 832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
833 <rename>qdzname</rename> 833 <rename>qdzname</rename>
834 <type>String</type> 834 <type>String</type>
src/main/resources/datatools/ktrs/ttinfodetailDataInput2.ktr
@@ -828,7 +828,7 @@ @@ -828,7 +828,7 @@
828 <optimizationLevel>9</optimizationLevel> 828 <optimizationLevel>9</optimizationLevel>
829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
830 <jsScript_name>Script 1</jsScript_name> 830 <jsScript_name>Script 1</jsScript_name>
831 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script> 831 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name> 832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
833 <rename>qdzname</rename> 833 <rename>qdzname</rename>
834 <type>String</type> 834 <type>String</type>
src/main/resources/static/real_control_v2/js/common.js
@@ -232,8 +232,8 @@ var gb_common = (function () { @@ -232,8 +232,8 @@ var gb_common = (function () {
232 data.push({ 232 data.push({
233 value: name, 233 value: name,
234 code: code, 234 code: code,
235 - fullChars: pinyin.getFullChars(name).toLocaleLowerCase(),  
236 - camelChars: pinyin.getCamelChars(name).toLocaleLowerCase() 235 + fullChars: pinyin.getFullChars(name),
  236 + camelChars: pinyin.getCamelChars(name)
237 }); 237 });
238 } 238 }
239 init_autocom_pinyin(element, data); 239 init_autocom_pinyin(element, data);
@@ -271,7 +271,7 @@ var gb_common = (function () { @@ -271,7 +271,7 @@ var gb_common = (function () {
271 minLength: 1, 271 minLength: 1,
272 delay: 50, 272 delay: 50,
273 source: function (release) { 273 source: function (release) {
274 - var q = $('input', element).val().toLocaleLowerCase(), 274 + var q = $('input', element).val().toUpperCase(),
275 rs = [], 275 rs = [],
276 count = 0; 276 count = 0;
277 277
@@ -295,7 +295,7 @@ var gb_common = (function () { @@ -295,7 +295,7 @@ var gb_common = (function () {
295 minLength: 1, 295 minLength: 1,
296 delay: 50, 296 delay: 50,
297 source: function (release) { 297 source: function (release) {
298 - var q = $('input', element).val().toLocaleLowerCase(), 298 + var q = $('input', element).val().toUpperCase(),
299 rs = [], 299 rs = [],
300 count = 0; 300 count = 0;
301 301
src/main/resources/static/real_control_v2/js/data/data_basic.js
@@ -63,8 +63,8 @@ var gb_data_basic = (function () { @@ -63,8 +63,8 @@ var gb_data_basic = (function () {
63 code = p['workId'].indexOf('-')!=-1?p['workId'].split('-')[1]:p['workId']; 63 code = p['workId'].indexOf('-')!=-1?p['workId'].split('-')[1]:p['workId'];
64 data.push({ 64 data.push({
65 value: code + '/' + p.name, 65 value: code + '/' + p.name,
66 - fullChars: p.fullChars,  
67 - camelChars: p.camelChars 66 + fullChars: p.fullChars.toUpperCase(),
  67 + camelChars: p.camelChars.toUpperCase()
68 }); 68 });
69 } 69 }
70 cb && cb(data); 70 cb && cb(data);
src/main/resources/static/real_control_v2/js/main.js
@@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) { @@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) {
169 function showUpdateDescription() { 169 function showUpdateDescription() {
170 //更新说明 170 //更新说明
171 var updateDescription = { 171 var updateDescription = {
172 - date: '2017-07-21',  
173 - text: '<h5>1、修复一个蛮严肃的问题,这个问题有极低的概率导致个别班次的操作不会同步到路单!!!</h5>' 172 + date: '2017-07-26',
  173 + text: '<h5>1、修复一个临时性的小问题,这个问题导致26号上午,起点站和第2站缓冲区重叠的几条线路发不出去!</h5>'
174 }; 174 };
175 175
176 var storage = window.localStorage 176 var storage = window.localStorage