Commit 6ef6d97e6bb29b0f15ba3fabbbc1460af8fe01d9

Authored by 徐烜
1 parent 8ed2f6f3

PSM-7

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&lt;TTInfoDetail, Long&gt; { @@ -147,11 +148,11 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
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&lt;TTInfoDetail, Long&gt; { @@ -363,6 +364,7 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
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&lt;TTInfoDetail, Long&gt; { @@ -136,7 +136,7 @@ public interface TTInfoDetailService extends BaseService&lt;TTInfoDetail, Long&gt; {
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&lt;TTInfoDetail, Long&gt; @@ -114,6 +114,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
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&lt;TTInfoDetail, Long&gt; @@ -128,12 +129,12 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
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&lt;TTInfoDetail, Long&gt; @@ -162,6 +163,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
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); // 时刻表名称