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,5 +41,11 @@ public class CalcIntervalController extends BaseController<CalcInterval,Integer | ||
| 41 | return list; | 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,5 +17,7 @@ public interface CalcIntervalService extends BaseService<CalcInterval,Integer> { | ||
| 17 | List<Map<String,Object>> interval(Map<String, Object> map); | 17 | List<Map<String,Object>> interval(Map<String, Object> map); |
| 18 | //根据预统计表查询 | 18 | //根据预统计表查询 |
| 19 | List<Map<String,Object>> intervalDetail(Map<String, Object> map); | 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 | package com.bsth.service.calc.impl; | 1 | package com.bsth.service.calc.impl; |
| 2 | 2 | ||
| 3 | +import java.math.BigDecimal; | ||
| 3 | import java.sql.ResultSet; | 4 | import java.sql.ResultSet; |
| 4 | import java.sql.SQLException; | 5 | import java.sql.SQLException; |
| 5 | import java.text.DecimalFormat; | 6 | import java.text.DecimalFormat; |
| @@ -34,8 +35,10 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | @@ -34,8 +35,10 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | ||
| 34 | import com.bsth.service.LineService; | 35 | import com.bsth.service.LineService; |
| 35 | import com.bsth.service.calc.CalcIntervalService; | 36 | import com.bsth.service.calc.CalcIntervalService; |
| 36 | import com.bsth.service.impl.BaseServiceImpl; | 37 | import com.bsth.service.impl.BaseServiceImpl; |
| 38 | +import com.bsth.util.Arith; | ||
| 37 | import com.bsth.util.ComparableReal; | 39 | import com.bsth.util.ComparableReal; |
| 38 | import com.bsth.util.ReportUtils; | 40 | import com.bsth.util.ReportUtils; |
| 41 | +import com.mysql.fabric.xmlrpc.base.Array; | ||
| 39 | 42 | ||
| 40 | @Service | 43 | @Service |
| 41 | public class CalcIntervalServiceImpl extends BaseServiceImpl<CalcInterval,Integer> implements CalcIntervalService { | 44 | public class CalcIntervalServiceImpl extends BaseServiceImpl<CalcInterval,Integer> implements CalcIntervalService { |
| @@ -696,6 +699,153 @@ public class CalcIntervalServiceImpl extends BaseServiceImpl<CalcInterval,Intege | @@ -696,6 +699,153 @@ public class CalcIntervalServiceImpl extends BaseServiceImpl<CalcInterval,Intege | ||
| 696 | return minSj; | 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 | class ComparableJhfc implements Comparator<ScheduleRealInfo>{ | 851 | class ComparableJhfc implements Comparator<ScheduleRealInfo>{ |