Commit beb6f65f9035b83d92855928c1472520b93b8251

Authored by 娄高锋
1 parent c1cb3544

行车路单年报表,日期错误异常修复

src/main/java/com/bsth/service/calc/impl/CalcWaybillServiceImpl.java
@@ -12,7 +12,6 @@ import com.bsth.entity.calc.CalcLineMileage; @@ -12,7 +12,6 @@ import com.bsth.entity.calc.CalcLineMileage;
12 import com.bsth.entity.calc.CalcStatistics; 12 import com.bsth.entity.calc.CalcStatistics;
13 import com.bsth.entity.calc.CalcWaybill; 13 import com.bsth.entity.calc.CalcWaybill;
14 import com.bsth.entity.calc.CalcWaybillDetail; 14 import com.bsth.entity.calc.CalcWaybillDetail;
15 -import com.bsth.entity.oil.Cwjy;  
16 import com.bsth.entity.oil.Dlb; 15 import com.bsth.entity.oil.Dlb;
17 import com.bsth.entity.oil.Ylb; 16 import com.bsth.entity.oil.Ylb;
18 import com.bsth.entity.realcontrol.ChildTaskPlan; 17 import com.bsth.entity.realcontrol.ChildTaskPlan;
@@ -38,6 +37,7 @@ import com.bsth.util.ReportUtils; @@ -38,6 +37,7 @@ import com.bsth.util.ReportUtils;
38 import com.github.stuxuhai.jpinyin.PinyinException; 37 import com.github.stuxuhai.jpinyin.PinyinException;
39 import com.github.stuxuhai.jpinyin.PinyinFormat; 38 import com.github.stuxuhai.jpinyin.PinyinFormat;
40 import com.github.stuxuhai.jpinyin.PinyinHelper; 39 import com.github.stuxuhai.jpinyin.PinyinHelper;
  40 +
41 import org.apache.commons.lang3.StringUtils; 41 import org.apache.commons.lang3.StringUtils;
42 import org.slf4j.Logger; 42 import org.slf4j.Logger;
43 import org.slf4j.LoggerFactory; 43 import org.slf4j.LoggerFactory;
@@ -1931,7 +1931,6 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer @@ -1931,7 +1931,6 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer
1931 fgsdm.add(fgsdms[i]); 1931 fgsdm.add(fgsdms[i]);
1932 } 1932 }
1933 } 1933 }
1934 -// String line= null;  
1935 List<String> line= new ArrayList<>(); 1934 List<String> line= new ArrayList<>();
1936 String lineStr = ""; 1935 String lineStr = "";
1937 if(map.get("lineCode")!=null){ 1936 if(map.get("lineCode")!=null){
@@ -1941,6 +1940,14 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -1941,6 +1940,14 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
1941 line.add(lines[i]); 1940 line.add(lines[i]);
1942 } 1941 }
1943 } 1942 }
  1943 + //查询全部线路(测试时使用)
  1944 +// Iterable<Line> findAll = lineService.findAll();
  1945 +// for(Line l : findAll){
  1946 +// line.add(l.getLineCode());
  1947 +// lineStr += l.getLineCode() + ",";
  1948 +// }
  1949 +// lineStr = lineStr.substring(0, lineStr.length() - 1);
  1950 +
1944 String startDate=""; 1951 String startDate="";
1945 if(map.get("startDate")!=null){ 1952 if(map.get("startDate")!=null){
1946 startDate=map.get("startDate").toString().trim(); 1953 startDate=map.get("startDate").toString().trim();
@@ -1990,7 +1997,12 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -1990,7 +1997,12 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
1990 dayList.add(daym); 1997 dayList.add(daym);
1991 } 1998 }
1992 startDate += "-01"; 1999 startDate += "-01";
1993 - endDate += "-31"; 2000 + try {
  2001 + endDate = dateFormat.format(new Date(dateFormat.parse(dateFormat.format(dateFormat.parse(endDate + "-32")).substring(0,7) + "-01").getTime() - 1l*1000*60*60*24));
  2002 + } catch (ParseException e) {
  2003 + // TODO Auto-generated catch block
  2004 + e.printStackTrace();
  2005 + }
