LineServiceImpl.java 4.32 KB
package com.bsth.service.impl;

import com.bsth.common.ResponseCode;
import com.bsth.entity.Line;
import com.bsth.repository.LineRepository;
import com.bsth.service.LineService;
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 org.springframework.transaction.annotation.Transactional;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 
 * @ClassName: LineServiceImpl(线路service业务层实现类)
 * 
 * @Extends : BaseService
 * 
 * @Description: TODO(线路service业务层)
 * 
 * @Author bsth@lq
 * 
 * @Date 2016年4月28日 上午9:21:17
 *
 * @Version 公交调度系统BS版 0.1
 * 
 */

@Service
public class LineServiceImpl extends BaseServiceImpl<Line, Integer> implements LineService {

	@Autowired
	private LineRepository repository;

	@Autowired
	JdbcTemplate jdbcTemplate;

	/**
	 * 获取线路编码
	 * 
	 * @return int <lineCode:线路编码>
	 */
	public long selectMaxIdToLineCode() {
		// TODO Auto-generated method stub
		return repository.selectMaxIdToLineCode();
	}

	@Override
	public Line findByLineCode(String lineCode) {
		return repository.findByLineCode(lineCode);
	}

	@Override
	public Line findById(Integer id) {
		// TODO Auto-generated method stub
		return repository.findById(id).get();
	}

	@Override
	public String lineCodeVerification(String lineCode) {
		String state = "true";
		Line line = repository.findByLineCode(lineCode);
		if (line != null) {
			state = "false";
		}
		return state;
	}
	
	@Transactional
	@Override
	public Map<String, Object> update(Line l) {
		Map<String, Object> map = new HashMap<>();

		if(l.getDestroy() == 0){
			l.setInUse(1);
		} else
			l.setInUse(0);

		int status = repository.update(l.getName(), l.getCompany(), l.getBrancheCompany(), l.getLevel(), l.getNature(),
				l.getStartStationName(), l.getEndStationName(), l.getStartStationFirstTime(),
				l.getStartStationEndTime(), l.getEndStationFirstTime(), l.getEndStationEndTime(), l.getLinePlayType(),
				l.getOpenDate(), l.getEs(), l.getShortName(), l.getShanghaiLinecode(), l.getEqLinecode(),
				l.getStartPhone(), l.getEndPhone(), l.getCarSumNumber(), l.getHvacCarNumber(), l.getOrdCarNumber(),
				l.getHistory(), l.getDescriptions(), l.getDestroy(), l.getSupperLine(), l.getSpacGrade(),
				l.getWarrantCar(), l.getLineCode(), l.getRegion(),l.getInUse(),l.getTicketPrice());
		if (status==1) {
			map.put("status", ResponseCode.SUCCESS);
		} else {
			map.put("status", ResponseCode.ERROR);
		}
		
		return map;
	}

	@Override
	public Map<String, Object> remove(Integer id) {
		Map<String, Object> map = new HashMap<>();

		try{
			if(null == id){
				map.put("status", ResponseCode.ERROR);
				map.put("msg", "参数异常");
				return map;
			}

			int destroy = jdbcTemplate.queryForObject("select destroy from bsth_c_line where id=" + id, Integer.class);

			if(destroy==0){
				map.put("status", ResponseCode.ERROR);
				map.put("msg", "你只能删除已撤销的线路!");
				return map;
			}

			jdbcTemplate.update("update bsth_c_line set `remove`=1 where id=?", id);
			map.put("status", ResponseCode.SUCCESS);
		}catch (Exception e){
			logger.error("", e);
			map.put("status", ResponseCode.ERROR);
			map.put("msg", e.getMessage());
		}
		return map;
	}

	/*获取线路性质*/
	@Override
	public Map<String, Boolean> lineNature() {
		// TODO Auto-generated method stub
//		List<Line> lineList=repository.findLineBygsBm(gsBm, fgsBm, line);
		String sql="select * from bsth_c_line ";
		List<Line> lineList=jdbcTemplate.query(sql, 
				 new RowMapper<Line>(){
			 @Override 
			 public Line mapRow(ResultSet rs, int rowNum) throws SQLException {
				 Line l=new Line();
				 l.setLineCode(rs.getString("line_code"));
				 l.setNature(rs.getString("nature"));
				 return l;
			 }
		});
		Map<String, Boolean> map=new HashMap<String,Boolean>();
		for (int i = 0; i < lineList.size(); i++) {
			Line t=lineList.get(i);
			String nature=t.getNature()==null?"":t.getNature();
			if(nature.equals("yxl")||nature.equals("cgxl")||nature.equals("gjxl")
			  ||nature.equals("csbs")||nature.equals("cctxl")){
				map.put(t.getLineCode(), true);
			}else{
				map.put(t.getLineCode(), false);
			}
		}
		return map;
	}
}