Commit b112257136ec3612c7494bbc093cc861daec6c84

Authored by 娄高锋
1 parent c2ae84f3

新增接口(按线路统计班次出车率,按车辆统计里程、油电耗)。

src/main/java/com/bsth/server_rs/bigdata/BigdataService.java
... ... @@ -32,10 +32,15 @@ import org.springframework.jdbc.core.RowMapper;
32 32 import org.springframework.stereotype.Component;
33 33  
34 34 import com.alibaba.fastjson.JSONObject;
  35 +import com.bsth.common.BusinessCodeData;
35 36 import com.bsth.entity.ChildTaskPlan;
36 37 import com.bsth.entity.DestroySituation;
  38 +import com.bsth.entity.ElecInfo;
  39 +import com.bsth.entity.OilInfo;
37 40 import com.bsth.entity.ScheduleRealInfo;
38 41 import com.bsth.repository.DestroySituationRepository;
  42 +import com.bsth.repository.ElecInfoRepository;
  43 +import com.bsth.repository.OilInfoRepository;
39 44 import com.bsth.repository.ScheduleRealInfoRepository;
40 45 import com.bsth.server_rs.base_info.car.buffer.CarBufferData;
41 46 import com.bsth.util.Arith;
... ... @@ -55,6 +60,12 @@ public class BigdataService {
55 60 @Autowired
56 61 private ScheduleRealInfoRepository scheduleRealInfoRepository;
57 62  
  63 + @Autowired
  64 + private OilInfoRepository oilInfoRepository;
  65 +
  66 + @Autowired
  67 + private ElecInfoRepository elecInfoRepository;
  68 +
58 69 DecimalFormat df = new DecimalFormat("0.00");
59 70  
60 71 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
... ... @@ -1729,15 +1740,15 @@ public class BigdataService {
1729 1740  
1730 1741 Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
1731 1742 for(Map<String, Object> m : calcList){
1732   - String rq_str = m.get("rq_str").toString();
  1743 + String rqStr = m.get("rq_str").toString();
1733 1744 String gsdm = m.get("gsdm").toString();
1734 1745 String fgsdm = m.get("fgsdm").toString();
1735 1746 String gh = m.get("j_gh").toString();
1736 1747 String name = m.get("j_name").toString();
1737   - String key = rq_str + "/" + gsdm + "/" + fgsdm + "/" + gh + "/" + name;
  1748 + String key = rqStr + "/" + gsdm + "/" + fgsdm + "/" + gh + "/" + name;
1738 1749 if(!keyMap.containsKey(key)){
1739 1750 Map<String, Object> temp = new HashMap<String, Object>();
1740   - temp.put("date", rq_str);
  1751 + temp.put("date", rqStr);
1741 1752 temp.put("company", gsdm);
1742 1753 temp.put("brancheCompany", fgsdm);
1743 1754 temp.put("gh", gh);
... ... @@ -1762,4 +1773,284 @@ public class BigdataService {
1762 1773 return resList;
1763 1774 }
1764 1775  
  1776 + /**
  1777 + * 车辆的班次里程与油电耗(给郑鑫)
  1778 + * @param date
  1779 + * @return
  1780 + * @throws ParseException
  1781 + */
  1782 + @GET
  1783 + @Path("/scheduleAndMileage/date/{date}")
  1784 + public List<Map<String, Object>> scheduleAndMileage(@PathParam("date") String date) throws ParseException {
  1785 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  1786 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1787 + Date rq = sdf.parse(date);
  1788 +
  1789 + String xlSql="SELECT line_code, name, nature from bsth_c_line where name is not null and name != ''";
  1790 + List<Map<String, Object>> xlList=jdbcTemplate.query(xlSql,
  1791 + new RowMapper<Map<String, Object>>(){
  1792 + @Override
  1793 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1794 + Map<String, Object> m=new HashMap<String,Object>();
  1795 + m.put("lineCode", rs.getString("line_code"));
  1796 + m.put("lineName", rs.getString("name"));
  1797 + m.put("nature", rs.getString("nature"));
  1798 + return m;
  1799 + }
  1800 + });
  1801 + Set<String> yyLine = new HashSet<String>();
  1802 + Map<String, Object> allLineMap = new HashMap<String, Object>();
  1803 + for(Map<String, Object> t : xlList){
  1804 + if(t.get("lineCode") != null){
  1805 + allLineMap.put(t.get("lineCode").toString(), t.get("lineName").toString());
  1806 + String nature = t.get("nature")!=null?t.get("nature").toString():"";
  1807 + if("yxl".equals(nature) || "cgxl".equals(nature) || "gjxl".equals(nature)
  1808 + || "csbs".equals(nature) || "cctxl".equals(nature)){
  1809 + yyLine.add(t.get("lineCode").toString());
  1810 + }
  1811 + }
  1812 + }
  1813 +
  1814 + String sql="SELECT gsdm, gsname, fgsdm, fgsname, rq_str, xl, xl_name, cl,"
  1815 + + " jhyybc, jhfyybc, sjyybc, sjfyybc, ljbc, jhyylc, jhfyylc,"
  1816 + + " sjyylc, sjfyylc, ljyylc, ljfyylc"
  1817 + + " from calc_waybill"
  1818 + + " where rq = ? ";
  1819 + List<Map<String, Object>> calcList=jdbcTemplate.query(sql, new Object[]{rq},
  1820 + new RowMapper<Map<String, Object>>(){
  1821 + @Override
  1822 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1823 + Map<String, Object> m=new HashMap<String,Object>();
  1824 + m.put("gsdm", rs.getString("gsdm"));
  1825 + m.put("gsname", rs.getString("gsname"));
  1826 + m.put("fgsdm", rs.getString("fgsdm"));
  1827 + m.put("fgsname", rs.getString("fgsname"));
  1828 + m.put("rq_str", rs.getString("rq_str"));
  1829 + m.put("xl", rs.getString("xl"));
  1830 + m.put("xl_name", rs.getString("xl_name"));
  1831 + m.put("cl", rs.getString("cl"));
  1832 + m.put("jhyybc", rs.getString("jhyybc"));
  1833 + m.put("jhfyybc", rs.getString("jhfyybc"));
  1834 + m.put("sjyybc", rs.getString("sjyybc"));
  1835 + m.put("sjfyybc", rs.getString("sjfyybc"));
  1836 + m.put("ljbc", rs.getString("ljbc"));
  1837 + m.put("jhyylc", rs.getString("jhyylc"));
  1838 + m.put("jhfyylc", rs.getString("jhfyylc"));
  1839 + m.put("sjyylc", rs.getString("sjyylc"));
  1840 + m.put("sjfyylc", rs.getString("sjfyylc"));
  1841 + m.put("ljyylc", rs.getString("ljyylc"));
  1842 + m.put("ljfyylc", rs.getString("ljfyylc"));
  1843 + return m;
  1844 + }
  1845 + });
  1846 +
  1847 + String cclSql = "select date,gsdm,fgsdm,xl,xl_name,jhcc,sjcc,ccl,jhbc,sjbc,bczxl from bsth_c_calc_count "
  1848 + + " where date = ? ";
  1849 +
  1850 + List<Map<String, Object>> cclList=jdbcTemplate.query(cclSql, new Object[]{date},
  1851 + new RowMapper<Map<String, Object>>(){
  1852 + @Override
  1853 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1854 + Map<String, Object> m=new HashMap<String,Object>();
  1855 + m.put("date", rs.getString("date"));
  1856 + m.put("gsdm", rs.getString("gsdm"));
  1857 + m.put("fgsdm", rs.getString("fgsdm"));
  1858 + m.put("xl", rs.getString("xl"));
  1859 + m.put("xlName", rs.getString("xl_name"));
  1860 + m.put("jhcc", rs.getString("jhcc"));
  1861 + m.put("sjcc", rs.getString("sjcc"));
  1862 + m.put("ccl", rs.getString("ccl"));
  1863 + m.put("jhbc", rs.getString("jhbc"));
  1864 + m.put("sjbc", rs.getString("sjbc"));
  1865 + m.put("bczxl", rs.getString("bczxl"));
  1866 + return m;
  1867 + }
  1868 + });
  1869 + Map<String, Map<String, Object>> xlMap = new HashMap<String, Map<String, Object>>();
  1870 + Map<String, List> carsMap = new HashMap<String, List>();
  1871 + for(Map<String, Object> m : cclList){
  1872 + String rqStr = m.get("date").toString();
  1873 + String gsdm = m.get("gsdm").toString();
  1874 + String fgsdm = m.get("fgsdm").toString();
  1875 + String xl = m.get("xl").toString();
  1876 + String key = rqStr + "/" + gsdm + "/" + fgsdm + "/" + xl;
  1877 + m.put("gsName", BusinessCodeData.code2Name.get(gsdm));
  1878 + m.put("fgsName", BusinessCodeData.code2Name.get(gsdm + "_" + fgsdm));
  1879 +// m.put("cars", new ArrayList());
  1880 + xlMap.put(key, m);
  1881 + carsMap.put(key, new ArrayList());
  1882 + }
  1883 +
  1884 + List<OilInfo> OilInfoList = oilInfoRepository.findByDate(rq);
  1885 + List<ElecInfo> ElecInfoList = elecInfoRepository.findByDate(rq);
  1886 +
  1887 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  1888 + for(Map<String, Object> m : calcList){
  1889 + String rqStr = m.get("rq_str").toString();
  1890 + String gsdm = m.get("gsdm").toString();
  1891 + String fgsdm = m.get("fgsdm").toString();
  1892 + String xl = m.get("xl").toString();
  1893 + String cl = m.get("cl").toString();
  1894 + String key = rqStr + "/" + gsdm + "/" + fgsdm + "/" + xl + "/" + cl;
  1895 + if(!keyMap.containsKey(key)){
  1896 + Map<String, Object> m1 = new HashMap<String, Object>();
  1897 + m1.put("oil", 0);
  1898 + m1.put("elec", 0);
  1899 + keyMap.put(key, m1);
  1900 + }
  1901 + Map<String, Object> m1 = keyMap.get(key);
  1902 + m1.put("date", rqStr);
  1903 + m1.put("gsdm", gsdm);
  1904 + m1.put("gsName", m.get("gsname")!=null?m.get("gsname").toString():"");
  1905 + m1.put("fgsdm", fgsdm);
  1906 + m1.put("fgsName", m.get("fgsname")!=null?m.get("fgsname").toString():"");
  1907 + m1.put("xl", xl);
  1908 + m1.put("xlName", m.get("xl_name")!=null?m.get("xl_name").toString():"");
  1909 + m1.put("cl", cl);
  1910 + m1.put("jhbc", new BigDecimal(m1.get("jhbc")!=null?m1.get("jhbc").toString():"0").add(
  1911 + new BigDecimal(m.get("jhyybc")!=null?m.get("jhyybc").toString():"0")).add(
  1912 + new BigDecimal(m.get("jhfyybc")!=null?m.get("jhfyybc").toString():"0")));
  1913 + m1.put("sjbc", new BigDecimal(m1.get("sjbc")!=null?m1.get("sjbc").toString():"0").add( //实际班次+临加班次=总实际班次
  1914 + new BigDecimal(m.get("sjyybc")!=null?m.get("sjyybc").toString():"0")).add(
  1915 + new BigDecimal(m.get("sjfyybc")!=null?m.get("sjfyybc").toString():"0")).add(
  1916 + new BigDecimal(m.get("ljbc")!=null?m.get("ljbc").toString():"0")));
  1917 + m1.put("jhyygl", new BigDecimal(m1.get("jhyygl")!=null?m1.get("jhyygl").toString():"0").add(
  1918 + new BigDecimal(m.get("jhyylc")!=null?m.get("jhyylc").toString():"0")));
  1919 + m1.put("jhksgl", new BigDecimal(m1.get("jhksgl")!=null?m1.get("jhksgl").toString():"0").add(
  1920 + new BigDecimal(m.get("jhfyylc")!=null?m.get("jhfyylc").toString():"0")));
  1921 + m1.put("sjyygl", new BigDecimal(m1.get("sjyygl")!=null?m1.get("sjyygl").toString():"0").add(
  1922 + new BigDecimal(m.get("sjyylc")!=null?m.get("sjyylc").toString():"0")).add(
  1923 + new BigDecimal(m.get("ljyylc")!=null?m.get("ljyylc").toString():"0")));
  1924 + m1.put("sjksgl", new BigDecimal(m1.get("sjksgl")!=null?m1.get("sjksgl").toString():"0").add(
  1925 + new BigDecimal(m.get("sjfyylc")!=null?m.get("sjfyylc").toString():"0")).add(
  1926 + new BigDecimal(m.get("ljfyylc")!=null?m.get("ljfyylc").toString():"0")));
  1927 + }
  1928 +
  1929 + for(OilInfo oil : OilInfoList){
  1930 + if(oil.getXlbm() == null || oil.getXlbm().trim().length() == 0){
  1931 + continue;
  1932 + }
  1933 + String rqStr = sdf.format(oil.getRq());
  1934 + String gsdm = oil.getSsgsdm();
  1935 + String fgsdm = oil.getFgsdm();
  1936 + String xl = oil.getXlbm();
  1937 + String cl = oil.getNbbm();
  1938 + String key = rqStr + "/" + gsdm + "/" + fgsdm + "/" + xl + "/" + cl;
  1939 + if(!keyMap.containsKey(key)){
  1940 + Map<String, Object> m1 = new HashMap<String, Object>();
  1941 + m1.put("jhbc", 0);
  1942 + m1.put("sjbc", 0);
  1943 + m1.put("jhyygl", 0);
  1944 + m1.put("jhksgl", 0);
  1945 + m1.put("sjyygl", 0);
  1946 + m1.put("sjksgl", 0);
  1947 + m1.put("oil", 0);
  1948 + m1.put("elec", 0);
  1949 + keyMap.put(key, m1);
  1950 + }
  1951 + Map<String, Object> m1 = keyMap.get(key);
  1952 + m1.put("date", rqStr);
  1953 + m1.put("gsdm", gsdm);
  1954 + m1.put("fgsdm", fgsdm);
  1955 + m1.put("xl", xl);
  1956 + m1.put("cl", cl);
  1957 + m1.put("oil", new BigDecimal(m1.get("oil")!=null?m1.get("oil").toString():"0").add(
  1958 + new BigDecimal(oil.getYh()!=null?oil.getYh().toString():"0")));
  1959 + }
  1960 +
  1961 + for(ElecInfo elec : ElecInfoList){
  1962 + if(elec.getXlbm() == null || elec.getXlbm().trim().length() == 0){
  1963 + continue;
  1964 + }
  1965 + String rqStr = sdf.format(elec.getRq());
  1966 + String gsdm = elec.getSsgsdm();
  1967 + String fgsdm = elec.getFgsdm();
  1968 + String xl = elec.getXlbm();
  1969 + String cl = elec.getNbbm();
  1970 + String key = rqStr + "/" + gsdm + "/" + fgsdm + "/" + xl + "/" + cl;
  1971 + if(!keyMap.containsKey(key)){
  1972 + Map<String, Object> m1 = new HashMap<String, Object>();
  1973 + m1.put("jhbc", 0);
  1974 + m1.put("sjbc", 0);
  1975 + m1.put("jhyygl", 0);
  1976 + m1.put("jhksgl", 0);
  1977 + m1.put("sjyygl", 0);
  1978 + m1.put("sjksgl", 0);
  1979 + m1.put("oil", 0);
  1980 + m1.put("elec", 0);
  1981 + keyMap.put(key, m1);
  1982 + }
  1983 + Map<String, Object> m1 = keyMap.get(key);
  1984 + m1.put("date", rqStr);
  1985 + m1.put("gsdm", gsdm);
  1986 + m1.put("fgsdm", fgsdm);
  1987 + m1.put("xl", xl);
  1988 + m1.put("cl", cl);
  1989 + m1.put("elec", new BigDecimal(m1.get("elec")!=null?m1.get("elec").toString():"0").add(
  1990 + new BigDecimal(elec.getHd()!=null?elec.getHd().toString():"0")));
  1991 + }
  1992 +
  1993 + for(String key : keyMap.keySet()){
  1994 + Map<String, Object> m = keyMap.get(key);
  1995 + if(!m.containsKey("gsName") || m.get("gsName").toString().trim().length() == 0){
  1996 + m.put("gsName", BusinessCodeData.code2Name.get(m.get("gsdm").toString()));
  1997 + }
  1998 + if(!m.containsKey("fgsName") || m.get("fgsName").toString().trim().length() == 0){
  1999 + m.put("fgsName", BusinessCodeData.code2Name.get(m.get("gsdm").toString() + "_"
  2000 + + m.get("fgsdm").toString()));
  2001 + }
  2002 + if(!m.containsKey("xlName") || m.get("xlName").toString().trim().length() == 0){
  2003 + if(!allLineMap.containsKey(m.get("xl").toString())){
  2004 + continue;
  2005 + }
  2006 + m.put("xlName", allLineMap.get(m.get("xl").toString()));
  2007 + }
  2008 +// if(new BigDecimal(m.get("jhyygl").toString()).compareTo(new BigDecimal("0")) == 1){
  2009 +// m.put("jhcc", 1);
  2010 +// } else {
  2011 +// m.put("jhcc", 0);
  2012 +// }
  2013 +// if(new BigDecimal(m.get("sjyygl").toString()).compareTo(new BigDecimal("0")) == 1){
  2014 +// m.put("sjcc", 1);
  2015 +// } else {
  2016 +// m.put("sjcc", 0);
  2017 +// }
  2018 + m.put("jhzgl", new BigDecimal(m.get("jhyygl").toString()).add(new BigDecimal(m.get("jhksgl").toString())));
  2019 + m.put("sjzgl", new BigDecimal(m.get("sjyygl").toString()).add(new BigDecimal(m.get("sjksgl").toString())));
  2020 +
  2021 + String rqStr = m.get("date").toString();
  2022 + String gsdm = m.get("gsdm").toString();
  2023 + String fgsdm = m.get("fgsdm").toString();
  2024 + String xl = m.get("xl").toString();
  2025 + String xlKey = rqStr + "/" + gsdm + "/" + fgsdm + "/" + xl;
  2026 + if(!carsMap.containsKey(xlKey)){
  2027 + Map<String, Object> temp = new HashMap<String, Object>();
  2028 + temp.put("date", rqStr);
  2029 + temp.put("gsdm", gsdm);
  2030 + temp.put("fgsdm", fgsdm);
  2031 + temp.put("xl", xl);
  2032 + temp.put("gsName", m.get("gsName").toString());
  2033 + temp.put("fgsName", m.get("fgsName").toString());
  2034 + temp.put("xlName", m.get("xlName").toString());
  2035 + temp.put("jhcc", 0);
  2036 + temp.put("sjcc", 0);
  2037 + temp.put("ccl", 0);
  2038 + temp.put("jhbc", 0);
  2039 + temp.put("sjbc", 0);
  2040 + temp.put("bczxl", 0);
  2041 + xlMap.put(xlKey, temp);
  2042 + carsMap.put(xlKey, new ArrayList());
  2043 + }
  2044 + carsMap.get(xlKey).add(m);
  2045 + }
  2046 +
  2047 + for(String key : xlMap.keySet()){
  2048 + Map<String, Object> m = xlMap.get(key);
  2049 + m.put("cars", carsMap.get(key));
  2050 + resList.add(m);
  2051 + }
  2052 +
  2053 + return resList;
  2054 + }
  2055 +
1765 2056 }
... ...