CalcWaybillServiceImpl.java 10.7 KB
package com.bsth.service.calc.impl;

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

import javax.transaction.Transactional;

import com.bsth.common.ResponseCode;
import com.bsth.entity.calc.CalcWaybill;
import com.bsth.repository.calc.CalcWaybillRepository;
import com.bsth.service.calc.CalcToolService;
import com.bsth.service.calc.CalcWaybillService;
import com.bsth.service.impl.BaseServiceImpl;
import com.bsth.util.Arith;
import com.bsth.util.BatchSaveUtils;

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

/**
 * Created by 17/11/16.
 */
@Service
public class CalcWaybillServiceImpl extends BaseServiceImpl<CalcWaybill, Integer> implements CalcWaybillService {
	
	@Autowired
	private CalcWaybillRepository clacRepository;

	@Autowired
	private CalcToolService calcToolService;
	
	@Autowired
	JdbcTemplate jdbcTemplate;


	Logger logger = LoggerFactory.getLogger(this.getClass());
    
	
	@Transactional
	@Override
	public Map<String, Object> generateNew(String date, String line) throws Exception {
		Map<String, Object> newMap = new HashMap<String, Object>();

		try {

			if(date.length() != 0 && line.length() != 0){
				clacRepository.deleteByDateAndLine(date, line);
			} else if(date.length() != 0){
				clacRepository.deleteByDate(date);
			} else {
				newMap.put("status", ResponseCode.ERROR);
				logger.error("save erro.", "日期不能为空");
				return newMap;
			}
			
			if(date.trim().length() == 0){
				newMap.put("status", ResponseCode.ERROR);
				logger.error("save erro.", "日期不能为空");
				return newMap;
			}
			
			String sql = "select c.id,c.out_config,c.start_opt,t.line_code from bsth_c_line_config c LEFT JOIN bsth_c_line t on c.line=t.id";
			if(line.length() != 0){
				sql += " where t.line_code = " + line;
			}
//			List<LineConfig> listLineConfig = //jdbcTemplate.query(sql, new BeanPropertyRowMapper(LineConfig.class));
			List<Map<String, Object>> listLineConfig = jdbcTemplate.query(sql,
						new RowMapper<Map<String, Object>>(){
					@Override
					public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
						Map<String, Object> m = new HashMap<String, Object>();
						m.put("id", rs.getLong("id"));
						m.put("out_config", rs.getString("out_config"));
						m.put("start_opt", rs.getString("start_opt"));
						m.put("line_code", rs.getString("line_code"));
						return m;
					}});
					
			Set<String> lineSet = new HashSet<String>();
			for (int i = 0; i < listLineConfig.size(); i++) {
				Map<String, Object> m =listLineConfig.get(i);
				String lineCode=m.get("line_code").toString().trim();
				String startOpt=m.get("start_opt").toString().trim();
				if(!lineSet.add(lineCode))
					continue;
				
				List<CalcWaybill> findAll = calcToolService.findAll(date, lineCode);
				
//				new BatchSaveUtils<CalcWaybill>().saveList2(findAll, CalcWaybill.class);
				
				clacRepository.save(findAll);
			}
			
			newMap.put("status", ResponseCode.SUCCESS);
		} catch (Exception e) {
			// TODO: handle exception
			newMap.put("status", ResponseCode.ERROR);
			logger.error("save erro.", e);
			throw e;
		}
		
