Commit c2a32b59e30a22ac01ef1f7f4293fb92714cd19a

Authored by 娄高锋
1 parent 9e15d4d9

大间隔统计表(大间隔发生次数汇总表)

src/main/java/com/bsth/controller/calc/CalcIntervalController.java
... ... @@ -41,5 +41,11 @@ public class CalcIntervalController extends BaseController<CalcInterval,Integer
41 41 return list;
42 42 }
43 43  
  44 + @RequestMapping(value="/sumInterval")
  45 + public List<Map<String,Object>> sumInterval(@RequestParam Map<String, Object> map){
  46 + List<Map<String, Object>> list=calcIntervalService.sumInterval(map);
  47 + return list;
  48 + }
  49 +
44 50  
45 51 }
... ...
src/main/java/com/bsth/service/calc/CalcIntervalService.java
... ... @@ -17,5 +17,7 @@ public interface CalcIntervalService extends BaseService&lt;CalcInterval,Integer&gt; {
17 17 List<Map<String,Object>> interval(Map<String, Object> map);
18 18 //根据预统计表查询
19 19 List<Map<String,Object>> intervalDetail(Map<String, Object> map);
  20 + //大间隔统计表(大间隔发生次数统计表)
  21 + List<Map<String,Object>> sumInterval(Map<String, Object> map);
20 22  
21 23 }
... ...
src/main/java/com/bsth/service/calc/impl/CalcIntervalServiceImpl.java
1 1 package com.bsth.service.calc.impl;
2 2  
  3 +import java.math.BigDecimal;
3 4 import java.sql.ResultSet;
4 5 import java.sql.SQLException;
5 6 import java.text.DecimalFormat;
... ... @@ -34,8 +35,10 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
34 35 import com.bsth.service.LineService;
35 36 import com.bsth.service.calc.CalcIntervalService;
36 37 import com.bsth.service.impl.BaseServiceImpl;
  38 +import com.bsth.util.Arith;
37 39 import com.bsth.util.ComparableReal;
38 40 import com.bsth.util.ReportUtils;
  41 +import com.mysql.fabric.xmlrpc.base.Array;
