JdtestServiceImpl.java 9.81 KB
package com.bsth.service.jdtest.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;

import com.bsth.entity.mcy_forms.Daily;
import com.bsth.entity.oil.Dlb;
import com.bsth.entity.oil.Ylb;
import com.bsth.entity.oil.Ylxxb;
import com.bsth.entity.realcontrol.ChildTaskPlan;
import com.bsth.entity.realcontrol.ScheduleRealInfo;
import com.bsth.entity.sys.Dictionary;
import com.bsth.repository.oil.YlbRepository;
import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
import com.bsth.service.jdtest.JdtestService;
import com.bsth.service.report.CulateMileageService;
import com.bsth.service.sys.DictionaryService;
import com.bsth.util.Arith;

@Service
public class JdtestServiceImpl implements JdtestService {

	@Autowired
	JdbcTemplate jdbcTemplate;
	@Autowired
	CulateMileageService culateMileageService;
	@Autowired
	ScheduleRealInfoRepository scheduleRealInfoRepository;
	@Autowired
	YlbRepository ylbRepository;
	@Autowired
	DictionaryService dictionaryService;
	@Override
	public List<Ylxxb> cwjyList(Map<String, Object> map) {
		String rq=map.get("rq").toString();
		String nbbm=map.get("nbbh").toString();
		String gsdm=map.get("gsdm_like").toString();
		
		String fgsdm=map.get("fgsdm_like").toString();
		String line =map.get("line_like").toString().trim();
		boolean type=false;
		if(map.get("type")!=null){
			type=true;
		}
		String sql="select a.nbbm,a.gsdm,a.fgsdm,IFNULL(b.id,0) as id,IFNULL(b.jzl,0) as jzl,"
		+ " IFNULL(b.jyggh,0) as jyggh,IFNULL(b.jsy,0) as jsy,IFNULL(b.stationid,0) as stationid ,"
		+ " IFNULL(b.yj,0) as yj,IFNULL(b.nylx,0) as nylx,IFNULL(b.bz,'') as bz,IFNULL(c.jsy,'') as ldgh ,"
		+ " IFNULL(c.xlname,c.linename) as xlname  from "
		+ " (select * from bsth_c_cwjy where  gsdm='"+gsdm+"' and fgsdm='"+fgsdm+"') a "
		+ " left join (select * from bsth_c_ylxxb where yyrq='"+rq+"' and gsdm='"+gsdm+"' and jylx=1) b"
		+ " on a.nbbm=b.nbbm LEFT JOIN (select u.nbbm,u.jsy,v.linename,v.xlname,v.xlbm from(select a.nbbm,GROUP_CONCAT(a.jsy) as jsy "
		+ " from (select nbbm,jsy from bsth_c_ylb x where x.rq='"+rq+"' "
		+ " and x.ssgsdm='"+gsdm+"' and x.fgsdm='"+fgsdm+"' group by nbbm,jsy ) a  group by a.nbbm) u"
		+ " LEFT JOIN(select o.nbbm,GROUP_CONCAT(o.xlbm) xlbm ,GROUP_CONCAT(o.linename) as xlname,"
		+ " GROUP_CONCAT(p.`name`)  as linename from (select nbbm,xlbm,linename from bsth_c_ylb "
		+ " where rq='"+rq+"' and ssgsdm='"+gsdm+"' and fgsdm='"+fgsdm+"' group by nbbm,xlbm,linename) o "
		+ " LEFT JOIN bsth_c_line p on o.xlbm=p.line_code group by o.nbbm ) v on u.nbbm=v.nbbm) c "
		+ " on a.nbbm=c.nbbm where 1=1 ";
		if(!nbbm.equals("")){
			sql +=" and a.nbbm like '%"+nbbm+"%'";
		}
		if(!line.equals("")){
			sql += " and c.xlbm ='"+line+"'";
		}
		if(type){
			sql +=" and c.xlbm is not null";
		}
		sql +=" order by xlname desc";
		
		List<Ylxxb> yList= jdbcTemplate.query(sql,
				 new RowMapper<Ylxxb>(){
			 @Override
			 public Ylxxb  mapRow(ResultSet rs, int rowNum) throws SQLException {  
				 Ylxxb t=new Ylxxb();
				 t.setId(rs.getInt("id"));
				 t.setGsdm(rs.getString("gsdm"));
				 t.setFgsdm(rs.getString("fgsdm"));
				 t.setNbbm(rs.getString("nbbm"));
				 t.setJyggh(rs.getString("jyggh"));
				 t.setJsy(rs.getString("jsy"));
				 t.setJzl(rs.getDouble("jzl"));
				 t.setStationid(rs.getString("stationid"));
				 t.setNylx(rs.getInt("nylx"));
				 t.setYj(rs.getDouble("yj"));
				 t.setBz(rs.getString("bz"));
				 t.setLdgh(rs.getString("ldgh"));
				 t.setLinename(rs.getString("xlname"));
				 return t;
			 }
		});
		return yList;
	}


