IThirdServiceImpl.java 4.5 KB
package com.it.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.it.entity.CommonConstant;
import com.it.entity.ThirdPosition;
import com.it.mapper.ThirdMapper;
import com.it.service.IThirdService;
import com.it.tool.RedisUtil;
import com.it.tool.UUIDGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

@Service
public class IThirdServiceImpl implements IThirdService {

    @Autowired
    private ThirdMapper thirdMapper;

    private static DecimalFormat df = new DecimalFormat("######0.0000");
    private static SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Autowired
    private RedisUtil redisUtil;

    @Override
    public void savePosition(JSONObject jsonObject) {
        Date t = new Date();
        boolean ok = addMsgLog(jsonObject,sf.format(t));//添加接收报文日志
        if(ok){
            ThirdPosition thirdPosition = new ThirdPosition();
            thirdPosition.setNodeId(jsonObject.getString("NodeId"));
            Map xyMap = jsonObject.getObject("position",Map.class);
            thirdPosition.setPositionx(xyMap.get("x").toString());
            thirdPosition.setPositiony(xyMap.get("y").toString());
            thirdPosition.setSystemId(jsonObject.getString("SystemId"));
            thirdPosition.setType(jsonObject.getString("Type"));
            thirdPosition.setGroup(jsonObject.getString("group"));
            thirdPosition.setGroupNumber(jsonObject.getInteger("groupNumber"));
            thirdPosition.setCreateTime(t);
            changCoordinate(thirdPosition);
        }


    }

    /**
     * 收报文日志
     * @param jsonObject
     */
    private boolean addMsgLog(JSONObject jsonObject, String format) {
        String sql = "INSERT INTO sys_msg_log  ( mag_log,create_by,create_time )  VALUES  ( '"+jsonObject.toJSONString()+"','cmcc','"+format+"' )";
        System.out.println("**********"+sql);
        boolean ok = addDataToDataBase(sql);
        return ok;
    }

    //SQL插入数据库
    private boolean addDataToDataBase(String sql) {
        boolean ok = thirdMapper.addDataToDataBase(sql);
        return ok;
    }

    private void changCoordinate(ThirdPosition thirdPosition) {
//        String x1 = "101.1636962890625";
//        String y1 = "325.2133483886719";
        String x1 = thirdPosition.getPositionx();
        String y1 = thirdPosition.getPositiony();
        double blc = 100/2.54;//比例尺

        double fd_x = blc*(Double.valueOf(x1)-CommonConstant.LT_B1_X)+CommonConstant.LT_B1_X;
        double fd_y = blc*(Double.valueOf(y1)+CommonConstant.LT_B1_Y)-CommonConstant.LT_B1_Y;
        System.out.println("放大后的坐标为:X:"+fd_x+",Y:"+fd_y);

        double a = CommonConstant.MQ_B1_X - CommonConstant.LT_B1_X;//原点偏移x
        double b = CommonConstant.MQ_B1_Y - CommonConstant.LT_B1_Y;//原点偏移y
        System.out.println("偏移a:"+a+",b:"+b);

        double x = Double.valueOf(fd_x) +  a;
        double y = Double.valueOf(fd_y) +  b;
        System.out.println("新坐标为:X:"+x+",Y:-"+y);

        //原点偏移
//        double new_fd_x = 10*(Double.valueOf(x)-CommonConstant.MQ_B1_X)+CommonConstant.MQ_B1_X;
//        double new_fd_y = 10*(Double.valueOf(y)+CommonConstant.MQ_B1_Y)-CommonConstant.MQ_B1_Y;
//        System.out.println("新放大后的坐标为:X:"+new_fd_x+",Y:"+new_fd_y);
        thirdPosition.setPositionx(String.valueOf(x));
        thirdPosition.setPositiony(String.valueOf(y));
        addPositionInfo(thirdPosition);//添加转换后坐标信息
    }

    private boolean addPositionInfo(ThirdPosition thirdPosition) {
        String uuid = UUIDGenerator.creatUUID();
        String sql = "INSERT INTO sys_cmcc_position  ( `position_id`,`node_id`,`system_id`,`type`,`group`," +
                "`group_number`,`position_x`,`position_y`,`create_by`,`create_time` )  VALUES " +
                " ( '"+uuid+"','"+thirdPosition.getNodeId()+"','"+thirdPosition.getSystemId()+"','"+thirdPosition.getType()+"','"+thirdPosition.getGroup()+"'," +
                ""+thirdPosition.getGroupNumber()+",'"+thirdPosition.getPositionx()+"','"+thirdPosition.getPositiony()+"','cmcc','"+sf.format(thirdPosition.getCreateTime())+"' )";
        System.out.println("**********"+sql);
        boolean ok = addDataToDataBase(sql);
        return ok;
    }
}