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 12 import com.bsth.entity.calc.CalcStatistics;
13 13 import com.bsth.entity.calc.CalcWaybill;
14 14 import com.bsth.entity.calc.CalcWaybillDetail;
15   -import com.bsth.entity.oil.Cwjy;
16 15 import com.bsth.entity.oil.Dlb;
17 16 import com.bsth.entity.oil.Ylb;
18 17 import com.bsth.entity.realcontrol.ChildTaskPlan;
... ... @@ -38,6 +37,7 @@ import com.bsth.util.ReportUtils;
38 37 import com.github.stuxuhai.jpinyin.PinyinException;
39 38 import com.github.stuxuhai.jpinyin.PinyinFormat;
40 39 import com.github.stuxuhai.jpinyin.PinyinHelper;
  40 +
41 41 import org.apache.commons.lang3.StringUtils;
42 42 import org.slf4j.Logger;
43 43 import org.slf4j.LoggerFactory;
... ... @@ -1931,7 +1931,6 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer
1931 1931 fgsdm.add(fgsdms[i]);
1932 1932 }
1933 1933 }
1934   -// String line= null;
1935 1934 List<String> line= new ArrayList<>();
1936 1935 String lineStr = "";
1937 1936 if(map.get("lineCode")!=null){
... ... @@ -1941,6 +1940,14 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
1941 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 1951 String startDate="";
1945 1952 if(map.get("startDate")!=null){
1946 1953 startDate=map.get("startDate").toString().trim();
... ... @@ -1990,7 +1997,12 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
1990 1997 dayList.add(daym);
1991 1998 }
1992 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 2008 int flag = 0;
... ... @@ -2474,9 +2486,17 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2474 2486 }
2475 2487 dayc = dayList.get(dayIndex).get(cw.getRqStr());
2476 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 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 2588 }
2569 2589  
2570 2590 int i=1;
2571   - DecimalFormat df = new DecimalFormat("0.00");//格式化小数
  2591 + DecimalFormat df = new DecimalFormat("0.000");//格式化小数
2572 2592 double allNum = 0.0;
2573 2593 while (iter.hasNext()) {
2574 2594 Map.Entry entry = (Map.Entry) iter.next();
... ... @@ -2597,11 +2617,11 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2597 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 2625 listStr.add(df.format(c.getLblc()));
2606 2626 listStr.add(c.getTs()+"");
2607 2627 c.setBglhd(c.getBglhd()/c.getTs());
... ... @@ -2639,9 +2659,10 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2639 2659 listStr.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc()));
2640 2660 // listStr.add(df.format(c1.getBglhd()));
2641 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 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 2666 } else if("sjbc".equals(itemDetails)){
2646 2667 listStr.add(c1.getSjyybc()+c1.getSjfyybc()+c1.getLjbc()+"");
2647 2668 } else if("jhbc".equals(itemDetails)){
... ... @@ -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 2674 resList.add(listStr);
2654 2675 }
2655 2676  
2656 2677 // 合计列
2657 2678 List<String> listEnd = new ArrayList<>();
2658 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 2685 listEnd.add(df.format(zjCalc.getLblc()));
2665 2686 listEnd.add(zjCalc.getTs()+"");
2666 2687 double all = 0.0;
... ... @@ -2693,16 +2714,17 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
2693 2714 // listEnd.add(df.format(c1.getBglhd()));
2694 2715 listEnd.add(df.format(c1.getZlc()==0? 0:100*c1.getHd()/c1.getZlc()));
2695 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 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 2721 } else if("sjbc".equals(itemDetails)){
2700 2722 listEnd.add(c1.getSjyybc()+c1.getSjfyybc()+c1.getLjbc()+"");
2701 2723 } else if("jhbc".equals(itemDetails)){
2702 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 2775 c1.setJhfyylc(Arith.add(c1.getJhfyylc(), c2.getJhfyylc()));
2754 2776 c1.setSjyybc(c1.getSjyybc() + c2.getSjyybc());
2755 2777 c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getSjyylc()));
2756   -// c1.setSjyylc(Arith.add(c1.getSjyylc(), c2.getLjyylc()));// 把临加的也算上了,后面不用加了
2757 2778 c1.setSjfyybc(c1.getSjfyybc() + c2.getSjfyybc());
2758 2779 c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getSjfyylc()));
2759   -// c1.setSjfyylc(Arith.add(c1.getSjfyylc(), c2.getLjfyylc()));// 把临加的也算上了,后面不用加了
2760 2780 c1.setLbbc(c1.getLbbc() + c2.getLbbc());
2761 2781 c1.setLblc(Arith.add(c1.getLblc(), c2.getLblc()));
2762 2782 c1.setLjbc(c1.getLjbc() + c2.getLjbc());
... ...