CarParkServiceImpl.java 12 KB
package com.bsth.service.impl;

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

import com.bsth.common.ResponseCode;
import com.bsth.entity.CarPark;
import com.bsth.repository.CarParkRepository;
import com.bsth.service.CarParkService;
import com.bsth.util.TransGPS;
import com.bsth.util.TransGPS.Location;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

 
@Service
public class CarParkServiceImpl extends BaseServiceImpl<CarPark, Integer> implements CarParkService {
	
	@Autowired
	CarParkRepository carParkRepository;
	
	@Override
	public Map<String, Object> carParkSave(Map<String, Object> map) {
		Map<String, Object> resultMap = new HashMap<String, Object>();
		try {
			// 停车场编码
			String parkCode = map.get("parkCode").equals("") ? null : map.get("parkCode").toString();
			if (!selectTccInfoByCode(map)) {
				resultMap.put("status", ResponseCode.ERROR);
				return resultMap;
			}
			// 停车场名称
			String parkName = map.get("parkName").equals("") ? "" : map.get("parkName").toString();
			// 地理位置(百度坐标集合)
			String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();
			// 多边形WGS坐标点集合
			String gParkPoint ="";
			if(!bParkPoint.equals("")) {
				String bPloygonGridArray[] = bParkPoint.split(",");
				int bLen_ = bPloygonGridArray.length;
				for(int b = 0 ;b<bLen_;b++) {
					String tempArray[]= bPloygonGridArray[b].split(" ");
					Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
					 if(b==0) {
						 gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
					 }else {
						 gParkPoint = gParkPoint +  ',' + resultPoint.getLng() + " " + resultPoint.getLat();
					 }
				}
				
			}
			if(bParkPoint.equals(""))
				bParkPoint = null;
			else
				bParkPoint = "POLYGON(("  + bParkPoint +"))";
				
			if(gParkPoint.equals(""))
				gParkPoint = null;
			else
				gParkPoint = "POLYGON(("  + gParkPoint +"))";
			// 地理位置中心点(百度坐标)
			String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
			String bJwpointsArray[] =null;
			if(bCenterPoint!=null) {
				bJwpointsArray = bCenterPoint.split(" ");
			}
			String gCenterPoint = null;
			if(bJwpointsArray.length>0) {
				Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
				gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
			}
			// 坐标类型
			String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
			// 图形类型
			String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
			// 半径
			Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
			// 面积
			Double area = map.get("area").equals("") ? 0.0 : Double.parseDouble(map.get("area").toString());
			// 公司
			String company = map.get("company").equals("") ? "" : map.get("company").toString();
			// 分公司
			String brancheCompany = map.get("brancheCompany").equals("") ? "" : map.get("brancheCompany").toString();
			// 是否撤销
			Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
			// 版本号
			Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());
			// 描述与说明
			String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();
			SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); 
			Date date = new Date();
			// 创建日期
			String createDate = formatter.format(date);
			// 修改日期
			String updateDate = formatter.format(date);
			// 创建人
			Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());
			// 修改人
			Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());
			carParkRepository.carParkSave(area, company, parkCode, parkName, 
										  brancheCompany, createBy, createDate, descriptions, destroy, 
										  updateBy, updateDate, versions, bCenterPoint, bParkPoint, 
										  dbType, gCenterPoint, gParkPoint, radius, shapesType);
			resultMap.put("status", ResponseCode.SUCCESS);
		} catch (Exception e) {
			resultMap.put("status", ResponseCode.ERROR);
			logger.error("save erro.", e);
		}
		return resultMap;
	}

	@Override
	public List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map) {
		// 获取线路ID
	    Integer id = map.get("id").equals("") ? 0 : Integer.parseInt(map.get("id").toString());
	    List<Object[]> objects = carParkRepository.findCarParkInfoFormId(id);
	    List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();	 
	    int len = objects.size();
	    if(objects.size()>0) {
	    	for(int i = 0 ; i < len; i++) {
	    		Map<String, Object> tempM = new HashMap<String,Object>();
	    		tempM.put("carParkId", objects.get(i)[0]);
	    		tempM.put("carParkArea", objects.get(i)[1]);
	    		tempM.put("carParkCompany", objects.get(i)[2]);
	    		tempM.put("carParkCode", objects.get(i)[3]);
	    		tempM.put("carParkName", objects.get(i)[4]);
	    		tempM.put("carParkBrancheCompany", objects.get(i)[5]);
	    		tempM.put("carParkCreateBy", objects.get(i)[6]);
	    		tempM.put("carParkCreateDate", objects.get(i)[7]);
	    		tempM.put("carParkDescriptions", objects.get(i)[8]);
	    		tempM.put("carParkDestroy", objects.get(i)[9]);
	    		tempM.put("carParkUpdate", objects.get(i)[10]);
	    		tempM.put("carParkUpdateDate", objects.get(i)[11]);
	    		tempM.put("carParkVersions", objects.get(i)[12]);
	    		tempM.put("carParkBcenterPoint", objects.get(i)[13]);
	    		tempM.put("carParkBparkPoint", objects.get(i)[14]);
	    		tempM.put("carParkGcenterPoint", objects.get(i)[15]);
	    		tempM.put("carParkGparkPoint", objects.get(i)[16]);
	    		tempM.put("carParkDBtype", objects.get(i)[17]);
	    		tempM.put("carParkRadius", objects.get(i)[18]);
	    		tempM.put("carParkShapesType", objects.get(i)[19]);
	    		resultList.add(tempM);
	    	}
	    }
		return resultList;
	}
	/**
	 * 修改停车场信息
	 * 
	 * 
	 * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
	 * 
	 * 		  brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
	 * 
	 * 		  destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
	 * 
	 * 		  parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
	 * 
	 * @return map <SUCCESS:成功;ERROR:失败>
	 * 
	 */
	@Override
	public Map<String, Object> carParkUpdate(Map<String, Object> map) {
		Map<String, Object> resultMap = new HashMap<String, Object>();
		try {
			// id
			Integer id = map.get("id").equals("") ? null : Integer.parseInt(map.get("id").toString());
			if(id!=null) {
				// 面积
				Double area = map.get("area").equals("") ? null : Double.parseDouble(map.get("area").toString());
				// 中心点(百度坐标)
				String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
				// 图形坐标点集合(百度坐标)
				String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();
				// 分公司
				String brancheCompany = map.get("brancheCompany").equals("")? "" :map.get("brancheCompany").toString();
				//String brancheCompany = "";
				// 公司
				String company = map.get("company").equals("") ? "" : map.get("company").toString();
				// 坐标类型
				String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
				// 描述与说明
				String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();
				// 是否撤销
				Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
				// 中心点(WGS坐标)
				// String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
				String bJwpointsArray[] =null;
				if(bCenterPoint!=null) {
					bJwpointsArray = bCenterPoint.split(" ");
				}
				String gCenterPoint =null;
				if(bJwpointsArray.length>0) {
					Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
					gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
				}
				// 图形坐标点集合(WGS坐标)
				// String gParkPoint = map.get("gParkPoint").equals("") ? "" : map.get("gParkPoint").toString();
				// 多边形WGS坐标点集合
				String gParkPoint ="";
				if(!bParkPoint.equals("")) {
					String bPloygonGridArray[] = bParkPoint.split(",");
					int bLen_ = bPloygonGridArray.length;
					for(int b = 0 ;b<bLen_;b++) {
						String tempArray[]= bPloygonGridArray[b].split(" ");
						Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
						 if(b==0) {
							 gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
						 }else {
							 gParkPoint = gParkPoint +  ',' + resultPoint.getLng() + " " + resultPoint.getLat();
						 }
					}
				}
				if(bParkPoint.equals(""))
					bParkPoint = null;
				else
					bParkPoint = "POLYGON(("  + bParkPoint +"))";
					
				if(gParkPoint.equals(""))
					gParkPoint = null;
				else
					gParkPoint = "POLYGON(("  + gParkPoint +"))";
				/*bParkPoint = "POLYGON(("  + bParkPoint +"))";
				
				gParkPoint = "POLYGON(("  + gParkPoint +"))";*/
				// 编码
				String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString();
				// 名称
				String parkName = map.get("parkName").equals("") ? "" : map.get("parkName").toString();
				// 半径
				Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
				// 图形类型
				String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
				// 版本
				Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());
				// 创建人
				Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());
				// 创建日期
				String createDate = map.get("createDate").equals("") ? "" : map.get("createDate").toString();
				Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());
				SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); 
				Date date = new Date();
				// 修改日期
				String updateDate = formatter.format(date);
				carParkRepository.carParkUpdate(area, company, parkCode, parkName, brancheCompany, createBy, createDate, descriptions, destroy, updateBy, updateDate, versions, bCenterPoint, gCenterPoint, bParkPoint, gParkPoint, dbType, radius, shapesType, id);
			}
			resultMap.put("status", ResponseCode.SUCCESS);
		 } catch (Exception e) {
			resultMap.put("status", ResponseCode.ERROR);
			logger.error("save erro.", e);
		 }
		return resultMap;
	}
	/** 百度坐标转WGS坐标 */
	public Location FromBDPointToWGSPoint(String bLonx,String bLatx) {
		double lng = Double.parseDouble(bLonx);
		double lat = Double.parseDouble(bLatx);
		Location bdLoc = TransGPS.LocationMake(lng, lat);
		Location location = TransGPS.bd_decrypt(bdLoc);
		Location WGSPoint = TransGPS.transformFromGCJToWGS(location);
		return WGSPoint;
	}

	@Override
	public boolean selectTccInfoByCode(Map<String, Object> map) {
		List<Object[]> arrayObj = carParkRepository.selectTccInfoByCode(map.get("parkCode").equals("") ? "" : map.get("parkCode").toString());
		boolean tag = true;
		if(arrayObj.size()>0) {
			tag= false;
		}
		return tag;
	}

	@Override
	public long carParkMaxId() {
		return carParkRepository.carParkMaxId();
	}
}