Commit 461ec576c8b2131220aaece3a1ba11b88665eeb6
1 parent
4be34257
bf
Showing
12 changed files
with
542 additions
and
35 deletions
bsthLineProfiles/pom.xml
| ... | ... | @@ -305,6 +305,16 @@ |
| 305 | 305 | <artifactId>junit</artifactId> |
| 306 | 306 | <version>4.12</version> |
| 307 | 307 | </dependency> |
| 308 | + <dependency> | |
| 309 | + <groupId>cn.hutool</groupId> | |
| 310 | + <artifactId>hutool-all</artifactId> | |
| 311 | + <version>5.7.12</version> | |
| 312 | + </dependency> | |
| 313 | + <dependency> | |
| 314 | + <groupId>org.apache.poi</groupId> | |
| 315 | + <artifactId>poi-ooxml</artifactId> | |
| 316 | + <version>4.1.2</version> | |
| 317 | + </dependency> | |
| 308 | 318 | </dependencies> |
| 309 | 319 | |
| 310 | 320 | <build> | ... | ... |
bsthLineProfiles/src/main/java/com/ruoyi/project/system/line/controller/BsthTLineHistoryReportController.java
| 1 | 1 | package com.ruoyi.project.system.line.controller; |
| 2 | 2 | |
| 3 | +import java.io.IOException; | |
| 4 | +import java.io.OutputStream; | |
| 3 | 5 | import java.lang.reflect.Constructor; |
| 4 | 6 | import java.lang.reflect.Field; |
| 5 | 7 | import java.lang.reflect.Method; |
| 8 | +import java.net.URLEncoder; | |
| 9 | +import java.nio.charset.StandardCharsets; | |
| 6 | 10 | import java.text.SimpleDateFormat; |
| 11 | +import java.time.LocalDateTime; | |
| 7 | 12 | import java.util.ArrayList; |
| 8 | 13 | import java.util.Date; |
| 9 | 14 | import java.util.HashMap; |
| 10 | 15 | import java.util.List; |
| 11 | 16 | import java.util.Map; |
| 17 | +import java.util.stream.Collectors; | |
| 12 | 18 | |
| 19 | +import cn.hutool.core.collection.CollUtil; | |
| 20 | +import cn.hutool.core.io.IoUtil; | |
| 21 | +import cn.hutool.poi.excel.ExcelWriter; | |
| 22 | +import cn.hutool.poi.excel.StyleSet; | |
| 23 | +import com.ruoyi.project.system.line.domain.Export; | |
| 24 | +import org.apache.poi.*; | |
| 13 | 25 | import com.ruoyi.common.utils.poi.ExcelUtil; |
| 14 | 26 | import com.ruoyi.project.system.line.domain.LineHistoryReport; |
| 27 | +import org.apache.poi.ss.usermodel.*; | |
| 15 | 28 | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| 16 | 29 | import org.springframework.beans.factory.annotation.Autowired; |
| 17 | 30 | import org.springframework.stereotype.Controller; |
| ... | ... | @@ -38,6 +51,9 @@ import com.ruoyi.project.system.user.domain.User; |
| 38 | 51 | import com.ruoyi.project.system.user.service.IUserService; |
| 39 | 52 | import com.ruoyi.project.utils.ExcelUtils; |
| 40 | 53 | |
| 54 | +import javax.servlet.ServletOutputStream; | |
| 55 | +import javax.servlet.http.HttpServletResponse; | |
| 56 | + | |
| 41 | 57 | @Controller |
| 42 | 58 | @RequestMapping("/system/historyReport") |
| 43 | 59 | public class BsthTLineHistoryReportController extends BaseController |
| ... | ... | @@ -70,11 +86,9 @@ public class BsthTLineHistoryReportController extends BaseController |
| 70 | 86 | public TableDataInfo list(BsthTLine bsthTLine) |
| 71 | 87 | { |
| 72 | 88 | startPage(); |
| 73 | - bsthTLine.setHistoryId(1L); | |
| 74 | 89 | List<BsthTLine> list = bsthTLineService.selectBsthTLineHistoryList(bsthTLine); |
| 75 | 90 | return getDataTable(list); |
| 76 | 91 | } |
| 77 | - | |
| 78 | 92 | |
| 79 | 93 | @RequiresPermissions("system:HistoryReport:export") |
| 80 | 94 | @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT) |
| ... | ... | @@ -180,6 +194,256 @@ public class BsthTLineHistoryReportController extends BaseController |
| 180 | 194 | return util.exportExcel(list, "line"); |
| 181 | 195 | } |
| 182 | 196 | |
| 197 | + | |
| 198 | + | |
| 199 | + @RequiresPermissions("system:HistoryReport:export2") | |
| 200 | + @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT) | |
| 201 | + @RequestMapping("/export2") | |
| 202 | + @ResponseBody | |
| 203 | + public void export(HttpServletResponse response,BsthTLine bsthTLine) throws NoSuchFieldException { | |
| 204 | + | |
| 205 | + //查询变更记录 | |
| 206 | + List<LineHistoryReport> list =bsthTLineService.getLineHistoryReport(bsthTLine); | |
| 207 | + | |
| 208 | + List<DictData> dicts = dictDataService.selectDictDataList(null); | |
| 209 | + Map<String,List<DictData>> dictMap = new HashMap(); | |
| 210 | + List<String> titles=new ArrayList<>(); | |
| 211 | + for(DictData d : dicts) { | |
| 212 | + if(dictMap.get(d.getDictType()) == null) { | |
| 213 | + dictMap.put(d.getDictType(), new ArrayList<DictData>()); | |
| 214 | + } | |
| 215 | + dictMap.get(d.getDictType()).add(d); | |
| 216 | + } | |
| 217 | + | |
| 218 | + try { | |
| 219 | + for(LineHistoryReport line:list) { | |
| 220 | + Field[] field = line.getClass().getDeclaredFields(); | |
| 221 | + for(int j=0 ; j<field.length ; j++){ //遍历所有属性 | |
| 222 | + String name = field[j].getName(); //获取属性的名字 | |
| 223 | + if(name.length()>3&&!"Old".equals(name.substring(name.length()-3))&&!"lineName".equals(name)){ | |
| 224 | + //获取变更前后的值 | |
| 225 | + Field f = line.getClass().getDeclaredField(name); | |
| 226 | + Field f2 = line.getClass().getDeclaredField(name+"Old"); | |
| 227 | + f.setAccessible(true); | |
| 228 | + f2.setAccessible(true); | |
| 229 | + f.get(line); | |
| 230 | + String v =f.get(line)==null?"":f.get(line).toString(); | |
| 231 | + String vo=f2.get(line)==null?"":f2.get(line).toString(); | |
| 232 | + //如果没变置空 | |
| 233 | +// if(v.equals(vo)){ | |
| 234 | +// f.set(line, null); | |
| 235 | +// f2.set(line, null); | |
| 236 | +// } | |
| 237 | + //编码转换 | |
| 238 | + if(dictMap.get(name) != null) { | |
| 239 | + if(v != null && v.split(",").length > 0) { | |
| 240 | + String result = ""; | |
| 241 | + for(String str:v.split(",")) { | |
| 242 | + for(DictData d:dictMap.get(name)) { | |
| 243 | + if(d.getDictValue().equals(str)) { | |
| 244 | + result += d.getDictLabel() + ","; | |
| 245 | + } | |
| 246 | + } | |
| 247 | + } | |
| 248 | + if(!result.isEmpty()) { | |
| 249 | + f.set(line, result.substring(0,result.length()-1)); | |
| 250 | + }else { | |
| 251 | + f.set(line, v); | |
| 252 | + } | |
| 253 | + } | |
| 254 | + if(vo != null && vo.split(",").length > 0) { | |
| 255 | + String result = ""; | |
| 256 | + for(String str:vo.split(",")) { | |
| 257 | + for(DictData d:dictMap.get(name)) { | |
| 258 | + if(d.getDictValue().equals(str)) { | |
| 259 | + result += d.getDictLabel() + ","; | |
| 260 | + } | |
| 261 | + } | |
| 262 | + } | |
| 263 | + if(!result.isEmpty()) { | |
| 264 | + f2.set(line, result.substring(0,result.length()-1)); | |
| 265 | + }else { | |
| 266 | + f2.set(line, vo); | |
| 267 | + } | |
| 268 | + } | |
| 269 | + } | |
| 270 | + if("inoutDistrict".equals(name)||"isWarrant".equals(name)||"isMetro".equals(name)||"hasTimelists".equals(name)){ | |
| 271 | + if(!"".equals(v)){ | |
| 272 | + for(DictData d:dictMap.get("trueFalse")) { | |
| 273 | + if(d.getDictValue().equals(v)) { | |
| 274 | + f.set(line, d.getDictLabel()); | |
| 275 | + } | |
| 276 | + } | |
| 277 | + } | |
| 278 | + if(!"".equals(vo)){ | |
| 279 | + for(DictData d:dictMap.get("trueFalse")) { | |
| 280 | + if(d.getDictValue().equals(vo)) { | |
| 281 | + f2.set(line, d.getDictLabel()); | |
| 282 | + } | |
| 283 | + } | |
| 284 | + } | |
| 285 | + } | |
| 286 | + } | |
| 287 | + } | |
| 288 | + } | |
| 289 | + } catch (Exception e) { | |
| 290 | + // TODO Auto-generated catch block | |
| 291 | + e.printStackTrace(); | |
| 292 | + } | |
| 293 | + //设置列名 | |
| 294 | + ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriterWithSheet("统计"); | |
| 295 | + Sheet sheet = writer.getSheet(); | |
| 296 | + //设置默认样式 | |
| 297 | + Font font=ExcelUtils.setBaseFont(writer.getWorkbook(),false,false,"宋体",10); | |
| 298 | + ExcelUtils.GlobalStyleSet(writer,font); | |
| 299 | + //跳过3行做列名 | |
| 300 | + writer.passCurrentRow(); | |
| 301 | + writer.passCurrentRow(); | |
| 302 | + writer.passCurrentRow(); | |
| 303 | + //设置列名 | |
| 304 | + writer.merge(0,0,0,13, "2021年1月1日起至今延辟调线路情况",true); | |
| 305 | + writer.setRowHeight(0,30); | |
| 306 | + writer.merge(1,2,0,0,"单位",false); | |
| 307 | + writer.merge(1,2,1,1,"序号",false); | |
| 308 | + writer.merge(1,2,2,2,"类别",false); | |
| 309 | + writer.merge(1,2,3,3,"线路",false); | |
| 310 | + writer.merge(1,2,4,4,"实施日期",false); | |
| 311 | + writer.merge(1,1,5,7,"调整类别",false); | |
| 312 | + writer.writeCellValue(5,2,"新辟"); | |
| 313 | + writer.writeCellValue(6,2,"调整(分为:缩线、延伸、调整、增能、减能、调整首末班、增加班次、减少班次)"); | |
| 314 | + writer.setRowHeight(2,60); | |
| 315 | + writer.writeCellValue(7,2,"撤销"); | |
| 316 | + writer.merge(1,2,8,8,"合计",false); | |
| 317 | + writer.merge(1,2,9,9,"理由(备注)",false); | |
| 318 | + writer.merge(1,1,10,11,"调整前",false); | |
| 319 | + writer.writeCellValue(10,2,"配车"); | |
| 320 | + writer.writeCellValue(11,2,"劳动力"); | |
| 321 | + writer.merge(1,1,12,13,"调整后",false); | |
| 322 | + writer.writeCellValue(12,2,"配车"); | |
| 323 | + writer.writeCellValue(13,2,"劳动力"); | |
| 324 | + | |
| 325 | + //数据处理 | |
| 326 | + Map<String,List<LineHistoryReport>>map= list.stream().collect(Collectors.groupingBy(LineHistoryReport::getCompany)); | |
| 327 | + | |
| 328 | + int rowIndex=3; | |
| 329 | + //合计计数 | |
| 330 | + long xpAll=0; | |
| 331 | + long tzAll=0; | |
| 332 | + long cxAll=0; | |
| 333 | + long xtcAll=0; | |
| 334 | + long pcAll=0; | |
| 335 | + long ldlAll=0; | |
| 336 | + long pcoAll=0; | |
| 337 | + long ldloAll=0; | |
| 338 | + | |
| 339 | + for(String k : map.keySet()){ | |
| 340 | + List<LineHistoryReport> ll=map.get(k); | |
| 341 | + List<Export> list1=new ArrayList(); | |
| 342 | + //小计计数 | |
| 343 | + long xp=0; | |
| 344 | + long tz=0; | |
| 345 | + long cx=0; | |
| 346 | + long xtc=0; | |
| 347 | + long pc=0; | |
| 348 | + long ldl=0; | |
| 349 | + long pco=0; | |
| 350 | + long ldlo=0; | |
| 351 | + int i=1; | |
| 352 | + for (LineHistoryReport lineHistoryReport : ll) { | |
| 353 | + Export export=new Export(); | |
| 354 | + export.setLine1(lineHistoryReport.getCompany());//单位 | |
| 355 | + writer.setColumnWidth(0,25); | |
| 356 | + export.setLine2(String.valueOf(i));//序号 | |
| 357 | + writer.setColumnWidth(1,10); | |
| 358 | + i++; | |
| 359 | + export.setLine3(lineHistoryReport.getLineLevel());//类别 | |
| 360 | + writer.setColumnWidth(2,20); | |
| 361 | + export.setLine4(lineHistoryReport.getLineName());//线路 | |
| 362 | + writer.setColumnWidth(3,20); | |
| 363 | + Date date=lineHistoryReport.getStartDate(); | |
| 364 | + SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); | |
| 365 | + export.setLine5( simpleDateFormat.format(date));//实施日期 | |
| 366 | + writer.setColumnWidth(4,20); | |
| 367 | + if("新辟".equals(lineHistoryReport.getLineUpdateType())){ | |
| 368 | + export.setLine6(lineHistoryReport.getLineUpdateType());//新辟 | |
| 369 | + writer.setColumnWidth(5,20); | |
| 370 | + xp++; | |
| 371 | + }else if("撤销".equals(lineHistoryReport.getLineUpdateType())){ | |
| 372 | + export.setLine8(lineHistoryReport.getLineUpdateType());//撤销 | |
| 373 | + writer.setColumnWidth(7,20); | |
| 374 | + cx++; | |
| 375 | + }else { | |
| 376 | + export.setLine7(lineHistoryReport.getLineUpdateType());//调整 | |
| 377 | + writer.setColumnWidth(6,20); | |
| 378 | + tz++; | |
| 379 | + } | |
| 380 | + writer.setColumnWidth(8,20); | |
| 381 | + export.setLine10(lineHistoryReport.getRemark()); | |
| 382 | + writer.setColumnWidth(9,20); | |
| 383 | + long count=lineHistoryReport.getWarrantVehiclesLarge()+lineHistoryReport.getWarrantVehiclesMiddle()+lineHistoryReport.getVehiclesNumber()+ | |
| 384 | + lineHistoryReport.getNumberVehiclesLarge()+lineHistoryReport.getNumberVehiclesMiddle(); | |
| 385 | + pc+=count; | |
| 386 | + long countOld=lineHistoryReport.getWarrantVehiclesLargeOld()+lineHistoryReport.getWarrantVehiclesMiddleOld()+lineHistoryReport.getVehiclesNumberOld()+ | |
| 387 | + lineHistoryReport.getNumberVehiclesLargeOld()+lineHistoryReport.getNumberVehiclesMiddleOld(); | |
| 388 | + pco+=countOld; | |
| 389 | + export.setLine11(String.valueOf(count)); | |
| 390 | + writer.setColumnWidth(10,10); | |
| 391 | + export.setLine12(String.valueOf(lineHistoryReport.getNumberPersonDriver())); | |
| 392 | + writer.setColumnWidth(11,10); | |
| 393 | + ldl+=lineHistoryReport.getNumberPersonDriver(); | |
| 394 | + export.setLine13(String.valueOf(countOld)); | |
| 395 | + writer.setColumnWidth(12,10); | |
| 396 | + export.setLine14(String.valueOf(lineHistoryReport.getNumberPersonDriverOld())); | |
| 397 | + writer.setColumnWidth(13,10); | |
| 398 | + ldlo+=lineHistoryReport.getNumberPersonDriverOld(); | |
| 399 | + list1.add(export); | |
| 400 | + rowIndex++; | |
| 401 | + } | |
| 402 | + | |
| 403 | + Export export=new Export(); | |
| 404 | + export.setLine2("小计"); | |
| 405 | + export.setLine6(String.valueOf(xp)); | |
| 406 | + xpAll+=xp; | |
| 407 | + export.setLine7(String.valueOf(tz)); | |
| 408 | + tzAll+=tz; | |
| 409 | + export.setLine8(String.valueOf(cx)); | |
| 410 | + cxAll+=cx; | |
| 411 | + xtc=xp+tz+cx; | |
| 412 | + xtcAll+=xtc; | |
| 413 | + export.setLine9(String.valueOf(xtc)); | |
| 414 | + export.setLine11(String.valueOf(pc)); | |
| 415 | + pcAll+=pc; | |
| 416 | + export.setLine12(String.valueOf(ldl)); | |
| 417 | + ldlAll+=ldl; | |
| 418 | + export.setLine13(String.valueOf(pco)); | |
| 419 | + pcoAll+=pco; | |
| 420 | + export.setLine14(String.valueOf(ldlo)); | |
| 421 | + ldloAll+=ldlo; | |
| 422 | + list1.add(export); | |
| 423 | + //写入sheet | |
| 424 | + writer.write(list1, false); | |
| 425 | + //加背景色 | |
| 426 | + ExcelUtils.setBackground(writer,IndexedColors.SEA_GREEN.getIndex(),rowIndex,writer.getColumnCount()); | |
| 427 | + rowIndex++; | |
| 428 | + } | |
| 429 | + Export export=new Export(); | |
| 430 | + export.setLine1("合计"); | |
| 431 | + export.setLine6(String.valueOf(xpAll)); | |
| 432 | + export.setLine7(String.valueOf(tzAll)); | |
| 433 | + export.setLine8(String.valueOf(cxAll)); | |
| 434 | + export.setLine9(String.valueOf(xtcAll)); | |
| 435 | + export.setLine11(String.valueOf(pcAll)); | |
| 436 | + export.setLine12(String.valueOf(ldlAll)); | |
| 437 | + export.setLine13(String.valueOf(pcoAll)); | |
| 438 | + export.setLine14(String.valueOf(ldloAll)); | |
| 439 | + List<Export> result=new ArrayList(); | |
| 440 | + result.add(export); | |
| 441 | + writer.write(result, false); | |
| 442 | + //设置行高 | |
| 443 | + ExcelUtils.setHeight(writer, (short) 2); | |
| 444 | + ExcelUtils.downloadExcel(response,"变更报表",writer); | |
| 445 | + } | |
| 446 | + | |
| 183 | 447 | public static Object getObjectField(Field field,String valueStr) throws Exception{ |
| 184 | 448 | Class typeClass = field.getType(); |
| 185 | 449 | Constructor con = typeClass.getConstructor(valueStr.getClass()); |
| ... | ... | @@ -187,7 +451,4 @@ public class BsthTLineHistoryReportController extends BaseController |
| 187 | 451 | return obj; |
| 188 | 452 | } |
| 189 | 453 | |
| 190 | - public static void main(String[] args) { | |
| 191 | - | |
| 192 | - } | |
| 193 | 454 | } | ... | ... |
bsthLineProfiles/src/main/java/com/ruoyi/project/system/line/domain/Export.java
0 → 100644
| 1 | +package com.ruoyi.project.system.line.domain; | |
| 2 | + | |
| 3 | +public class Export { | |
| 4 | + private String line1; | |
| 5 | + private String line2; | |
| 6 | + private String line3; | |
| 7 | + private String line4; | |
| 8 | + private String line5; | |
| 9 | + private String line6; | |
| 10 | + private String line7; | |
| 11 | + private String line8; | |
| 12 | + private String line9; | |
| 13 | + private String line10; | |
| 14 | + private String line11; | |
| 15 | + private String line12; | |
| 16 | + private String line13; | |
| 17 | + private String line14; | |
| 18 | + | |
| 19 | + public String getLine1() { | |
| 20 | + return line1; | |
| 21 | + } | |
| 22 | + | |
| 23 | + public void setLine1(String line1) { | |
| 24 | + this.line1 = line1; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public String getLine2() { | |
| 28 | + return line2; | |
| 29 | + } | |
| 30 | + | |
| 31 | + public void setLine2(String line2) { | |
| 32 | + this.line2 = line2; | |
| 33 | + } | |
| 34 | + | |
| 35 | + public String getLine3() { | |
| 36 | + return line3; | |
| 37 | + } | |
| 38 | + | |
| 39 | + public void setLine3(String line3) { | |
| 40 | + this.line3 = line3; | |
| 41 | + } | |
| 42 | + | |
| 43 | + public String getLine4() { | |
| 44 | + return line4; | |
| 45 | + } | |
| 46 | + | |
| 47 | + public void setLine4(String line4) { | |
| 48 | + this.line4 = line4; | |
| 49 | + } | |
| 50 | + | |
| 51 | + public String getLine5() { | |
| 52 | + return line5; | |
| 53 | + } | |
| 54 | + | |
| 55 | + public void setLine5(String line5) { | |
| 56 | + this.line5 = line5; | |
| 57 | + } | |
| 58 | + | |
| 59 | + public String getLine6() { | |
| 60 | + return line6; | |
| 61 | + } | |
| 62 | + | |
| 63 | + public void setLine6(String line6) { | |
| 64 | + this.line6 = line6; | |
| 65 | + } | |
| 66 | + | |
| 67 | + public String getLine7() { | |
| 68 | + return line7; | |
| 69 | + } | |
| 70 | + | |
| 71 | + public void setLine7(String line7) { | |
| 72 | + this.line7 = line7; | |
| 73 | + } | |
| 74 | + | |
| 75 | + public String getLine8() { | |
| 76 | + return line8; | |
| 77 | + } | |
| 78 | + | |
| 79 | + public void setLine8(String line8) { | |
| 80 | + this.line8 = line8; | |
| 81 | + } | |
| 82 | + | |
| 83 | + public String getLine9() { | |
| 84 | + return line9; | |
| 85 | + } | |
| 86 | + | |
| 87 | + public void setLine9(String line9) { | |
| 88 | + this.line9 = line9; | |
| 89 | + } | |
| 90 | + | |
| 91 | + public String getLine10() { | |
| 92 | + return line10; | |
| 93 | + } | |
| 94 | + | |
| 95 | + public void setLine10(String line10) { | |
| 96 | + this.line10 = line10; | |
| 97 | + } | |
| 98 | + | |
| 99 | + public String getLine11() { | |
| 100 | + return line11; | |
| 101 | + } | |
| 102 | + | |
| 103 | + public void setLine11(String line11) { | |
| 104 | + this.line11 = line11; | |
| 105 | + } | |
| 106 | + | |
| 107 | + public String getLine12() { | |
| 108 | + return line12; | |
| 109 | + } | |
| 110 | + | |
| 111 | + public void setLine12(String line12) { | |
| 112 | + this.line12 = line12; | |
| 113 | + } | |
| 114 | + | |
| 115 | + public String getLine13() { | |
| 116 | + return line13; | |
| 117 | + } | |
| 118 | + | |
| 119 | + public void setLine13(String line13) { | |
| 120 | + this.line13 = line13; | |
| 121 | + } | |
| 122 | + | |
| 123 | + public String getLine14() { | |
| 124 | + return line14; | |
| 125 | + } | |
| 126 | + | |
| 127 | + public void setLine14(String line14) { | |
| 128 | + this.line14 = line14; | |
| 129 | + } | |
| 130 | +} | ... | ... |
bsthLineProfiles/src/main/java/com/ruoyi/project/system/line/domain/LineHistoryReport.java
| ... | ... | @@ -1098,7 +1098,7 @@ public class LineHistoryReport extends BaseEntity |
| 1098 | 1098 | } |
| 1099 | 1099 | |
| 1100 | 1100 | public Long getWarrantVehiclesLarge() { |
| 1101 | - return warrantVehiclesLarge; | |
| 1101 | + return warrantVehiclesLarge==null?0:warrantVehiclesLarge; | |
| 1102 | 1102 | } |
| 1103 | 1103 | |
| 1104 | 1104 | public void setWarrantVehiclesLarge(Long warrantVehiclesLarge) { |
| ... | ... | @@ -1106,7 +1106,7 @@ public class LineHistoryReport extends BaseEntity |
| 1106 | 1106 | } |
| 1107 | 1107 | |
| 1108 | 1108 | public Long getWarrantVehiclesLargeOld() { |
| 1109 | - return warrantVehiclesLargeOld; | |
| 1109 | + return warrantVehiclesLargeOld==null?0:warrantVehiclesLargeOld; | |
| 1110 | 1110 | } |
| 1111 | 1111 | |
| 1112 | 1112 | public void setWarrantVehiclesLargeOld(Long warrantVehiclesLargeOld) { |
| ... | ... | @@ -1114,7 +1114,7 @@ public class LineHistoryReport extends BaseEntity |
| 1114 | 1114 | } |
| 1115 | 1115 | |
| 1116 | 1116 | public Long getWarrantVehiclesMiddle() { |
| 1117 | - return warrantVehiclesMiddle; | |
| 1117 | + return warrantVehiclesMiddle==null?0:warrantVehiclesMiddle; | |
| 1118 | 1118 | } |
| 1119 | 1119 | |
| 1120 | 1120 | public void setWarrantVehiclesMiddle(Long warrantVehiclesMiddle) { |
| ... | ... | @@ -1122,7 +1122,7 @@ public class LineHistoryReport extends BaseEntity |
| 1122 | 1122 | } |
| 1123 | 1123 | |
| 1124 | 1124 | public Long getWarrantVehiclesMiddleOld() { |
| 1125 | - return warrantVehiclesMiddleOld; | |
| 1125 | + return warrantVehiclesMiddleOld==null?0:warrantVehiclesMiddleOld; | |
| 1126 | 1126 | } |
| 1127 | 1127 | |
| 1128 | 1128 | public void setWarrantVehiclesMiddleOld(Long warrantVehiclesMiddleOld) { |
| ... | ... | @@ -1130,7 +1130,7 @@ public class LineHistoryReport extends BaseEntity |
| 1130 | 1130 | } |
| 1131 | 1131 | |
| 1132 | 1132 | public Long getVehiclesNumber() { |
| 1133 | - return vehiclesNumber; | |
| 1133 | + return vehiclesNumber==null?0:vehiclesNumber; | |
| 1134 | 1134 | } |
| 1135 | 1135 | |
| 1136 | 1136 | public void setVehiclesNumber(Long vehiclesNumber) { |
| ... | ... | @@ -1138,7 +1138,7 @@ public class LineHistoryReport extends BaseEntity |
| 1138 | 1138 | } |
| 1139 | 1139 | |
| 1140 | 1140 | public Long getVehiclesNumberOld() { |
| 1141 | - return vehiclesNumberOld; | |
| 1141 | + return vehiclesNumberOld==null?0:vehiclesNumberOld; | |
| 1142 | 1142 | } |
| 1143 | 1143 | |
| 1144 | 1144 | public void setVehiclesNumberOld(Long vehiclesNumberOld) { |
| ... | ... | @@ -1146,7 +1146,7 @@ public class LineHistoryReport extends BaseEntity |
| 1146 | 1146 | } |
| 1147 | 1147 | |
| 1148 | 1148 | public Long getNumberVehiclesLarge() { |
| 1149 | - return numberVehiclesLarge; | |
| 1149 | + return numberVehiclesLarge==null?0:numberVehiclesLarge; | |
| 1150 | 1150 | } |
| 1151 | 1151 | |
| 1152 | 1152 | public void setNumberVehiclesLarge(Long numberVehiclesLarge) { |
| ... | ... | @@ -1154,7 +1154,7 @@ public class LineHistoryReport extends BaseEntity |
| 1154 | 1154 | } |
| 1155 | 1155 | |
| 1156 | 1156 | public Long getNumberVehiclesLargeOld() { |
| 1157 | - return numberVehiclesLargeOld; | |
| 1157 | + return numberVehiclesLargeOld==null?0:numberVehiclesLargeOld; | |
| 1158 | 1158 | } |
| 1159 | 1159 | |
| 1160 | 1160 | public void setNumberVehiclesLargeOld(Long numberVehiclesLargeOld) { |
| ... | ... | @@ -1162,7 +1162,7 @@ public class LineHistoryReport extends BaseEntity |
| 1162 | 1162 | } |
| 1163 | 1163 | |
| 1164 | 1164 | public Long getNumberVehiclesMiddle() { |
| 1165 | - return numberVehiclesMiddle; | |
| 1165 | + return numberVehiclesMiddle==null?0:numberVehiclesMiddle; | |
| 1166 | 1166 | } |
| 1167 | 1167 | |
| 1168 | 1168 | public void setNumberVehiclesMiddle(Long numberVehiclesMiddle) { |
| ... | ... | @@ -1170,7 +1170,7 @@ public class LineHistoryReport extends BaseEntity |
| 1170 | 1170 | } |
| 1171 | 1171 | |
| 1172 | 1172 | public Long getNumberVehiclesMiddleOld() { |
| 1173 | - return numberVehiclesMiddleOld; | |
| 1173 | + return numberVehiclesMiddleOld==null?0:numberVehiclesMiddleOld; | |
| 1174 | 1174 | } |
| 1175 | 1175 | |
| 1176 | 1176 | public void setNumberVehiclesMiddleOld(Long numberVehiclesMiddleOld) { |
| ... | ... | @@ -1194,7 +1194,7 @@ public class LineHistoryReport extends BaseEntity |
| 1194 | 1194 | } |
| 1195 | 1195 | |
| 1196 | 1196 | public Long getNumberPerson() { |
| 1197 | - return numberPerson; | |
| 1197 | + return numberPerson==null?0:numberPerson; | |
| 1198 | 1198 | } |
| 1199 | 1199 | |
| 1200 | 1200 | public void setNumberPerson(Long numberPerson) { |
| ... | ... | @@ -1202,7 +1202,7 @@ public class LineHistoryReport extends BaseEntity |
| 1202 | 1202 | } |
| 1203 | 1203 | |
| 1204 | 1204 | public Long getNumberPersonOld() { |
| 1205 | - return numberPersonOld; | |
| 1205 | + return numberPersonOld==null?0:numberPersonOld; | |
| 1206 | 1206 | } |
| 1207 | 1207 | |
| 1208 | 1208 | public void setNumberPersonOld(Long numberPersonOld) { |
| ... | ... | @@ -1210,7 +1210,7 @@ public class LineHistoryReport extends BaseEntity |
| 1210 | 1210 | } |
| 1211 | 1211 | |
| 1212 | 1212 | public Long getNumberPersonDriver() { |
| 1213 | - return numberPersonDriver; | |
| 1213 | + return numberPersonDriver==null?0:numberPersonDriver; | |
| 1214 | 1214 | } |
| 1215 | 1215 | |
| 1216 | 1216 | public void setNumberPersonDriver(Long numberPersonDriver) { |
| ... | ... | @@ -1218,7 +1218,7 @@ public class LineHistoryReport extends BaseEntity |
| 1218 | 1218 | } |
| 1219 | 1219 | |
| 1220 | 1220 | public Long getNumberPersonDriverOld() { |
| 1221 | - return numberPersonDriverOld; | |
| 1221 | + return numberPersonDriverOld==null?0:numberPersonDriverOld; | |
| 1222 | 1222 | } |
| 1223 | 1223 | |
| 1224 | 1224 | public void setNumberPersonDriverOld(Long numberPersonDriverOld) { |
| ... | ... | @@ -1226,7 +1226,7 @@ public class LineHistoryReport extends BaseEntity |
| 1226 | 1226 | } |
| 1227 | 1227 | |
| 1228 | 1228 | public Long getNumberPersonSales() { |
| 1229 | - return numberPersonSales; | |
| 1229 | + return numberPersonSales==null?0:numberPersonSales; | |
| 1230 | 1230 | } |
| 1231 | 1231 | |
| 1232 | 1232 | public void setNumberPersonSales(Long numberPersonSales) { |
| ... | ... | @@ -1234,7 +1234,7 @@ public class LineHistoryReport extends BaseEntity |
| 1234 | 1234 | } |
| 1235 | 1235 | |
| 1236 | 1236 | public Long getNumberPersonSalesOld() { |
| 1237 | - return numberPersonSalesOld; | |
| 1237 | + return numberPersonSalesOld==null?0:numberPersonSalesOld; | |
| 1238 | 1238 | } |
| 1239 | 1239 | |
| 1240 | 1240 | public void setNumberPersonSalesOld(Long numberPersonSalesOld) { | ... | ... |
bsthLineProfiles/src/main/java/com/ruoyi/project/utils/ExcelUtils.java
| ... | ... | @@ -3,11 +3,16 @@ package com.ruoyi.project.utils; |
| 3 | 3 | import java.io.File; |
| 4 | 4 | import java.io.FileInputStream; |
| 5 | 5 | import java.io.FileOutputStream; |
| 6 | +import java.io.IOException; | |
| 6 | 7 | import java.lang.reflect.Method; |
| 8 | +import java.nio.charset.StandardCharsets; | |
| 7 | 9 | import java.text.SimpleDateFormat; |
| 8 | 10 | import java.util.Date; |
| 9 | 11 | import java.util.List; |
| 10 | 12 | |
| 13 | +import cn.hutool.core.io.IoUtil; | |
| 14 | +import cn.hutool.poi.excel.ExcelWriter; | |
| 15 | +import cn.hutool.poi.excel.StyleSet; | |
| 11 | 16 | import org.apache.poi.hssf.usermodel.HSSFCell; |
| 12 | 17 | import org.apache.poi.hssf.usermodel.HSSFRow; |
| 13 | 18 | import org.apache.poi.hssf.usermodel.HSSFSheet; |
| ... | ... | @@ -16,7 +21,10 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem; |
| 16 | 21 | |
| 17 | 22 | import com.ruoyi.project.system.line.domain.BsthTLine; |
| 18 | 23 | import com.ruoyi.project.system.line.domain.LineEditReport; |
| 24 | +import org.apache.poi.ss.usermodel.*; | |
| 19 | 25 | |
| 26 | +import javax.servlet.ServletOutputStream; | |
| 27 | +import javax.servlet.http.HttpServletResponse; | |
| 20 | 28 | |
| 21 | 29 | public class ExcelUtils { |
| 22 | 30 | |
| ... | ... | @@ -178,4 +186,97 @@ public class ExcelUtils { |
| 178 | 186 | } |
| 179 | 187 | } |
| 180 | 188 | |
| 189 | + public static Font setBaseFont(Workbook workbook, boolean bold, boolean italic, String fontName, int fontSize) { | |
| 190 | + Font font = workbook.createFont(); | |
| 191 | + //设置字体名称 宋体 / 微软雅黑 /等 | |
| 192 | + font.setFontName(fontName); | |
| 193 | + //设置是否斜体 | |
| 194 | + font.setItalic(italic); | |
| 195 | + //设置字体高度 | |
| 196 | + //font.setFontHeight((short) fontHeight); | |
| 197 | + //设置字体大小 以磅为单位 | |
| 198 | + font.setFontHeightInPoints((short) fontSize); | |
| 199 | + //设置是否加粗 | |
| 200 | + font.setBold(bold); | |
| 201 | + //默认字体颜色 | |
| 202 | + // font.setColor(Font.COLOR_NORMAL); | |
| 203 | + //红色 | |
| 204 | + //font.setColor(Font.COLOR_RED); | |
| 205 | + //设置下划线样式 | |
| 206 | + //font.setUnderline(Font.ANSI_CHARSET); | |
| 207 | + //设定文字删除线 | |
| 208 | + //font.setStrikeout(true); | |
| 209 | + return font; | |
| 210 | + } | |
| 211 | + | |
| 212 | + //全局样式 | |
| 213 | + public static StyleSet GlobalStyleSet(ExcelWriter writer, Font font) { | |
| 214 | + Workbook workbook=writer.getWorkbook(); | |
| 215 | + //全局样式设置 | |
| 216 | + StyleSet styleSet = writer.getStyleSet(); | |
| 217 | + //设置全局文本居中 | |
| 218 | + styleSet.setAlign(HorizontalAlignment.CENTER, VerticalAlignment.CENTER); | |
| 219 | + //设置全局字体样式 | |
| 220 | + styleSet.setFont(font,true); | |
| 221 | + //设置背景颜色 第二个参数表示是否将样式应用到头部 | |
| 222 | + styleSet.setBackgroundColor(IndexedColors.WHITE, false); | |
| 223 | + //设置自动换行 当文本长于单元格宽度是否换行 | |
| 224 | + styleSet.setWrapText(); | |
| 225 | + // 设置全局边框样式 | |
| 226 | + styleSet.setBorder(BorderStyle.THIN, IndexedColors.BLACK); | |
| 227 | + CellStyle cellStyle=styleSet.getCellStyle(); | |
| 228 | + //设置头部标题样式 | |
| 229 | + CellStyle headCellStyle = styleSet.getHeadCellStyle(); | |
| 230 | + //水平居中 | |
| 231 | + headCellStyle.setAlignment(HorizontalAlignment.CENTER); | |
| 232 | + //垂直居中 | |
| 233 | + headCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); | |
| 234 | + //设置字体样式 | |
| 235 | + Font f=setBaseFont(workbook,true,false,"宋体",15); | |
| 236 | + headCellStyle.setFont(f); | |
| 237 | + return styleSet; | |
| 238 | + } | |
| 239 | + | |
| 240 | + public static void setBackground(ExcelWriter writer,short color,int rowIndex,int columnCount){ | |
| 241 | + CellStyle style = writer.getWorkbook().createCellStyle(); | |
| 242 | + Sheet sheet=writer.getSheet(); | |
| 243 | + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); | |
| 244 | + style.setFillForegroundColor(color); | |
| 245 | + style.setAlignment(HorizontalAlignment.CENTER); | |
| 246 | + style.setVerticalAlignment(VerticalAlignment.CENTER); | |
| 247 | + Row row = sheet.getRow(rowIndex); | |
| 248 | + for (int i=0;i<columnCount;i++){ | |
| 249 | + Cell cell = row.getCell(i); | |
| 250 | + cell.setCellStyle(style); | |
| 251 | + } | |
| 252 | + } | |
| 253 | + | |
| 254 | + public static void setHeight(ExcelWriter writer,short high){ | |
| 255 | + Sheet sheet=writer.getSheet(); | |
| 256 | + for (int i=3;i<writer.getCurrentRow();i++){ | |
| 257 | + Row row = sheet.getRow(i); | |
| 258 | + short s= (short) (256*high); | |
| 259 | + row.setHeight(s); | |
| 260 | + } | |
| 261 | + } | |
| 262 | + | |
| 263 | + public static void downloadExcel(HttpServletResponse response, String fileName, ExcelWriter writer) { | |
| 264 | + response.setContentType("application/vnd.ms-excel;charset=utf-8"); | |
| 265 | + // test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码 | |
| 266 | + ServletOutputStream out = null; | |
| 267 | + try { | |
| 268 | + // 设置请求头属性 | |
| 269 | + response.setHeader("Content-Disposition", "attachment;filename=" + new String((fileName + ".xlsx").getBytes(), StandardCharsets.ISO_8859_1)); | |
| 270 | + out = response.getOutputStream(); | |
| 271 | + // 写出到文件 | |
| 272 | + writer.flush(out, true); | |
| 273 | + // 关闭writer,释放内存 | |
| 274 | + writer.close(); | |
| 275 | + // 此处记得关闭输出Servlet流 | |
| 276 | + IoUtil.close(out); | |
| 277 | + } catch (IOException e) { | |
| 278 | + e.printStackTrace(); | |
| 279 | + } | |
| 280 | + } | |
| 281 | + | |
| 181 | 282 | } | ... | ... |
bsthLineProfiles/src/main/resources/application-druid.yml
| ... | ... | @@ -5,15 +5,15 @@ spring: |
| 5 | 5 | driverClassName: com.mysql.cj.jdbc.Driver |
| 6 | 6 | druid: |
| 7 | 7 | # 主库数据源 |
| 8 | - master: | |
| 9 | - url: jdbc:mysql://localhost:3306/linedata?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 | |
| 10 | - username: root | |
| 11 | - password: Aa123456 | |
| 12 | - # 主库数据源 | |
| 13 | 8 | # master: |
| 14 | -# url: jdbc:mysql://localhost:3306/bsth_line_profiles?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 | |
| 9 | +# url: jdbc:mysql://localhost:3306/linedata?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 | |
| 15 | 10 | # username: root |
| 16 | -# password: 1995627a | |
| 11 | +# password: Aa123456 | |
| 12 | + # 主库数据源 | |
| 13 | + master: | |
| 14 | + url: jdbc:mysql://localhost:3306/bsth_line_profiles?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 | |
| 15 | + username: root | |
| 16 | + password: 1995627a | |
| 17 | 17 | # 从库数据源 |
| 18 | 18 | slave: |
| 19 | 19 | # 从数据源开关/默认关闭 | ... | ... |
bsthLineProfiles/src/main/resources/application.yml
bsthLineProfiles/src/main/resources/mybatis/mybatis/system/BsthTLineMapper.xml
| ... | ... | @@ -1776,7 +1776,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| 1776 | 1776 | h2.full_customer_percent fullCustomerPercentOld,h2.low_customer_percent lowCustomerPercentOld,h2.divide_level divideLevelOld, |
| 1777 | 1777 | h2.has_timelists hasTimelistsOld,h2.is_metro isMetroOld,h2.metro_time metroTimeOld,h2.cold_bonus_type coldBonusTypeOld,h2.night_parking nightParkingOld,h2.start_date startDateOld, |
| 1778 | 1778 | h2.line_update_type lineUpdateTypeOld,h2.revenue_type revenueTypeOld |
| 1779 | - FROM bsth_t_line_history h1 LEFT JOIN bsth_t_line_history h2 on h1.history_id=h2.id where h1.history_id is not null | |
| 1779 | + FROM bsth_t_line_history h1 LEFT JOIN bsth_t_line_history h2 on h1.history_id=h2.id | |
| 1780 | 1780 | </select> |
| 1781 | 1781 | |
| 1782 | 1782 | </mapper> |
| 1783 | 1783 | \ No newline at end of file | ... | ... |
bsthLineProfiles/src/main/resources/templates/index.html
| ... | ... | @@ -100,7 +100,7 @@ |
| 100 | 100 | <ul class="nav navbar-top-links navbar-right welcome-message" style="height:50px;"> |
| 101 | 101 | <li class="dropdown user-menu"> |
| 102 | 102 | <a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown"> |
| 103 | - <img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image"> | |
| 103 | + <img src="img/profile.jpg" class="user-image"> | |
| 104 | 104 | <i class="el-icon-caret-bottom"></i> |
| 105 | 105 | </a> |
| 106 | 106 | <ul class="dropdown-menu"> | ... | ... |
bsthLineProfiles/src/main/resources/templates/system/historyReport/historyReport.html
| ... | ... | @@ -42,7 +42,8 @@ |
| 42 | 42 | </div> |
| 43 | 43 | |
| 44 | 44 | <div class="btn-group-sm" id="toolbar" role="group"> |
| 45 | - <el-button plain size="mini" type="warning" icon="el-icon-download" onClick="$.table.exportExcel();" shiro:hasPermission="system:line:export"> 导出</el-button> | |
| 45 | + <el-button plain size="mini" type="warning" icon="el-icon-download" onClick="$.table.exportExcel();" shiro:hasPermission="system:line:export"> 明细</el-button> | |
| 46 | + <el-button plain size="mini" type="warning" icon="el-icon-download" onClick="report();" shiro:hasPermission="system:line:export"> 统计</el-button> | |
| 46 | 47 | </div> |
| 47 | 48 | <div class="col-sm-12 select-table table-striped"> |
| 48 | 49 | <table id="bootstrap-table"></table> |
| ... | ... | @@ -53,7 +54,6 @@ |
| 53 | 54 | |
| 54 | 55 | <th:block th:include="include :: datetimepicker-js" /> |
| 55 | 56 | <script th:inline="javascript"> |
| 56 | - | |
| 57 | 57 | new Vue({ |
| 58 | 58 | el: '#context', |
| 59 | 59 | data: function() { |
| ... | ... | @@ -158,6 +158,11 @@ |
| 158 | 158 | maxView : 3, |
| 159 | 159 | autoclose : true |
| 160 | 160 | }); |
| 161 | + function report(){ | |
| 162 | + $.modal.confirm("确定导出统计报表吗?", function() { | |
| 163 | + location.href ="/system/historyReport/export2"; | |
| 164 | + }); | |
| 165 | + } | |
| 161 | 166 | </script> |
| 162 | 167 | </body> |
| 163 | 168 | </html> |
| 164 | 169 | \ No newline at end of file | ... | ... |
bsthLineProfiles/src/main/resources/templates/system/lineAdd/add.html
| ... | ... | @@ -456,7 +456,7 @@ |
| 456 | 456 | <label class="col-sm-1 control-label">性质:</label> |
| 457 | 457 | <div class="col-sm-2"> |
| 458 | 458 | <select name="lineUpdateType" th:with="type=${@dict.getType('lineUpdateType')}" class="form-control m-b" readonly> |
| 459 | - <option value="3" selected="selected">新辟</option> | |
| 459 | + <option value="0" selected="selected">新辟</option> | |
| 460 | 460 | </select> |
| 461 | 461 | </div> |
| 462 | 462 | <!----------------------------------> | ... | ... |
bsthLineProfiles/src/main/resources/templates/system/lineAdd/edit.html
| ... | ... | @@ -475,7 +475,7 @@ |
| 475 | 475 | <label class="col-sm-1 control-label">性质:</label> |
| 476 | 476 | <div class="col-sm-2"> |
| 477 | 477 | <select name="lineUpdateType" th:with="type=${@dict.getType('lineUpdateType')}" class="form-control m-b" readonly> |
| 478 | - <option value="3" selected="selected">新辟</option> | |
| 478 | + <option value="0" selected="selected">新辟</option> | |
| 479 | 479 | </select> |
| 480 | 480 | </div> |
| 481 | 481 | <!----------------------------------> | ... | ... |