1994 } 2006 }
1995 2007
1996 int flag = 0; 2008 int flag = 0;
@@ -2474,9 +2486,17 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -2474,9 +2486,17 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2474 } 2486 }
2475 dayc = dayList.get(dayIndex).get(cw.getRqStr()); 2487 dayc = dayList.get(dayIndex).get(cw.getRqStr());
2476 } else if("y".equals(timeType)){ 2488 } else if("y".equals(timeType)){
2477 - while (!dayList.get(dayIndex).containsKey(cw.getRqStr().substring(0,7))){  
2478 - calcList.add(new CalcWaybillDetail());  
2479 - dayIndex++; 2489 + if(calcList.size() < dayList.size()){ //列还没加满则往后加新的列
  2490 + while (dayList.size() > dayIndex && !dayList.get(dayIndex).containsKey(cw.getRqStr().substring(0,7))){
  2491 + calcList.add(new CalcWaybillDetail());
  2492 + dayIndex++;
  2493 + }
  2494 + } else { //列已经加满说明是前面的日期
  2495 + int temp = 0;
  2496 + while (!dayList.get(temp).containsKey(cw.getRqStr().substring(0,7))){
  2497 + temp++;
  2498 + }
  2499 + dayIndex = temp;
2480 } 2500 }
2481 dayc = dayList.get(dayIndex).get(cw.getRqStr().substring(0,7)); 2501 dayc = dayList.get(dayIndex).get(cw.getRqStr().substring(0,7));
2482 } 2502 }
@@ -2568,7 +2588,7 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -2568,7 +2588,7 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2568 } 2588 }
2569 2589
2570 int i=1; 2590 int i=1;
2571 - DecimalFormat df = new DecimalFormat("0.00");//格式化小数 2591 + DecimalFormat df = new DecimalFormat("0.000");//格式化小数
2572 double allNum = 0.0; 2592 double allNum = 0.0;
2573 while (iter.hasNext()) { 2593 while (iter.hasNext()) {
2574 Map.Entry entry = (Map.Entry) iter.next(); 2594 Map.Entry entry = (Map.Entry) iter.next();
@@ -2597,11 +2617,11 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -2597,11 +2617,11 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2597 } else if("xl".equals(statisticalObj)){ 2617 } else if("xl".equals(statisticalObj)){
2598 2618
2599 } 2619 }
2600 - listStr.add(df.format(c.getJhyylc()+c.getJhfyylc()));  
2601 - listStr.add(df.format(c.getSjyylc()+c.getSjfyylc()+c.getLjyylc()+c.getLjfyylc()));  
2602 -// listStr.add(df.format(c.getSjyylc()+c.getLjyylc()));  
2603 - listStr.add(df.format(c.getSjfyylc()+c.getLjfyylc()));  
2604 - listStr.add(df.format(c.getLjyylc()+c.getLjfyylc())); 2620 + listStr.add(df.format(Arith.add(c.getJhyylc(), c.getJhfyylc())));
  2621 + listStr.add(df.format(Arith.add(Arith.add(c.getSjyylc(), c.getSjfyylc()),
  2622 + Arith.add(c.getLjyylc(), c.getLjfyylc()))));
  2623 + listStr.add(df.format(Arith.add(c.getSjfyylc(), c.getLjfyylc())));
  2624 + listStr.add(df.format(Arith.add(c.getLjyylc(), c.getLjfyylc())));
2605 listStr.add(df.format(c.getLblc())); 2625 listStr.add(df.format(c.getLblc()));
2606 listStr.add(c.getTs()+""); 2626 listStr.add(c.getTs()+"");
2607 c.setBglhd(c.getBglhd()/c.getTs()); 2627 c.setBglhd(c.getBglhd()/c.getTs());
@@ -2639,9 +2659,10 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -2639,9 +2659,10 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2639 listStr.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc())); 2659 listStr.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc()));
2640 // listStr.add(df.format(c1.getBglhd())); 2660 // listStr.add(df.format(c1.getBglhd()));
2641 } else if("zgl".equals(itemDetails)){ 2661 } else if("zgl".equals(itemDetails)){
2642 - listStr.add(df.format((c1.getSjyylc()+c1.getSjfyylc()+c1.getLjfyylc()+c1.getLjyylc()))); 2662 + listStr.add(df.format(Arith.add(Arith.add(c1.getSjyylc(), c1.getSjfyylc()),
  2663 + Arith.add(c1.getLjyylc(), c1.getLjfyylc()))));
2643 } else if("jhgl".equals(itemDetails)){ 2664 } else if("jhgl".equals(itemDetails)){
2644 - listStr.add(df.format(c1.getJhyylc()+c1.getJhfyylc())); 2665 + listStr.add(df.format(Arith.add(c1.getJhyylc(), c1.getJhfyylc())));
2645 } else if("sjbc".equals(itemDetails)){ 2666 } else if("sjbc".equals(itemDetails)){
2646 listStr.add(c1.getSjyybc()+c1.getSjfyybc()+c1.getLjbc()+""); 2667 listStr.add(c1.getSjyybc()+c1.getSjfyybc()+c1.getLjbc()+"");
2647 } else if("jhbc".equals(itemDetails)){ 2668 } else if("jhbc".equals(itemDetails)){
@@ -2649,18 +2670,18 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -2649,18 +2670,18 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2649 } 2670 }
2650 } 2671 }
2651 } 2672 }
2652 - allNum = allNum + Double.parseDouble(listStr.get(listStr.size()-1)); 2673 + allNum = Arith.add(allNum, Double.parseDouble(listStr.get(listStr.size()-1)));
2653 resList.add(listStr); 2674 resList.add(listStr);
2654 } 2675 }
2655 2676
2656 // 合计列 2677 // 合计列
2657 List<String> listEnd = new ArrayList<>(); 2678 List<String> listEnd = new ArrayList<>();
2658 listEnd.add("合计"); 2679 listEnd.add("合计");
2659 - listEnd.add(df.format(zjCalc.getJhyylc()+zjCalc.getJhfyylc()));  
2660 - listEnd.add(df.format(zjCalc.getSjfyylc()+zjCalc.getSjyylc()+zjCalc.getLjyylc()+zjCalc.getLjfyylc()));//总公里  
2661 -// listEnd.add(df.format(zjCalc.getSjyylc()+zjCalc.getLjyylc()));//营运  
2662 - listEnd.add(df.format(zjCalc.getSjfyylc()+zjCalc.getLjfyylc()));  
2663 - listEnd.add(df.format(zjCalc.getLjfyylc()+zjCalc.getLjyylc())); 2680 + listEnd.add(df.format(Arith.add(zjCalc.getJhyylc(), zjCalc.getJhfyylc())));
  2681 + listEnd.add(df.format(Arith.add(Arith.add(zjCalc.getSjyylc(), zjCalc.getSjfyylc()),
  2682 + Arith.add(zjCalc.getLjyylc(), zjCalc.getLjfyylc()))));//总公里
  2683 + listEnd.add(df.format(Arith.add(zjCalc.getSjfyylc(), zjCalc.getLjfyylc())));
  2684 + listEnd.add(df.format(Arith.add(zjCalc.getLjyylc(), zjCalc.getLjfyylc())));