	@Override
	public List<Map<String, Object>> daily(Map<String, Object> map) {
		String xlbm="";
		if(map.get("line")!=null){
			xlbm=map.get("line").toString().trim();
		}
		String gsbm="";
		if(map.get("gsbm")!=null){
			gsbm=map.get("gsbm").toString().trim();
		}
		
		String fgsbm="";
		if(map.get("fgsbm")!=null){
			fgsbm=map.get("fgsbm").toString().trim();
		}
				
		String sql="select r.xl_bm, r.cl_zbh,r.j_gh,r.lp_name "
				+ " from bsth_c_s_sp_info_real r where "
				+ "r.schedule_date_str = '"+map.get("date").toString()+"'";
		if(!gsbm.equals("")){
			sql += "and r.gs_bm ='"+gsbm+"'";
		}	
		if(!fgsbm.equals("")){
			sql += "and r.fgs_bm='"+fgsbm+"'";
		}
		if(!xlbm.equals("")){
			sql += " and r.xl_bm = '"+xlbm+"'";
		}		
		
				sql += " group by r.xl_bm, r.cl_zbh,r.j_gh,r.lp_name order by r.xl_bm,r.cl_zbh";
		
		List<Map<String, Object>> list = jdbcTemplate.query(sql, new RowMapper<Map<String, Object>>() {
			@Override
			public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
				Map<String, Object> m=new HashMap<>();
				m.put("xlBm", arg0.getString("xl_bm"));
				m.put("lp", arg0.getString("lp_name"));
				m.put("jGh", arg0.getString("j_gh"));
				m.put("clZbh", arg0.getString("cl_zbh"));
				return m;
			}
		});
		Map<String, Object> dMap=new HashMap<>();
		dMap.put("dGroup", "oilType");
		Iterator<Dictionary> it= dictionaryService.list(dMap).iterator();
		while (it.hasNext()) {
			Dictionary d=it.next();
			dMap.put(d.getdCode(), d.getdName());
		}
		List<Ylb> listYlb=new ArrayList<Ylb>();
		if(xlbm.equals("")){
			listYlb=ylbRepository.obtainYl(map.get("date").toString(), gsbm, fgsbm, xlbm, "", "xlbm");
		}else{
			listYlb=ylbRepository.obtainYlEq(map.get("date").toString(), "", "", xlbm, "", "xlbm");
		}
		Map<String, Ylb> mapYlb=new HashMap<>();
		for (int j = 0; j < listYlb.size(); j++) {
			Ylb y=listYlb.get(j);
			if(mapYlb.get(y.getXlbm()+y.getJsy()+y.getNbbm()+y.getLp())==null){
				mapYlb.put(y.getXlbm()+y.getJsy()+y.getNbbm()+y.getLp(), y);
			}
		}
		
