zhubaomin
2024-10-28 fe1e65520172d8c365d2fe75a843a44243f4faf6
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
@@ -2,6 +2,10 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.multiDataSource.DataSourceContext;
import com.dy.common.mw.protocol.Command;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper;
@@ -12,13 +16,16 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
/**
 * @author ZhuBaoMin
@@ -42,6 +49,21 @@
    @Autowired
    private RestTemplate restTemplate;
//    protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send";
    protected String comSendUrl;
    /**
     * pro_mw:属性
     * tag从控制器中获取
     * key_mw:url的key
     */
    private Environment env = null;
    private String pro_mw = "mw";
    private String key_mw = "comSendUrl";
    @Autowired
    public ControllerSv(Environment env) {
        this.env = env;
    }
    /**
     * 根据指定获取控制器记录
@@ -50,18 +72,53 @@
     * @return
     */
    public QueryResultVo<List<VoController>> getControllers(QueryVo queryVo) {
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
        Long itemTotal = prControllerMapper.getRecordCount(params);
        Command com = new Command() ;
        com.id = Command.defaultId;
        com.code = "LCD0001";
        com.type = "innerCommand";
        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
        QueryResultVo<List<VoController>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = queryVo.pageSize;
        rsVo.pageCurr = queryVo.pageCurr;
        JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com));
        if (response != null && response.getString("code").equals("0001")) {
            //JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap");
            JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment");
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = prControllerMapper.getControllers(params);
            JSONArray jsonArray = new JSONArray();
            if(attachment != null) {
                //HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class);
                //for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) {
                //    JSONObject jsonObject = new JSONObject();
                //    jsonObject.put("rtuAddr", entry.getKey());
                //    jsonObject.put("isOnLine", entry.getValue());
                //    jsonArray.add(jsonObject);
                //}
                attachment.forEach((key, value) -> {
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("rtuAddr", key);
                    jsonObject.put("isOnLine", value);
                    jsonArray.add(jsonObject);
        return rsVo;
                });
            }
            queryVo.setOnLineMap(jsonArray.toJSONString());
            Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
            Long itemTotal = prControllerMapper.getRecordCount(params);
            QueryResultVo<List<VoController>> rsVo = new QueryResultVo<>();
            rsVo.pageSize = queryVo.pageSize;
            rsVo.pageCurr = queryVo.pageCurr;
            rsVo.calculateAndSet(itemTotal, params);
            rsVo.obj = prControllerMapper.getControllers(params);
            return rsVo;
        } else {
            QueryResultVo<List<VoController>> rsVo = new QueryResultVo<>();
            return rsVo;
        }
    }
    /**
@@ -72,7 +129,7 @@
     */
    public Integer addController(PrController po) {
        int rows = prControllerMapper.insert(po);
        if(rows == 0) {
        if (rows == 0) {
            return 0;
        }
        PrIntakeController addPrIntakeController = new PrIntakeController();
@@ -83,10 +140,10 @@
        addPrIntakeController.setOperatedt(po.getOperateDt());
        addPrIntakeController.setRemarks("绑定");
        int rec = prIntakeControllerMapper.insert(addPrIntakeController);
        if(rec == 0) {
        if (rec == 0) {
            return 0;
        }
        return 1 ;
        return 1;
    }
    /**
@@ -100,13 +157,13 @@
    }
    /**
     * 根据控制器编号逻辑删除控制
     * 根据控制器编号物理删除控制
     *
     * @param controllerId
     * @return
     */
    public Integer deleteControllerById(Long controllerId) {
        return prControllerMapper.deleteControllerById(controllerId);
        return prControllerMapper.deleteByPrimaryKey(controllerId);
    }
    /**
@@ -165,4 +222,48 @@
        }
        return array;
    }
    /**
     * 根据控制器编号物理删除控制
     * 2024-6-7
     *
     * @param controllerId
     * @return
     */
    public Integer deleteControllerByIdTwo(Long controllerId) {
        return prControllerMapper.deleteByPrimaryKey(controllerId);
    }
    /**
     * 根据主键查询控制器列表
     * 2024-6-7
     *
     * @param controllerId
     * @return
     */
    public PrController getByControllerId(Long controllerId) {
        return prControllerMapper.selectByPrimaryKey(controllerId);
    }
    /**
     * 发送命令
     *
     * @return
     */
    protected BaseResponse sendCom2Mw(Command com) {
        String url = UriComponentsBuilder.fromUriString(comSendUrl)
                .build()
                .toUriString();
        HttpHeaders headers = new HttpHeaders();
        HttpEntity<Command> httpEntity = new HttpEntity<>(com, headers);
        ResponseEntity<BaseResponse> response = null;
        try {
            // 通过Post方式调用接口
            response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, BaseResponse.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response.getBody();
    }
}