39 42  
40 43 @Service
41 44 public class CalcIntervalServiceImpl extends BaseServiceImpl<CalcInterval,Integer> implements CalcIntervalService {
... ... @@ -696,6 +699,153 @@ public class CalcIntervalServiceImpl extends BaseServiceImpl&lt;CalcInterval,Intege
696 699 return minSj;
697 700 }
698 701  
  702 + public List<Map<String, Object>> sumInterval(Map<String, Object> map) {
  703 + // TODO Auto-generated method stub
  704 + final DecimalFormat df = new DecimalFormat("0.00");
  705 + List<Map<String, Object>> list=new ArrayList<>();
  706 + String gs=map.get("gs").toString().trim();
  707 + String fgs=map.get("fgs").toString().trim();
  708 + String sDate=map.get("date").toString();
  709 + String eDate=map.get("endDate").toString();
  710 +// String nature=map.get("nature").toString();
  711 +
  712 + List<Map<String, Object>> listAll=new ArrayList<Map<String, Object>>();
  713 +
  714 + String sql="select gsbm,fgsbm,level,djg_all,bcs"
  715 + + " from bsth_c_calc_interval where date>= '"+sDate+"' and date<='"+eDate+"'"
  716 + + " and level is not null and level <> '' ";
  717 + if(gs.length() > 0){
  718 + if(fgs.length() > 0){
  719 + sql +=" and gsbm = '"+gs+"' and fgsbm = '"+fgs+"'";
  720 + } else {
  721 + sql +=" and gsbm = '"+gs+"'";
  722 + }
  723 + }
  724 + sql += " order by gsbm,fgsbm,level";
  725 +
  726 + List<Map<String, Object>> countList=jdbcTemplate.query(sql,
  727 + new RowMapper<Map<String,Object>>(){
  728 + @Override
  729 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  730 + Map<String, Object> m=new HashMap<String,Object>();
  731 + m.put("gs", BasicData.businessCodeNameMap.get(rs.getString("gsbm")));
  732 + m.put("fgs", BasicData.businessFgsCodeNameMap.get(rs.getString("fgsbm")+"_"+rs.getString("gsbm")));
  733 + m.put("level", rs.getString("level"));
  734 + m.put("djgAll", rs.getInt("djg_all"));
  735 + m.put("bcs", rs.getInt("bcs"));
  736 + return m;
  737 + }
  738 + });
  739 +
  740 + List<String> keyList = new ArrayList<String>();
  741 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  742 + Map<String, Object> sumMap1 = new HashMap<String, Object>();
  743 + Map<String, Object> sumMap2 = new HashMap<String, Object>();
  744 + sumMap1.put("fgs", "合计"); //分公司合计
  745 + sumMap1.put("djgNum", "0");
  746 + sumMap1.put("bcs", "0");
  747 + sumMap2.put("gs", "合计"); //公司合计
  748 + sumMap2.put("djgNum", "0");
  749 + sumMap2.put("bcs", "0");
  750 + for(Map<String, Object> m : countList){
  751 + String gsName = m.get("gs").toString();
  752 + String fgsName = m.get("fgs").toString();
  753 + String level = m.get("level").toString();
  754 + String key = gsName + "^" + fgsName + "/" + level;
  755 + Map<String, Object> temp = new HashMap<String, Object>();
  756 + if(keyList.size() == 0){
  757 + sumMap1.put("gs", gsName);
  758 + }
  759 + if(!(keyMap.containsKey(key))){
  760 + if(keyList.size() > 0 && !(keyList.get(keyList.size() - 1).split("/")[0].equals(key.split("/")[0]))){
  761 + keyList.add(sumMap1.get("gs").toString() + "^合计_" + fgsName);
  762 + keyMap.put(sumMap1.get("gs").toString() + "^合计_" + fgsName, sumMap1);
  763 + sumMap1 = new HashMap<String, Object>();
  764 + sumMap1.put("gs", gsName);
  765 + sumMap1.put("fgs", "合计");
  766 + sumMap1.put("djgNum", "0");
  767 + sumMap1.put("bcs", "0");
  768 + }
  769 + temp.put("gs", gsName);
  770 + temp.put("fgs", fgsName);
  771 + temp.put("level", level);
  772 + temp.put("djgNum", "0");
  773 + temp.put("bcs", "0");
  774 + keyList.add(key);
  775 + keyMap.put(key, temp);
  776 + } else {
  777 + temp = keyMap.get(key);
  778 + }
  779 + if(m.get("djgAll") != null && m.get("djgAll").toString().trim().length() > 0){
  780 + temp.put("djgNum", Arith.add(temp.get("djgNum"), m.get("djgAll")));
  781 + sumMap1.put("djgNum", Arith.add(sumMap1.get("djgNum"), m.get("djgAll")));
  782 + sumMap2.put("djgNum", Arith.add(sumMap2.get("djgNum"), m.get("djgAll")));
  783 + }
  784 + if(m.get("bcs") != null && m.get("bcs").toString().trim().length() > 0){
  785 + temp.put("bcs", Arith.add(temp.get("bcs"), m.get("bcs")));
  786 + sumMap1.put("bcs", Arith.add(sumMap1.get("bcs"), m.get("bcs")));
  787 + sumMap2.put("bcs", Arith.add(sumMap2.get("bcs"), m.get("bcs")));
  788 + }
  789 + }
  790 + keyList.add((sumMap1.get("gs")!=null?sumMap1.get("gs").toString():"") + "^合计_");
  791 + keyMap.put((sumMap1.get("gs")!=null?sumMap1.get("gs").toString():"") + "^合计_", sumMap1);
  792 + keyList.add("合计");
  793 + keyMap.put("合计", sumMap2);
  794 +
  795 + for(String key : keyList){
  796 + Map<String, Object> m = keyMap.get(key);
  797 + double djgAll = new BigDecimal(m.get("djgNum").toString()).doubleValue();
  798 + double bcs = new BigDecimal(m.get("bcs").toString()).doubleValue();
  799 + //万班次发生率 (大间隔次数/全日班次数*10000)
  800 + if(bcs > 0){
  801 + double fsl = djgAll / bcs * 10000;
  802 + m.put("fsl", df.format(fsl));
  803 + } else {
  804 + m.put("fsl", "0.0");
  805 + }
  806 + listAll.add(m);
  807 + }
  808 +
  809 + if(map.get("type").equals("export")){
  810 + String lineName="";
  811 + if(listAll.size()>0){
  812 + if(fgs.equals("")){
  813 + lineName=listAll.get(0).get("gs").toString();
  814 + }else{
  815 + lineName=listAll.get(0).get("fgs").toString();
  816 + }
  817 + }
  818 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  819 + Map<String, Object> m = new HashMap<String, Object>();
  820 +
  821 + ReportUtils ee = new ReportUtils();
  822 + try {
  823 + String dateTime = "";
  824 + if(sDate.equals(eDate)){
  825 + dateTime = sDate.replaceAll("-", "");
  826 + } else {
  827 + dateTime = sDate.replaceAll("-", "")+"-"+
  828 + eDate.replaceAll("-", "");
  829 + }
  830 + listI.add(listAll.iterator());
  831 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  832 + String xls="";
  833 + String xlsName="";
  834 + m.put("sDate", sDate);
  835 + m.put("eDate", eDate);
  836 + xls="calcIntervalCount.xls";
  837 + xlsName="大间隔情况表.xls";
  838 +
  839 + ee.excelReplace(listI, new Object[]{m}, path + "mould/" + ""+xls,
  840 + path + "export/"+dateTime+"-"+lineName+"-"+xlsName);
  841 + } catch (Exception e) {
  842 + // TODO: handle exception
  843 + e.printStackTrace();
  844 + }
  845 + }
  846 + return listAll;
  847 + }
  848 +
699 849 }
700 850  
701 851 class ComparableJhfc implements Comparator<ScheduleRealInfo>{
... ...