		return newMap;
	}
	
	@Override
	public List<Map<String, Object>> statisticsDailyTj(String gsdm,
			String fgsdm, String line, String date, String date2,
			String xlName, String type) {
		
		List<CalcWaybill> list = new ArrayList<CalcWaybill>();
		List<CalcWaybill> lists = new ArrayList<CalcWaybill>();
		List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
		Map<String, List<CalcWaybill>> keyMap = new HashMap<String, List<CalcWaybill>>();
		
		if(line.equals("")){
            //查询所有线路
            list = clacRepository.scheduleByDateAndLineTj(line,date,date2,gsdm,fgsdm);
        }else{
            //查询单条线路
            list = clacRepository.scheduleByDateAndLineTj2(line,date,date2);
        }
		
		for(CalcWaybill c : list){
			String key = c.getXlName();
			if(!keyMap.containsKey(key)){
				keyMap.put(key, new ArrayList<CalcWaybill>());
			}
			keyMap.get(key).add(c);
		}
		for(String key : keyMap.keySet()){
			CalcWaybill calc = keyMap.get(key).get(0);
			for(int i = 1; i < keyMap.get(key).size(); i++){
				CalcWaybill c= keyMap.get(key).get(i);
				calc.setJhyylc(Arith.add(calc.getJhyylc(), c.getJhyylc()));
				calc.setJhfyylc(Arith.add(calc.getJhfyylc(), c.getJhfyylc()));
				calc.setSjyylc(Arith.add(calc.getSjyylc(), c.getSjyylc()));
				calc.setSjfyylc(Arith.add(calc.getSjfyylc(), c.getSjfyylc()));
				calc.setLblc(Arith.add(calc.getLblc(), c.getLblc()));
				calc.setLbbc(calc.getLbbc() + c.getLbbc());
				calc.setLblcLz(Arith.add(calc.getLblcLz(), c.getLblcLz()));
				calc.setLblcDm(Arith.add(calc.getLblcDm(), c.getLblcDm()));
				calc.setLblcGz(Arith.add(calc.getLblcGz(), c.getLblcGz()));
				calc.setLblcJf(Arith.add(calc.getLblcJf(), c.getLblcJf()));
				calc.setLblcZs(Arith.add(calc.getLblcZs(), c.getLblcZs()));
				calc.setLblcQr(Arith.add(calc.getLblcQr(), c.getLblcQr()));
				calc.setLblcQc(Arith.add(calc.getLblcQc(), c.getLblcQc()));
				calc.setLblcKx(Arith.add(calc.getLblcKx(), c.getLblcKx()));
				calc.setLblcQh(Arith.add(calc.getLblcQh(), c.getLblcQh()));
				calc.setLblcYw(Arith.add(calc.getLblcYw(), c.getLblcYw()));
				calc.setLblcQt(Arith.add(calc.getLblcQt(), c.getLblcQt()));
				calc.setLjyylc(Arith.add(calc.getLjyylc(), c.getLjyylc()));
				calc.setJhyybc(calc.getJhyybc() + c.getJhyybc());
				calc.setJhyybczgf(calc.getJhyybczgf() + c.getJhyybczgf());
				calc.setJhyybcwgf(calc.getJhyybcwgf() + c.getJhyybcwgf());
				calc.setSjyybc(calc.getSjyybc() + c.getSjyybc());
				calc.setSjyybczgf(calc.getSjyybczgf() + c.getSjyybczgf());
				calc.setSjyybcwgf(calc.getSjyybcwgf() + c.getSjyybcwgf());
				calc.setLjbc(calc.getLjbc() + c.getLjbc());
				calc.setLjbczgf(calc.getLjbczgf() + c.getLjbczgf());
				calc.setLjbcwgf(calc.getLjbcwgf() + c.getLjbcwgf());
				calc.setFzbc(calc.getFzbc() + c.getFzbc());
				calc.setFzbczgf(calc.getFzbczgf() + c.getFzbczgf());
				calc.setFzbcwgf(calc.getFzbcwgf() + c.getFzbcwgf());
				calc.setDtbc(calc.getDtbc() + c.getFzbc());
				calc.setDtbczgf(calc.getDtbczgf() + c.getDtbczgf());
				calc.setDtbcwgf(calc.getDtbcwgf() + c.getDtbcwgf());
				
			}
			calc.setSjyylc(Arith.add(calc.getSjyylc(), calc.getLjyylc()));
			System.out.println();
			lists.add(calc);
		}
		
		CalcWaybill sum = new CalcWaybill();
		sum.setXlName("合计");
		for(CalcWaybill c : lists){
			sum.setJhyylc(Arith.add(sum.getJhyylc()!=null?sum.getJhyylc():0, c.getJhyylc()));
			sum.setJhfyylc(Arith.add(sum.getJhfyylc()!=null?sum.getJhfyylc():0, c.getJhfyylc()));
			sum.setSjyylc(Arith.add(sum.getSjyylc()!=null?sum.getSjyylc():0, c.getSjyylc()));
			sum.setSjfyylc(Arith.add(sum.getSjfyylc()!=null?sum.getSjfyylc():0, c.getSjfyylc()));
			sum.setLblc(Arith.add(sum.getLblc()!=null?sum.getLblc():0, c.getLblc()));
			sum.setLbbc(sum.getLbbc() + c.getLbbc());
			sum.setLblcLz(Arith.add(sum.getLblcLz()!=null?sum.getLblcLz():0, c.getLblcLz()));
			sum.setLblcDm(Arith.add(sum.getLblcDm()!=null?sum.getLblcDm():0, c.getLblcDm()));
			sum.setLblcGz(Arith.add(sum.getLblcGz()!=null?sum.getLblcGz():0, c.getLblcGz()));
			sum.setLblcJf(Arith.add(sum.getLblcJf()!=null?sum.getLblcJf():0, c.getLblcJf()));
			sum.setLblcZs(Arith.add(sum.getLblcZs()!=null?sum.getLblcZs():0, c.getLblcZs()));
			sum.setLblcQr(Arith.add(sum.getLblcQr()!=null?sum.getLblcQr():0, c.getLblcQr()));
			sum.setLblcQc(Arith.add(sum.getLblcQc()!=null?sum.getLblcQc():0, c.getLblcQc()));
			sum.setLblcKx(Arith.add(sum.getLblcKx()!=null?sum.getLblcKx():0, c.getLblcKx()));
			sum.setLblcQh(Arith.add(sum.getLblcQh()!=null?sum.getLblcQh():0, c.getLblcQh()));
			sum.setLblcYw(Arith.add(sum.getLblcYw()!=null?sum.getLblcYw():0, c.getLblcYw()));
			sum.setLblcQt(Arith.add(sum.getLblcQt()!=null?sum.getLblcQt():0, c.getLblcQt()));
			sum.setLjyylc(Arith.add(sum.getLjyylc()!=null?sum.getLjyylc():0, c.getLjyylc()));
			sum.setJhyybc(sum.getJhyybc() + c.getJhyybc());
			sum.setJhyybczgf(sum.getJhyybczgf() + c.getJhyybczgf());
			sum.setJhyybcwgf(sum.getJhyybcwgf() + c.getJhyybcwgf());
			sum.setSjyybc(sum.getSjyybc() + c.getSjyybc());
			sum.setSjyybczgf(sum.getSjyybczgf() + c.getSjyybczgf());
			sum.setSjyybcwgf(sum.getSjyybcwgf() + c.getSjyybcwgf());
			sum.setLjbc(sum.getLjbc() + c.getLjbc());
			sum.setLjbczgf(sum.getLjbczgf() + c.getLjbczgf());
			sum.setLjbcwgf(sum.getLjbcwgf() + c.getLjbcwgf());
			sum.setFzbc(sum.getFzbc() + c.getFzbc());
			sum.setFzbczgf(sum.getFzbczgf() + c.getFzbczgf());
			sum.setFzbcwgf(sum.getFzbcwgf() + c.getFzbcwgf());
			sum.setDtbc(sum.getDtbc() + c.getFzbc());
			sum.setDtbczgf(sum.getDtbczgf() + c.getDtbczgf());
			sum.setDtbcwgf(sum.getDtbcwgf() + c.getDtbcwgf());
		}
		if(lists.size() > 0){
			lists.add(sum);
		}
		
		for(CalcWaybill c : lists){
			Map<String, Object> m = new HashMap<String, Object>();
			m.put("xlName", c.getXlName());
			m.put("jhzlc", Arith.add(c.getJhyylc(), c.getJhfyylc()));
			m.put("jhlc", c.getJhyylc());
			m.put("jcclc", c.getJhfyylc());
			m.put("sjzgl", Arith.add(c.getSjyylc(), c.getSjfyylc()));
			m.put("sjgl", c.getSjyylc());
			m.put("sjksgl", c.getSjfyylc());
			m.put("ssgl", c.getLblc());
			m.put("ssbc", c.getLbbc());
			m.put("ssgl_lz", c.getLblcLz());
			m.put("ssgl_dm", c.getLblcDm());
			m.put("ssgl_gz", c.getLblcGz());
			m.put("ssgl_jf", c.getLblcJf());
			m.put("ssgl_zs", c.getLblcZs());
			m.put("ssgl_qr", c.getLblcQr());
			m.put("ssgl_qc", c.getLblcQc());
			m.put("ssgl_kx", c.getLblcKx());
			m.put("ssgl_qh", c.getLblcQh());
			m.put("ssgl_yw", c.getLblcYw());
			m.put("ssgl_other", c.getLblcQt());
			m.put("ljgl", c.getLjyylc());
			m.put("jhbc", c.getJhyybc());
			m.put("jhbc_m", c.getJhyybczgf());
			m.put("jhbc_a", c.getJhyybcwgf());
			m.put("sjbc", c.getSjyybc());
			m.put("sjbc_m", c.getSjyybczgf());
			m.put("sjbc_a", c.getSjyybcwgf());
			m.put("ljbc", c.getLjbc());
			m.put("ljbc_m", c.getLjbczgf());
			m.put("ljbc_a", c.getLjbcwgf());
			m.put("fzbc", c.getFzbc());
			m.put("fzbc_m", c.getFzbczgf());
			m.put("fzbc_a", c.getFzbcwgf());
			m.put("dtbc", c.getDtbc());
			m.put("dtbc_m", c.getDtbczgf());
			m.put("dtbc_a", c.getDtbcwgf());
			m.put("djg", 0);
			m.put("djg_m", 0);
			m.put("djg_a", 0);
			m.put("djg_time", 0);
			resList.add(m);
		}
		
		return resList;
	}

}