Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
31个文件已添加
5个文件已删除
70个文件已修改
| New file |
| | |
| | | # pipIrr æºè½çæºç³»ç» |
| | | |
| | | ## é¡¹ç®æ¦è¿° |
| | | |
| | | pipIrræ¯ä¸å¥åºäºJavaçæºè½ç®¡éçæºç³»ç»è§£å³æ¹æ¡ï¼ç¨äºå®ç°æ°´èµæºçæºè½å管çä¸çæºæ§å¶ãç³»ç»éæäºè¿ç¨ç»ç«¯æ§å¶ãGISå°çä¿¡æ¯ãæ°´èµæºçæµä¸åæã微信æ¥å
¥çå¤ç§åè½ï¼ä¸ºæºæ
§åä¸åæ°´å©å·¥ç¨æä¾å
¨é¢çææ¯æ¯æã |
| | | |
| | | ## ç³»ç»æ¶æ |
| | | |
| | | ç³»ç»éç¨å¾®æå¡æ¶æï¼åºäºSpring Boot 3æå»ºï¼ä¸»è¦å
æ¬ä»¥ä¸å ä¸ªæ ¸å¿é¨åï¼ |
| | | |
| | | - **å端åºç¨å±**ï¼æä¾Webçé¢ãç§»å¨åºç¨ã微信å
¬ä¼å·çå¤ç§äº¤äºæ¹å¼ |
| | | - **ä¸å¡æå¡å±**ï¼å¤çæ ¸å¿ä¸å¡é»è¾ï¼å
æ¬çæºç®¡çã项ç®ç®¡çãæ°æ®ç»è®¡ç |
| | | - **ä¸é´ä»¶å±**ï¼æä¾RTU(è¿ç¨ç»ç«¯åå
)éä¿¡ãç¬¬ä¸æ¹ç³»ç»éæçåè½ |
| | | - **åºç¡è®¾æ½å±**ï¼æä¾æ°æ®åå¨ãç¼åãæ¶æ¯éåçåºç¡æå¡ |
| | | |
| | | ## 模å说æ |
| | | |
| | | ### ç¶æ¨¡å (pipIrr-platform) |
| | | |
| | | ä½ä¸ºæ´ä¸ªé¡¹ç®çç¶æ¨¡åï¼ç®¡çä¾èµçæ¬åæå»ºé
ç½®ã |
| | | |
| | | ### æ ¸å¿å模å |
| | | |
| | | - **pipIrr-common**: å
Œ
±ç»ä»¶ï¼æä¾å·¥å
·ç±»ãéç¨é
ç½®ç |
| | | - **pipIrr-global**: å
¨å±é
ç½®åæå¡ |
| | | - **pipIrr-web**: Webåºç¨æ¨¡åéå |
| | | - pipIrr-web-base: åºç¡æ°æ®æå¡ |
| | | - pipIrr-web-sso: åç¹ç»å½æå¡ |
| | | - pipIrr-web-irrigate: çæºç®¡ç |
| | | - pipIrr-web-gis: GISå°çä¿¡æ¯æå¡ |
| | | - pipIrr-web-project: 项ç®ç®¡ç |
| | | - pipIrr-web-statistics: æ°æ®ç»è®¡åæ |
| | | - pipIrr-web-remote: è¿ç¨æ§å¶ |
| | | - pipIrr-web-wechat: å¾®ä¿¡éæ |
| | | - pipIrr-web-app: ç§»å¨åºç¨æå¡ |
| | | - pipIrr-web-file: æä»¶ç®¡ç |
| | | - pipIrr-web-operation: è¿ç»´ç®¡ç |
| | | - pipIrr-web-sell: éå®ç®¡ç |
| | | - pipIrr-web-temp: ä¸´æ¶æ¨¡å |
| | | - **pipIrr-mw**: ä¸é´ä»¶æå¡ |
| | | - pipIrr-mw-rtu: RTU设å¤éä¿¡ |
| | | - pipIrr-mw-rtu3rd: ç¬¬ä¸æ¹RTUéæ |
| | | - pipIrr-mw-simulate-rtu: RTU模æå¨ |
| | | - pipIrr-mwTest-server: æµè¯æå¡å¨ |
| | | - pipIrr-mwTest-client: æµè¯å®¢æ·ç«¯ |
| | | |
| | | ## ææ¯æ |
| | | |
| | | - **åºç¡æ¡æ¶**: Spring Boot 3.1.3 |
| | | - **JDKçæ¬**: Java 20 |
| | | - **Webæå¡**: Tomcat 10.1.12 |
| | | - **æ°æ®åº**: MySQL 8.0.33 |
| | | - **ORMæ¡æ¶**: MyBatis-Plus 3.5.3.2 |
| | | - **æ°æ®åºè¿æ¥æ± **: Druid 1.2.20 |
| | | - **APIææ¡£**: SpringDoc OpenAPI 2.2.0 |
| | | - **JSONå¤ç**: FastJSON 2.0.40 |
| | | - **对象æ å°**: MapStruct 1.5.5.Final |
| | | - **å·¥å
·é**: Hutool 5.8.22 |
| | | - **æ¥å¿æ¡æ¶**: Log4j2 2.20.0 |
| | | |
| | | ## å¼åç¯å¢æå»º |
| | | |
| | | ### åç½®æ¡ä»¶ |
| | | |
| | | - JDK 20 |
| | | - Maven 3.8+ |
| | | - MySQL 8.0+ |
| | | - IDEæ¨è: IntelliJ IDEA |
| | | |
| | | ### æå»ºæ¥éª¤ |
| | | |
| | | 1. å
é代ç åº |
| | | ```bash |
| | | git clone <repository-url> |
| | | ``` |
| | | |
| | | 2. 导å
¥é¡¹ç®å°IDE |
| | | 使ç¨IDEA导å
¥Mavené¡¹ç® |
| | | |
| | | 3. é
ç½®æ°æ®åº |
| | | å¨ç¸åºé
ç½®æä»¶ä¸è®¾ç½®æ°æ®åºè¿æ¥ä¿¡æ¯ |
| | | |
| | | 4. ç¼è¯é¡¹ç® |
| | | ```bash |
| | | mvn clean package |
| | | ``` |
| | | |
| | | ## é¨ç½²è¯´æ |
| | | |
| | | ### å¼åç¯å¢ |
| | | ```bash |
| | | mvn spring-boot:run -Dspring.profiles.active=dev |
| | | ``` |
| | | |
| | | ### ç产ç¯å¢ |
| | | 1. æå
åºç¨ |
| | | ```bash |
| | | mvn clean package -Dspring.profiles.active=prod |
| | | ``` |
| | | |
| | | 2. è¿è¡jarå
|
| | | ```bash |
| | | java -jar <模åå>-<çæ¬å·>.jar |
| | | ``` |
| | | |
| | | ## é¡¹ç®ææ¡£ |
| | | |
| | | 详ç»çé¡¹ç®ææ¡£ä½äº `pipIrr-platform/ææ¡£/` ç®å½ä¸ï¼å
æ¬ï¼ |
| | | - APIæ¥å£ææ¡£ |
| | | - æ°æ®åºè®¾è®¡ |
| | | - é¨ç½²æå |
| | | - ç¼ç è§è |
| | | |
| | | ## çæ¬ä¿¡æ¯ |
| | | |
| | | å½åçæ¬: 1.0.0 |
| | | |
| | | ## è´¡ç®æå |
| | | |
| | | 1. Fork æ¬ä»åº |
| | | 2. å建åè½åæ¯ (`git checkout -b feature/AmazingFeature`) |
| | | 3. æäº¤åæ´ (`git commit -m 'Add some AmazingFeature'`) |
| | | 4. æ¨éå°åæ¯ (`git push origin feature/AmazingFeature`) |
| | | 5. å建Pull Request |
| | |
| | | public Short protocolVersion; |
| | | |
| | | /** |
| | | * RTU å°å |
| | | * RTUå°å å FBox设å¤å· |
| | | */ |
| | | public String rtuAddr ; |
| | | |
| | |
| | | s += (protocol == null ? "" : ("åè®®=" + protocol + "\n")); |
| | | s += (protocolVersion == null ? "" : ("åè®®çæ¬å·=" + protocolVersion + "\n")); |
| | | s += (rtuAddr == null ? "" : ("Rtuå°å=" + rtuAddr + "\n")); |
| | | s += "å½ä»¤ç±»å=" + (type.equals(CommandType.innerCommand)?"å
é¨å½ä»¤":(type.equals(CommandType.outerCommand)?"RTUå½ä»¤":"éä¼ å½ä»¤")) + "\n" ; |
| | | s += "å½ä»¤ç±»å=" + ( |
| | | type.equals(CommandType.innerCommand)?"å
é¨å½ä»¤":( |
| | | type.equals(CommandType.outerCommand)?"RTUå½ä»¤":( |
| | | type.equals(CommandType.mqttCommand)?"MQTTå½ä»¤":( |
| | | type.equals(CommandType.outerTransCommand)?"éä¼ å½ä»¤": |
| | | "")))) + "\n" ; |
| | | s += (code == null ? "" : ("åè½ç =" + code + "\n")) ; |
| | | s += (rtuResultSendWebUrl == null ? "" : ("åè°ç½å=" + rtuResultSendWebUrl + "\n")); |
| | | if(param != null){ |
| | |
| | | throw new Exception("设å¤ç»ç«¯å¹´ç¨æ°´éå¿
é¡»æ¯0~99999999èå´å
çæ´æ°") ; |
| | | } |
| | | |
| | | byte[] bs = new byte[14] ; |
| | | byte[] bs = new byte[13] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | |
| | | bs[index++] = 0 ; |
| | | } |
| | | |
| | | index ++ ; |
| | | GlCreate.createPw(bs, index); |
| | | |
| | | index += 2 ; |
| | |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | if(topicGrp.length != 5){ |
| | | throw new Exception("æ¥æ¶çmqttæ¶æ¯ä¸»é¢ä¸å¯è¯å«") ; |
| | | }else{ |
| | | if(NumUtil.isPlusIntNumber(topicGrp[4])){ |
| | | if(!NumUtil.isPlusIntNumber(topicGrp[4])){ |
| | | throw new Exception("æ¥æ¶çmqttæ¶æ¯ä¸»é¢ä¸å¯è¯å«") ; |
| | | } |
| | | if(Integer.parseInt(topicGrp[4]) <= 0){ |
| | |
| | | if(com.protocolVersion == null){ |
| | | throw new Exception("æ¥æ¶å°MQTTå½ä»¤ï¼ä½æªæä¾åè®®çæ¬å·") ; |
| | | } |
| | | if(com.code != null && com.code.trim().length() != 0){ |
| | | if(com.code == null || com.code.trim().length() == 0){ |
| | | throw new Exception("æ¥æ¶å°MQTTå½ä»¤ï¼ä½æªæä¾åè½ç ") ; |
| | | } |
| | | if(com.protocol.equals(ProtocolConstantSdV1.protocolName)){ |
| | |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | | String s = "ym/sd1/10000/control/m1" ; |
| | | String s = "jyg/sd1/2430002404000840/weather/1" ; |
| | | String[] ss = s.split("/") ; |
| | | for (String s1 : ss) { |
| | | System.out.println(s1); |
| | |
| | | package com.dy.common.mw.protocol4Mqtt; |
| | | |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/5 11:44 |
| | | * @Description |
| | | */ |
| | | public abstract class MqttPubMsg { |
| | | @Data |
| | | public class MqttPubMsg { |
| | | public String commandId ;//å½ä»¤ID |
| | | |
| | | public String cd ;//åè½ç |
| | | |
| | | public String deviceId ;//设å¤ID |
| | | |
| | |
| | | public boolean isCacheForOffLine ;//ä¸è¡å½ä»¤æ§å¶ï¼æ¶æ¯ä¸é´ä»¶ä¸å¨çº¿æ¯å¦ç¼åå½ä»¤ |
| | | public boolean hasResponse ;//ä¸è¡å½ä»¤æ§å¶ï¼å½ä»¤æ¯å¦æåºç |
| | | |
| | | public abstract boolean valid(); |
| | | public boolean valid(){ |
| | | if (topic == null || topic.isEmpty()) { |
| | | return false; |
| | | } |
| | | if (msg == null || msg.isEmpty()) { |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | } |
| | |
| | | package com.dy.common.mw.protocol4Mqtt; |
| | | |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; |
| | | import com.dy.common.util.Callback; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/5 11:44 |
| | | * @Description |
| | | */ |
| | | |
| | | public abstract class MqttSubMsg { |
| | | @Data |
| | | public class MqttSubMsg { |
| | | public String commandId ;//å½ä»¤ID |
| | | public String mqttResultSendWebUrl ;//Mttè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | |
| | |
| | | public MqttTopic topic ;//æ¶æ¯ä¸»é¢ |
| | | public String metaData;//MQTTæ¨éæ¥çå
æ°æ® |
| | | |
| | | public abstract boolean valid(); |
| | | public Vo4Up vo4Up;//订é
çæ¶æ¯æ°æ®å¼å¯¹è±¡ |
| | | public MqttSubMsg() { |
| | | } |
| | | public MqttSubMsg(MqttTopic subTopic, String msg) { |
| | | this.deviceId = subTopic.devId ; |
| | | this.protocol = subTopic.protocol ; |
| | | this.topic = subTopic ; |
| | | this.metaData = msg ; |
| | | } |
| | | |
| | | public abstract boolean subMsgMatchPubMsg(MqttPubMsg pubMsg); |
| | | public boolean valid() { |
| | | if (topic == null || topic.isEmpty()) { |
| | | return false; |
| | | } |
| | | if (metaData == null || metaData.isEmpty()) { |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | public abstract void action(Callback callback); |
| | | public boolean subMsgMatchPubMsg(MqttPubMsg pubMsg){ |
| | | if(this.vo4Up != null && this.vo4Up instanceof ManureVo){ |
| | | //åªè¦ä¸æ¥çæ¯ç¶ææ°æ®ï¼è¯´æè®¾å¤ååºäºå½ä»¤ |
| | | return true ; |
| | | } |
| | | return false ; |
| | | } |
| | | |
| | | public void action(Callback callback){ |
| | | callback.call(this) ; |
| | | } |
| | | |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder(); |
| | | if(commandId != null){ |
| | | sb.append("commandId:") |
| | | .append(commandId) |
| | | .append("\n") ; |
| | | } |
| | | sb.append("主é¢:") |
| | | .append(topic.longName()) |
| | | .append("\n") ; |
| | | if(vo4Up != null){ |
| | | sb.append("æ°æ®:") |
| | | .append(vo4Up.toString()) |
| | | .append("\n") ; |
| | | }else{ |
| | | sb.append("å
æ°æ®:") |
| | | .append(metaData) |
| | | .append("\n") ; |
| | | } |
| | | return sb.toString() ; |
| | | } |
| | | } |
| | |
| | | public String orgTag ;//ç»ç»æ è¯ |
| | | public String protocol ;//åè®®åç§° |
| | | public String devId ;//设å¤ï¼FBoxï¼ID |
| | | public String type;//æµç«ç±»å |
| | | public String type;//æ°æ®ï¼å½ä»¤ï¼ç±»å |
| | | public Integer no;//æµç«ç¼å· |
| | | |
| | | public boolean isEmpty(){ |
| | |
| | | public static final String cd_Stir = "01" ;//æ
æå¯åå½ä»¤ |
| | | public static final String cd_Inject = "02" ;//注è¥å¯åå½ä»¤ |
| | | public static final String cd_Irr = "03" ;//çæºå¯åå½ä»¤ |
| | | public static final String cd_Param = "10" ;//设å®åæ° |
| | | public static final String cd_Param = "10" ;//è®¾ç½®åæ° |
| | | |
| | | public static String getCodeName(String code) { |
| | | String name = (code.equals(cd_Fault) ? "æ
éè§£é¤" : |
| | | (code.equals(cd_Stir) ? "æ
æå¯å" : |
| | | (code.equals(cd_Inject) ? "注è¥å¯å" : |
| | | (code.equals(cd_Irr) ? "çæºå¯å" : |
| | | (code.equals(cd_Param) ? "è®¾ç½®åæ°" : |
| | | ""))))) ; |
| | | if(name == null || name.equals("")){ |
| | | name = code ; |
| | | } |
| | | return name ; |
| | | } |
| | | } |
| | |
| | | public static final String SubTopicWeather = "weather" ;//æ°è±¡ |
| | | public static final String SubTopicSoil = "soil" ;//å壤墿
|
| | | public static final String SubTopicManure = "manure" ;//æ°´è¥ |
| | | public static final String SubTopicState = "state" ;//ç¶æ |
| | | |
| | | //åå¸çä¸»é¢ |
| | | public static final String PubTopicFault = "ctrlFault" ;//æ
éè§£é¤ |
| | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttCallback; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttTopic; |
| | | import com.dy.common.mw.protocol4Mqtt.Vo4Up; |
| | | import com.dy.common.mw.protocol4Mqtt.*; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.comParam.ComCtrlVo; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.comParam.ComSetParamVo; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.downVos.FaultClearVo; |
| | |
| | | * @Description |
| | | */ |
| | | public class ProtocolParserSdV1 { |
| | | public MqttSubMsgSdV1 parseSubMsg(MqttTopic subTopic, MqttMessage mqttMsg, MqttCallback callback) throws Exception { |
| | | public MqttSubMsg parseSubMsg(MqttTopic subTopic, MqttMessage mqttMsg, MqttCallback callback) throws Exception { |
| | | String strTxt = new String(mqttMsg.getPayload(), "UTF-8"); |
| | | if(!JSON.isValid(strTxt)){ |
| | | throw new Exception("æ¥æ¶å°MQTTæ¶æ¯ï¼åè®®" + subTopic.protocol + "ï¼è®¾å¤ID" + subTopic.devId + "ï¼ä¸»é¢" + subTopic.longName() + "æ¶æ¯æ ¼å¼éjsonæ°æ®(" + strTxt + ")") ; |
| | | } |
| | | MqttSubMsgSdV1 msg = new MqttSubMsgSdV1(subTopic, strTxt); |
| | | MqttSubMsg msg = new MqttSubMsg(subTopic, strTxt); |
| | | Vo4Up vo ; |
| | | DevRunInfo stInfo = null ; |
| | | switch (subTopic.type) { |
| | | case ProtocolConstantSdV1.SubTopicWeather -> { |
| | | vo = JSON.parseObject(strTxt, WeatherVo.class); |
| | | WeatherVo wvo = JSON.parseObject(strTxt, WeatherVo.class); |
| | | //è°æ´å°æ° |
| | | wvo.airTemperature = (wvo.airTemperature == null ? null: (wvo.airTemperature / 10.0F)) ; |
| | | wvo.airHumidity = (wvo.airHumidity == null ? null: (wvo.airHumidity / 10.0F)) ; |
| | | wvo.rainfall = (wvo.rainfall == null ? null: (wvo.rainfall / 10.0F)) ; |
| | | wvo.windSpeed = (wvo.windSpeed == null ? null: (wvo.windSpeed / 10.0F)) ; |
| | | vo = wvo ; |
| | | break; |
| | | } |
| | | case ProtocolConstantSdV1.SubTopicSoil -> { |
| | | vo = JSON.parseObject(strTxt, SoilVo.class); |
| | | SoilVo svo = JSON.parseObject(strTxt, SoilVo.class); |
| | | //è°æ´å°æ° |
| | | svo.soilHumidity1 = (svo.soilHumidity1 == null ? null: (svo.soilHumidity1 / 10.0F)) ; |
| | | svo.soilHumidity2 = (svo.soilHumidity2 == null ? null: (svo.soilHumidity2 / 10.0F)) ; |
| | | svo.soilHumidity3 = (svo.soilHumidity3 == null ? null: (svo.soilHumidity3 / 10.0F)) ; |
| | | svo.soilHumidity4 = (svo.soilHumidity4 == null ? null: (svo.soilHumidity4 / 10.0F)) ; |
| | | svo.soilHumidity5 = (svo.soilHumidity5 == null ? null: (svo.soilHumidity5 / 10.0F)) ; |
| | | svo.soilTemperature1 = (svo.soilTemperature1 == null ? null: (svo.soilTemperature1 / 10.0F)) ; |
| | | svo.soilTemperature2 = (svo.soilTemperature2 == null ? null: (svo.soilTemperature2 / 10.0F)) ; |
| | | svo.soilTemperature3 = (svo.soilTemperature3 == null ? null: (svo.soilTemperature3 / 10.0F)) ; |
| | | svo.soilTemperature4 = (svo.soilTemperature4 == null ? null: (svo.soilTemperature4 / 10.0F)) ; |
| | | svo.soilTemperature5 = (svo.soilTemperature5 == null ? null: (svo.soilTemperature5 / 10.0F)) ; |
| | | vo = svo ; |
| | | break; |
| | | } |
| | | case ProtocolConstantSdV1.SubTopicManure -> { |
| | | vo = JSON.parseObject(strTxt, ManureVo.class); |
| | | break; |
| | | } |
| | | case ProtocolConstantSdV1.SubTopicState -> { |
| | | //æ¤å¤æªå®æï¼åºè¯¥äº§çä¸äºéä¿¡çinfoï¼ä¾ä¸é¢callback.notify(objs)éç¥åºå» |
| | | vo = JSON.parseObject(strTxt, StateVo.class); |
| | | StateVo stVo = (StateVo)vo ; |
| | | ManureVo mvo = JSON.parseObject(strTxt, ManureVo.class); |
| | | //è°æ´å°æ° |
| | | mvo.manureFlow = (mvo.manureFlow == null ? null: (mvo.manureFlow / 10.0F)) ; |
| | | vo = mvo ; |
| | | |
| | | stInfo = new DevRunInfo() ; |
| | | stInfo.devId = msg.deviceId ; |
| | | stInfo.stirRunning = (stVo.stirRunning==null?false:(stVo.stirRunning.byteValue()==1?true:false)) ; //æ
æè¿è¡ trueæ¯ falseå¦ |
| | | stInfo.injectRunning = (stVo.injectRunning==null?false:(stVo.injectRunning.byteValue()==1?true:false)) ; //注è¥è¿è¡ trueæ¯ falseå¦ |
| | | stInfo.irrRunning = (stVo.irrRunning==null?false:(stVo.irrRunning.byteValue()==1?true:false)) ; //çæºè¿è¡ trueæ¯ falseå¦ |
| | | stInfo.alarm = (stVo.alarm==null?false:(stVo.alarm.byteValue()==1?true:false)) ; //æ¥è¦ trueæ¯ falseå¦ |
| | | stInfo.stirRunning = (mvo.stirRunning1 ==null?false:(mvo.stirRunning1.byteValue()==1?true:false)) ; //æ
æè¿è¡ trueæ¯ falseå¦ |
| | | stInfo.injectRunning = (mvo.injectRunning==null?false:(mvo.injectRunning.byteValue()==1?true:false)) ; //注è¥è¿è¡ trueæ¯ falseå¦ |
| | | stInfo.irrRunning = (mvo.irrRunning==null?false:(mvo.irrRunning.byteValue()==1?true:false)) ; //çæºè¿è¡ trueæ¯ falseå¦ |
| | | stInfo.alarm = (mvo.alarm==null?false:(mvo.alarm.byteValue()==1?true:false)) ; //æ¥è¦ trueæ¯ falseå¦ |
| | | break; |
| | | } |
| | | default -> { |
| | |
| | | return msg; |
| | | } |
| | | |
| | | public MqttPubMsgSdV1 createPubMsg(String orgTag, Command com) throws Exception { |
| | | MqttPubMsgSdV1 msg ; |
| | | public MqttPubMsg createPubMsg(String orgTag, Command com) throws Exception { |
| | | MqttPubMsg msg ; |
| | | switch (com.code) { |
| | | case CodeSdV1.cd_Fault -> { |
| | | //æ
éè§£é¤å½ä»¤ |
| | |
| | | throw new Exception("æ¥æ¶å°MQTTå½ä»¤ï¼åè®®" + com.protocol + "çæ¬" + com.protocolVersion + "åè½ç " + com.code + "å½ä»¤ç»æåæ¶URL为空") ; |
| | | } |
| | | } |
| | | private MqttPubMsgSdV1 createPubMsgOfFault(String orgTag, Command com) throws Exception { |
| | | private MqttPubMsg createPubMsgOfFault(String orgTag, Command com) throws Exception { |
| | | JSONObject obj = (JSONObject) com.param; |
| | | String json = obj.toJSONString(); |
| | | ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCtrlVo为null") ; |
| | | } |
| | | MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; |
| | | MqttPubMsg msg = new MqttPubMsg() ; |
| | | this.setPubMsgBase(com, msg); |
| | | msg.isCacheForOffLine = false ; |
| | | msg.hasResponse = true ; |
| | | msg.cd = CodeSdV1.cd_Fault ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol, com.rtuAddr, ProtocolConstantSdV1.PubTopicFault, cvo.no) ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol + com.protocolVersion, com.rtuAddr, ProtocolConstantSdV1.PubTopicFault, cvo.no) ; |
| | | msg.msg = JSON.toJSONString(new FaultClearVo(cvo.startTrueStopFalse ?(byte)1:0)) ; |
| | | return msg ; |
| | | } |
| | | private MqttPubMsgSdV1 createPubMsgOfStir(String orgTag, Command com) throws Exception { |
| | | private MqttPubMsg createPubMsgOfStir(String orgTag, Command com) throws Exception { |
| | | JSONObject obj = (JSONObject) com.param; |
| | | String json = obj.toJSONString(); |
| | | ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCtrlVo为null") ; |
| | | } |
| | | MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; |
| | | MqttPubMsg msg = new MqttPubMsg() ; |
| | | this.setPubMsgBase(com, msg); |
| | | msg.isCacheForOffLine = false ; |
| | | msg.hasResponse = true ; |
| | | msg.cd = CodeSdV1.cd_Fault ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol, com.rtuAddr, ProtocolConstantSdV1.PubTopicStir, cvo.no) ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol + com.protocolVersion, com.rtuAddr, ProtocolConstantSdV1.PubTopicStir, cvo.no) ; |
| | | msg.msg = JSON.toJSONString(new StirStartVo(cvo.startTrueStopFalse ?(byte)1:0)) ; |
| | | return msg ; |
| | | } |
| | | private MqttPubMsgSdV1 createPubMsgOfInject(String orgTag, Command com) throws Exception { |
| | | private MqttPubMsg createPubMsgOfInject(String orgTag, Command com) throws Exception { |
| | | JSONObject obj = (JSONObject) com.param; |
| | | String json = obj.toJSONString(); |
| | | ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCtrlVo为null") ; |
| | | } |
| | | MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; |
| | | MqttPubMsg msg = new MqttPubMsg() ; |
| | | this.setPubMsgBase(com, msg); |
| | | msg.isCacheForOffLine = false ; |
| | | msg.hasResponse = true ; |
| | | msg.cd = CodeSdV1.cd_Fault ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol, com.rtuAddr, ProtocolConstantSdV1.PubTopicInject, cvo.no) ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol + com.protocolVersion, com.rtuAddr, ProtocolConstantSdV1.PubTopicInject, cvo.no) ; |
| | | msg.msg = JSON.toJSONString(new InjectStartVo(cvo.startTrueStopFalse ?(byte)1:0)) ; |
| | | return msg ; |
| | | } |
| | | private MqttPubMsgSdV1 createPubMsgOfIrr(String orgTag, Command com) throws Exception { |
| | | private MqttPubMsg createPubMsgOfIrr(String orgTag, Command com) throws Exception { |
| | | JSONObject obj = (JSONObject) com.param; |
| | | String json = obj.toJSONString(); |
| | | ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCtrlVo为null") ; |
| | | } |
| | | MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; |
| | | MqttPubMsg msg = new MqttPubMsg() ; |
| | | this.setPubMsgBase(com, msg); |
| | | msg.isCacheForOffLine = false ; |
| | | msg.hasResponse = true ; |
| | | msg.cd = CodeSdV1.cd_Fault ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol, com.rtuAddr, ProtocolConstantSdV1.PubTopicIrr, cvo.no) ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol + com.protocolVersion, com.rtuAddr, ProtocolConstantSdV1.PubTopicIrr, cvo.no) ; |
| | | msg.msg = JSON.toJSONString(new StirStartVo(cvo.startTrueStopFalse ?(byte)1:0)) ; |
| | | return msg ; |
| | | } |
| | | |
| | | private MqttPubMsgSdV1 createPubMsgOfParam(String orgTag, Command com) throws Exception { |
| | | private MqttPubMsg createPubMsgOfParam(String orgTag, Command com) throws Exception { |
| | | JSONObject obj = (JSONObject) com.param; |
| | | String json = obj.toJSONString(); |
| | | ComSetParamVo cvo = JSON.parseObject(json, ComSetParamVo.class); |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComSetParamVo为null") ; |
| | | } |
| | | MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; |
| | | MqttPubMsg msg = new MqttPubMsg() ; |
| | | this.setPubMsgBase(com, msg); |
| | | msg.isCacheForOffLine = false ; |
| | | msg.hasResponse = false ; |
| | | msg.hasResponse = true ; |
| | | msg.cd = CodeSdV1.cd_Param ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol, com.rtuAddr, ProtocolConstantSdV1.PubTopicParam, cvo.no) ; |
| | | msg.topic = new MqttTopic(orgTag, com.protocol + com.protocolVersion, com.rtuAddr, ProtocolConstantSdV1.PubTopicParam, cvo.no) ; |
| | | msg.msg = JSON.toJSONString(new ParamSetVo(cvo.stirDuration, cvo.injectDuration)) ; |
| | | return msg ; |
| | | } |
| | | |
| | | private void setPubMsgBase(Command com, MqttPubMsgSdV1 msg){ |
| | | private void setPubMsgBase(Command com, MqttPubMsg msg){ |
| | | msg.commandId = com.id ; |
| | | msg.deviceId = com.rtuAddr ; |
| | | msg.mqttResultSendWebUrl = com.rtuResultSendWebUrl ; |
| | |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public class ParamSetVo implements Vo4Down { |
| | | /** |
| | | * åä½ç§ |
| | | */ |
| | | @JSONField(name = "æ
æè®¾å®æ¶é´") |
| | | public Integer stirDuration ; |
| | | |
| | | /** |
| | | * åä½ç§ |
| | | */ |
| | | @JSONField(name = "注è¥è®¾å®æ¶é´") |
| | | public Integer injectDuration ; |
| | | |
| | |
| | | @JSONField(name = "flexem_message_id") |
| | | public Integer messageId ;//æ¶æ¯ID |
| | | |
| | | public Integer no ;//æµç«ç¼å·ï¼å
¶ä¸å¨JSONæ°æ®ä¸ï¼å
¶ä¸ä¸»é¢ä¸ |
| | | public Integer no ;//æµç«ç¼å·ï¼å
¶ä¸å¨JSONæ°æ®ä¸ï¼å
¶å¨ä¸»é¢ä¸ |
| | | |
| | | @JSONField(name = "è¥ææµé") |
| | | public Float manureFlow ;//è¥ææµé |
| | | /** |
| | | * æ
ææº1æ¯å¦è¿è¡ï¼ï¼æ°´è¥æºè¿å¯å卿
ææº2ãæ
ææº3ãæ
ææº4 ......ï¼ è¿è¡æ¶1ï¼åæ¢0. |
| | | */ |
| | | @JSONField(alternateNames = {"æ
æè¿è¡1", "stirRunning1"}) |
| | | public Byte stirRunning1;//æ
æ1è¿è¡ç¶æ |
| | | /** |
| | | * æ
ææº2æ¯å¦è¿è¡ï¼ï¼æ°´è¥æºè¿å¯å卿
ææº2ãæ
ææº3ãæ
ææº4 ......ï¼ è¿è¡æ¶1ï¼åæ¢0. |
| | | * (å½å大禹åºç¨ä¸åå¨) |
| | | */ |
| | | @JSONField(alternateNames = {"æ
æè¿è¡2", "stirRunning2"}) |
| | | public Byte stirRunning2;//æ
æ2è¿è¡ç¶æ |
| | | /** |
| | | * æ
ææº3æ¯å¦è¿è¡ï¼ï¼æ°´è¥æºè¿å¯å卿
ææº2ãæ
ææº3ãæ
ææº4 ......ï¼ è¿è¡æ¶1ï¼åæ¢0. |
| | | * (å½å大禹åºç¨ä¸åå¨) |
| | | */ |
| | | @JSONField(alternateNames = {"æ
æè¿è¡3", "stirRunning3"}) |
| | | public Byte stirRunning3;//æ
æ3è¿è¡ç¶æ |
| | | /** |
| | | * æ
ææº4æ¯å¦è¿è¡ï¼ï¼æ°´è¥æºè¿å¯å卿
ææº2ãæ
ææº3ãæ
ææº4 ......ï¼ è¿è¡æ¶1ï¼åæ¢0. |
| | | * (å½å大禹åºç¨ä¸åå¨) |
| | | */ |
| | | @JSONField(alternateNames = {"æ
æè¿è¡4", "stirRunning4"}) |
| | | public Byte stirRunning4;//æ
æ4è¿è¡ç¶æ |
| | | |
| | | @JSONField(name = "æ³¨è¥æ¶é¿") |
| | | public Integer manureTime ;//æ³¨è¥æ¶é¿ |
| | | /** |
| | | * ä¸ä¸ªæ°´è¥æºåªæä¸ä¸ªæ³¨è¥æ³µ |
| | | */ |
| | | @JSONField(alternateNames = {"注è¥è¿è¡", "injectRunning"}) |
| | | public Byte injectRunning ;//注è¥è¿è¡ç¶æ |
| | | |
| | | @JSONField(name = "æ
ææ¶é¿") |
| | | public Integer stirTime ;//æ
ææ¶é¿ |
| | | |
| | | @JSONField(alternateNames = {"çæºè¿è¡", "irrRunning"}) |
| | | public Byte irrRunning ;//çæºè¿è¡ç¶æ |
| | | |
| | | /** |
| | | * 1:æ³¨è¥æ³µææ
éã0:æ³¨è¥æ³µæ²¡ææ
é |
| | | */ |
| | | @JSONField(alternateNames = {"æ¥è¦", "alarm"}) |
| | | public Byte alarm ;//æ³¨è¥æ³µæ
é |
| | | |
| | | /** |
| | | * è¥ææµéï¼åä½å |
| | | */ |
| | | @JSONField(alternateNames = {"è¥ææµé", "manureFlow"}) |
| | | public Float manureFlow ; |
| | | |
| | | /** |
| | | * åä½ç§ |
| | | */ |
| | | @JSONField(alternateNames = {"注è¥ç»è¿æ¶é´", "manureTime"}) |
| | | public Integer manureTime ; |
| | | |
| | | /** |
| | | * åä½ç§ |
| | | */ |
| | | @JSONField(alternateNames = {"æ
æç»è¿æ¶é´", "stirTime"}) |
| | | public Integer stirTime ; |
| | | |
| | | /** |
| | | * åä½ç§ |
| | | */ |
| | | @JSONField(alternateNames = {"æ
æè®¾å®æ¶é´", "stirDuration"}) |
| | | public Integer stirDuration ; |
| | | |
| | | /** |
| | | * åä½ç§ |
| | | */ |
| | | @JSONField(alternateNames = {"注è¥è®¾å®æ¶é´", "injectDuration"}) |
| | | public Integer injectDuration ; |
| | | |
| | | @JSONField(name = "flexem_timestamp") |
| | | public Long devDt ;//è®¾å¤æ¶é´ |
| | |
| | | } |
| | | |
| | | public String getDevDtStr() { |
| | | if(devDt == null){ |
| | | if(devDt != null){ |
| | | return DateTime.yyyy_MM_dd_HH_mm_ss(DateTime.getDate(devDt)) ; |
| | | }else{ |
| | | return "" ; |
| | |
| | | StringBuilder sb = new StringBuilder(); |
| | | sb.append("æ°´è¥æ°æ®=>") ; |
| | | sb.append(" æ¶æ¯IDï¼" + messageId + ", ") ; |
| | | sb.append(" æ
æè¿è¡1ï¼" + stirRunning1 + ", ") ; |
| | | sb.append(" æ
æè¿è¡2ï¼" + stirRunning2 + ", ") ; |
| | | sb.append(" æ
æè¿è¡3ï¼" + stirRunning3 + ", ") ; |
| | | sb.append(" æ
æè¿è¡4ï¼" + stirRunning4 + ", ") ; |
| | | sb.append(" 注è¥è¿è¡ï¼" + injectRunning + ", ") ; |
| | | sb.append(" çæºè¿è¡ï¼" + irrRunning + ", ") ; |
| | | sb.append(" æ¥è¦ï¼" + alarm + ", ") ; |
| | | sb.append(" è¥ææµéï¼" + manureFlow + ", ") ; |
| | | sb.append(" æ³¨è¥æ¶é¿ï¼" + manureTime + ", ") ; |
| | | sb.append(" æ
ææ¶é¿ï¼" + stirTime + ", ") ; |
| | | sb.append(" 注è¥ç»è¿æ¶é´ï¼" + manureTime + ", ") ; |
| | | sb.append(" æ
æç»è¿æ¶é´ï¼" + stirTime + ", ") ; |
| | | sb.append(" 注è¥è®¾å®æ¶é´ï¼" + injectDuration + ", ") ; |
| | | sb.append(" æ
æè®¾å®æ¶é´ï¼" + stirDuration + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + devDt + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + this.getDevDtStr() + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + this.getDevDtStr()) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | |
| | | @JSONField(name = "flexem_message_id") |
| | | public Integer messageId ;//æ¶æ¯ID |
| | | |
| | | public Integer no ;//æµç«ç¼å·ï¼å
¶ä¸å¨JSONæ°æ®ä¸ï¼å
¶ä¸ä¸»é¢ä¸ |
| | | public Integer no ;//æµç«ç¼å·ï¼å
¶ä¸å¨JSONæ°æ®ä¸ï¼å
¶å¨ä¸»é¢ä¸ |
| | | |
| | | @JSONField(name = "å壤湿度1") |
| | | public Float soilHumidity1 ;//å壤湿度1 |
| | | public Float soilHumidity1 ; |
| | | |
| | | @JSONField(name = "å壤湿度2") |
| | | public Float soilHumidity2 ;//å壤湿度2 |
| | | public Float soilHumidity2 ; |
| | | |
| | | @JSONField(name = "å壤湿度3") |
| | | public Float soilHumidity3 ;//å壤湿度3 |
| | | public Float soilHumidity3 ; |
| | | |
| | | @JSONField(name = "å壤湿度4") |
| | | public Float soilHumidity4 ;//å壤湿度4 |
| | | public Float soilHumidity4 ; |
| | | |
| | | @JSONField(name = "å壤湿度5") |
| | | public Float soilHumidity5 ; |
| | | |
| | | @JSONField(name = "å壤湿度1") |
| | | public Float soilTemperature1 ;//å壤温度1 |
| | | public Float soilTemperature1 ; |
| | | |
| | | @JSONField(name = "å壤温度2") |
| | | public Float soilTemperature2 ;//å壤温度2 |
| | | public Float soilTemperature2 ; |
| | | |
| | | @JSONField(name = "å壤温度3") |
| | | public Float soilTemperature3 ;//å壤温度3 |
| | | public Float soilTemperature3 ; |
| | | |
| | | @JSONField(name = "å壤温度4") |
| | | public Float soilTemperature4 ;//å壤温度4 |
| | | public Float soilTemperature4 ; |
| | | |
| | | @JSONField(name = "å壤温度5") |
| | | public Float soilTemperature5 ; |
| | | |
| | | @JSONField(name = "flexem_timestamp") |
| | | public Long devDt ;//è®¾å¤æ¶é´ |
| | |
| | | } |
| | | |
| | | public String getDevDtStr() { |
| | | if(devDt == null){ |
| | | if(devDt != null){ |
| | | return DateTime.yyyy_MM_dd_HH_mm_ss(DateTime.getDate(devDt)) ; |
| | | }else{ |
| | | return "" ; |
| | |
| | | sb.append(" å壤温度3ï¼" + soilTemperature3 + ", ") ; |
| | | sb.append(" å壤温度4ï¼" + soilTemperature4 + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + devDt + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + this.getDevDtStr() + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + this.getDevDtStr()) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | |
| | |
| | | @JSONField(name = "flexem_message_id") |
| | | public Integer messageId ;//æ¶æ¯ID |
| | | |
| | | public Integer no ;//æµç«ç¼å·ï¼å
¶ä¸å¨JSONæ°æ®ä¸ï¼å
¶ä¸ä¸»é¢ä¸ |
| | | public Integer no ;//æµç«ç¼å·ï¼å
¶ä¸å¨JSONæ°æ®ä¸ï¼å
¶å¨ä¸»é¢ä¸ |
| | | |
| | | @JSONField(name = "äºæ°§å碳") |
| | | public Integer carbonDioxide ;//äºæ°§å碳 |
| | | //@JSONField(name = "äºæ°§å碳") |
| | | //public Integer carbonDioxide ; |
| | | |
| | | @JSONField(name = "å
ç
§å¼ºåº¦") |
| | | public Integer lightIntensity ;//å
ç
§å¼ºåº¦ |
| | | |
| | | @JSONField(name = "大æ°åå") |
| | | public Integer atmosphericPressure ;//大æ°åå |
| | | //@JSONField(name = "大æ°åå") |
| | | //public Integer atmosphericPressure ; |
| | | |
| | | @JSONField(name = "ç©ºæ°æ¸©åº¦") |
| | | public Integer airTemperature ;//ç©ºæ°æ¸©åº¦ |
| | | public Float airTemperature ; |
| | | |
| | | @JSONField(name = "ç©ºæ°æ¹¿åº¦") |
| | | public Integer airHumidity ;//ç©ºæ°æ¹¿åº¦ |
| | | public Float airHumidity ; |
| | | |
| | | @JSONField(name = "PM2.5") |
| | | public Integer pm25 ;//PM2.5 |
| | | @JSONField(name = "ç´«å¤çº¿") |
| | | public Integer ultraviolet ; |
| | | |
| | | @JSONField(name = "PM10") |
| | | public Integer pm10 ;//PM10 |
| | | @JSONField(name = "å
ç
§å¼ºåº¦") |
| | | public Integer lightIntensity ; |
| | | |
| | | @JSONField(name = "é¨é") |
| | | public Float rainfall ; |
| | | |
| | | @JSONField(name = "é£é") |
| | | public Float windSpeed ; |
| | | |
| | | @JSONField(name = "é£å") |
| | | public Integer windDirection ; |
| | | |
| | | |
| | | @JSONField(name = "flexem_timestamp") |
| | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder(); |
| | | sb.append("æ°è±¡æ°æ®=>") ; |
| | | //sb.append(" äºæ°§å碳ï¼" + carbonDioxide + ", ") ; |
| | | //sb.append(" 大æ°ååï¼" + atmosphericPressure + ", ") ; |
| | | sb.append(" æ¶æ¯IDï¼" + messageId + ", ") ; |
| | | sb.append(" äºæ°§å碳ï¼" + carbonDioxide + ", ") ; |
| | | sb.append(" å
ç
§å¼ºåº¦ï¼" + lightIntensity + ", ") ; |
| | | sb.append(" 大æ°ååï¼" + atmosphericPressure + ", ") ; |
| | | sb.append(" ç©ºæ°æ¸©åº¦ï¼" + airTemperature + ", ") ; |
| | | sb.append(" ç©ºæ°æ¹¿åº¦ï¼" + airHumidity + ", ") ; |
| | | sb.append(" PM2.5ï¼" + pm25 + ", ") ; |
| | | sb.append(" PM10ï¼" + pm10 + ", ") ; |
| | | sb.append(" ç´«å¤çº¿ï¼" + ultraviolet + ", ") ; |
| | | sb.append(" å
ç
§å¼ºåº¦ï¼" + lightIntensity + ", ") ; |
| | | sb.append(" é¨éï¼" + rainfall + ", ") ; |
| | | sb.append(" é£éï¼" + windSpeed + ", ") ; |
| | | sb.append(" é£åï¼" + windDirection + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + devDt + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + this.getDevDtStr() + ", ") ; |
| | | sb.append(" è®¾å¤æ¶é´ï¼" + this.getDevDtStr() ) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrGlobal.command; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol.CommandBackParam; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.pipIrrGlobal.daoPr.PrStManureMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrStManure; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; |
| | | import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/5/6 11:41 |
| | | * @Description |
| | | */ |
| | | public class Command4MqttSv extends Web2RtuMw { |
| | | |
| | | |
| | | /** |
| | | * 仿°æ®åºä¸æ¥è¯¢æ°´è¥æºå¯¹è±¡ |
| | | * @param prStManureDao |
| | | * @param manureId |
| | | * @return |
| | | */ |
| | | public PrStManure getManure(PrStManureMapper prStManureDao, Long manureId){ |
| | | return prStManureDao.selectByPrimaryKey(manureId); |
| | | } |
| | | |
| | | /** |
| | | * æ£æ¥åè®®æ¯å¦æ¯æ |
| | | * @param ctrlPo |
| | | * @return |
| | | */ |
| | | public String checkProtocol(PrStManure ctrlPo){ |
| | | return null ; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®åè®®è·åå½ä»¤åç§° |
| | | * @param nowComCode |
| | | * @param protocol |
| | | * @return |
| | | */ |
| | | public String getCommandName(String nowComCode, String protocol, Short protocolVer){ |
| | | if(protocol.equals(ProtocolConstantSdV1.protocolName) |
| | | && protocolVer.equals(ProtocolConstantSdV1.protocolVer)) { |
| | | return CodeSdV1.getCodeName(nowComCode) ; |
| | | } |
| | | return null ; |
| | | } |
| | | |
| | | /** |
| | | * ä¿åå½ä»¤åå²è®°å½ |
| | | * @param rmCommandHistoryDao |
| | | * @param comId |
| | | * @param protocol |
| | | * @param commandCode |
| | | * @param commandName |
| | | * @param manureId |
| | | * @param rtuAddr |
| | | * @param param |
| | | * @param operator |
| | | * @return |
| | | */ |
| | | public RmCommandHistory saveComHistoryPo(RmCommandHistoryMapper rmCommandHistoryDao, |
| | | Long comId, |
| | | String protocol, |
| | | String commandCode, |
| | | String commandName, |
| | | Long manureId, |
| | | String rtuAddr, |
| | | Object param, |
| | | Long operator) { |
| | | RmCommandHistory po = new RmCommandHistory(); |
| | | po.setComId(comId); |
| | | po.setCommandCode(commandCode); |
| | | po.setCommandName(commandName); |
| | | po.setIntakeId(manureId); |
| | | po.setRtuAddr(rtuAddr); |
| | | po.setProtocol(protocol); |
| | | po.setParam((JSONObject) JSON.toJSON(param)); |
| | | po.setSendTime(new Date()); |
| | | po.setOperator(operator); |
| | | int count = rmCommandHistoryDao.insertSelective(po) ; |
| | | if(count == 0){ |
| | | po = null ; |
| | | } |
| | | return po; |
| | | } |
| | | |
| | | /** |
| | | * å¤çéä¿¡ä¸é´ä»¶è¿åçå½ä»¤å¤çç»æ |
| | | * @param res |
| | | * @return |
| | | */ |
| | | public String dealMwDealResponse(BaseResponse res){ |
| | | if(res != null){ |
| | | Command reCom = JSON.parseObject(res.getContent() == null ? null : JSON.toJSONString(res.getContent()), Command.class) ; |
| | | CommandBackParam bakParam = JSON.parseObject((reCom== null || reCom.param == null) ? null : JSON.toJSONString(reCom.param), CommandBackParam.class) ; |
| | | if(res.isSuccess()){ |
| | | if(bakParam != null){ |
| | | if(bakParam.getSuccess().booleanValue()){ |
| | | //éä¿¡ä¸é´ä»¶æåå¤çäºå½ä»¤ |
| | | //çå¾
æ§å¶å¨æ¥æ¶å¹¶æ§è¡å½ä»¤åçåºçï¼ç¶åéä¿¡ä¸é´ä»¶éç¥æ¬æ¨¡å |
| | | return null ; |
| | | }else{ |
| | | return "éä¿¡ä¸é´ä»¶å¤çå½ä»¤å¤±è´¥ï¼å¤±è´¥ä¿¡æ¯ï¼" + bakParam.getMessage(); |
| | | } |
| | | }else{ |
| | | return "éä¿¡ä¸é´ä»¶è¿åå½ä»¤ç»æä¸ä¸å
å«CommandBackParamç±»ååæ°"; |
| | | } |
| | | }else{ |
| | | if(bakParam != null){ |
| | | if(bakParam.getSuccess().booleanValue()){ |
| | | //éä¿¡ä¸é´ä»¶æåå¤çäºå½ä»¤ |
| | | //çå¾
æ§å¶å¨æ¥æ¶å¹¶æ§è¡å½ä»¤åçåºçï¼ç¶åéä¿¡ä¸é´ä»¶éç¥æ¬æ¨¡å |
| | | return "éä¿¡ä¸é´ä»¶å¤çå½ä»¤å¤±è´¥ï¼å¤±è´¥ä¿¡æ¯ï¼" + (res.getMsg() == null? "" : ("ï¼" + res.getMsg())) ; |
| | | }else{ |
| | | return "éä¿¡ä¸é´ä»¶å¤çå½ä»¤å¤±è´¥ï¼å¤±è´¥ä¿¡æ¯ï¼" + bakParam.getMessage(); |
| | | } |
| | | }else{ |
| | | return "éä¿¡ä¸é´ä»¶å¤çå½ä»¤å¤±è´¥ï¼å¤±è´¥ä¿¡æ¯ï¼" + (res.getMsg() == null? "" : ("ï¼" + res.getMsg())) ; |
| | | } |
| | | } |
| | | }else{ |
| | | return "éä¿¡ä¸é´ä»¶è¿åå½ä»¤ç»æä¸ºnull"; |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | */ |
| | | VoUnclosedParam getUncloseParam(@Param("onLineMap") String onLineMap, @Param("intakeId")Long intakeId); |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®åæ°´å£IDè·åè¯¥åæ°´å£æªå
³éåæ°ï¼å¹³å°éæ©åæ°´å£å
³éä½¿ç¨ |
| | | * @param intakeId |
| | | * @return |
| | | */ |
| | | VoUnclosedParam getUncloseParamByCd(@Param("onLineMap") String onLineMap, @Param("intakeId")Long intakeId, @Param("code")String code); |
| | | |
| | | /** |
| | | * æ ¹æ®æå®æ¡ä»¶è·åå½ä»¤æ¥å¿åå²è®°å½æ»æ° |
| | | * @param params |
| | |
| | | * @return |
| | | */ |
| | | VoTermCard getTermCardInfo(@Param("cardAddr")String cardAddr); |
| | | |
| | | /** |
| | | * è·åå·²æå¤±æ°´å¡åè¡¨è®°å½æ°é |
| | | * @param params |
| | | * @return |
| | | */ |
| | | Long getLostCardsCount(Map<?, ?> params); |
| | | |
| | | /** |
| | | * è·åå·²æå¤±æ°´å¡å表 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | List<VoCards> getLostCards(Map<?, ?> params); |
| | | |
| | | /** |
| | | * æ ¹æ®æ°´å¡ç¼å·è·åå¡ä¿¡æ¯ |
| | | * @param cardNum |
| | | * @return |
| | | */ |
| | | VoCardByClientNum getCardByCardNum(@Param("cardNum") String cardNum); |
| | | } |
| | |
| | | public Long id; |
| | | |
| | | /** |
| | | * FBoxåºåå· |
| | | */ |
| | | @Schema(description = "FBoxåºåå·", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | public String fboxId ; |
| | | |
| | | /** |
| | | * æ°´è¥ç«ç¼å· |
| | | */ |
| | | @Schema(description = "æ°´è¥ç«ç¼å·", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | |
| | | public Long id; |
| | | |
| | | /** |
| | | * FBoxåºåå· |
| | | */ |
| | | @Schema(description = "FBoxåºåå·", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | public String fboxId ; |
| | | |
| | | /** |
| | | * 墿
ç«ç¼å· |
| | | */ |
| | | @Schema(description = "墿
ç«ç¼å·", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | |
| | | public Long id; |
| | | |
| | | /** |
| | | * FBoxåºåå· |
| | | */ |
| | | @Schema(description = "FBoxåºåå·", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | public String fboxId ; |
| | | |
| | | /** |
| | | * æ°è±¡ç«ç¼å· |
| | | */ |
| | | @Schema(description = "æ°è±¡ç«ç¼å·", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | |
| | | } |
| | | |
| | | /** |
| | | * å建å¤é¨å½ä»¤ï¼åç»æ§å¶å¨ï¼ |
| | | * @param fboxId FBox设å¤åºåå· |
| | | * @param comId å½ä»¤ID |
| | | * @param code å½ä»¤code |
| | | * @return |
| | | */ |
| | | public Command createMQTTCommand(String fboxId, String comId, String protocol, Short protocolVer, String code) { |
| | | Command com = new Command(); |
| | | com.id = comId; |
| | | com.rtuAddr = fboxId; |
| | | com.code = code ; |
| | | com.protocol = protocol ; |
| | | com.protocolVersion = protocolVer ; |
| | | com.type = CommandType.mqttCommand; |
| | | return com ; |
| | | } |
| | | |
| | | /** |
| | | * å建å¤é¨éä¼ å½ä»¤ï¼åç»æ§å¶å¨ï¼ |
| | | * @param comId å½ä»¤ID |
| | | * @param code å½ä»¤code |
| New file |
| | |
| | | package com.dy.pipIrrGlobal.voSe; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-01-15 |
| | | * @LastEditTime 2025-01-15 |
| | | * @Description æ ¹æ®åæ·ç¼å·è·åå¡ä¿¡æ¯è¿å对象 |
| | | */ |
| | | |
| | | @Data |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @Builder |
| | | @Schema(name = "æ ¹æ®åæ·ç¼å·è·åå¡ä¿¡æ¯è¿å对象") |
| | | public class VoCardByClientNum { |
| | | |
| | | @Schema(description = "æ°´å¡ç¼å·") |
| | | private String cardNum; |
| | | |
| | | @Schema(description = "å¡ç¶æç ") |
| | | private Integer cardState; |
| | | |
| | | @Schema(description = "å¡ç±»å") |
| | | private String cardType; |
| | | |
| | | @Schema(description = "åæ·å§å") |
| | | private String clientName; |
| | | |
| | | @Schema(description = "åæ·ç¼å·") |
| | | private String clientNum; |
| | | |
| | | @Schema(description = "身份è¯å·") |
| | | private Long idCard; |
| | | |
| | | @Schema(description = "ä½é¢") |
| | | private String money; |
| | | |
| | | @Schema(description = "ææºå·") |
| | | private Long phone; |
| | | |
| | | @Schema(description = "ç¶æåç§°") |
| | | private String stateName; |
| | | } |
| | |
| | | # gz: 8103 9103 |
| | | # lz: 8104 9104 |
| | | # jc: 8105 9105 |
| | | # jyg: 8106 9106 |
| | | pipIrr_mw_webPort: 8070 #éä¿¡ä¸é´ä»¶ä¸åºç¨ï¼ä¸è½å¨web模åç³»ç»ä¸åºç¨ |
| | | pipIrr_mw_actutorPort: 9070 #éä¿¡ä¸é´ä»¶ä¸åºç¨ï¼ä¸è½å¨web模åç³»ç»ä¸åºç¨ |
| | | |
| | |
| | | # gz: pipIrr_gz |
| | | # lz: pipIrr_lz |
| | | # jc: pipIrr_jc |
| | | # jyg: pipIrr_jyg |
| | | spring_datasource_url_dbname: pipIrr_ym #æ°æ®åºåç§° |
| | |
| | | common: |
| | | # 233æå¡å¨ï¼ym,mj,sp,test |
| | | # 121æå¡å¨ï¼mq,yq,hlj,gz,lz,jc |
| | | spring_main_datasource_names: mq,yq,hlj,gz,lz,jc |
| | | # 121æå¡å¨ï¼mq,yq,hlj,gz,lz,jc,jyg |
| | | spring_main_datasource_names: mq,yq,hlj,gz,lz,jc,jyg |
| | | |
| | | # èæå¡è¡¨: |
| | | # åæ®µin_useæä¸ºå ç¨ç¶æï¼å½ä¸ºtrueæ¶ç»ä¸è®¾ç½®å¼ä¸º0 |
| New file |
| | |
| | | # æ°æ®æºé
ç½® |
| | | spring: |
| | | datasource: #é
ç½®æ°æ®æº |
| | | jyg: |
| | | #name: ym |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | # url: jdbc:mysql://192.168.40.166:3306/pipIrr_jyg?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull |
| | | # url: jdbc:mysql://8.130.130.233:3306/pipIrr_jyg?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull |
| | | url: jdbc:mysql://127.0.0.1:3306/pipIrr_jyg?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull |
| | | username: root |
| | | password: dysql,;.abc!@# |
| | | druid: |
| | | # æ°æ®æºåç§°ï¼å½åå¨å¤ä¸ªæ°æ®æºæ¶ï¼è®¾ç½®ååå¯ä»¥å¾æ¹ä¾¿çæ¥è¿è¡åºå,é»è®¤èªå¨çæåç§°ï¼æ ¼å¼æ¯ï¼"DataSource-" + System.identityHashCode(this) |
| | | name: druid-mysql-jyg |
| | | #é
ç½®åå§å大å°ãæå°ãæå¤§ |
| | | initialSize: 10 |
| | | minIdle: 10 |
| | | maxActive: 100 |
| | | # è·åè¿æ¥æ¶æå¤§çå¾
æ¶é´,å使¯«ç§ãé
ç½®äºmaxWaitä¹å,缺çå¯ç¨å
¬å¹³é,å¹¶åæç伿æä¸é,妿éè¦å¯ä»¥éè¿é
ç½®useUnfairLock屿§ä¸ºtrue使ç¨éå
¬å¹³é |
| | | maxWait: 60000 |
| | | #é
ç½®é´éå¤ä¹
è¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å
³éç空é²è¿æ¥ï¼å使¯«ç§ã é»è®¤æ¯60sï¼å¤ªé¿å¯è½ä¼å¯¼è´æ æ³åæ¶æ£æµå°è¿æ¥ä¸æ |
| | | timeBetweenEvictionRunsMillis: 60000 |
| | | #é
ç½®ä¸ä¸ªè¿æ¥å¨è¿æ¥æ± ä¸çæå°çåæ¶é´ãæå¤§çåæ¶é´ï¼è¶
è¿æå¤§çåæ¶é´ä¼è¢«ç§»é¤ï¼å使¯«ç§ã |
| | | minEvictableIdleTimeMillis: 300000 |
| | | maxEvictableIdleTimeMillis: 900000 |
| | | #æ¢æ´»ãéªè¯é¾æ¥æææ§çæ¥è¯¢ï¼æ°çæ¬é»è®¤ä½¿ç¨mysqlPingä»£æ¿ |
| | | #validation-query: select 1 #注éæï¼éç¨é»è®¤çmysqlPing |
| | | #é
ç½®ä»è¿æ¥æ± è·åè¿æ¥æ¶ï¼å½è¿æ¥ç©ºé²æ¶é´å¤§äºtimeBetweenEvictionRunsMillisæ¶æ¯å¦æ£æ¥è¿æ¥æææ§ï¼trueæ¯æ¬¡é½æ£æ¥ï¼false䏿£æ¥ã |
| | | testWhileIdle: true |
| | | #é
ç½®ä»è¿æ¥æ± è·åè¿æ¥æ¶ååè¿æ¥æ± å½è¿è¿æ¥æ¶ï¼æ¯å¦æ£æ¥è¿æ¥æææ§ |
| | | #æ¯æ¬¡è·åæå½è¿è¿æ¥é½æ£æµå¤ªé¢ç¹ï¼é¤éç¹å«éè¦æç½ç»ç¹å«ä¸å¯é çæ
åµï¼å»ºè®®ç¨testWhileIdle + timeBetweenEvictionRunsMillis代æ¿ã--> |
| | | testOnBorrow: false |
| | | testOnReturn: false |
| | | #é
ç½®æ¯å¦å®ææ¢æ´»ãæ¢æ´»é´é, é»è®¤120s |
| | | keepAlive: true |
| | | #keepAliveBetweenTimeMillis must be greater than timeBetweenEvictionRunsMillis |
| | | keepAliveBetweenTimeMillis: 1200000 |
| | | #é
ç½®ä¸ä¸ªè¿æ¥æå¤§ä½¿ç¨æ¬¡æ°ï¼é¿å
é¿æ¶é´ä½¿ç¨ç¸åè¿æ¥é ææå¡å¨ç«¯è´è½½ä¸åè¡¡ã |
| | | phyMaxUseCount: 1000 |
| | | #æ¯å¦ç¼åpreparedStatementï¼ä¹å°±æ¯PSCacheãPSCacheå¯¹æ¯ææ¸¸æ çæ°æ®åºæ§è½æåå·¨å¤§ï¼æ¯å¦è¯´oracleãå¨mysqlä¸å»ºè®®å
³éã |
| | | poolPreparedStatements: false |
| | | #è¦å¯ç¨PSCacheï¼å¿
é¡»é
置大äº0ï¼å½å¤§äº0æ¶ï¼poolPreparedStatementsèªå¨è§¦åä¿®æ¹ä¸ºtrueãå¨Druidä¸ï¼ä¸ä¼åå¨Oracleä¸PSCacheå ç¨å
åè¿å¤çé®é¢ï¼å¯ä»¥æè¿ä¸ªæ°å¼é
置大ä¸äºï¼æ¯å¦è¯´100 |
| | | maxOpenPreparedStatements: -1 |
| | | #æå®æ¯ä¸ªè¿æ¥ä¸PSCacheçå¤§å° |
| | | maxPoolPreparedStatementPerConnectionSize: 20 |
| | | #屿§ç±»åæ¯å符串ï¼éè¿å«åçæ¹å¼é
ç½®æ©å±æä»¶ï¼å¸¸ç¨çæä»¶æï¼ |
| | | #çæ§ç»è®¡ç¨çfilter:statï¼æ¥å¿ç¨çfilter:log4jï¼é²å¾¡sql注å
¥çfilter:wall |
| | | #filters: stat,wall,config |
| | | filters: wall,config |
| | | webStatFilter: |
| | | # æ·»å è¿æ»¤è§å |
| | | urlPattern: /* |
| | | # 忽ç¥è¿æ»¤æ ¼å¼ |
| | | exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" |
| | | statViewServlet: |
| | | # 设置ipç½åå |
| | | # allow: 127.0.0.1 |
| | | # 设置ipé»ååï¼ä¼å
级é«äºç½åå |
| | | deny: |
| | | # 设置æ§å¶å°ç®¡çç¨æ· |
| | | # loginUsername: root |
| | | # loginPassword: root |
| | | # æ¯å¦å¯ä»¥éç½®æ°æ® |
| | | resetEnable: false |
| | | # å¼å¯druidçæ§é¡µé¢ |
| | | #enabled: true |
| | | enabled: false |
| | | |
| | |
| | | comSendUrl: "http://127.0.0.1:8105/rtuMw/com/send" |
| | | #Rtuè¿ç¨å½ä»¤ç»æåè°å°å |
| | | rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive" |
| | | #MQTTè¿ç¨å½ä»¤ç»æåè°å°å |
| | | mqttCallbackUrl_rm: "http://127.0.0.1:8081/remote/mqttRes/receive" |
| | | #æ¥æ¶éä¿¡ä¸é´ä»¶æ¶æ¯ä¸å¿æ¶æ¯çå°å |
| | | mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive" |
| | | #rtuè¿ç¨åçº§ç¶æä¿¡æ¯åè°å°å |
| | |
| | | jc: |
| | | url: "http://127.0.0.1:8105" |
| | | comSendUrl: "http://127.0.0.1:8105/rtuMw/com/send" |
| | | jyg: |
| | | url: "http://127.0.0.1:8106" |
| | | comSendUrl: "http://127.0.0.1:8106/rtuMw/com/send" |
| | | #Rtuè¿ç¨å½ä»¤ç»æåè°å°å |
| | | rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive" |
| | | #MQTTè¿ç¨å½ä»¤ç»æåè°å°å |
| | | mqttCallbackUrl_rm: "http://127.0.0.1:8081/remote/mqttRes/receive" |
| | | #æ¥æ¶éä¿¡ä¸é´ä»¶æ¶æ¯ä¸å¿æ¶æ¯çå°å |
| | | mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive" |
| | | #rtuè¿ç¨åçº§ç¶æä¿¡æ¯åè°å°å |
| | |
| | | secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 |
| | | at-all: true |
| | | mobile: 18602657034 |
| | | jyg: |
| | | enable: false #æ¯å¦å¯ç¨ |
| | | robot: |
| | | url: https://oapi.dingtalk.com/robot/send |
| | | access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f |
| | | secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 |
| | | at-all: true |
| | | mobile: 18602657034 |
| | | |
| | | #è§é¢çæ§ç¸å
³ |
| | | video: |
| | |
| | | <item3 typeName="设å¤ä¿å
»"/> |
| | | </taskType> |
| | | </org6> |
| | | <org7 tag="jyg" name="å峪å
³" enable="true"> |
| | | <districts> |
| | | <province name="çèç" num="62" level="0"> |
| | | <city name="å峪å
³å¸" num="02" level="1"> |
| | | <country name="æ°åé" num="01" level="2" /> |
| | | </city> |
| | | </province> |
| | | </districts> |
| | | <dictionaries> |
| | | <dict code="icProtocol" title="ICå¡åè®®" valueType="2"> |
| | | <dictItem> |
| | | <!-- é³å»ºä¼çæ¬ICå¡åè®® å¡ä¸ç¼å·å·²ç»å é¿ï¼ä¸çæ±æµ·çæ¬ä¸è´ï¼ï¼ä¸çº¯èçæ¬åè®®ä¸å --> |
| | | <item1 dictCode="icProtocol" value="icP202203" name="èå¡åè®®" status="1" sort="0" /> |
| | | <!-- çæ±æµ·çæ¬ICå¡åè®® --> |
| | | <item2 dictCode="icProtocol" value="icP202404" name="æ°å¡åè®®" status="0" sort="1" /> |
| | | </dictItem> |
| | | </dict> |
| | | </dictionaries> |
| | | <user name="è¶
级管çå" phone="admin" password="dyyjy" supperAdmin="1" /> |
| | | <payments> |
| | | <item1 name="ç°é"/> |
| | | <item2 name="POSæº"/> |
| | | <item3 name="é¶è¡è½¬è´¦"/> |
| | | </payments> |
| | | <settings> |
| | | <item1 item_name="lng" item_value="98.28875541687012" remarks="ç»åº¦"/> |
| | | <item2 item_name="lat" item_value="39.77140971937612" remarks="纬度"/> |
| | | <item3 item_name="zoomMp" item_value="12" remarks="ææºå°å¾ç¼©æ¾çº§å«"/> |
| | | <item4 item_name="zoomPc" item_value="19" remarks="PCæºå°å¾ç¼©æ¾çº§å«"/> |
| | | <item5 item_name="projectName" item_value="é«ææºæ
§ç®¡çå¾®çäºæå¡ç®¡çå¹³å°" remarks="项ç®åç§°"/> |
| | | </settings> |
| | | <waterTypes> |
| | | <item1 typeName="çæºç¨æ°´"/> |
| | | <item2 typeName="å·¥ä¸ç¨æ°´"/> |
| | | <item3 typeName="çæ´»ç¨æ°´"/> |
| | | <item4 typeName="å
»æ®ç¨æ°´"/> |
| | | <item5 typeName="绿åç¨æ°´"/> |
| | | </waterTypes> |
| | | <waterPrice price="0.90" /> |
| | | <irrigateProfile> |
| | | <item1 defaultValue = "10" unit = "2" sort = "1" type = "1"/> |
| | | <item2 defaultValue = "20" unit = "2" sort = "2" type = "1" /> |
| | | <item3 defaultValue = "1" unit = "1" sort = "3" type = "1"/> |
| | | <item4 defaultValue = "2" unit = "1" sort = "4" type = "1"/> |
| | | <item5 defaultValue = "20" unit = "3" sort = "1" type = "2"/> |
| | | <item6 defaultValue = "30" unit = "3" sort = "2" type = "2"/> |
| | | <item7 defaultValue = "50" unit = "3" sort = "3" type = "2"/> |
| | | <item8 defaultValue = "80" unit = "3" sort = "4" type = "2"/> |
| | | </irrigateProfile> |
| | | <rechargeProfile> |
| | | <item1 rechargeAmount = "50" sort = "1"/> |
| | | <item2 rechargeAmount = "100" sort = "2" /> |
| | | <item3 rechargeAmount = "200" sort = "3"/> |
| | | <item4 rechargeAmount = "300" sort = "4"/> |
| | | <item5 rechargeAmount = "500" sort = "5"/> |
| | | <item6 rechargeAmount = "1000" sort = "6"/> |
| | | </rechargeProfile> |
| | | <taskType> |
| | | <item1 typeName="设å¤å®è£
"/> |
| | | <item2 typeName="设å¤ç»´ä¿®"/> |
| | | <item3 typeName="设å¤ä¿å
»"/> |
| | | </taskType> |
| | | </org7> |
| | | </orgs> |
| | | </config> |
| | |
| | | <!--@Table pr_st_manure--> |
| | | <id column="id" jdbcType="BIGINT" property="id" /> |
| | | <result column="no" jdbcType="INTEGER" property="no" /> |
| | | <result column="fbox_id" jdbcType="VARCHAR" property="fboxId" /> |
| | | <result column="name" jdbcType="VARCHAR" property="name" /> |
| | | <result column="lng" jdbcType="DOUBLE" property="lng" /> |
| | | <result column="lat" jdbcType="DOUBLE" property="lat" /> |
| | |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, `no`, `name`, lng, lat, remark, deleted |
| | | id, fbox_id,`no`, `name`, lng, lat, remark, deleted |
| | | </sql> |
| | | <sql id="part_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, `no`, `name`, lng, lat, remark |
| | | id, fbox_id, `no`, `name`, lng, lat, remark |
| | | </sql> |
| | | <sql id="simple_Column_List"> |
| | | <!--@mbg.generated--> |
| | |
| | | </delete> |
| | | <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStManure"> |
| | | <!--@mbg.generated--> |
| | | insert into pr_st_manure (id, `no`, `name`, lng, |
| | | insert into pr_st_manure (id, fbox_id, `no`, `name`, lng, |
| | | lat, remark, deleted) |
| | | values (#{id,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, |
| | | #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR}, |
| | | #{deleted,jdbcType=TINYINT}) |
| | | values (#{id,jdbcType=BIGINT}, #{fboxId,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, |
| | | #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, |
| | | #{remark,jdbcType=VARCHAR},#{deleted,jdbcType=TINYINT}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStManure"> |
| | | <!--@mbg.generated--> |
| | |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | id, |
| | | </if> |
| | | <if test="fboxId != null"> |
| | | fbox_id, |
| | | </if> |
| | | <if test="no != null"> |
| | | `no`, |
| | |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | #{id,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="fboxId != null"> |
| | | #{fboxId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="no != null"> |
| | | #{no,jdbcType=INTEGER}, |
| | |
| | | <!--@mbg.generated--> |
| | | update pr_st_manure |
| | | <set> |
| | | <if test="fboxId != null"> |
| | | fbox_id = #{fboxId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="no != null"> |
| | | `no` = #{no,jdbcType=INTEGER}, |
| | | </if> |
| | |
| | | <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStManure"> |
| | | <!--@mbg.generated--> |
| | | update pr_st_manure |
| | | set `no` = #{no,jdbcType=INTEGER}, |
| | | set fbox_id = #{fboxId,jdbcType=INTEGER}, |
| | | `no` = #{no,jdbcType=INTEGER}, |
| | | `name` = #{name,jdbcType=VARCHAR}, |
| | | lng = #{lng,jdbcType=DOUBLE}, |
| | | lat = #{lat,jdbcType=DOUBLE}, |
| | |
| | | <!--@Table pr_st_soil--> |
| | | <id column="id" jdbcType="BIGINT" property="id" /> |
| | | <result column="no" jdbcType="INTEGER" property="no" /> |
| | | <result column="fbox_id" jdbcType="VARCHAR" property="fboxId" /> |
| | | <result column="name" jdbcType="VARCHAR" property="name" /> |
| | | <result column="lng" jdbcType="DOUBLE" property="lng" /> |
| | | <result column="lat" jdbcType="DOUBLE" property="lat" /> |
| | |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, `no`, `name`, lng, lat, remark, deleted |
| | | id, fbox_id,`no`, `name`, lng, lat, remark, deleted |
| | | </sql> |
| | | <sql id="part_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, `no`, `name`, lng, lat, remark |
| | | id, fbox_id, `no`, `name`, lng, lat, remark |
| | | </sql> |
| | | <sql id="simple_Column_List"> |
| | | <!--@mbg.generated--> |
| | |
| | | </delete> |
| | | <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStSoil"> |
| | | <!--@mbg.generated--> |
| | | insert into pr_st_soil (id, `no`, `name`, lng, |
| | | insert into pr_st_soil (id, fbox_id, `no`, `name`, lng, |
| | | lat, remark, deleted) |
| | | values (#{id,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, |
| | | #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR}, |
| | | #{deleted,jdbcType=TINYINT}) |
| | | values (#{id,jdbcType=BIGINT}, #{fboxId,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, |
| | | #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, |
| | | #{remark,jdbcType=VARCHAR},#{deleted,jdbcType=TINYINT}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStSoil"> |
| | | <!--@mbg.generated--> |
| | |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | id, |
| | | </if> |
| | | <if test="fboxId != null"> |
| | | fbox_id, |
| | | </if> |
| | | <if test="no != null"> |
| | | `no`, |
| | |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | #{id,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="fboxId != null"> |
| | | #{fboxId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="no != null"> |
| | | #{no,jdbcType=INTEGER}, |
| | |
| | | <!--@mbg.generated--> |
| | | update pr_st_soil |
| | | <set> |
| | | <if test="fboxId != null"> |
| | | fbox_id = #{fboxId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="no != null"> |
| | | `no` = #{no,jdbcType=INTEGER}, |
| | | </if> |
| | |
| | | <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStSoil"> |
| | | <!--@mbg.generated--> |
| | | update pr_st_soil |
| | | set `no` = #{no,jdbcType=INTEGER}, |
| | | set fbox_id = #{fboxId,jdbcType=INTEGER}, |
| | | `no` = #{no,jdbcType=INTEGER}, |
| | | `name` = #{name,jdbcType=VARCHAR}, |
| | | lng = #{lng,jdbcType=DOUBLE}, |
| | | lat = #{lat,jdbcType=DOUBLE}, |
| | |
| | | <!--@Table pr_st_weather--> |
| | | <id column="id" jdbcType="BIGINT" property="id" /> |
| | | <result column="no" jdbcType="INTEGER" property="no" /> |
| | | <result column="fbox_id" jdbcType="VARCHAR" property="fboxId" /> |
| | | <result column="name" jdbcType="VARCHAR" property="name" /> |
| | | <result column="lng" jdbcType="DOUBLE" property="lng" /> |
| | | <result column="lat" jdbcType="DOUBLE" property="lat" /> |
| | |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, `no`, `name`, lng, lat, remark, deleted |
| | | id, fbox_id,`no`, `name`, lng, lat, remark, deleted |
| | | </sql> |
| | | <sql id="part_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, `no`, `name`, lng, lat, remark |
| | | id, fbox_id, `no`, `name`, lng, lat, remark |
| | | </sql> |
| | | <sql id="simple_Column_List"> |
| | | <!--@mbg.generated--> |
| | |
| | | </delete> |
| | | <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStWeather"> |
| | | <!--@mbg.generated--> |
| | | insert into pr_st_weather (id, `no`, `name`, lng, |
| | | insert into pr_st_weather (id, fbox_id, `no`, `name`, lng, |
| | | lat, remark, deleted) |
| | | values (#{id,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, |
| | | #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR}, |
| | | #{deleted,jdbcType=TINYINT}) |
| | | values (#{id,jdbcType=BIGINT}, #{fboxId,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, |
| | | #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, |
| | | #{remark,jdbcType=VARCHAR},#{deleted,jdbcType=TINYINT}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStWeather"> |
| | | <!--@mbg.generated--> |
| | |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | id, |
| | | </if> |
| | | <if test="fboxId != null"> |
| | | fbox_id, |
| | | </if> |
| | | <if test="no != null"> |
| | | `no`, |
| | |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | #{id,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="fboxId != null"> |
| | | #{fboxId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="no != null"> |
| | | #{no,jdbcType=INTEGER}, |
| | |
| | | <!--@mbg.generated--> |
| | | update pr_st_weather |
| | | <set> |
| | | <if test="fboxId != null"> |
| | | fbox_id = #{fboxId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="no != null"> |
| | | `no` = #{no,jdbcType=INTEGER}, |
| | | </if> |
| | |
| | | <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStWeather"> |
| | | <!--@mbg.generated--> |
| | | update pr_st_weather |
| | | set `no` = #{no,jdbcType=INTEGER}, |
| | | set fbox_id = #{fboxId,jdbcType=INTEGER}, |
| | | `no` = #{no,jdbcType=INTEGER}, |
| | | `name` = #{name,jdbcType=VARCHAR}, |
| | | lng = #{lng,jdbcType=DOUBLE}, |
| | | lat = #{lat,jdbcType=DOUBLE}, |
| | |
| | | LIMIT 0,1 |
| | | </select> |
| | | |
| | | <!--æ ¹æ®åæ°´å£IDè·åè¯¥åæ°´å£æªå
³éåæ°--> |
| | | <select id="getUncloseParamByCd" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedParam"> |
| | | SELECT com.rtu_addr AS rtuAddr, |
| | | com.param ->> '$.orderNo' AS orderNo, |
| | | com.param ->> '$.icCardNo' AS vcNum |
| | | FROM rm_command_history com |
| | | INNER JOIN pr_controller con ON com.rtu_addr = con.rtuAddr |
| | | INNER JOIN pr_intake inta ON con.intakeId = inta.id |
| | | INNER JOIN JSON_TABLE( |
| | | <!-- '[{"rtuAddr":"620201000029","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',--> |
| | | #{onLineMap}, |
| | | '$[*]' COLUMNS ( |
| | | rtuAddr VARCHAR(20) PATH '$.rtuAddr', |
| | | isOnLine BOOLEAN PATH '$.isOnLine' |
| | | ) |
| | | ) rtus ON com.rtu_addr = rtus.rtuAddr |
| | | WHERE com.command_code = #{code} |
| | | AND con.intakeId = #{intakeId} |
| | | AND NOT EXISTS( |
| | | SELECT * |
| | | FROM rm_command_history |
| | | WHERE (result IS NULL OR result = 1) |
| | | AND (command_code = '93' OR command_code = 'A3' OR command_code = '98') |
| | | AND param ->> '$.orderNo' = com.param ->> '$.orderNo' |
| | | ) |
| | | ORDER BY com.send_time DESC |
| | | LIMIT 0,1 |
| | | </select> |
| | | |
| | | <!--æ ¹æ®æå®æ¡ä»¶è·åå½ä»¤æ¥å¿åå²è®°å½æ»æ°--> |
| | | <select id="getCommandHistoriesCount" resultType="java.lang.Long"> |
| | | SELECT COUNT(*) AS recordCount |
| | |
| | | ORDER BY card.createDt DESC |
| | | LIMIT 1 |
| | | </select> |
| | | |
| | | <!--è·åå·²æå¤±æ°´å¡åè¡¨è®°å½æ°é--> |
| | | <select id="getLostCardsCount" parameterType="java.util.Map" resultType="java.lang.Long"> |
| | | SELECT COUNT(*) AS recordCount |
| | | FROM se_client_card card |
| | | LEFT JOIN se_client cli ON card.clientId = cli.id |
| | | WHERE card.state = 3 |
| | | </select> |
| | | |
| | | <!--è·åå·²æå¤±æ°´å¡å表--> |
| | | <select id="getLostCards" resultType="com.dy.pipIrrGlobal.voSe.VoCards"> |
| | | SELECT cli.clientNum, |
| | | cli.name AS clientName, |
| | | card.cardNum, |
| | | cli.phone, |
| | | cli.idCard, |
| | | card.state AS cardState, |
| | | 'å·²æå¤±' AS stateName, |
| | | 'åæ·å¡' AS cardType, |
| | | FORMAT(card.money, 2) AS money |
| | | FROM se_client_card card |
| | | LEFT JOIN se_client cli ON card.clientId = cli.id |
| | | WHERE card.state = 3 |
| | | ORDER BY card.lossDtDt DESC |
| | | <trim prefix="limit "> |
| | | <if test="start != null and count != null"> |
| | | #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} |
| | | </if> |
| | | </trim> |
| | | </select> |
| | | |
| | | <!--æ ¹æ®æ°´å¡ç¼å·è·åå¡ä¿¡æ¯--> |
| | | <select id="getCardByCardNum" resultType="com.dy.pipIrrGlobal.voSe.VoCardByClientNum"> |
| | | SELECT |
| | | card.cardNum, |
| | | card.state AS cardState, |
| | | 'åæ·å¡' AS cardType, |
| | | cli.name AS clientName, |
| | | cli.clientNum, |
| | | cli.idCard, |
| | | FORMAT(card.money, 1) AS money, |
| | | cli.phone, |
| | | (CASE |
| | | WHEN card.state = 1 THEN 'æ£å¸¸' |
| | | WHEN card.state = 2 THEN '已注é' |
| | | WHEN card.state = 3 THEN 'å·²æå¤±' |
| | | WHEN card.state = 4 THEN 'æ æ' |
| | | ELSE 'æªç¥' |
| | | END) AS stateName |
| | | FROM se_client_card card |
| | | INNER JOIN se_client cli ON card.clientId = cli.id |
| | | WHERE card.cardNum = #{cardNum} |
| | | AND card.state != 4 |
| | | ORDER BY card.createDt DESC |
| | | LIMIT 1 |
| | | </select> |
| | | </mapper> |
| | |
| | | }else{ |
| | | mqVo.svUserPassword = mqVo.svUserPassword.trim() ; |
| | | } |
| | | mqVo.poolMaxSize = conf.getSetAttrPlusInt(doc, "config.mqtt", "poolMaxSize", null, 5, 360000, null); |
| | | if(mqVo.poolMaxSize <= 1 || mqVo.poolMaxSize > 1000){ |
| | | throw new Exception("config.mqtt.poolMaxSizeé
ç½®çè¿æ¥æ± è¿æ¥æå¤§æ°éä¸åæ³") ; |
| | | } |
| | | mqVo.poolMaxSize = conf.getSetAttrPlusInt(doc, "config.mqtt", "poolMaxSize", null, 1, 1000, null); |
| | | |
| | | mqVo.sendInterval = conf.getSetAttrPlusInt(doc, "config.mqtt", "sendInterval", null, 1, 3600, null) * 1000L ; |
| | | |
| | | mqVo.reSendTimesByNoResult = conf.getSetAttrPlusInt(doc, "config.mqtt", "reSendTimesByNoResult", null, 0, 100, null); |
| | | |
| | | mqVo.comCacheTimeout = conf.getSetAttrPlusInt(doc, "config.mqtt", "comCacheTimeout", null, 1, 3600, null) * 1000L ; |
| | | |
| | | mqVo.useMemoryPersistence = conf.getSetAttrBoolean(doc, "config.mqtt", "useMemoryPersistence", null, null) ; |
| | | String proAndDevIds = conf.getSetAttrTxt(doc, "config.mqtt", "protocolAndDeviceIds", null, false, null) ; |
| | | if(proAndDevIds == null || proAndDevIds.trim().equals("")){ |
| | |
| | | return rsMap ; |
| | | } |
| | | } |
| | | |
| | | public static Boolean oneOnLine(String devId){ |
| | | synchronized (map){ |
| | | DevStatus st = map.get(devId) ; |
| | | if(st != null){ |
| | | return st.onLine ; |
| | | } |
| | | return false ; |
| | | } |
| | | } |
| | | /** |
| | | * ç»è®¡å¨çº¿ä¸ä¸å¨çº¿æ
åµ |
| | | */ |
| | |
| | | public MqttPubMsg result ;//ä¸è¡å½ä»¤ |
| | | public Long cachTime ;//ç¼åæ¶å» |
| | | public boolean onceReceivedResult ;//å·²ç»æ¶å°å½ä»¤åºç |
| | | public long lastSendTime = 0 ;//䏿¬¡åéæ¶é´ |
| | | public int sendTimes = 0 ;//å鿬¡æ° |
| | | |
| | | |
| | | public MqttPubMsgNode(MqttPubMsg result){ |
| | | this.result = result ; |
| | | this.cachTime = System.currentTimeMillis() ; |
| | | this.onceReceivedResult = false ; |
| | | this.lastSendTime = 0L ; |
| | | this.sendTimes = 0 ; |
| | | } |
| | | |
| | | /** |
| | |
| | | public boolean dealSelf(Long now){ |
| | | if(this.onceReceivedResult){ |
| | | //å·²ç»æ¶å°å½ä»¤ç»æ |
| | | //è®°å½ç¶æ |
| | | //RtuStatusDealer.commandSuccess(this.result.rtuAddr, this.result.downCode, this.result.downCodeName); |
| | | return true ; |
| | | } |
| | | if(this.sendTimes >= (1 + MqttUnit.confVo.reSendTimesByNoResult)){ |
| | | return this.decideRemoveNodeFromCach(now, null) ; |
| | | } |
| | | if(this.lastSendTime != 0 && now - this.lastSendTime >= MqttUnit.confVo.sendInterval){ |
| | | return this.decideRemoveNodeFromCach(now, null) ; |
| | | } |
| | | boolean noConnect2MqSv = false ; |
| | | MqttManager mqttManager = MqttManager.getInstance() ; |
| | |
| | | noConnect2MqSv = mqttManager.poolIsClose() ; |
| | | if(noConnect2MqSv){ |
| | | //æªæ¾è¿æ¥MQTTæå¡å¨ |
| | | return this.decideRemoveNodeFromCach(now) ; |
| | | return this.decideRemoveNodeFromCach(now, null) ; |
| | | }else{ |
| | | try { |
| | | //妿ç½ç»ä¸å¥½ææç½ï¼æ¤å¤ç¨æ¶è¾é¿ |
| | |
| | | } |
| | | if(noConnect2MqSv){ |
| | | //æªæ¾è¿æ¥MQTTæå¡å¨ |
| | | return this.decideRemoveNodeFromCach(now) ; |
| | | return this.decideRemoveNodeFromCach(now, null) ; |
| | | }else{ |
| | | if(mqttClient != null && mqttClient.isConnected()){ |
| | | try { |
| | | mqttManager.publishMsg(mqttClient, this.result.topic.longName(), this.result.msg); |
| | | this.sendTimes ++ ; |
| | | this.lastSendTime = System.currentTimeMillis() ; |
| | | DevStatusDealer.afterSendPubMessage(this.result.deviceId); |
| | | RtuLogDealer.log4Mqtt(this.result.deviceId, "å叿¶æ¯ 主é¢ï¼" + this.result.topic + " æ¶æ¯ï¼" + this.result.msg); |
| | | log.info("åå¸MQTTæ¶æ¯ï¼ä¸»é¢=" + this.result.topic + "ï¼" + this.result.msg); |
| | | RtuLogDealer.log4Mqtt(this.result.deviceId, "å叿¶æ¯ 主é¢ï¼" + this.result.topic.longName() + " æ¶æ¯ï¼" + this.result.msg); |
| | | log.info("åå¸MQTTæ¶æ¯ï¼ä¸»é¢=" + this.result.topic.longName() + "ï¼" + this.result.msg); |
| | | }catch (Exception e){ |
| | | log.error("MQTTå叿¶æ¯å¤±è´¥ï¼ä¸»é¢=" + this.result.topic + "ï¼" , e); |
| | | log.error("MQTTå叿¶æ¯å¤±è´¥ï¼ä¸»é¢=" + this.result.topic.longName() + "ï¼" , e); |
| | | }finally { |
| | | mqttManager.pushMqttClient(mqttClient); |
| | | } |
| | |
| | | } |
| | | }else{ |
| | | //æªæ¾è¿æ¥MQTTæå¡å¨ |
| | | return this.decideRemoveNodeFromCach(now) ; |
| | | return this.decideRemoveNodeFromCach(now, false) ; |
| | | } |
| | | } |
| | | } |
| | | |
| | | private boolean decideRemoveNodeFromCach(Long now){ |
| | | if(!this.result.isCacheForOffLine){ |
| | | private boolean decideRemoveNodeFromCach(Long now, Boolean isOffLine){ |
| | | if(isOffLine != null && isOffLine.booleanValue() && !this.result.isCacheForOffLine){ |
| | | //ä¸å¨çº¿å½ä»¤ä¸ç¼å |
| | | return true ; |
| | | }else{ |
| | | //ä¸å¨çº¿å½ä»¤ç¼å |
| | | if(now - this.cachTime >= ServerProperties.offLineCacheTimeout){ |
| | | if(now - this.cachTime >= MqttUnit.confVo.comCacheTimeout){ |
| | | //ç¼åè¶
æ¶ |
| | | return true ; |
| | | } |
| | |
| | | public String svUserName ;// |
| | | public String svUserPassword ;// |
| | | public Integer poolMaxSize ;// |
| | | public Long sendInterval ;// |
| | | public Integer reSendTimesByNoResult ;// |
| | | public Long comCacheTimeout ;// |
| | | public Boolean useMemoryPersistence ; |
| | | public String[] protocolAndDeviceIds ;//设å¤åè®®ä¸IDï¼FBoxï¼id |
| | | public String[] deviceIds ;//设å¤ï¼FBoxï¼id |
| | |
| | | this.svUserName = "dyyjy" ; |
| | | this.svUserPassword = "Dyyjy2025,;.abc!@#" ; |
| | | this.poolMaxSize = 10 ; |
| | | useMemoryPersistence = true ; |
| | | this.sendInterval = 60000L ; |
| | | this.reSendTimesByNoResult = 0 ; |
| | | this.comCacheTimeout = 60000L ; |
| | | this.useMemoryPersistence = true ; |
| | | this.pubTopicQos = 1 ; |
| | | this.noSubThenOff = 10 * 60 * 10000L ; |
| | | } |
| | |
| | | package com.dy.rtuMw.server.rtuData; |
| | | |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.MqttSubMsgSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.rtuMw.server.rtuData.pSdV1.TkFindPSdV1; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | if(data == null){ |
| | | log.error("严éé误ï¼Mqtt订é
æ¶æ¯æ°æ®ä¸ºç©ºï¼" ); |
| | | }else{ |
| | | if(data instanceof MqttSubMsgSdV1){ |
| | | if(data instanceof MqttSubMsg){ |
| | | this.toNextOneTask(data, TkFindPSdV1.taskId); |
| | | }else{ |
| | | log.error("严éé误ï¼è¯¥æ°æ®ç±»åï¼" + data.getClass().getName() + "ï¼ï¼æ¥æ¶æ°æ®ä»»å¡è¿æªå®ç°ï¼" ); |
| | |
| | | package com.dy.rtuMw.server.rtuData.pSdV1; |
| | | |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.MqttSubMsgSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.rtuMw.server.rtuData.TaskSurpport; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | @Override |
| | | public void execute(Object data) { |
| | | //åé¢çä»»å¡å·²ç»å¤æäºdataä¸ä¸ºç©º |
| | | MqttSubMsgSdV1 msg = (MqttSubMsgSdV1)data ; |
| | | MqttSubMsg msg = (MqttSubMsg)data ; |
| | | log.info(msg.toString()); |
| | | } |
| | | |
| | |
| | | import com.dy.rtuMw.server.forTcp.TcpSessionCache; |
| | | import com.dy.rtuMw.server.local.CommandInnerDeaLer; |
| | | import com.dy.rtuMw.server.local.ReturnCommand; |
| | | import com.dy.rtuMw.server.mqtt.DevStatusDealer; |
| | | import com.dy.rtuMw.server.mqtt.MqttManager; |
| | | import com.dy.rtuMw.server.msCenter.MsCenterUnit; |
| | | import com.dy.rtuMw.server.tasks.WebDownCom4MqttTask; |
| | |
| | | * @return ç»æ |
| | | */ |
| | | private BaseResponse<Command> dealMqttCommand(Command command){ |
| | | String rtuAddr = command.getRtuAddr() ; |
| | | if(rtuAddr == null || rtuAddr.trim().equals("")){ |
| | | return BaseResponseUtils.buildError(ReturnCommand.errored("åºéï¼è®¾å¤ID为空ï¼", command.getId(), command.getCode())) ; |
| | | String mqttDevId = command.getRtuAddr() ;//FBox设å¤å· |
| | | if(mqttDevId == null || mqttDevId.trim().equals("")){ |
| | | return BaseResponseUtils.buildError(ReturnCommand.errored("åºéï¼FBox设å¤ID为空ï¼", command.getId(), command.getCode())) ; |
| | | } |
| | | if(!ServerProperties.mqttUnitEnable.booleanValue()){ |
| | | return BaseResponseUtils.buildError(ReturnCommand.errored("åºéï¼MQTTè¿æ¥æ¨¡åé
ç½®æªå¯å¨ï¼", command.getId(), command.getCode())) ; |
| | | } |
| | | if(MqttManager.getInstance().poolIsClose()){ |
| | | return BaseResponseUtils.buildError(ReturnCommand.errored("åºéï¼MQTTè¿æ¥æ± æ°´å建æåï¼", command.getId(), command.getCode())) ; |
| | | return BaseResponseUtils.buildError(ReturnCommand.errored("åºéï¼MQTTè¿æ¥æ± æªå建æåï¼", command.getId(), command.getCode())) ; |
| | | } |
| | | if(!DevStatusDealer.oneOnLine(mqttDevId)){ |
| | | return BaseResponseUtils.buildError(ReturnCommand.errored("åºéï¼FBoxè®¾å¤æªå¨çº¿ï¼", command.getId(), command.getCode())) ; |
| | | } |
| | | |
| | | //çæå¼æ¥ä»»å¡ |
| | |
| | | # çå·ï¼ gz |
| | | # åå·ï¼ lz |
| | | # éå·ï¼ jc |
| | | # å峪å
³ï¼ jyg |
| | | base.orgTag=ym |
| | | |
| | | # 233æå¡å¨ï¼ |
| | |
| | | # çå·ï¼ 60103 |
| | | # åå·ï¼ 60104 |
| | | # éå·ï¼ 60105 |
| | | tcp.port=60000ba_divide |
| | | # å峪å
³ï¼ 60106 |
| | | tcp.port=60000 |
| | | |
| | | #RTUä¸è¡æ°æ®æå°é´éï¼å¤§äºè¿ä¸ªé´é认为设å¤ç¦»çº¿äºï¼æµæ§ä¸ä½éæ¯3ï¼è¡¨éä¸ä½æºæ¯6ï¼é»è®¤éç¨æ¶é´æé¿ç6 |
| | | base.upData.min.interval=6 |
| | |
| | | # çå·ï¼ mqtt.enable=false mqtt.protocolAndDeviceIds= mqtt.topicAndQos= |
| | | # åå·ï¼ mqtt.enable=false mqtt.protocolAndDeviceIds= mqtt.topicAndQos= |
| | | # éå·ï¼ mqtt.enable=true mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1;state/1,1 |
| | | # å峪å
³ï¼ mqtt.enable=true mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1;state/1,1 |
| | | mqtt.enable=false |
| | | mqtt.protocolAndDeviceIds=sd1/338220031439,sd1/338220031440 |
| | | mqtt.subTopicAndQos=weather/1,1;soil/1,1;manure/1,1;state/1,1 |
| | | mqtt.ip=127.0.0.1 |
| | | mqtt.port=1883 |
| | | mqtt.user=dyyjy |
| | | mqtt.password=Dyyjy2025,;.abc!@# |
| | | mqtt.protocolAndDeviceIds= |
| | | mqtt.subTopicAndQos= |
| | | #MQtt设å¤å¨ä¸å®æ¶é´ï¼åéï¼åæªå叿¶æ¯ï¼è®¤ä¸ºè®¾å¤ç¦»çº¿ |
| | | mqtt.noSubThenOff=10 |
| | |
| | | svUserName MQTTæå¡å¨ç¨æ·å |
| | | svUserPassword MQTTæå¡å¨ç¨æ·å¯ç |
| | | poolMaxSize è¿æ¥æ± æå¤§è¿æ¥æ° |
| | | sendInterval å½ä»¤åéé´éï¼åä½ç§ï¼ï¼åå¼èå´æ¯1~3600 |
| | | reSendTimesByNoResult æªæ¶å°å½ä»¤ç»ææ¶ï¼æå¤§éå¤å鿬¡æ°ï¼åå¼èå´æ¯0~100, 0æ¶è¡¨ç¤ºä¸éå¤åé |
| | | comCacheTimeout: å½ä»¤æå¤§ç¼åæ¶é¿(ç§)ï¼åå¼èå´æ¯1~3600 |
| | | useMemoryPersistence 使ç¨å
åæä¹
åèéé»è®¤çæä»¶æä¹
å(trueæ¯ falseå¦) |
| | | protocolAndDeviceIds å¨åç³»ç»ï¼orgTagï¼ä¸æ¥å
¥ç设å¤(FBox)æç¨åè®®å设å¤idéå,å¤ä¸ªç¨éå·éå¼ï¼åè®®ä¸IDç¨æ£ææ éå¼ï¼ä¾å¦ï¼sd1/338220031439,sd1/338220031440 |
| | | subTopicAndQos: 订é
主é¢ä¸Qosï¼ä¸»é¢åä¸å
¶Qosç¨éå·éå¼ï¼å¤ä¸ªä¸»é¢åQosç¨åå·éå¼ï¼ä¾å¦ï¼ym/topic1,1;ym/topic2,1;ym/topic3,1ï¼å¦ææå¤ä¸ªOrgTagï¼ä¸»é¢åç¼ç¨å
¶OrgTag |
| | |
| | | noSubThenOff: MQtt设å¤å¨ä¸å®æ¶é´ï¼åéï¼åæªå叿¶æ¯ï¼è®¤ä¸ºè®¾å¤ç¦»çº¿ |
| | | --> |
| | | <mqtt enable="${mqtt.enable}" |
| | | svIp="121.199.41.121" |
| | | svPort="1883" |
| | | svUserName="dyyjy" |
| | | svUserPassword="Dyyjy2025,;.abc!@#" |
| | | svIp="${mqtt.ip}" |
| | | svPort="${mqtt.port}" |
| | | svUserName="${mqtt.user}" |
| | | svUserPassword="${mqtt.password}" |
| | | poolMaxSize="10" |
| | | sendInterval="60" |
| | | reSendTimesByNoResult="0" |
| | | comCacheTimeout="30" |
| | | useMemoryPersistence="true" |
| | | protocolAndDeviceIds="${mqtt.protocolAndDeviceIds}" |
| | | subTopicAndQos="${mqtt.subTopicAndQos}" |
| | |
| | | static{ |
| | | commands = new String[]{ |
| | | "config æ¥çé
置信æ¯", |
| | | "mw 121 [tag] å½ä»¤å«ä¹ï¼éä¿¡ä¸é´ä»¶å¨äºæå¡å¨ï¼121.199.41.121ï¼ä¸ç[tag](å
è°ym,æ²çspæµè¯testï¼æ¢
æ±mjï¼æ°å¤mqï¼å»¶åºyqï¼é»é¾æ±hljï¼çå·gzï¼åå·lzï¼éå·jc)ç³»ç»é
ç½®", |
| | | "mw 233 [tag] å½ä»¤å«ä¹ï¼éä¿¡ä¸é´ä»¶å¨äºæå¡å¨ï¼8.130.130.233ï¼ä¸ç[tag](å
è°ym,æ²çspæµè¯testï¼æ¢
æ±mjï¼æ°å¤mqï¼å»¶åºyqï¼é»é¾æ±hljï¼çå·gzï¼åå·lzï¼éå·jc)ç³»ç»é
ç½®", |
| | | "mw 121 [tag] å½ä»¤å«ä¹ï¼éä¿¡ä¸é´ä»¶å¨äºæå¡å¨ï¼121.199.41.121ï¼ä¸ç[tag](å
è°ym,æ²çspæµè¯testï¼æ¢
æ±mjï¼æ°å¤mqï¼å»¶åºyqï¼é»é¾æ±hljï¼çå·gzï¼åå·lzï¼éå·jcï¼å峪å
³jyg)ç³»ç»é
ç½®", |
| | | "mw 233 [tag] å½ä»¤å«ä¹ï¼éä¿¡ä¸é´ä»¶å¨äºæå¡å¨ï¼8.130.130.233ï¼ä¸ç[tag](å
è°ym,æ²çspæµè¯testï¼æ¢
æ±mjï¼æ°å¤mqï¼å»¶åºyqï¼é»é¾æ±hljï¼çå·gzï¼åå·lzï¼éå·jcï¼å峪å
³jyg)ç³»ç»é
ç½®", |
| | | "web 121 å½ä»¤å«ä¹ï¼web模åå¨äºæå¡å¨ï¼121.199.41.121ï¼ä¸çé
ç½®", |
| | | "web 233 å½ä»¤å«ä¹ï¼web模åå¨äºæå¡å¨ï¼8.130.130.233ï¼ä¸çé
ç½®", |
| | | "exit éåº", |
| | |
| | | public static final String TcpPort = "tcpPort" ; |
| | | public static final String UpDataMinInterval = "upDataMinInterval" ; |
| | | public static final String WebPort = "webPort" ; |
| | | public static final String MqttEnable = "mqttEnable" ; |
| | | public static final String MqttNoSubThenOff = "noSubThenOff" ; |
| | | public static final String ActutorPort = "actutorPort" ; |
| | | public static final String DbName = "dbName" ; |
| | | public static final String MqttEnable = "mqttEnable" ; |
| | | public static final String MqttNoSubThenOff = "mqttNoSubThenOff" ; |
| | | public static final String mqttServerIp = "mqttServerIp" ; |
| | | public static final String mqttServerPort = "mqttServerPort" ; |
| | | public static final String mqttProtocolAndDeviceIds = "mqttProtocolAndDeviceIds" ; |
| | | public static final String mqttSubTopicAndQos = "mqttSubTopicAndQos" ; |
| | | } |
| | |
| | | newLine = "base.upData.min.interval=" + paramMap.get(ParamKey.UpDataMinInterval); |
| | | }else if(newLine != null && newLine.trim().startsWith("mqtt.enable=")){ |
| | | newLine = "mqtt.enable=" + paramMap.get(ParamKey.MqttEnable); |
| | | }else if(newLine != null && newLine.trim().startsWith("mqtt.ip=")){ |
| | | newLine = "mqtt.ip=" + paramMap.get(ParamKey.mqttServerIp); |
| | | }else if(newLine != null && newLine.trim().startsWith("mqtt.port=")){ |
| | | newLine = "mqtt.port=" + paramMap.get(ParamKey.mqttServerPort); |
| | | }else if(newLine != null && newLine.trim().startsWith("mqtt.protocolAndDeviceIds=")){ |
| | | newLine = "mqtt.protocolAndDeviceIds=" + paramMap.get(ParamKey.mqttProtocolAndDeviceIds); |
| | | }else if(newLine != null && newLine.trim().startsWith("mqtt.subTopicAndQos=")){ |
| | | newLine = "mqtt.subTopicAndQos=" + paramMap.get(ParamKey.mqttSubTopicAndQos); |
| | | }else if(newLine != null && newLine.trim().startsWith("mqtt.noSubThenOff=")){ |
| | | newLine = "mqtt.noSubThenOff=" + paramMap.get(ParamKey.MqttNoSubThenOff); |
| | | } |
| | |
| | | key = ParamKey.WebPort; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.ActutorPort; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.DbName; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.MqttEnable; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.MqttNoSubThenOff; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.ActutorPort; |
| | | key = ParamKey.mqttProtocolAndDeviceIds; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.DbName; |
| | | key = ParamKey.mqttServerIp; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.mqttServerPort; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | key = ParamKey.mqttSubTopicAndQos; |
| | | this.getConfig(env, map, paramNamePre + key, key); |
| | | |
| | | return map ; |
| | |
| | | orgTag: ym |
| | | tcpPort: 60000 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8070 |
| | | actutorPort: 9070 |
| | | dbName: pipIrr_ym |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | sp: |
| | | orgTag: sp |
| | | tcpPort: 62000 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8073 |
| | | actutorPort: 9073 |
| | | dbName: pipIrr_sp |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | test: |
| | | orgTag: test |
| | | tcpPort: 65000 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8072 |
| | | actutorPort: 9072 |
| | | dbName: pipIrr_test |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | mj: |
| | | orgTag: mj |
| | | tcpPort: 61000 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8071 |
| | | actutorPort: 9071 |
| | | dbName: pipIrr_mj |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | sv121: |
| | | mq: |
| | | orgTag: mq |
| | | tcpPort: 60100 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: true |
| | | noSubThenOff: 10 |
| | | webPort: 8100 |
| | | actutorPort: 9100 |
| | | dbName: pipIrr_mq |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | yq: |
| | | orgTag: yq |
| | | tcpPort: 60101 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8101 |
| | | actutorPort: 9101 |
| | | dbName: pipIrr_yq |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | hlj: |
| | | orgTag: hlj |
| | | tcpPort: 60102 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8102 |
| | | actutorPort: 9102 |
| | | dbName: pipIrr_hlj |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | gz: |
| | | orgTag: gz |
| | | tcpPort: 60103 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8103 |
| | | actutorPort: 9103 |
| | | dbName: pipIrr_gz |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | lz: |
| | | orgTag: lz |
| | | tcpPort: 60104 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: false |
| | | noSubThenOff: 10 |
| | | webPort: 8104 |
| | | actutorPort: 9104 |
| | | dbName: pipIrr_lz |
| | | mqttEnable: false |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | jc: |
| | | orgTag: jc |
| | | tcpPort: 60105 |
| | | upDataMinInterval: 6 |
| | | mqttEnable: true |
| | | noSubThenOff: 10 |
| | | webPort: 8105 |
| | | actutorPort: 9105 |
| | | dbName: pipIrr_jc |
| | | mqttEnable: true |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: |
| | | mqttSubTopicAndQos: |
| | | jyg: |
| | | orgTag: jyg |
| | | tcpPort: 60106 |
| | | upDataMinInterval: 6 |
| | | webPort: 8106 |
| | | actutorPort: 9106 |
| | | dbName: pipIrr_jyg |
| | | mqttEnable: true |
| | | mqttNoSubThenOff: 10 |
| | | mqttServerIp: 127.0.0.1 |
| | | mqttServerPort: 1883 |
| | | mqttProtocolAndDeviceIds: sd1/2430002404000840,sd1/2430002404000840 |
| | | mqttSubTopicAndQos: weather/1,1;soil/1,1;manure/1,1 |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | package com.dy.pipIrrRemote; |
| | | |
| | | import com.dy.common.multiDataSource.EnableMultiDataSource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.boot.CommandLineRunner; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.context.annotation.ComponentScan; |
| | |
| | | |
| | | import org.springframework.boot.web.servlet.ServletComponentScan; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | |
| | | @Slf4j |
| | | @SpringBootApplication |
| | | @EnableScheduling //å¯å¨å®æ¶ä»»å¡ï¼æ¬æ¨¡åwebsocketåéå¿è·³ |
| | | @ServletComponentScan //æ«æservletï¼æ¬æ¨¡åä¸å¯å¨websocket |
| | |
| | | } |
| | | |
| | | } |
| | | //public class PipIrrRemoteApplication implements CommandLineRunner { |
| | | // |
| | | // public static void main(String[] args) { |
| | | // SpringApplication.run(PipIrrRemoteApplication.class, args); |
| | | // } |
| | | // //éªè¯logæ¯å¦è¾åº |
| | | // @Override |
| | | // public void run(String... args) throws Exception { |
| | | // log.trace("Trace level log"); |
| | | // log.debug("Debug level log"); |
| | | // log.info("Info level log"); |
| | | // log.warn("Warn level log"); |
| | | // log.error("Error level log"); |
| | | // } |
| | | //} |
| | |
| | | if(codeDataObj != null){ |
| | | if(codeDataObj instanceof JSONObject){ |
| | | codeData = protocolData == null ? null : (protocolData.getJSONObject("subData")) ; //åè®®åè½ç æ°æ® |
| | | }else if(codeDataObj instanceof JSONArray){{ |
| | | }else if(codeDataObj instanceof JSONArray){ |
| | | codeArrayData = protocolData == null ? null : (protocolData.getJSONArray("subData")) ; //åè®®åè½ç æ°æ® |
| | | }} |
| | | } |
| | | } |
| | | JSONObject job_response = new JSONObject(); |
| | | job_response.put("data", codeData!=null?codeData:(codeArrayData!=null?codeArrayData:null)); |
| New file |
| | |
| | | package com.dy.pipIrrRemote.common; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.pipIrrGlobal.command.ComResultWait; |
| | | import com.dy.pipIrrGlobal.command.ComSupport; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.concurrent.CompletableFuture; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-05-23 8:19 |
| | | * @LastEditTime 2024-05-23 8:19 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping(path="mqttRes") |
| | | public class MqttResultCtrl extends ComSupport { |
| | | @PostMapping(path = "receive", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | public void receive(@RequestBody MqttSubMsg subMsg) { |
| | | if(subMsg != null){ |
| | | CompletableFuture<MqttSubMsg> feature = (CompletableFuture<MqttSubMsg>) ComResultWait.get(Long.parseLong(subMsg.commandId)); |
| | | if(feature != null) { |
| | | feature.complete(subMsg); |
| | | }else{ |
| | | //è¶
æ¶ï¼feature被æ¸
é¤äº |
| | | } |
| | | }else{ |
| | | log.error("mqttåè®®æ¶æ¯ä¸ºç©º"); |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.common.dto; |
| | | |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-05-22 16:54 |
| | | * @LastEditTime 2024-05-22 16:54 |
| | | * @Description 设置å½ä»¤åºç±» |
| | | */ |
| | | |
| | | @Data |
| | | public class Dto4MqttBase { |
| | | public static final long serialVersionUID = 202506201459001L; |
| | | |
| | | /** |
| | | * æ°´è¥æºID |
| | | */ |
| | | @NotNull(message = "æ°´è¥æºä¸è½ä¸ºç©º") |
| | | public Long manureId; |
| | | |
| | | /** |
| | | * æ°´è¥æºåç§° |
| | | */ |
| | | public String manureName; |
| | | |
| | | /** |
| | | * æä½äºº |
| | | */ |
| | | @NotNull(message = "æä½äººä¸è½ä¸ºç©º") |
| | | public Long operator; |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.common; |
| | | |
| | | import lombok.Data; |
| | | import lombok.experimental.SuperBuilder; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/5/9 16:11 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @SuperBuilder |
| | | public class Cd4MqttParameter { |
| | | public Integer no ;//设å¤ç¼å· |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.common; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.util.IDLongGenerator; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.pipIrrGlobal.command.ComResultWait; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrStManure; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.core.env.Environment; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.util.Objects; |
| | | import java.util.concurrent.CompletableFuture; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/5/9 14:53 |
| | | * @Description |
| | | */ |
| | | public abstract class Com4MqttCtrl { |
| | | |
| | | @Autowired |
| | | protected Environment env ; |
| | | |
| | | @Autowired |
| | | protected RestTemplate restTemplate ; |
| | | |
| | | @Value("${mw.waitMwRtnResultTimeout}") |
| | | protected int waitMwRtnResultTimeout ; |
| | | |
| | | @Value("${mw.mqttCallbackUrl_rm}") |
| | | protected String mqttResultSendWebUrl; |
| | | |
| | | //æ°´è¥æºå¯¹è±¡ |
| | | protected PrStManure ctrlPo ; |
| | | //弿¥çå¾
å¨ |
| | | protected CompletableFuture<MqttSubMsg> feature; |
| | | //å½ä»¤åç§° |
| | | protected String comName ; |
| | | //å½ä»¤æ¥å¿id |
| | | protected Long comId ; |
| | | |
| | | /** |
| | | * åéå½ä»¤å-1ï¼éªè¯ |
| | | * @param comSv |
| | | * @param comCode |
| | | * @param dto |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | public BaseResponse<Object> pre1(Com4MqttSv comSv, String comCode, Dto4MqttBase dto, BindingResult bindingResult) { |
| | | if (bindingResult != null && bindingResult.hasErrors()) { |
| | | return BaseResponseUtils.buildError(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | String msg = this.checkDto(dto) ; |
| | | if(msg != null){ |
| | | return BaseResponseUtils.buildError("æå¡ç«¯åºéï¼" + msg) ; |
| | | } |
| | | return null ; |
| | | } |
| | | |
| | | /** |
| | | * åéå½ä»¤å-2ï¼è·å¾æ°æ® |
| | | * @param comSv |
| | | * @param protocol |
| | | * @param protocolVer |
| | | * @param comCode |
| | | * @param dto |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | public BaseResponse<Object> pre2(Com4MqttSv comSv, String protocol, Short protocolVer, String comCode, Dto4MqttBase dto, BindingResult bindingResult) { |
| | | //å¾å°æ°´è¥æºå¯¹è±¡ |
| | | ctrlPo = comSv.getManure(dto.getManureId()); |
| | | if (ctrlPo == null) { |
| | | return BaseResponseUtils.buildError("æå¡ç«¯åºéï¼ä»æ°æ®åºä¸æªå¾å°æ°´è¥æºæ°æ®") ; |
| | | } |
| | | //æ£æ¥åè®® |
| | | String msg = comSv.checkProtocol(ctrlPo) ; |
| | | if(msg != null) { |
| | | return BaseResponseUtils.buildError("æå¡ç«¯åºéï¼" + msg) ; |
| | | } |
| | | //å¾å°åè½ç 对åºçå½ä»¤åç§° |
| | | comName = comSv.getCommandName(comCode, protocol, protocolVer) ; |
| | | if(comName == null) { |
| | | return BaseResponseUtils.buildError("æå¡ç«¯åºéï¼æªå¾å°åè½ç 对åºå½ä»¤åç§°") ; |
| | | } |
| | | return null ; |
| | | } |
| | | /** |
| | | * åéå½ä»¤å-3ï¼ä¿åå½ä»¤æ¥å¿ |
| | | * @param comSv sv对象 |
| | | * @param manureId æ°´è¥æºID |
| | | * @param operator å½åç¨ç»å½ç¨æ·id(æä½äºº) |
| | | * @param protocol åè®® |
| | | * @param protocolVerion åè®® |
| | | * @param comCode åè½ç |
| | | * @param param å½ä»¤åæ° |
| | | * @return |
| | | */ |
| | | public BaseResponse<Object> pre3(Com4MqttSv comSv, Long manureId, Long operator, String protocol, Short protocolVerion, String comCode, Cd4MqttParameter param) { |
| | | comId = new IDLongGenerator().generate(); |
| | | //çæå¹¶ä¿åå½ä»¤æ¥å¿ |
| | | RmCommandHistory po = comSv.saveComHistoryPo(comId, |
| | | protocol + protocolVerion , |
| | | comCode, |
| | | comName, |
| | | manureId, |
| | | ctrlPo.fboxId , |
| | | param, |
| | | operator); |
| | | if(po == null){ |
| | | return BaseResponseUtils.buildError("æå¡ç«¯åºéï¼æªè½çæå¹¶ä¿åå½ä»¤æ¥å¿") ; |
| | | } |
| | | return null ; |
| | | } |
| | | /** |
| | | * åéå½ä»¤å-4ï¼åå¤Feature |
| | | * @return |
| | | */ |
| | | public void pre4() { |
| | | feature = new CompletableFuture<>(); |
| | | ComResultWait.put(comId, feature); |
| | | } |
| | | |
| | | /** |
| | | * åéå½ä»¤ |
| | | * @param comSv |
| | | * @param com |
| | | * @return |
| | | */ |
| | | public BaseResponse<Object> doSend(Com4MqttSv comSv, Command com){ |
| | | //å¾å°éä¿¡ä¸é´ä»¶åéå½ä»¤çweb URL |
| | | String rqUrl = comSv.get2MwRequestUrl(env, comSv.ContextComSend) ; |
| | | //åéä¿¡ä¸é´ä»¶åéwebè¯·æ± |
| | | BaseResponse res = comSv.sendPostRequest2Mw(restTemplate, rqUrl, com) ; |
| | | //å¤çéä¿¡ä¸é´ä»¶å¯¹web请æ±çååº |
| | | String msg = comSv.dealMwDealResponse(res) ; |
| | | if(msg != null) { |
| | | return BaseResponseUtils.buildError(msg) ; |
| | | }else{ |
| | | return null ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * åéå½ä»¤å |
| | | * @return |
| | | */ |
| | | public BaseResponse<Object> after(String comCode, Callback callback) { |
| | | try{ |
| | | //çå¾
éä¿¡ä¸é´ä»¶éç¥æ°´è¥æºæ§è¡å½ä»¤ä¸è¡æ°æ®ï¼å½ä»¤ç»æï¼ |
| | | MqttSubMsg subMsg = feature.get(waitMwRtnResultTimeout, TimeUnit.SECONDS); |
| | | return BaseResponseUtils.buildSuccess(this.dealComResult(comCode, subMsg, callback)); |
| | | }catch (Exception e){ |
| | | return BaseResponseUtils.buildFail("çå¾
éä¿¡ä¸é´ä»¶éç¥å½ä»¤ç»æè¶
æ¶"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * åéå½ä»¤æå |
| | | * @return |
| | | */ |
| | | public void end(){ |
| | | try { |
| | | //æåæ¸
é¤CompletableFutureç¼å |
| | | if(ComResultWait.contain(comId)){ |
| | | ComResultWait.remove(comId); |
| | | } |
| | | }catch (Exception ee){} |
| | | } |
| | | |
| | | /** |
| | | * éªè¯ |
| | | * @param dto |
| | | * @return |
| | | */ |
| | | protected abstract String checkDto(Dto4MqttBase dto) ; |
| | | |
| | | |
| | | /** |
| | | * çæå½ä»¤è¿åä¿¡æ¯ |
| | | */ |
| | | protected abstract String dealComResult(String code, MqttSubMsg subMsg, Callback callback); |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.common; |
| | | |
| | | import com.dy.pipIrrGlobal.command.Command4MqttSv; |
| | | import com.dy.pipIrrGlobal.daoPr.PrStManureMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrStManure; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/5/9 14:45 |
| | | * @Description |
| | | */ |
| | | public class Com4MqttSv extends Command4MqttSv { |
| | | |
| | | @Autowired |
| | | protected PrStManureMapper prStManureDao ; |
| | | @Autowired |
| | | protected RmCommandHistoryMapper rmCommandHistoryDao ; |
| | | |
| | | public PrStManure getManure(Long manureId){ |
| | | return this.getManure(prStManureDao, manureId); |
| | | } |
| | | /** |
| | | * å建å½ä»¤æ¥å¿å¯¹è±¡ |
| | | * |
| | | * @param comId ä¸»é® |
| | | * @param commandCode åè½ç |
| | | * @param rtuAddr éæ§å¨å°å |
| | | * @param protocol é讯åè®®åç§° |
| | | * @param param åæ°æ°æ® |
| | | * @param operator æä½å |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public RmCommandHistory saveComHistoryPo(Long comId, |
| | | String protocol, |
| | | String commandCode, |
| | | String commandName, |
| | | Long manureId, |
| | | String rtuAddr, |
| | | Object param, |
| | | Long operator) { |
| | | return this.saveComHistoryPo(rmCommandHistoryDao, comId, protocol, commandCode, commandName, manureId, rtuAddr, param, operator) ; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | jsonArr.add(jsonObj); |
| | | return rmCommandHistoryDao.getUncloseParam(jsonArr.toJSONString(), intakeId); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®åæ°´å£IDè·åè¯¥åæ°´å£æªå
³éåæ°ï¼å¹³å°éæ©åæ°´å£å
³éä½¿ç¨ |
| | | * @param intakeId |
| | | * @param rtuAddr |
| | | * @param code |
| | | * @return |
| | | */ |
| | | public VoUnclosedParam selectUncloseParamByCd(Long intakeId, String rtuAddr, String code) { |
| | | JSONArray jsonArr = new JSONArray(); |
| | | JSONObject jsonObj = new JSONObject(); |
| | | jsonObj.put("rtuAddr", rtuAddr); |
| | | jsonObj.put("isOnLine", true); |
| | | jsonArr.add(jsonObj); |
| | | return rmCommandHistoryDao.getUncloseParamByCd(jsonArr.toJSONString(), intakeId, code); |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.fault; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.lang.reflect.InvocationHandler; |
| | | import java.lang.reflect.Proxy; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:35 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @Tag(name = "è¿ç¨å½ä»¤", description = "æ¸
餿
é") |
| | | @RestController("mqttSd1FaultCtrl") |
| | | @RequestMapping(path = "mqttSd1/fault") |
| | | @RequiredArgsConstructor |
| | | @Scope("prototype") //å 为æå¯¹è±¡ç±»å±æ§ï¼æä»¥éç¨å忍¡å¼ï¼æ¯æ¬¡è¯·æ±æ°å»ºä¸ä¸ªå®ä¾å¯¹è±¡ |
| | | public class CdCtrl extends Com4MqttCtrl { |
| | | |
| | | private static final String RtuSuccessMsg = "æ§å¶å¨æ¥æ¶å¹¶æ§è¡å½ä»¤æåï¼æ è¿åæ°æ®"; |
| | | |
| | | private static final String Protocol = ProtocolConstantSdV1.protocolName ; |
| | | private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; |
| | | private static final String ComCode = CodeSdV1.cd_Fault ; |
| | | |
| | | @Autowired |
| | | private CdSv sv ; |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "clear", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { |
| | | BaseResponse<Object> res ; |
| | | //åéå½ä»¤å-1ï¼éªè¯ |
| | | res = super.pre1(sv, ComCode, dto, bindingResult); |
| | | if(res == null) { |
| | | //åéå½ä»¤å-2ï¼è·å¾æ°æ® |
| | | res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-3ï¼ä¿åå½ä»¤æ¥å¿ |
| | | CdParam comParam = CdParam.builder().no(ctrlPo.no).startTrueStopFalse(true).build(); |
| | | res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-4ï¼åå¤Feature |
| | | super.pre4(); |
| | | try { |
| | | //å建å¤é¨å½ä»¤ï¼åç»MQTT->FBoxï¼ |
| | | Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); |
| | | com.rtuResultSendWebUrl = mqttResultSendWebUrl; |
| | | com.param = comParam ; |
| | | //åéå½ä»¤ |
| | | res = super.doSend(sv, com); |
| | | if (res == null) { |
| | | //åéå½ä»¤å |
| | | res = super.after(ComCode, null); |
| | | } |
| | | } catch (Exception e) { |
| | | res = BaseResponseUtils.buildFail("æå¡ç«¯æé å¹¶åéä¿¡ä¸é´ä»¶åéè¯·æ±æ¶å¼å¸¸" + (e.getMessage() == null ? "" : e.getMessage())); |
| | | } finally { |
| | | //æç» |
| | | super.end(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return res ; |
| | | } |
| | | |
| | | @Override |
| | | protected String checkDto(Dto4MqttBase dto) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ |
| | | String msg; |
| | | if(subMsg != null){ |
| | | if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ |
| | | // è·å代çç InvocationHandler |
| | | InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); |
| | | String json = JSON.toJSONString(handler) ; |
| | | ManureVo vo = JSON.parseObject(json, ManureVo.class); |
| | | msg = vo.toString() ; |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | return msg; |
| | | } |
| | | } |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.fault; |
| | | |
| | | import com.dy.pipIrrRemote.common.dto.DtoBase; |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper=true) |
| | | public class CdDto extends DtoBase { |
| | | public static final long serialVersionUID = 202506161739001L; |
| | | public class CdDto extends Dto4MqttBase { |
| | | public static final long serialVersionUID = 202506501650001L; |
| | | } |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.fault; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.ToString; |
| | | import lombok.experimental.SuperBuilder; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | public class CdParam { |
| | | @Data |
| | | @ToString(callSuper = true) |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @SuperBuilder |
| | | public class CdParam extends Cd4MqttParameter { |
| | | //å¯åå¨ä½ï¼trueæ¯ï¼falseå¦ |
| | | //å¯ä»¥æ§è¡åè½ç 00ï¼01ï¼02ï¼03çå¨ä½ |
| | | public boolean startTrueStopFalse;// |
| | | |
| | | } |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.fault; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.ComSv; |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | * @Description |
| | | */ |
| | | @Slf4j |
| | | @Service("faultSv") |
| | | public class CdSv extends ComSv { |
| | | @Service("mqttSd1FaultSv") |
| | | public class CdSv extends Com4MqttSv { |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.inject; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.lang.reflect.InvocationHandler; |
| | | import java.lang.reflect.Proxy; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:35 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @Tag(name = "è¿ç¨å½ä»¤", description = "注è¥å¯å") |
| | | @RestController("mqttSd1InjectCtrl") |
| | | @RequestMapping(path = "mqttSd1/inject") |
| | | @RequiredArgsConstructor |
| | | @Scope("prototype") //å 为æå¯¹è±¡ç±»å±æ§ï¼æä»¥éç¨å忍¡å¼ï¼æ¯æ¬¡è¯·æ±æ°å»ºä¸ä¸ªå®ä¾å¯¹è±¡ |
| | | public class CdCtrl extends Com4MqttCtrl { |
| | | |
| | | private static final String RtuSuccessMsg = "æ§å¶å¨æ¥æ¶å¹¶æ§è¡å½ä»¤æåï¼æ è¿åæ°æ®"; |
| | | |
| | | private static final String Protocol = ProtocolConstantSdV1.protocolName ; |
| | | private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; |
| | | private static final String ComCode = CodeSdV1.cd_Inject ; |
| | | |
| | | |
| | | @Autowired |
| | | private CdSv sv ; |
| | | |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "start", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> start(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { |
| | | return this.send(dto, bindingResult, true) ; |
| | | } |
| | | |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "stop", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> stop(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { |
| | | return this.send(dto, bindingResult, false) ; |
| | | } |
| | | |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | private BaseResponse<Object> send(CdDto dto, BindingResult bindingResult, boolean startTrueStopFalse) { |
| | | BaseResponse<Object> res ; |
| | | //åéå½ä»¤å-1ï¼éªè¯ |
| | | res = super.pre1(sv, ComCode, dto, bindingResult); |
| | | if(res == null) { |
| | | //åéå½ä»¤å-2ï¼è·å¾æ°æ® |
| | | res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-3ï¼ä¿åå½ä»¤æ¥å¿ |
| | | CdParam comParam = CdParam.builder().no(ctrlPo.no).startTrueStopFalse(startTrueStopFalse).build(); |
| | | res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-4ï¼åå¤Feature |
| | | super.pre4(); |
| | | try { |
| | | //å建å¤é¨å½ä»¤ï¼åç»MQTT->FBoxï¼ |
| | | Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); |
| | | com.rtuResultSendWebUrl = mqttResultSendWebUrl; |
| | | com.param = comParam ; |
| | | //åéå½ä»¤ |
| | | res = super.doSend(sv, com); |
| | | if (res == null) { |
| | | //åéå½ä»¤å |
| | | res = super.after(ComCode, null); |
| | | } |
| | | } catch (Exception e) { |
| | | res = BaseResponseUtils.buildFail("æå¡ç«¯æé å¹¶åéä¿¡ä¸é´ä»¶åéè¯·æ±æ¶å¼å¸¸" + (e.getMessage() == null ? "" : e.getMessage())); |
| | | } finally { |
| | | //æç» |
| | | super.end(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return res ; |
| | | } |
| | | |
| | | @Override |
| | | protected String checkDto(Dto4MqttBase dto) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ |
| | | String msg; |
| | | if(subMsg != null){ |
| | | if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ |
| | | // è·å代çç InvocationHandler |
| | | InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); |
| | | String json = JSON.toJSONString(handler) ; |
| | | ManureVo vo = JSON.parseObject(json, ManureVo.class); |
| | | msg = vo.toString() ; |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | return msg; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.inject; |
| | | |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper=true) |
| | | public class CdDto extends Dto4MqttBase { |
| | | public static final long serialVersionUID = 202506201653001L; |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.inject; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.ToString; |
| | | import lombok.experimental.SuperBuilder; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @ToString(callSuper = true) |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @SuperBuilder |
| | | public class CdParam extends Cd4MqttParameter { |
| | | //å¯åå¨ä½ï¼trueæ¯ï¼falseå¦ |
| | | //å¯ä»¥æ§è¡åè½ç 00ï¼01ï¼02ï¼03çå¨ä½ |
| | | public boolean startTrueStopFalse;// |
| | | |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.inject; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Slf4j |
| | | @Service("mqttSd1InjectSv") |
| | | public class CdSv extends Com4MqttSv { |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.irr; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; |
| | | import com.dy.pipIrrRemote.monitor.mqttSd1.stir.CdDto; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.lang.reflect.InvocationHandler; |
| | | import java.lang.reflect.Proxy; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:35 |
| | | * @Description |
| | | * å¤§ç¦¹å°æ°´è¥æºåºç¨äºç®¡çç³»ç»ï¼æä»¥æ°´è¥æºä¸æªå®è£
çæºéé¨ï¼ç¸åºæ¤åè½ä¹ä¸åºç¨äº |
| | | */ |
| | | |
| | | @Slf4j |
| | | @Tag(name = "è¿ç¨å½ä»¤", description = "çæºå¯å") |
| | | @RestController("mqttSd1IrrCtrl") |
| | | @RequestMapping(path = "mqttSd1/irr") |
| | | @RequiredArgsConstructor |
| | | @Scope("prototype") //å 为æå¯¹è±¡ç±»å±æ§ï¼æä»¥éç¨å忍¡å¼ï¼æ¯æ¬¡è¯·æ±æ°å»ºä¸ä¸ªå®ä¾å¯¹è±¡ |
| | | public class CdCtrl extends Com4MqttCtrl { |
| | | |
| | | private static final String RtuSuccessMsg = "æ§å¶å¨æ¥æ¶å¹¶æ§è¡å½ä»¤æåï¼æ è¿åæ°æ®"; |
| | | |
| | | private static final String Protocol = ProtocolConstantSdV1.protocolName ; |
| | | private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; |
| | | private static final String ComCode = CodeSdV1.cd_Irr ; |
| | | |
| | | |
| | | @Autowired |
| | | private CdSv sv ; |
| | | |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "start", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> start(@RequestBody @Valid com.dy.pipIrrRemote.monitor.mqttSd1.stir.CdDto dto, BindingResult bindingResult) { |
| | | return this.send(dto, bindingResult, true) ; |
| | | } |
| | | |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "stop", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> stop(@RequestBody @Valid com.dy.pipIrrRemote.monitor.mqttSd1.stir.CdDto dto, BindingResult bindingResult) { |
| | | return this.send(dto, bindingResult, false) ; |
| | | } |
| | | |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | private BaseResponse<Object> send(CdDto dto, BindingResult bindingResult, boolean startTrueStopFalse) { |
| | | BaseResponse<Object> res ; |
| | | //åéå½ä»¤å-1ï¼éªè¯ |
| | | res = super.pre1(sv, ComCode, dto, bindingResult); |
| | | if(res == null) { |
| | | //åéå½ä»¤å-2ï¼è·å¾æ°æ® |
| | | res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-3ï¼ä¿åå½ä»¤æ¥å¿ |
| | | CdParam comParam = CdParam.builder().no(ctrlPo.no).startTrueStopFalse(true).build(); |
| | | res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-4ï¼åå¤Feature |
| | | super.pre4(); |
| | | try { |
| | | //å建å¤é¨å½ä»¤ï¼åç»MQTT->FBoxï¼ |
| | | Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); |
| | | com.rtuResultSendWebUrl = mqttResultSendWebUrl; |
| | | com.param = comParam ; |
| | | //åéå½ä»¤ |
| | | res = super.doSend(sv, com); |
| | | if (res == null) { |
| | | //åéå½ä»¤å |
| | | res = super.after(ComCode, null); |
| | | } |
| | | } catch (Exception e) { |
| | | res = BaseResponseUtils.buildFail("æå¡ç«¯æé å¹¶åéä¿¡ä¸é´ä»¶åéè¯·æ±æ¶å¼å¸¸" + (e.getMessage() == null ? "" : e.getMessage())); |
| | | } finally { |
| | | //æç» |
| | | super.end(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return res ; |
| | | } |
| | | |
| | | @Override |
| | | protected String checkDto(Dto4MqttBase dto) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ |
| | | String msg; |
| | | if(subMsg != null){ |
| | | if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ |
| | | // è·å代çç InvocationHandler |
| | | InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); |
| | | String json = JSON.toJSONString(handler) ; |
| | | ManureVo vo = JSON.parseObject(json, ManureVo.class); |
| | | msg = vo.toString() ; |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | return msg; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.irr; |
| | | |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper=true) |
| | | public class CdDto extends Dto4MqttBase { |
| | | public static final long serialVersionUID = 202506201654001L; |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.irr; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.ToString; |
| | | import lombok.experimental.SuperBuilder; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @ToString(callSuper = true) |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @SuperBuilder |
| | | public class CdParam extends Cd4MqttParameter { |
| | | //å¯åå¨ä½ï¼trueæ¯ï¼falseå¦ |
| | | //å¯ä»¥æ§è¡åè½ç 00ï¼01ï¼02ï¼03çå¨ä½ |
| | | public boolean startTrueStopFalse;// |
| | | |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.irr; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Slf4j |
| | | @Service("mqttSd1IrrSv") |
| | | public class CdSv extends Com4MqttSv { |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.lang.reflect.InvocationHandler; |
| | | import java.lang.reflect.Proxy; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:35 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @Tag(name = "è¿ç¨å½ä»¤", description = "è®¾ç½®åæ°") |
| | | @RestController("mqttSd1ParamCtrl") |
| | | @RequestMapping(path = "mqttSd1/param") |
| | | @RequiredArgsConstructor |
| | | @Scope("prototype") //å 为æå¯¹è±¡ç±»å±æ§ï¼æä»¥éç¨å忍¡å¼ï¼æ¯æ¬¡è¯·æ±æ°å»ºä¸ä¸ªå®ä¾å¯¹è±¡ |
| | | public class CdCtrl extends Com4MqttCtrl { |
| | | |
| | | private static final String RtuSuccessMsg = "æ§å¶å¨æ¥æ¶å¹¶æ§è¡å½ä»¤æåï¼æ è¿åæ°æ®"; |
| | | |
| | | private static final String Protocol = ProtocolConstantSdV1.protocolName ; |
| | | private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; |
| | | private static final String ComCode = CodeSdV1.cd_Param ; |
| | | |
| | | |
| | | @Autowired |
| | | private CdSv sv ; |
| | | |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "set", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> set(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { |
| | | BaseResponse<Object> res ; |
| | | //åéå½ä»¤å-1ï¼éªè¯ |
| | | res = super.pre1(sv, ComCode, dto, bindingResult); |
| | | if(res == null) { |
| | | //åéå½ä»¤å-2ï¼è·å¾æ°æ® |
| | | res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-3ï¼ä¿åå½ä»¤æ¥å¿ |
| | | CdParam comParam = CdParam.builder().no(ctrlPo.no).injectDuration(dto.injectDuration).stirDuration(dto.stirDuration).build(); |
| | | res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-4ï¼åå¤Feature |
| | | super.pre4(); |
| | | try { |
| | | //å建å¤é¨å½ä»¤ï¼åç»MQTT->FBoxï¼ |
| | | Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); |
| | | com.rtuResultSendWebUrl = mqttResultSendWebUrl; |
| | | com.param = comParam ; |
| | | //åéå½ä»¤ |
| | | res = super.doSend(sv, com); |
| | | if (res == null) { |
| | | //åéå½ä»¤å |
| | | res = super.after(ComCode, null); |
| | | } |
| | | } catch (Exception e) { |
| | | res = BaseResponseUtils.buildFail("æå¡ç«¯æé å¹¶åéä¿¡ä¸é´ä»¶åéè¯·æ±æ¶å¼å¸¸" + (e.getMessage() == null ? "" : e.getMessage())); |
| | | } finally { |
| | | //æç» |
| | | super.end(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return res ; |
| | | } |
| | | |
| | | @Override |
| | | protected String checkDto(Dto4MqttBase dto) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ |
| | | String msg; |
| | | if(subMsg != null){ |
| | | if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ |
| | | // è·å代çç InvocationHandler |
| | | InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); |
| | | String json = JSON.toJSONString(handler) ; |
| | | ManureVo vo = JSON.parseObject(json, ManureVo.class); |
| | | msg = vo.toString() ; |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | return msg; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; |
| | | |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper=true) |
| | | public class CdDto extends Dto4MqttBase { |
| | | public static final long serialVersionUID = 202506201656001L; |
| | | |
| | | // æ
æè®¾å®æ¶é´ åä½ç§ |
| | | @NotNull(message = "æ
æè®¾å®æ¶é´ä¸è½ä¸ºç©º") |
| | | public Integer stirDuration ; |
| | | |
| | | // 注è¥è®¾å®æ¶é´ åä½ç§ |
| | | @NotNull(message = "注è¥è®¾å®æ¶é´ä¸è½ä¸ºç©º") |
| | | public Integer injectDuration ; |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.ToString; |
| | | import lombok.experimental.SuperBuilder; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @ToString(callSuper = true) |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @SuperBuilder |
| | | public class CdParam extends Cd4MqttParameter { |
| | | |
| | | // æ
æè®¾å®æ¶é´ |
| | | public Integer stirDuration ; |
| | | |
| | | // 注è¥è®¾å®æ¶é´ |
| | | public Integer injectDuration ; |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Slf4j |
| | | @Service("mqttSd1ParamSv") |
| | | public class CdSv extends Com4MqttSv { |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.stir; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; |
| | | import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.lang.reflect.InvocationHandler; |
| | | import java.lang.reflect.Proxy; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:35 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @Tag(name = "è¿ç¨å½ä»¤", description = "æ
æå¯å") |
| | | @RestController("mqttSd1StirCtrl") |
| | | @RequestMapping(path = "mqttSd1/stir") |
| | | @RequiredArgsConstructor |
| | | @Scope("prototype") //å 为æå¯¹è±¡ç±»å±æ§ï¼æä»¥éç¨å忍¡å¼ï¼æ¯æ¬¡è¯·æ±æ°å»ºä¸ä¸ªå®ä¾å¯¹è±¡ |
| | | public class CdCtrl extends Com4MqttCtrl { |
| | | |
| | | private static final String RtuSuccessMsg = "æ§å¶å¨æ¥æ¶å¹¶æ§è¡å½ä»¤æåï¼æ è¿åæ°æ®"; |
| | | |
| | | private static final String Protocol = ProtocolConstantSdV1.protocolName ; |
| | | private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; |
| | | private static final String ComCode = CodeSdV1.cd_Stir ; |
| | | |
| | | |
| | | @Autowired |
| | | private CdSv sv ; |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "start", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> start(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { |
| | | return this.send(dto, bindingResult, true) ; |
| | | } |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | @PostMapping(path = "stop", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @SsoAop() |
| | | public BaseResponse<Object> stop(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { |
| | | return this.send(dto, bindingResult, false) ; |
| | | } |
| | | /** |
| | | * å设å¤ï¼Mqttä¸é´ä»¶->FBoxï¼åéå½ä»¤ |
| | | * @param dto åç«¯åæ¥çå¼å¯¹è±¡ |
| | | * @param bindingResult 对dtoéªè¯çç»æ |
| | | * @return è¿åå端 |
| | | */ |
| | | private BaseResponse<Object> send(CdDto dto, BindingResult bindingResult, boolean startTrueStopFalse) { |
| | | BaseResponse<Object> res ; |
| | | //åéå½ä»¤å-1ï¼éªè¯ |
| | | res = super.pre1(sv, ComCode, dto, bindingResult); |
| | | if(res == null) { |
| | | //åéå½ä»¤å-2ï¼è·å¾æ°æ® |
| | | res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-3ï¼ä¿åå½ä»¤æ¥å¿ |
| | | CdParam comParam = CdParam.builder().no(ctrlPo.no).startTrueStopFalse(startTrueStopFalse).build(); |
| | | res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); |
| | | if (res == null) { |
| | | //åéå½ä»¤å-4ï¼åå¤Feature |
| | | super.pre4(); |
| | | try { |
| | | //å建å¤é¨å½ä»¤ï¼åç»MQTT->FBoxï¼ |
| | | Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); |
| | | com.rtuResultSendWebUrl = mqttResultSendWebUrl; |
| | | com.param = comParam ; |
| | | //åéå½ä»¤ |
| | | res = super.doSend(sv, com); |
| | | if (res == null) { |
| | | //åéå½ä»¤å |
| | | res = super.after(ComCode, null); |
| | | } |
| | | } catch (Exception e) { |
| | | res = BaseResponseUtils.buildFail("æå¡ç«¯æé å¹¶åéä¿¡ä¸é´ä»¶åéè¯·æ±æ¶å¼å¸¸" + (e.getMessage() == null ? "" : e.getMessage())); |
| | | } finally { |
| | | //æç» |
| | | super.end(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return res ; |
| | | } |
| | | |
| | | @Override |
| | | protected String checkDto(Dto4MqttBase dto) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ |
| | | String msg; |
| | | if(subMsg != null){ |
| | | if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ |
| | | // è·å代çç InvocationHandler |
| | | InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); |
| | | String json = JSON.toJSONString(handler) ; |
| | | ManureVo vo = JSON.parseObject(json, ManureVo.class); |
| | | msg = vo.toString() ; |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | | } |
| | | return msg; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.stir; |
| | | |
| | | import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper=true) |
| | | public class CdDto extends Dto4MqttBase { |
| | | public static final long serialVersionUID = 202506201655001L; |
| | | |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.stir; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.ToString; |
| | | import lombok.experimental.SuperBuilder; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | @ToString(callSuper = true) |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @SuperBuilder |
| | | public class CdParam extends Cd4MqttParameter { |
| | | //å¯åå¨ä½ï¼trueæ¯ï¼falseå¦ |
| | | //å¯ä»¥æ§è¡åè½ç 00ï¼01ï¼02ï¼03çå¨ä½ |
| | | public boolean startTrueStopFalse;// |
| | | |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrRemote.monitor.mqttSd1.stir; |
| | | |
| | | import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/6/16 17:36 |
| | | * @Description |
| | | */ |
| | | @Slf4j |
| | | @Service("mqttSd1StirSv") |
| | | public class CdSv extends Com4MqttSv { |
| | | } |
| | |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd55Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd65Vo; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | |
| | | protected String dealComResult(String code, JSONObject resultData, Callback callback){ |
| | | String msg; |
| | | if(resultData != null){ |
| | | JSONArray codeData = resultData.getJSONArray("data") ; |
| | | JSONObject codeData = resultData.getJSONObject("data") ; |
| | | JSONArray codeDataArray = null ; |
| | | if(codeData == null){ |
| | | codeDataArray = resultData.getJSONArray("data") ; |
| | | } |
| | | if(codeData == null && codeDataArray == null){ |
| | | msg = RtuSuccessMsg ; |
| | | }else { |
| | | String json = codeData.toJSONString(); |
| | | String json = null ; |
| | | if(codeData != null){ |
| | | json = codeData.toJSONString() ; |
| | | }else if(codeDataArray != null){ |
| | | json = codeDataArray.toJSONString() ; |
| | | } |
| | | List<DataCd55Vo> list = JSON.parseArray(json, DataCd55Vo.class) ; |
| | | if(list != null && list.size() > 0){ |
| | | msg = "" ; |
| | | msg = "\n" ; |
| | | for(DataCd55Vo cvo : list){ |
| | | msg += cvo.toStr(false) + "\n"; |
| | | msg += cvo.toStr(false) ; |
| | | msg += "\n" ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | |
| | | } |
| | | return msg; |
| | | } |
| | | |
| | | } |
| | |
| | | package com.dy.pipIrrRemote.monitor.p202404V201.cd5C; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd55Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd5CVo; |
| | | import com.dy.common.util.Callback; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | |
| | | String msg; |
| | | if(resultData != null){ |
| | | JSONObject codeData = resultData.getJSONObject("data") ; |
| | | JSONArray codeDataArray = null ; |
| | | if(codeData == null){ |
| | | codeDataArray = resultData.getJSONArray("data") ; |
| | | } |
| | | if(codeData == null && codeDataArray == null){ |
| | | msg = RtuSuccessMsg ; |
| | | }else { |
| | | String json = codeData.toJSONString(); |
| | | String json = null ; |
| | | if(codeData != null){ |
| | | json = codeData.toJSONString() ; |
| | | }else if(codeDataArray != null){ |
| | | json = codeDataArray.toJSONString() ; |
| | | } |
| | | List<DataCd5CVo> list = JSON.parseArray(json, DataCd5CVo.class) ; |
| | | if(list != null && list.size() > 0){ |
| | | msg = "" ; |
| | | msg = "\n" ; |
| | | for(DataCd5CVo cvo : list){ |
| | | msg += cvo.toStr(false) + "\n"; |
| | | msg += cvo.toStr(false) ; |
| | | msg += "\n" ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | |
| | | } |
| | | return msg; |
| | | } |
| | | |
| | | } |
| | |
| | | package com.dy.pipIrrRemote.monitor.p202404V201.cd65; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.mw.protocol.Command; |
| | |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | String msg; |
| | | if(resultData != null){ |
| | | JSONObject codeData = resultData.getJSONObject("data") ; |
| | | JSONArray codeDataArray = null ; |
| | | if(codeData == null){ |
| | | codeDataArray = resultData.getJSONArray("data") ; |
| | | } |
| | | if(codeData == null && codeDataArray == null){ |
| | | msg = RtuSuccessMsg ; |
| | | }else { |
| | | String json = codeData.toJSONString(); |
| | | String json = null ; |
| | | if(codeData != null){ |
| | | json = codeData.toJSONString() ; |
| | | }else if(codeDataArray != null){ |
| | | json = codeDataArray.toJSONString() ; |
| | | } |
| | | List<DataCd65Vo> list = JSON.parseArray(json, DataCd65Vo.class) ; |
| | | if(list != null && list.size() > 0){ |
| | | msg = "" ; |
| | | msg = "\n" ; |
| | | for(DataCd65Vo cvo : list){ |
| | | msg += cvo.toStr(false) ; |
| | | msg += "\n" ; |
| | | } |
| | | }else{ |
| | | msg = RtuSuccessMsg ; |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.common.webUtil.ResultCodeMsg; |
| | | import com.dy.pipIrrGlobal.voSe.*; |
| | | import com.dy.pipIrrTerminal.card.dto.*; |
| | | import com.dy.pipIrrTerminal.card.qo.QoCards; |
| | | import com.dy.pipIrrTerminal.card.qo.QoLostCards; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.media.Content; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import io.swagger.v3.oas.annotations.responses.ApiResponse; |
| | | import io.swagger.v3.oas.annotations.responses.ApiResponses; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æå®æ¡ä»¶è·åæ°´å¡å表ï¼ç»ç«¯åºç¨ç¨åºä½¿ç¨ |
| | | * @param vo |
| | | * @return |
| | | */ |
| | | @Operation(summary = "è·å¾ä¸é¡µæ°´å¡è®°å½", description = "è¿åä¸é¡µæ°´å¡æ°æ®") |
| | | @ApiResponses(value = { |
| | | @ApiResponse( |
| | | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | description = "è¿åä¸é¡µæ°´å¡æ°æ®ï¼BaseResponse.content:QueryResultVo[{}]ï¼", |
| | | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | schema = @Schema(implementation = VoCards.class))} |
| | | ) |
| | | }) |
| | | @GetMapping(path = "getcards") |
| | | @SsoAop() |
| | | public BaseResponse<QueryResultVo<List<VoCards>>> getcards(QoCards vo){ |
| | | try { |
| | | QueryResultVo<List<VoCards>> res = cardSv.getCards(vo); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } catch (Exception e) { |
| | | log.error("æ¥è¯¢æ°´å¡å¼å¸¸", e); |
| | | return BaseResponseUtils.buildException(e.getMessage()) ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·åå·²æå¤±çæ°´å¡å表ï¼ç»ç«¯åºç¨ç¨åºä½¿ç¨ |
| | | * @param vo |
| | | * @return |
| | | */ |
| | | @Operation(summary = "è·å¾ä¸é¡µå·²æå¤±æ°´å¡è®°å½", description = "è¿åä¸é¡µå·²æå¤±æ°´å¡æ°æ®") |
| | | @ApiResponses(value = { |
| | | @ApiResponse( |
| | | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | description = "è¿åä¸é¡µå·²æå¤±æ°´å¡æ°æ®ï¼BaseResponse.content:QueryResultVo[{}]ï¼", |
| | | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | schema = @Schema(implementation = VoCards.class))} |
| | | ) |
| | | }) |
| | | @GetMapping(path = "getlostcards") |
| | | @SsoAop() |
| | | public BaseResponse<QueryResultVo<List<VoCards>>> getLostCards(QoLostCards vo){ |
| | | try { |
| | | QueryResultVo<List<VoCards>> res = cardSv.getLostCards(vo); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } catch (Exception e) { |
| | | log.error("æ¥è¯¢å·²æå¤±æ°´å¡å¼å¸¸", e); |
| | | return BaseResponseUtils.buildException(e.getMessage()) ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æ°´å¡ç¼å·è·åå¡ä¿¡æ¯ |
| | | * @param cardNum æ°´å¡ç¼å· |
| | | * @return |
| | | */ |
| | | @Operation(summary = "æ ¹æ®æ°´å¡ç¼å·è·åå¡ä¿¡æ¯", description = "æ ¹æ®æ°´å¡ç¼å·è·å对åºçå¡ä¿¡æ¯") |
| | | @ApiResponses(value = { |
| | | @ApiResponse( |
| | | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | description = "è¿åå¡ä¿¡æ¯ï¼BaseResponse.content:VoCardByClientNumï¼", |
| | | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | schema = @Schema(implementation = VoCardByClientNum.class))} |
| | | ) |
| | | }) |
| | | @GetMapping(path = "getcardbycardnum") |
| | | @SsoAop() |
| | | public BaseResponse<VoCardByClientNum> getCardByCardNum(@RequestParam String cardNum){ |
| | | try { |
| | | VoCardByClientNum res = cardSv.getCardByCardNum(cardNum); |
| | | if (res == null) { |
| | | return BaseResponseUtils.buildFail("æªæ¾å°å¯¹åºçå¡ä¿¡æ¯"); |
| | | } |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } catch (Exception e) { |
| | | log.error("æ ¹æ®æ°´å¡ç¼å·æ¥è¯¢å¡ä¿¡æ¯å¼å¸¸", e); |
| | | return BaseResponseUtils.buildException(e.getMessage()) ; |
| | | } |
| | | } |
| | | } |
| | |
| | | package com.dy.pipIrrTerminal.card; |
| | | |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.*; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeCardOperate; |
| | |
| | | import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory; |
| | | import com.dy.pipIrrGlobal.voSe.*; |
| | | import com.dy.pipIrrTerminal.card.dto.*; |
| | | import com.dy.pipIrrTerminal.card.qo.QoCards; |
| | | import com.dy.pipIrrTerminal.card.qo.QoLostCards; |
| | | import com.dy.pipIrrTerminal.card.enums.CardStateENUM; |
| | | import com.dy.pipIrrTerminal.card.enums.LastOperateENUM; |
| | | import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM; |
| | | import com.dy.pipIrrTerminal.card.enums.RechargeTypeENUM; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.dubbo.common.utils.PojoUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æå®æ¡ä»¶è·åæ°´å¡å表 |
| | | * @param vo æ¥è¯¢æ¡ä»¶ |
| | | * @return æ°´å¡å表 |
| | | */ |
| | | public QueryResultVo<List<VoCards>> getCards(QoCards vo) { |
| | | Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo); |
| | | Long itemTotal = seClientCardMapper.getCardsCount(params); |
| | | |
| | | QueryResultVo<List<VoCards>> rsVo = new QueryResultVo<>(); |
| | | rsVo.pageSize = vo.pageSize; |
| | | rsVo.pageCurr = vo.pageCurr; |
| | | |
| | | if (itemTotal > 0) { |
| | | rsVo.calculateAndSet(itemTotal, params); |
| | | List<VoCards> list = seClientCardMapper.getCards(params); |
| | | rsVo.obj = list; |
| | | } else { |
| | | rsVo.obj = new ArrayList<>(); |
| | | rsVo.itemTotal = 0L; |
| | | } |
| | | |
| | | return rsVo; |
| | | } |
| | | |
| | | /** |
| | | * è·åå·²æå¤±çæ°´å¡å表 |
| | | * @param vo æ¥è¯¢æ¡ä»¶ |
| | | * @return å·²æå¤±çæ°´å¡å表 |
| | | */ |
| | | public QueryResultVo<List<VoCards>> getLostCards(QoLostCards vo) { |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("pageCurr", vo.pageCurr); |
| | | params.put("pageSize", vo.pageSize); |
| | | params.put("state", 2); // æå¤±ç¶æ |
| | | |
| | | Long itemTotal = seClientCardMapper.getLostCardsCount(params); |
| | | |
| | | QueryResultVo<List<VoCards>> rsVo = new QueryResultVo<>(); |
| | | rsVo.pageSize = vo.pageSize; |
| | | rsVo.pageCurr = vo.pageCurr; |
| | | |
| | | if (itemTotal > 0) { |
| | | rsVo.calculateAndSet(itemTotal, params); |
| | | List<VoCards> list = seClientCardMapper.getLostCards(params); |
| | | rsVo.obj = list; |
| | | } else { |
| | | rsVo.obj = new ArrayList<>(); |
| | | rsVo.itemTotal = 0L; |
| | | } |
| | | |
| | | return rsVo; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æ°´å¡ç¼å·è·åå¡ä¿¡æ¯ |
| | | * @param cardNum æ°´å¡ç¼å· |
| | | * @return å¡ä¿¡æ¯ |
| | | */ |
| | | public VoCardByClientNum getCardByCardNum(String cardNum) { |
| | | return seClientCardMapper.getCardByCardNum(cardNum); |
| | | } |
| | | } |
| | |
| | | /** |
| | | * æ¯ä»æ¹å¼ |
| | | */ |
| | | @NotNull(message = "æ¯ä»æ¹å¼ä¸è½ä¸ºç©º") |
| | | private Long paymentId; |
| | | |
| | | /** |
| New file |
| | |
| | | package com.dy.pipIrrTerminal.card.qo; |
| | | |
| | | import com.dy.common.webUtil.QueryConditionVo; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-01-15 |
| | | * @LastEditTime 2025-01-15 |
| | | * @Description ç»ç«¯æ¨¡åæ°´å¡è®°å½æ¥è¯¢æ¡ä»¶ |
| | | */ |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ToString(callSuper = true) |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @Builder |
| | | @Schema(name = "æ°´å¡è®°å½æ¥è¯¢æ¡ä»¶") |
| | | public class QoCards extends QueryConditionVo { |
| | | |
| | | @Schema(description = "åæ·ç¼å·") |
| | | public Long clientNum; |
| | | |
| | | @Schema(description = "åæ·å§å") |
| | | private String clientName; |
| | | |
| | | @Schema(description = "æ°´å¡ç¼å·") |
| | | public Long cardNum; |
| | | } |
| New file |
| | |
| | | package com.dy.pipIrrTerminal.card.qo; |
| | | |
| | | import com.dy.common.webUtil.QueryConditionVo; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-01-15 |
| | | * @LastEditTime 2025-01-15 |
| | | * @Description ç»ç«¯æ¨¡åå·²æå¤±æ°´å¡æ¥è¯¢æ¡ä»¶ |
| | | */ |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ToString(callSuper = true) |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @Builder |
| | | @Schema(name = "å·²æå¤±æ°´å¡æ¥è¯¢æ¡ä»¶") |
| | | public class QoLostCards extends QueryConditionVo { |
| | | |
| | | @Schema(description = "页ç ", example = "1") |
| | | public Integer pageCurr; |
| | | |
| | | @Schema(description = "æ¯é¡µæ°é", example = "10") |
| | | public Integer pageSize; |
| | | } |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, database-jyg, self |