package org.well.well.manager;


import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

@Service
public class LocatorManager extends HibernateEntityDao<Locator> {
    @Resource
    private BusWellManager busWellManager;
    private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());

    public Map<String, Object> saveData(String devCode, String wellCode,
                                        String longitude, String latitude) {

        Map<String, Object> resultMap = new HashMap<String, Object>();
        try {
            Locator locator = new Locator(devCode, wellCode,longitude, latitude);
            save(locator);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultMap;
    }

    public void processNormalData(JSONObject jsonObject, String devCode) {
        try {
            JSONArray jsonArray = (JSONArray) jsonObject.get("datas");
            BusWell busWell = busWellManager.getWellByDevCode(devCode);
            if (busWell != null && "1".equals(busWell.getBfzt())) {//只有井处于布防状态下才写入经纬度数据
                for (int i = 0; i < jsonArray.size(); i++) {
                    String longitude = ((JSONObject) jsonArray.get(i)).get("longitude").toString();
                    String latitude = ((JSONObject) jsonArray.get(i)).get("latitude").toString();
                    if (StringUtils.isBlank(longitude) || StringUtils.isBlank(latitude)) {
                        longitude = null != busWell ? busWell.getCoordinateX() : longitude;
                        latitude = null != busWell ? busWell.getCoordinateY() : latitude;
                    } else {
                        if (Float.valueOf(longitude) < 1 || Float.valueOf(latitude) < 1) {
                            longitude = null != busWell ? busWell.getCoordinateX() : longitude;
                            latitude = null != busWell ? busWell.getCoordinateY() : latitude;
                        }else {
//                            Map<String,Object> stringObjectMap=PointConvertUtility.
//                                    convertBaiduAPI(longitude,latitude);
//                            longitude=stringObjectMap!=null?stringObjectMap.get("x").toString():longitude;
//                            latitude=stringObjectMap!=null?stringObjectMap.get("y").toString():latitude;

                        }
                    }
                    saveData(devCode,busWell==null?"":busWell.getWellCode(),
                            StringUtils.isNotBlank(longitude) ? DecimalUtils.df6.format(Double.valueOf(longitude)) : longitude,
                            StringUtils.isNotBlank(latitude) ? DecimalUtils.df6.format(Double.valueOf(latitude)) : latitude);//存采集数据
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("--------ERROR:设备编号：" + devCode + "，存储数据：" + jsonObject + "失败-------");
        }
    }
}




