JqlServiceImpl.java 5.16 KB
package com.bsth.service.oil.impl;

import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.bsth.entity.oil.Jql;
import com.bsth.repository.oil.JqlRepository;
import com.bsth.service.impl.BaseServiceImpl;
import com.bsth.service.oil.JqlService;
import com.bsth.util.ReportUtils;

@Service
public class JqlServiceImpl extends BaseServiceImpl<Jql, Integer> implements JqlService {
	
	@Autowired
	JqlRepository repository;

	@Override
	public String importExcel(File file, String gsbm, String gsName, String fgsbm, String fgsName) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		DecimalFormat df = new DecimalFormat("######0.00");
		List<String> textList = new ArrayList<String>();
		try {
			POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
			HSSFWorkbook wb = new HSSFWorkbook(fs);
			HSSFSheet sheet = wb.getSheetAt(0);
			// 取得总行数
			int rowNum = sheet.getLastRowNum() + 1;
			// 取得总列数
			int cellNum = sheet.getRow(0).getLastCellNum();
			HSSFRow row = null;
			HSSFCell cell = null;
			for(int i = 2; i < rowNum; i++){
				row = sheet.getRow(i);
				if (row == null){
					continue;
				}
				String text = "";
				for(int j = 0; j < cellNum; j++){
					cell = row.getCell(j);
					if(cell == null){
						text += ",";
						continue;
					}
						text += String.valueOf(cell) + ",";
				}
				String[] split = (text+";").split(",");
				String str = "";
				for(int j = 0; j < split.length && j < 5; j++){
					str += split[j];
				}
				if(str.trim().length() == 0)
					continue;
				textList.add(text + ";");
			}
			for(int i = 0; i < textList.size(); i++){
				String text = textList.get(i);
				String[] split = text.split(",");
				String rq = split[0].trim();
				String nbbm = split[1].trim();
//				String jsy= split[2].trim();
				double jql = Double.valueOf(split[2].trim().length()!=0?split[2]:"0");
				String jqz = split[3].trim();
				String remarks = split[4].trim();
				if(rq.trim().length() == 0){
					rq = sdf.format(new Date());
				}
				
				List<Double> jql_ = repository.queryBySame(gsbm, fgsbm, rq, nbbm);
				
				if(jql_.size() == 0){
					repository.insertData(gsbm, gsName, fgsbm, fgsName, rq, nbbm,
							df.format(jql), jqz, remarks, sd.format(new Date()));
				}else{
//					jql += jql_.get(0);
					repository.UpdateJql(df.format(jql), sd.format(new Date()), gsbm, fgsbm, rq, nbbm);
				}
			}
			wb.close();
			fs.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "文件导入失败";
		} finally {
			file.delete();
		}
		return "文件导入成功";
	}

	@Override
	public Map<String, Object> query(Map<String, Object> map) {
		Map<String, Object> modelMap = new HashMap<String, Object>();
		String gsbm = map.get("gsbm").toString();
		String fgsbm = map.get("fgsbm").toString();
		String rq = map.get("rq").toString();
		String nbbm = map.get("nbbm").toString();
//		String jsy =map.get("jsy").toString();
		Integer page = Integer.valueOf(map.containsKey("page")?map.get("page").toString():"0");
		List<Jql> query = repository.query(gsbm, fgsbm, rq, nbbm);
		
		if(!map.containsKey("type")){
			
			int end = (page+1)*10>query.size()?query.size():(page+1)*10;
			modelMap.put("dataList", query.subList(page*10, end));
			modelMap.put("totalPages", query.size()%10>0?query.size()/10+1:query.size()/10);
			
		} else if(map.get("type").toString().equals("export")){
			SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
					sdfSimple = new SimpleDateFormat("yyyyMMdd");
			
			List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
			for(Jql jql : query){
				Map<String, Object> m = new HashMap<String, Object>();
				m.put("rq", sdfMonth.format(jql.getRq()));
				m.put("nbbm", jql.getNbbm());
				m.put("jql", jql.getJql());
				m.put("jqz", jql.getJqz());
				m.put("remarks", jql.getRemarks());
				list.add(m);
			}
			
			List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
			Map<String, Object> m = new HashMap<String, Object>();
			ReportUtils ee = new ReportUtils();
			try {
				listI.add(list.iterator());
				String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
				ee.excelReplace(listI, new Object[] { m }, path+"mould/export_Jql.xls",
						path+"export/车辆加氢量" + sdfSimple.format(sdfMonth.parse(rq)) + ".xls");
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
		return modelMap;
	}
	
}