From a1744d0bf7f0ad8ac861d672cffd7c710dac4e7e Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期五, 11 四月 2025 14:17:36 +0800 Subject: [PATCH] 获取未绑定轮灌组的取水口 --- pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 252 insertions(+), 33 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java index 99c0fb7..b71783d 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java @@ -1,17 +1,35 @@ package com.dy.pipIrrProject.intake; +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.config.DingTalk; +import com.dy.pipIrrGlobal.daoPr.PrDivideMapper; import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper; import com.dy.pipIrrGlobal.pojoPr.PrIntake; -import com.dy.pipIrrGlobal.voPr.VoIntake; +import com.dy.pipIrrGlobal.voPr.*; +import com.dy.pipIrrProject.intake.qo.QoIntake; 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.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; import java.util.List; import java.util.Map; +import java.util.Optional; /** * @author wuzeyu @@ -26,6 +44,40 @@ @Autowired private PrIntakeMapper prIntakeMapper; + @Autowired + private PrDivideMapper prDivideMapper; + + @Autowired + private RestTemplate restTemplate; + + protected String comSendUrl; + + /** + * pro_mw锛氬睘鎬� + * tag浠庢帶鍒跺櫒涓幏鍙� + * key_mw锛歶rl鐨刱ey + */ + private Environment env = null; + private String pro_mw = "mw"; + private String key_mw = "comSendUrl"; + + @Autowired + public IntakeSv(Environment env) { + this.env = env; + } + + @Autowired + private DingTalk dingTalk; + + public String sendMessage(String message) { + try { + dingTalk.sendMessage(DataSourceContext.get(), this.env, message); + } catch (Exception e) { + return "鍙戦�佸け璐�"; + } + return "鍙戦�佹垚鍔�"; + } + /** * 娣诲姞鍙栨按鍙� * @@ -34,49 +86,54 @@ */ @Transactional Integer addIntake(PrIntake po) { - if (po.getTownId()==null||po.getTownId()==0) - { - Long townId=getSupperByVillageId(po.getVillageId()); - po.setTownId(townId); + Long villageId = Optional.ofNullable(po.getVillageId()).orElse(0L); + + if (villageId != 0) { + if (po.getTownId() == null || po.getTownId() == 0) { + Long townId = getSupperByVillageId(po.getVillageId()); + po.setTownId(townId); + } + if (po.getCountyId() == null || po.getCountyId() == 0) { + Long countyId = getSupperByVillageId(getSupperByVillageId(po.getVillageId())); + po.setCountyId(countyId); + } } - if (po.getCountyId()==null||po.getCountyId()==0) - { - Long countyId=getSupperByVillageId(getSupperByVillageId(po.getVillageId())); - po.setCountyId(countyId); + if (po.getBlockId() == null || po.getBlockId() == 0) { + Long blockId = prDivideMapper.getBlockIdById(po.getDivideId()); + po.setBlockId(blockId); } return prIntakeMapper.insertSelective(po); } - public Long getSupperByVillageId(long vaId){ + + public Long getSupperByVillageId(long vaId) { return prIntakeMapper.getSupperByVillageId(vaId); } - /** * 淇濆瓨淇敼瀹炰綋 + * * @param po 瀹炰綋 * @return 鏁伴噺 */ - public int update(PrIntake po){ - if (po.getTownId()==null||po.getTownId()==0) - { - Long townId=getSupperByVillageId(po.getVillageId()); - po.setTownId(townId); - } - if (po.getCountyId()==null||po.getCountyId()==0) - { - Long countyId=getSupperByVillageId(getSupperByVillageId(po.getVillageId())); - po.setCountyId(countyId); - } - return this.prIntakeMapper.updateByPrimaryKeySelective(po) ; + public int update(PrIntake po) { +// if (po.getTownId() == null || po.getTownId() == 0) { +// Long townId = getSupperByVillageId(po.getVillageId()); +// po.setTownId(townId); +// } +// if (po.getCountyId() == null || po.getCountyId() == 0) { +// Long countyId = getSupperByVillageId(getSupperByVillageId(po.getVillageId())); +// po.setCountyId(countyId); +// } + return this.prIntakeMapper.updateByPrimaryKeySelective(po); // return this.prIntakeMapper.updateByPrimaryKey(po); } /** - * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍒嗘按鎴胯褰� + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍙栨按鍙h褰� * * @param queryVo 鏌ヨ瑙嗗浘 - * @return 鍒嗘按鎴胯褰曞垪琛� + * @return 鍙栨按鍙h褰曞垪琛� */ public QueryResultVo<List<VoIntake>> getIntakes(QueryVo queryVo) { Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); @@ -104,39 +161,201 @@ /** * 寰楀埌鎵�鏈夊彇姘村彛 + * * @return 鎵�鏈夊彇姘村彛闆嗗悎 */ - public QueryResultVo<List<PrIntake>> selectAll() { - QueryResultVo<List<PrIntake>> rsVo = new QueryResultVo<>() ; - rsVo.obj = this.prIntakeMapper.selectAll() ; - return rsVo ; + public QueryResultVo<List<VoAllIntake>> selectAll() { + QueryResultVo<List<VoAllIntake>> rsVo = new QueryResultVo<>(); + rsVo.obj = this.prIntakeMapper.selectAll(); + return rsVo; } /** * 寰楀埌涓�涓彇姘村彛 + * * @param id 鍙栨按鍙D * @return 鍙栨按鍙e疄浣� */ - public PrIntake selectById(Long id) { - return this.prIntakeMapper.selectByPrimaryKey(id) ; + public VoAllIntake selectById(Long id) { + return this.prIntakeMapper.selectByPrimaryKey(id); } /** * 閫昏緫鍒犻櫎瀹炰綋 + * * @param id 瀹炰綋ID * @return 鏁伴噺 */ @Transactional - public int delete(Long id){ - return this.prIntakeMapper.deleteLogicById(id) ; + public int delete(Long id) { + return this.prIntakeMapper.deleteLogicById(id); } /** * 鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栨湭鍒犻櫎鐨勫彇姘村彛鏁伴噺 + * * @param intakeId * @return */ public Integer getRecordCountOfIntake(Long intakeId) { return prIntakeMapper.getRecordCountOfIntake(intakeId); } + + /** + * 鏍规嵁鏉慖d鑾峰彇鍏ㄩ儴鍦板潃 + * + * @param villageId 鏉慖d + * @return address 鍏ㄩ儴浜旂骇鍦板潃 + */ + public String getAddressByVillageId(long villageId) { + return prIntakeMapper.getAddressByVillageId(villageId); + } + + /** + * 鏍规嵁鍖哄煙Id鑾峰彇鍖哄煙绛夌骇 + * + * @param regionId 鍖哄煙Id + * @return Level 鍖哄煙绛夌骇 + */ + public int getLevelByRegionId(long regionId) { + return prIntakeMapper.getLevelByRegionId(regionId); + } + + /** + * 姝ゅ姛鑳藉凡缍撶Щ妞嶅埌remote妯″鐨凪onitroSv涓� + * + * 鑾峰彇鍙栨按鍙e垪琛� + * + * @return + public QueryResultVo<List<VoOnLineIntake>> selectOnLineIntakes(OnLineIntakesQO qo) { + Command com = new Command(); + com.id = Command.defaultId; + com.code = "LCD0001"; + com.type = "innerCommand"; + comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); + + JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); + 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); + } + + qo.setOnLineMap(jsonArray.toJSONString()); + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); + Long itemTotal = prIntakeMapper.getOnLineIntakesCount(params); + + QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>(); + rsVo.pageSize = qo.pageSize; + rsVo.pageCurr = qo.pageCurr; + rsVo.calculateAndSet(itemTotal, params); + rsVo.obj = prIntakeMapper.getOnLineIntakes(params); + return rsVo; + } else { + QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>(); + return rsVo; + } + } + */ + /** + * 鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛 + * + * @param operator + * @return + */ + public List<VoOnLineIntake> getUsedIntakes(Long operator) { + Command com = new Command(); + com.id = Command.defaultId; + com.code = "LCD0001"; + com.type = "innerCommand"; + JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); + + JSONArray jsonArray = new JSONArray(); + if (response != null && response.getString("code").equals("0001")) { + JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment"); + if(attachment != null) { + attachment.forEach((key, value) -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("rtuAddr", key); + jsonObject.put("isOnLine", value); + jsonArray.add(jsonObject); + }); + } + //} else { + // return new ArrayList<>(); + } + return prIntakeMapper.getUsedIntakes(jsonArray.toJSONString(), operator); + } + + /** + * 鍙戦�佸懡浠� + * + * @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(); + } + + if(response == null) { + return BaseResponseUtils.buildErrorMsg("涓棿浠惰皟鐢ㄥけ璐�"); + } + + return response.getBody(); + } + + + /** + * 鍙栨按鍙e悕绉版崲鍙栨按鍙D锛岄獙璇佹槸鍚﹂噸澶嶅悕绉颁娇鐢� + * + * @param intakeName + * @return + */ + public List<Long> getIntakeIdsByName(String intakeName) { + return prIntakeMapper.getIntakeIdsByName(intakeName); + } + + /** + * 鍙栨按鍙e悕绉版崲鍙栨按鍙D锛岄獙璇佹槸鍚﹂噸澶嶅悕绉颁娇鐢� + * + * @param intakeName + * @return + */ + public List<Long> getIntakeIdByNameExcludeId(Long id, String intakeName) { + return prIntakeMapper.getIntakeIdByNameExcludeId(id, intakeName); + } + + + /** + * app淇敼鍙栨按鍙g粡绾害 + * @param po + * @return + */ + public int updateIntakeLngLat(IntakeUpdateLngLat po) { + return prIntakeMapper.updateByPrimaryKeySelective1(po); + } + + /** + * 鑾峰彇鏈粦瀹氬埌杞亴缁勭殑鍙栨按鍙e垪琛� + * @return + */ + public List<VoIntakeSimple> getFreeIntakes(QoIntake queryVo) { + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); + return prIntakeMapper.getFreeIntakes(params); + } } -- Gitblit v1.8.0