Commit c2a32b59e30a22ac01ef1f7f4293fb92714cd19a
1 parent
9e15d4d9
大间隔统计表(大间隔发生次数汇总表)
Showing
3 changed files
with
158 additions
and
0 deletions
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<CalcInterval,Integer> { |
| 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<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>{ | ... | ... |