2664 listEnd.add(df.format(zjCalc.getLblc())); 2685 listEnd.add(df.format(zjCalc.getLblc()));
2665 listEnd.add(zjCalc.getTs()+""); 2686 listEnd.add(zjCalc.getTs()+"");
2666 double all = 0.0; 2687 double all = 0.0;
@@ -2693,16 +2714,17 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -2693,16 +2714,17 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2693 // listEnd.add(df.format(c1.getBglhd())); 2714 // listEnd.add(df.format(c1.getBglhd()));
2694 listEnd.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc())); 2715 listEnd.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc()));
2695 } else if("zgl".equals(itemDetails)){ 2716 } else if("zgl".equals(itemDetails)){
2696 - listEnd.add((df.format(c1.getSjyylc()+c1.getSjfyylc()+c1.getLjfyylc()+c1.getLjyylc()))); 2717 + listEnd.add(df.format(Arith.add(Arith.add(c1.getSjyylc(), c1.getSjfyylc()),
  2718 + Arith.add(c1.getLjyylc(), c1.getLjfyylc()))));
2697 } else if("jhgl".equals(itemDetails)){ 2719 } else if("jhgl".equals(itemDetails)){
2698 - listEnd.add((df.format(c1.getJhyylc()+c1.getJhfyylc()))); 2720 + listEnd.add(df.format(Arith.add(c1.getJhyylc(), c1.getJhfyylc())));
2699 } else if("sjbc".equals(itemDetails)){ 2721 } else if("sjbc".equals(itemDetails)){
2700 listEnd.add(c1.getSjyybc()+c1.getSjfyybc()+c1.getLjbc()+""); 2722 listEnd.add(c1.getSjyybc()+c1.getSjfyybc()+c1.getLjbc()+"");
2701 } else if("jhbc".equals(itemDetails)){ 2723 } else if("jhbc".equals(itemDetails)){
2702 listEnd.add((c1.getJhyybc()+c1.getJhfyybc())+""); 2724 listEnd.add((c1.getJhyybc()+c1.getJhfyybc())+"");
2703 } 2725 }
2704 } 2726 }
2705 - all = all + Double.parseDouble(listEnd.get(listEnd.size()-1)); 2727 + all = Arith.add(all, Double.parseDouble(listEnd.get(listEnd.size()-1)));
2706 } 2728 }
2707 2729
2708 // 百公里电油耗时为平均数 2730 // 百公里电油耗时为平均数
@@ -2753,10 +2775,8 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -2753,10 +2775,8 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2753 c1.setJhfyylc(Arith.add(c1.getJhfyylc(), c2.getJhfyylc())); 2775 c1.setJhfyylc(Arith.add(c1.getJhfyylc(), c2.getJhfyylc()));
2754 c1.setSjyybc(c1.getSjyybc() + c2.getSjyybc()); 2776 c1.setSjyybc(c1.getSjyybc() + c2.getSjyybc());
2755 c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getSjyylc())); 2777 c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getSjyylc()));
2756 -// c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getLjyylc()));// 把临加的也算上了,后面不用加了  
2757 c1.setSjfyybc(c1.getSjfyybc() + c2.getSjfyybc()); 2778 c1.setSjfyybc(c1.getSjfyybc() + c2.getSjfyybc());
2758 c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getSjfyylc())); 2779 c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getSjfyylc()));
2759 -// c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getLjfyylc()));// 把临加的也算上了,后面不用加了  
2760 c1.setLbbc(c1.getLbbc() + c2.getLbbc()); 2780 c1.setLbbc(c1.getLbbc() + c2.getLbbc());
2761 c1.setLblc(Arith.add(c1.getLblc(), c2.getLblc())); 2781 c1.setLblc(Arith.add(c1.getLblc(), c2.getLblc()));
2762 c1.setLjbc(c1.getLjbc() + c2.getLjbc()); 2782 c1.setLjbc(c1.getLjbc() + c2.getLjbc());