Commit 6ef6d97e6bb29b0f15ba3fabbbc1460af8fe01d9
1 parent
8ed2f6f3
PSM-7
Showing
6 changed files
with
103 additions
and
23 deletions
Too many changes to show.
To preserve performance only 6 of 14 files are displayed.
src/main/java/com/bsth/controller/schedule/TTInfoDetailController.java
| @@ -116,6 +116,7 @@ public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> { | @@ -116,6 +116,7 @@ public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> { | ||
| 116 | if (sheet.getRows() == 0 || sheet.getColumns() == 0) { // 工作区是否为空 | 116 | if (sheet.getRows() == 0 || sheet.getColumns() == 0) { // 工作区是否为空 |
| 117 | rtn.put("status", ResponseCode.ERROR); | 117 | rtn.put("status", ResponseCode.ERROR); |
| 118 | rtn.put("msg", String.format("%s 工作区没有数据!", sheetname)); | 118 | rtn.put("msg", String.format("%s 工作区没有数据!", sheetname)); |
| 119 | + return rtn; | ||
| 119 | } else { | 120 | } else { |
| 120 | if (sheet.getRows() <= 1 || sheet.getColumns() <= 1) { | 121 | if (sheet.getRows() <= 1 || sheet.getColumns() <= 1) { |
| 121 | rtn.put("status", ResponseCode.ERROR); | 122 | rtn.put("status", ResponseCode.ERROR); |
| @@ -147,11 +148,11 @@ public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> { | @@ -147,11 +148,11 @@ public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> { | ||
| 147 | List<StationRoute> stationRouteList = (List<StationRoute>) stationRouteService.list(p1); | 148 | List<StationRoute> stationRouteList = (List<StationRoute>) stationRouteService.list(p1); |
| 148 | if (CollectionUtils.isEmpty(stationRouteList)) { | 149 | if (CollectionUtils.isEmpty(stationRouteList)) { |
| 149 | rtn.put("status", ResponseCode.ERROR); | 150 | rtn.put("status", ResponseCode.ERROR); |
| 150 | - rtn.put("msg", String.format("第1行,第%d列数据在%s站点路由中不是起点站", i + 1, linename)); | 151 | + rtn.put("msg", String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", i + 1, cell_con.trim(), linename)); |
| 151 | return rtn; | 152 | return rtn; |
| 152 | } else if (stationRouteList.size() > 1) { | 153 | } else if (stationRouteList.size() > 1) { |
| 153 | rtn.put("status", ResponseCode.ERROR); | 154 | rtn.put("status", ResponseCode.ERROR); |
| 154 | - rtn.put("msg", String.format("第1行,第%d列数据在%s站点路由中上下行都是起点站", i + 1, linename)); | 155 | + rtn.put("msg", String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", i + 1, cell_con.trim(), linename)); |
| 155 | return rtn; | 156 | return rtn; |
| 156 | } | 157 | } |
| 157 | } | 158 | } |
| @@ -363,6 +364,7 @@ public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> { | @@ -363,6 +364,7 @@ public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> { | ||
| 363 | 364 | ||
| 364 | ttInfoDetailService.fileDataImport( | 365 | ttInfoDetailService.fileDataImport( |
| 365 | new File(filename + "_temp.xls"), | 366 | new File(filename + "_temp.xls"), |
| 367 | + (String) form.get("sheetname"), | ||
| 366 | (String) form.get("xlname"), | 368 | (String) form.get("xlname"), |
| 367 | (String) form.get("ttname"), | 369 | (String) form.get("ttname"), |
| 368 | tccname | 370 | tccname |
src/main/java/com/bsth/entity/schedule/SchedulePlan.java
| @@ -38,6 +38,15 @@ public class SchedulePlan { | @@ -38,6 +38,15 @@ public class SchedulePlan { | ||
| 38 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 38 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) |
| 39 | private ScheduleRule1 scheduleRule1; | 39 | private ScheduleRule1 scheduleRule1; |
| 40 | 40 | ||
| 41 | + // TODO: 新字段,测试完后删除旧的字段 | ||
| 42 | + | ||
| 43 | + /** 使用的时刻表名字列表(用逗号连接) */ | ||
| 44 | + private String ttInfoNames; | ||
| 45 | + /** 使用的时刻表id列表(用逗号连接) */ | ||
| 46 | + private String ttInfoId; | ||
| 47 | + /** 使用的规则1列表(用逗号连接) */ | ||
| 48 | + private String rule1Ids; | ||
| 49 | + | ||
| 41 | /** 排班计划的开始时间 */ | 50 | /** 排班计划的开始时间 */ |
| 42 | @Column(nullable = false) | 51 | @Column(nullable = false) |
| 43 | private Date scheduleFromTime; | 52 | private Date scheduleFromTime; |
| @@ -150,4 +159,28 @@ public class SchedulePlan { | @@ -150,4 +159,28 @@ public class SchedulePlan { | ||
| 150 | public void setUpdateDate(Date updateDate) { | 159 | public void setUpdateDate(Date updateDate) { |
| 151 | this.updateDate = updateDate; | 160 | this.updateDate = updateDate; |
| 152 | } | 161 | } |
| 162 | + | ||
| 163 | + public String getTtInfoNames() { | ||
| 164 | + return ttInfoNames; | ||
| 165 | + } | ||
| 166 | + | ||
| 167 | + public void setTtInfoNames(String ttInfoNames) { | ||
| 168 | + this.ttInfoNames = ttInfoNames; | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + public String getTtInfoId() { | ||
| 172 | + return ttInfoId; | ||
| 173 | + } | ||
| 174 | + | ||
| 175 | + public void setTtInfoId(String ttInfoId) { | ||
| 176 | + this.ttInfoId = ttInfoId; | ||
| 177 | + } | ||
| 178 | + | ||
| 179 | + public String getRule1Ids() { | ||
| 180 | + return rule1Ids; | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + public void setRule1Ids(String rule1Ids) { | ||
| 184 | + this.rule1Ids = rule1Ids; | ||
| 185 | + } | ||
| 153 | } | 186 | } |
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
| @@ -121,6 +121,13 @@ public class SchedulePlanInfo { | @@ -121,6 +121,13 @@ public class SchedulePlanInfo { | ||
| 121 | @Column(nullable = false) | 121 | @Column(nullable = false) |
| 122 | private String bcType; | 122 | private String bcType; |
| 123 | 123 | ||
| 124 | + // 重要的新增字段 | ||
| 125 | + /** 关联的时刻表id */ | ||
| 126 | + private Long ttInfo; | ||
| 127 | + /** 关联的时刻表名字 */ | ||
| 128 | + private String ttInfoName; | ||
| 129 | + | ||
| 130 | + | ||
| 124 | /** 创建人 */ | 131 | /** 创建人 */ |
| 125 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 132 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) |
| 126 | private SysUser createBy; | 133 | private SysUser createBy; |
| @@ -555,4 +562,20 @@ public class SchedulePlanInfo { | @@ -555,4 +562,20 @@ public class SchedulePlanInfo { | ||
| 555 | public void setSchedulePlan(SchedulePlan schedulePlan) { | 562 | public void setSchedulePlan(SchedulePlan schedulePlan) { |
| 556 | this.schedulePlan = schedulePlan; | 563 | this.schedulePlan = schedulePlan; |
| 557 | } | 564 | } |
| 565 | + | ||
| 566 | + public Long getTtInfo() { | ||
| 567 | + return ttInfo; | ||
| 568 | + } | ||
| 569 | + | ||
| 570 | + public void setTtInfo(Long ttInfo) { | ||
| 571 | + this.ttInfo = ttInfo; | ||
| 572 | + } | ||
| 573 | + | ||
| 574 | + public String getTtInfoName() { | ||
| 575 | + return ttInfoName; | ||
| 576 | + } | ||
| 577 | + | ||
| 578 | + public void setTtInfoName(String ttInfoName) { | ||
| 579 | + this.ttInfoName = ttInfoName; | ||
| 580 | + } | ||
| 558 | } | 581 | } |
src/main/java/com/bsth/entity/search/PredicatesBuilder.java
| @@ -29,7 +29,26 @@ public class PredicatesBuilder { | @@ -29,7 +29,26 @@ public class PredicatesBuilder { | ||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | public static Predicate eq(CriteriaBuilder cb,Path<?> expression, Object object){ | 31 | public static Predicate eq(CriteriaBuilder cb,Path<?> expression, Object object){ |
| 32 | - return cb.equal(expression, object); | 32 | + Class<?> leftType = expression.getJavaType(); |
| 33 | + Class<?> rightType = object.getClass(); | ||
| 34 | + | ||
| 35 | + if (Number.class.isAssignableFrom(leftType) && | ||
| 36 | + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number == Number/String | ||
| 37 | + return cb.equal(expression, object); | ||
| 38 | + } else if (String.class.isAssignableFrom(leftType) && | ||
| 39 | + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String == String/Number | ||
| 40 | + return cb.equal(expression, object); | ||
| 41 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 42 | + Date.class.isAssignableFrom(rightType)) { // Date == Date | ||
| 43 | + return cb.equal(expression, object); | ||
| 44 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 45 | + String.class.isAssignableFrom(rightType)) { // Date == String | ||
| 46 | + DateTime dateTime = new DateTime(object); | ||
| 47 | + return cb.equal(expression, dateTime.toDate()); | ||
| 48 | + } else { | ||
| 49 | + throw new RuntimeException("eq 不支持类型组合:" + expression.getJavaType() + "==" + object.getClass()); | ||
| 50 | + } | ||
| 51 | + | ||
| 33 | } | 52 | } |
| 34 | 53 | ||
| 35 | public static Predicate ne(CriteriaBuilder cb,Path<?> expression, Object object){ | 54 | public static Predicate ne(CriteriaBuilder cb,Path<?> expression, Object object){ |
| @@ -49,17 +68,17 @@ public class PredicatesBuilder { | @@ -49,17 +68,17 @@ public class PredicatesBuilder { | ||
| 49 | Class<?> leftType = expression.getJavaType(); | 68 | Class<?> leftType = expression.getJavaType(); |
| 50 | Class<?> rightType = object.getClass(); | 69 | Class<?> rightType = object.getClass(); |
| 51 | 70 | ||
| 52 | - if (leftType.isAssignableFrom(Number.class) && | ||
| 53 | - rightType.isAssignableFrom(Number.class)) { // 判定是否是Number类型的子类 | 71 | + if (Number.class.isAssignableFrom(leftType) && |
| 72 | + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number >= Number/String | ||
| 54 | return cb.ge((Path<Number>) expression, (Number) object); | 73 | return cb.ge((Path<Number>) expression, (Number) object); |
| 55 | - } else if (leftType.isAssignableFrom(String.class) && | ||
| 56 | - rightType.isAssignableFrom(String.class)) { // 判定是否是String类型的子类 | 74 | + } else if (String.class.isAssignableFrom(leftType) && |
| 75 | + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String >= String/Number | ||
| 57 | return cb.greaterThanOrEqualTo((Path<String>) expression, (String) object); | 76 | return cb.greaterThanOrEqualTo((Path<String>) expression, (String) object); |
| 58 | - } else if (leftType.isAssignableFrom(Date.class) && | ||
| 59 | - rightType.isAssignableFrom(Date.class)) { // 判定是否是Date类型的子类 | 77 | + } else if (Date.class.isAssignableFrom(leftType) && |
| 78 | + Date.class.isAssignableFrom(rightType)) { // Date >= Date | ||
| 60 | return cb.greaterThanOrEqualTo((Path<Date>) expression, (Date) object); | 79 | return cb.greaterThanOrEqualTo((Path<Date>) expression, (Date) object); |
| 61 | - } else if (leftType.isAssignableFrom(Date.class) && | ||
| 62 | - rightType.isAssignableFrom(String.class)) { // 左边是日期,右边是字符串,尝试转换字符串到日期 | 80 | + } else if (Date.class.isAssignableFrom(leftType) && |
| 81 | + String.class.isAssignableFrom(rightType)) { // Date >= String | ||
| 63 | DateTime dateTime = new DateTime(object); | 82 | DateTime dateTime = new DateTime(object); |
| 64 | return cb.greaterThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); | 83 | return cb.greaterThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); |
| 65 | } else { | 84 | } else { |
| @@ -80,21 +99,22 @@ public class PredicatesBuilder { | @@ -80,21 +99,22 @@ public class PredicatesBuilder { | ||
| 80 | Class<?> leftType = expression.getJavaType(); | 99 | Class<?> leftType = expression.getJavaType(); |
| 81 | Class<?> rightType = object.getClass(); | 100 | Class<?> rightType = object.getClass(); |
| 82 | 101 | ||
| 83 | - if (leftType.isAssignableFrom(Number.class) && | ||
| 84 | - rightType.isAssignableFrom(Number.class)) { // 判定是否是Number类型的子类 | 102 | + |
| 103 | + if (Number.class.isAssignableFrom(leftType) && | ||
| 104 | + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number <= Number/String | ||
| 85 | return cb.le((Path<Number>) expression, (Number) object); | 105 | return cb.le((Path<Number>) expression, (Number) object); |
| 86 | - } else if (leftType.isAssignableFrom(String.class) && | ||
| 87 | - rightType.isAssignableFrom(String.class)) { // 判定是否是String类型的子类 | 106 | + } else if (String.class.isAssignableFrom(leftType) && |
| 107 | + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String <= String/Number | ||
| 88 | return cb.lessThanOrEqualTo((Path<String>) expression, (String) object); | 108 | return cb.lessThanOrEqualTo((Path<String>) expression, (String) object); |
| 89 | - } else if (leftType.isAssignableFrom(Date.class) && | ||
| 90 | - rightType.isAssignableFrom(Date.class)) { // 判定是否是Date类型的子类 | 109 | + } else if (Date.class.isAssignableFrom(leftType) && |
| 110 | + Date.class.isAssignableFrom(rightType)) { // Date <= Date | ||
| 91 | return cb.lessThanOrEqualTo((Path<Date>) expression, (Date) object); | 111 | return cb.lessThanOrEqualTo((Path<Date>) expression, (Date) object); |
| 92 | - } else if (leftType.isAssignableFrom(Date.class) && | ||
| 93 | - rightType.isAssignableFrom(String.class)) { // 左边是日期,右边是字符串,尝试转换字符串到日期 | 112 | + } else if (Date.class.isAssignableFrom(leftType) && |
| 113 | + String.class.isAssignableFrom(rightType)) { // Date <= String | ||
| 94 | DateTime dateTime = new DateTime(object); | 114 | DateTime dateTime = new DateTime(object); |
| 95 | return cb.lessThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); | 115 | return cb.lessThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); |
| 96 | } else { | 116 | } else { |
| 97 | - throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass()); | 117 | + throw new RuntimeException("le 不支持类型组合:" + expression.getJavaType() + "<=" + object.getClass()); |
| 98 | } | 118 | } |
| 99 | } | 119 | } |
| 100 | 120 |
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java
| @@ -136,7 +136,7 @@ public interface TTInfoDetailService extends BaseService<TTInfoDetail, Long> { | @@ -136,7 +136,7 @@ public interface TTInfoDetailService extends BaseService<TTInfoDetail, Long> { | ||
| 136 | String ttinfoname, | 136 | String ttinfoname, |
| 137 | String tccname) throws Exception; | 137 | String tccname) throws Exception; |
| 138 | 138 | ||
| 139 | - void fileDataImport(File file, String xlmc, String ttinfoname, String tccname) throws Exception; | 139 | + void fileDataImport(File file, String sheetname, String xlmc, String ttinfoname, String tccname) throws Exception; |
| 140 | 140 | ||
| 141 | 141 | ||
| 142 | } | 142 | } |
src/main/java/com/bsth/service/schedule/TTInfoDetailServiceImpl.java
| @@ -114,6 +114,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> | @@ -114,6 +114,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> | ||
| 114 | return editInfo; | 114 | return editInfo; |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | + @Override | ||
| 117 | /** | 118 | /** |
| 118 | * 上传并导入数据,和DataImportExportService的同名方法有差别。 | 119 | * 上传并导入数据,和DataImportExportService的同名方法有差别。 |
| 119 | * @param datafile form上传文件 | 120 | * @param datafile form上传文件 |
| @@ -128,12 +129,12 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> | @@ -128,12 +129,12 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> | ||
| 128 | String tccname) throws Exception { | 129 | String tccname) throws Exception { |
| 129 | // 上传数据文件 | 130 | // 上传数据文件 |
| 130 | File uploadFile = dataImportExportService.uploadFile(datafile); | 131 | File uploadFile = dataImportExportService.uploadFile(datafile); |
| 131 | - fileDataImport(uploadFile, xlmc, ttinfoname, tccname); | 132 | + fileDataImport(uploadFile, "工作表1", xlmc, ttinfoname, tccname); |
| 132 | 133 | ||
| 133 | } | 134 | } |
| 134 | 135 | ||
| 135 | @Override | 136 | @Override |
| 136 | - public void fileDataImport(File uploadFile, String xlmc, String ttinfoname, String tccname) throws Exception { | 137 | + public void fileDataImport(File uploadFile, String sheetname, String xlmc, String ttinfoname, String tccname) throws Exception { |
| 137 | // 1、上传数据文件 | 138 | // 1、上传数据文件 |
| 138 | System.out.println("线路名称:" + xlmc); | 139 | System.out.println("线路名称:" + xlmc); |
| 139 | System.out.println("时刻表名称:" + ttinfoname); | 140 | System.out.println("时刻表名称:" + ttinfoname); |
| @@ -162,6 +163,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> | @@ -162,6 +163,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> | ||
| 162 | // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数 | 163 | // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数 |
| 163 | trans.setParameterValue("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件 | 164 | trans.setParameterValue("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件 |
| 164 | trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置 | 165 | trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置 |
| 166 | + trans.setParameterValue("sheetname", sheetname); // sheet工作区的名字 | ||
| 165 | trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录 | 167 | trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录 |
| 166 | trans.setParameterValue("xlname", xlmc); // 线路名称 | 168 | trans.setParameterValue("xlname", xlmc); // 线路名称 |
| 167 | trans.setParameterValue("ttinfoname", ttinfoname); // 时刻表名称 | 169 | trans.setParameterValue("ttinfoname", ttinfoname); // 时刻表名称 |