		List<ScheduleRealInfo> sList;
		List<ScheduleRealInfo> jList;
		List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
		if(xlbm.equals("")){
			lists=scheduleRealInfoRepository.scheduleByDateAndLineByGs_(gsbm, fgsbm, map.get("date").toString());
		}else{
			lists=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(xlbm, map.get("date").toString());

		}
		double jzyl_z=0.0;
		double czyl_z=0.0;
		double jzl_z=0.0;
		double yh_z=0.0;
		int jhbc_z=0;
		double jhlc_z=0.0;
		int sjbc_z=0;
		double sjzlc_z=0.0;
		double kszlc_z=0.0;
		double zlc_z=0.0;
		double zlc_z2=0.0;
		for(int i=0;i<list.size();i++){
			sList =new ArrayList<ScheduleRealInfo>();
			jList =new ArrayList<ScheduleRealInfo>();
			Map<String, Object> m=list.get(i);
			double jzyl=0.0;
			double czyl=0.0;
			double jzl=0.0;
			double yh=0.0;
			String rylx="";
			
			if(mapYlb.get(m.get("xlBm").toString()+m.get("jGh").toString()+m.get("clZbh").toString()+m.get("lp").toString())!=null){
				Ylb t=mapYlb.get(m.get("xlBm").toString()+m.get("jGh").toString()+m.get("clZbh").toString()+m.get("lp").toString());
				jzyl=t.getJzyl();
				czyl=t.getCzyl();
				jzl=t.getJzl();
				yh=t.getYh();
				if(t.getRylx()!=null){
					if(dMap.get(t.getRylx())==null){
						rylx="";
					}else{
						rylx=dMap.get(t.getRylx()).toString();
					}
				}
			}
			m.put("jzyl",jzyl);
			jzyl_z=Arith.add(jzyl, jzyl_z);
			m.put("czyl", czyl);
			czyl_z=Arith.add(czyl, czyl_z);
			m.put("jzl", jzl);
			jzl_z=Arith.add(jzl, jzl_z);
			m.put("yh", yh);
			yh_z=Arith.add(yh, yh_z);
			m.put("rylx", rylx);
			m.put("dh", "");
			for (int j = 0; j < lists.size(); j++) {
				ScheduleRealInfo s=lists.get(j);
				if(m.get("xlBm").toString().equals(s.getXlBm()) &&
				   m.get("clZbh").toString().equals(s.getClZbh()) &&
				   m.get("jGh").toString().equals(s.getjGh()) &&
				   m.get("lp").toString().equals(s.getLpName()) ){
							jList.add(s);
					 Set<ChildTaskPlan> cts = s.getcTasks();
			            if(cts != null && cts.size() > 0){
			            	sList.add(s);
			            }else{
				            if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
				            	sList.add(s);
				            }
			            }
					
				}
			}
			m.put("xlName", jList.get(0).getXlName());
			m.put("jName", jList.get(0).getjName());

			int jhbc=culateMileageService.culateJhbc(jList, "");
			jhbc_z=jhbc+jhbc_z;
			double jhlc=culateMileageService.culateJhgl(jList);
			jhlc_z=Arith.add(jhlc, jhlc_z);
			int sjbc=culateMileageService.culateSjbc(sList, "")+culateMileageService.culateLjbc(sList, "");
			double ljgl=culateMileageService.culateLjgl(sList);
			double sjgl=culateMileageService.culateSjgl(sList);
			double sjzlc=Arith.add(ljgl, sjgl);
			sjzlc_z=Arith.add(sjzlc, sjzlc_z);
			double ksgl=culateMileageService.culateKsgl(sList);
			double jccgl=culateMileageService.culateJccgl(sList);
			double kszlc=Arith.add(ksgl, jccgl);
			kszlc_z=Arith.add(kszlc, kszlc_z);
			double zlc=Arith.add(sjzlc, kszlc);
			double zlc2=Math.round(Math.round(zlc));
			zlc_z=Arith.add(zlc, zlc_z);
			zlc_z2=Arith.add(zlc2,zlc_z2);
			m.put("jhbc", jhbc);
			m.put("jhlc", jhlc);
			m.put("sjbc", sjbc);
			m.put("sjzlc",sjzlc);
			m.put("kszlc", kszlc);
			m.put("zlc", zlc);
			m.put("zlc2", zlc2);
			
		}
		Map<String, Object> mmp=new HashMap<>();
		mmp.put("xlName", "合计");
		mmp.put("lp", "");
		mmp.put("jGh", "");
		mmp.put("clZbh", "");
		mmp.put("jName", "");
		mmp.put("jhbc", jhbc_z);
		mmp.put("jhlc", jhlc_z);
		mmp.put("sjbc", sjbc_z);
		mmp.put("sjzlc", sjzlc_z);
		mmp.put("kszlc",kszlc_z);
		mmp.put("zlc", zlc_z);
		mmp.put("zlc2", zlc_z2);
		mmp.put("jzyl",jzyl_z);
		mmp.put("czyl",czyl_z);
		mmp.put("jzl", jzl_z);
		mmp.put("yh", yh_z);
		mmp.put("rylx", "");
		mmp.put("dh","");
		list.add(mmp);
		return list;
	}
}