Commit 66b6571869eadb2eda47e9a93111d729668d926f
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
pom.xml
| @@ -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<ScheduleRealInfo, | @@ -488,7 +488,7 @@ public class ScheduleRealInfoController extends BaseController<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<T, ID extends Serializable> { | @@ -154,20 +154,24 @@ public class BController<T, ID extends Serializable> { | ||
| 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<T, ID extends Serializable> { | @@ -202,9 +206,9 @@ public class BController<T, ID extends Serializable> { | ||
| 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<T, ID extends Serializable> { | @@ -220,16 +224,16 @@ public class BController<T, ID extends Serializable> { | ||
| 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<T, ID extends Serializable> implements BService<T, ID> | @@ -111,7 +112,7 @@ public class BServiceImpl<T, ID extends Serializable> implements BService<T, ID> | ||
| 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<T, ID extends Serializable> implements BService<T, ID> | @@ -121,7 +122,7 @@ public class BServiceImpl<T, ID extends Serializable> implements BService<T, ID> | ||
| 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<CarConfigInfo, Long> | @@ -30,7 +31,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl<CarConfigInfo, Long> | ||
| 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<CarConfigInfo, Long> | @@ -40,7 +41,7 @@ public class CarConfigInfoServiceImpl extends BServiceImpl<CarConfigInfo, Long> | ||
| 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<Cars, Integer> implements Cars | @@ -29,12 +30,12 @@ public class CarsServiceImpl extends BServiceImpl<Cars, Integer> 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<EmployeeConfigIn | @@ -36,7 +37,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl<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<EmployeeConfigIn | @@ -46,7 +47,7 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl<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<Personnel, Integer> implem | @@ -24,7 +25,7 @@ public class EmployeeServiceImpl extends BServiceImpl<Personnel, Integer> 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<Personnel, Integer> implem | @@ -34,7 +35,7 @@ public class EmployeeServiceImpl extends BServiceImpl<Personnel, Integer> 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<GuideboardInfo, Long | @@ -128,7 +129,7 @@ public class GuideboardInfoServiceImpl extends BServiceImpl<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<GuideboardInfo, Long | @@ -138,7 +139,7 @@ public class GuideboardInfoServiceImpl extends BServiceImpl<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<ScheduleRule1Flat | @@ -21,7 +22,7 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl<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<ScheduleRule1Flat | @@ -31,7 +32,7 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl<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<TTInfoDetail, Long> im | @@ -122,7 +121,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -134,7 +133,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -152,17 +151,30 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -203,9 +215,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -236,10 +248,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -253,6 +265,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -315,13 +328,13 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -347,11 +360,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -369,9 +382,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -427,7 +440,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -441,9 +454,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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<TTInfoDetail, Long> im | @@ -479,11 +492,11 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> 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>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</jsScript_script> | 831 | + <jsScript_script>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 全部修正完毕后,如果长度不是5,前面补0
if (sendtime_calcu.length != 5) {
 sendtime_calcu = "0" + sendtime_calcu;
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</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>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</jsScript_script> | 831 | + <jsScript_script>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 全部修正完毕后,如果长度不是5,前面补0
if (sendtime_calcu.length != 5) {
 sendtime_calcu = "0" + sendtime_calcu;
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</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 |