pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
@@ -3,9 +3,9 @@
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.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper;
@@ -13,24 +13,20 @@
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
import com.dy.pipIrrGlobal.voPr.VoController;
import com.dy.pipIrrProject.result.ProjectResultCode;
import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
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.RestClientException;
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 static com.dy.common.mw.protocol.CommandType.innerCommand;
import java.util.*;
/**
 * @author ZhuBaoMin
@@ -54,6 +50,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;
    }
    /**
     * 根据指定获取控制器记录
@@ -62,18 +73,44 @@
     * @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));
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = prControllerMapper.getControllers(params);
        return rsVo;
        if (response != null && response.getString("code").equals("0001")) {
            JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap");
            HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class);
            JSONArray jsonArray = new JSONArray();
            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);
            }
            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;
        }
    }
    /**
@@ -84,7 +121,7 @@
     */
    public Integer addController(PrController po) {
        int rows = prControllerMapper.insert(po);
        if(rows == 0) {
        if (rows == 0) {
            return 0;
        }
        PrIntakeController addPrIntakeController = new PrIntakeController();
@@ -95,10 +132,10 @@
        addPrIntakeController.setOperatedt(po.getOperateDt());
        addPrIntakeController.setRemarks("绑定");
        int rec = prIntakeControllerMapper.insert(addPrIntakeController);
        if(rec == 0) {
        if (rec == 0) {
            return 0;
        }
        return 1 ;
        return 1;
    }
    /**
@@ -112,13 +149,13 @@
    }
    /**
     * 根据控制器编号逻辑删除控制
     * 根据控制器编号物理删除控制
     *
     * @param controllerId
     * @return
     */
    public Integer deleteControllerById(Long controllerId) {
        return prControllerMapper.deleteControllerById(controllerId);
        return prControllerMapper.deleteByPrimaryKey(controllerId);
    }
    /**
@@ -177,4 +214,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();
    }
}