LineVersionsServiceImpl.java 7.35 KB
package com.bsth.service.impl;

import com.bsth.common.ResponseCode;
import com.bsth.entity.*;
import com.bsth.repository.*;
import com.bsth.service.LineVersionsService;
import com.bsth.service.SectionRouteService;
import com.bsth.service.StationRouteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 
 * @ClassName: LineVersionsServiceImpl(线路service业务层实现类)
 * 
 * @Extends : BaseService
 * 
 * @Description: TODO(线路service业务层)
 * 
 * @Author bsth@lq
 *
 * @Version 公交调度系统BS版 0.1
 * 
 */

@Service
public class LineVersionsServiceImpl extends BaseServiceImpl<LineVersions, Integer> implements LineVersionsService{
	
	@Autowired
	private LineVersionsRepository repository;
	
	@Autowired
	LineRepository lineRepository;
	
	@Autowired
    SectionRouteService sectionRouteService;
    
    @Autowired
    StationRouteService stationRouteService;

    @Autowired
    StationRepository stationRepository;
    
    @Autowired
    SectionRepository sectionRepository;
    
    
    @Autowired
    com.bsth.repository.SectionRouteRepository  sectionRouteRepository ;
    
    @Autowired
    com.bsth.repository.StationRouteRepository  stationRouteRepository ;
    
    @Autowired
    LsSectionRouteRepository  lsSectionRouteRepository ;
    
    @Autowired
    LsStationRouteRepository  lsStationRouteRepository ;
	
	@Override
	public List<LineVersions> findByLineCode(int lineId) {
		return repository.findBylineId(lineId);
	}

	@Override
	public Map<String, Object> update(Map<String, Object> map) {
		Map<String, Object> resultMap = new HashMap<>();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			Date startDate = simpleDateFormat.parse(map.get("startDate").toString());
			Date endDate = simpleDateFormat.parse(map.get("endDate").toString());
			Integer id = Integer.valueOf(map.get("Id").toString());
			Integer lineid = Integer.valueOf(map.get("lineId").toString());
			String lineCode = map.get("lineCode").toString();
			Integer versions = Integer.valueOf(map.get("versions").toString());
			Integer status = Integer.valueOf(map.get("status").toString());
			String name = map.get("name").toString();
			String remark = map.get("remark").toString();

			Line line = lineRepository.findById(lineid).get();
			
			int statu = repository.update(id,line,lineCode,new java.sql.Date(startDate.getTime()),
					new java.sql.Date(endDate.getTime()),versions,status,remark,name);
			LineVersions upLineVersions = repository.findBylineIdAndVersions(line.getId(),versions);
			if(upLineVersions != null){
				upLineVersions.setEndDate(new java.sql.Date(startDate.getTime()));
				repository.save(upLineVersions);
			}
			if (statu==1) {
				resultMap.put("status", ResponseCode.SUCCESS);
			} else {
				resultMap.put("status", ResponseCode.ERROR);
			}
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			resultMap.put("status", ResponseCode.ERROR);
		}
		return resultMap;
	}

	@Override
	public List<LineVersions> findupdated() {
		return repository.findupdated();
	}
	
	// 线路更新
	@Transactional
	@Override
	public List<LineVersions> lineUpdate() {
		List<LineVersions> list = findupdated();
    	for (LineVersions lineVersions : list) {
    		Integer lineId = lineVersions.getLine().getId();
    		String lineCode = lineVersions.getLineCode();
    		Integer versions = lineVersions.getVersions();

    		stationRouteRepository.deleteByLineAndVersion(lineId);
    		stationRouteRepository.updateFromHistory(lineId, versions);
    		sectionRouteRepository.deleteByLineAndVersion(lineId);
    		sectionRouteRepository.updateFromHistory(lineId, versions);
			// 更新线路版本
			repository.updateOdlVersions(lineId, lineCode);
			repository.updateNewVersions(lineId, lineCode, versions);
			// 记录版本更新日志
			repository.saveEnablelog(lineCode, versions, lineVersions.getStartDate().getTime());
		}

    	return list;
	}

	/**
	 * 查询线路版本最大值
	 */
	@Override
	public LineVersions findLineVersionsMax(int lineId) {
		return repository.findLineVersionsMax(lineId);
	}
	

	@Override
	public List<LineVersions> findAllHistroyLineVersionsById(int lineId){
		return repository.findAllHistroyLineVersionsById(lineId);
	}

	/**
	 * 线路版本添加
	 */
	/**
	 *
	 */
	@Override
	@Transactional
	public Map<String, Object> add(Map<String, Object> map) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Map<String, Object> resultMap = new HashMap<>();
		
		LineVersions lineVersions = new LineVersions();
		try {
			Date startDate = simpleDateFormat.parse(map.get("startDate").toString());
			Date endDate = simpleDateFormat.parse(map.get("endDate").toString());
			Line line = lineRepository.findById(Integer.valueOf(map.get("lineId").toString())).get();
			Integer versions = Integer.valueOf(map.get("versions").toString());
			lineVersions.setName(map.get("name").toString());
			lineVersions.setLine(line);
			lineVersions.setLineCode(map.get("lineCode").toString());
			lineVersions.setStartDate(new java.sql.Date(startDate.getTime()));
			lineVersions.setEndDate(new java.sql.Date(endDate.getTime()));
			lineVersions.setVersions(versions);
			// 添加的线路版本默认为待更新的
			lineVersions.setStatus(2);
			lineVersions.setRemark(map.get("remark").toString());
			repository.save(lineVersions);
			// 更新上一版本时间
			LineVersions upLineVersions = repository.findBylineIdAndVersions(line.getId(),versions);
			upLineVersions.setEndDate(new java.sql.Date(startDate.getTime()));
			repository.save(upLineVersions);
			
			if (!StringUtils.isEmpty(map.get("hisVersions"))) {
				Integer hisVersion = Integer.valueOf(map.get("hisVersions").toString());
				lsStationRouteRepository.cloneFromHistoryVersion(line.getId(), hisVersion, versions);
				lsSectionRouteRepository.cloneFromHistoryVersion(line.getId(), hisVersion, versions);
			}
			resultMap.put("status", ResponseCode.SUCCESS);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			resultMap.put("status", ResponseCode.ERROR);
		}
		return resultMap;
	}

	/**
	 * 获取当前线路版本号
	 */
	@Override
	public Integer findCurrentVersion(int lineId) {
		return repository.findCurrentVersion(lineId);
	}

	@Override
	public Map<String, Object> issueVersion(int id) {
		Map<String, Object> resultMap = new HashMap<>();
		
			int statu = repository.issueVersion(id);
			if (statu == 1) 
				resultMap.put("status", ResponseCode.SUCCESS);
			else 
				resultMap.put("status", ResponseCode.ERROR);
		return resultMap;
	}

	@Override
	@Transactional
	public Map<String, Object> deleteAllData(int id) {
		LineVersions version = repository.findById(id).get();
		
		lsSectionRouteRepository.batchDelete(version.getLine().getId(),0,version.getVersions());
		lsSectionRouteRepository.batchDelete(version.getLine().getId(),1,version.getVersions());
		lsStationRouteRepository.batchDelete(version.getLine().getId(),0,version.getVersions());
		lsStationRouteRepository.batchDelete(version.getLine().getId(),1,version.getVersions());
	
		return delete(id);
	}
}