瀏覽代碼

添加权限

wwh 1 年之前
父節點
當前提交
7167aa6581
共有 100 個文件被更改,包括 5938 次插入3 次删除
  1. 143 0
      huimv-env-admin/pom.xml
  2. 72 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/HuimvAdminApplication.java
  3. 109 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/AuthorizeController.java
  4. 82 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/BasePigpenController.java
  5. 56 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnergyDataController.java
  6. 89 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceController.java
  7. 40 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceMaintainController.java
  8. 41 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceOnlineController.java
  9. 25 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceSync.java
  10. 103 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/FarmController.java
  11. 332 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/LoginController.java
  12. 47 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/MenuController.java
  13. 19 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/PigUnitController.java
  14. 164 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/SysAccountMultilevelController.java
  15. 65 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/SysGroupController.java
  16. 44 0
      huimv-env-admin/src/main/java/com/huimv/env/admin/controller/SysUserController.java
  17. 104 0
      huimv-env-admin/src/main/resources/application-dev.yml
  18. 89 0
      huimv-env-admin/src/main/resources/application-prod.yml
  19. 34 0
      huimv-env-admin/src/main/resources/application.properties
  20. 3 3
      huimv-env-common/pom.xml
  21. 138 0
      huimv-env-common/src/main/java/com/huimv/env/common/config/AccessToken.java
  22. 16 0
      huimv-env-common/src/main/java/com/huimv/env/common/config/ApiPrefixAutoConfiguration.java
  23. 28 0
      huimv-env-common/src/main/java/com/huimv/env/common/config/InterceptorConfig.java
  24. 82 0
      huimv-env-common/src/main/java/com/huimv/env/common/config/JWTInterceptor.java
  25. 26 0
      huimv-env-common/src/main/java/com/huimv/env/common/config/MybatisPlusConfig.java
  26. 35 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/AccountGroup.java
  27. 58 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/BasePigpen.java
  28. 96 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/EnergyData.java
  29. 73 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvData.java
  30. 77 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvDevice.java
  31. 60 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvDeviceMaintain.java
  32. 73 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvDeviceOnline.java
  33. 88 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvWarningInfo.java
  34. 73 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvWarningThreshold.java
  35. 42 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/Farm.java
  36. 37 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/Group.java
  37. 36 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/GroupMenu.java
  38. 49 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/Menu.java
  39. 47 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/PigUnit.java
  40. 64 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/SysAccountMultilevel.java
  41. 47 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/User.java
  42. 42 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/BasePigpenDto.java
  43. 15 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/DeviceDto.java
  44. 5 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/EnvDeviceDto.java
  45. 10 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/EnvWarningDto.java
  46. 107 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/MenuDto.java
  47. 29 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/UserAccountDto.java
  48. 28 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/UserAndAccountGroup.java
  49. 10 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/WeCahtVo.java
  50. 15 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/WeatherDto.java
  51. 19 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/WeatherLives.java
  52. 9 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/vo/EnvDataVo.java
  53. 39 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/vo/TreeBasePigpen.java
  54. 28 0
      huimv-env-common/src/main/java/com/huimv/env/common/entity/vo/TreeCameraFuntionArea.java
  55. 20 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/AccountGroupMapper.java
  56. 18 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/BasePigpenMapper.java
  57. 61 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnergyDataMapper.java
  58. 28 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDataMapper.java
  59. 17 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDeviceMaintainMapper.java
  60. 26 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDeviceMapper.java
  61. 17 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDeviceOnlineMapper.java
  62. 21 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvWarningInfoMapper.java
  63. 17 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvWarningThresholdMapper.java
  64. 18 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/FarmMapper.java
  65. 18 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/GroupMapper.java
  66. 21 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/GroupMenuMapper.java
  67. 24 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/MenuMapper.java
  68. 17 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/PigUnitMapper.java
  69. 22 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/SysAccountMultilevelMapper.java
  70. 25 0
      huimv-env-common/src/main/java/com/huimv/env/common/mapper/UserMapper.java
  71. 17 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IAccountGroupService.java
  72. 31 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IAuthorizeService.java
  73. 27 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IBasePigpenService.java
  74. 30 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IEnergyDataService.java
  75. 16 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDataService.java
  76. 25 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDeviceMaintainService.java
  77. 17 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDeviceOnlineService.java
  78. 43 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDeviceService.java
  79. 26 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvWarningInfoService.java
  80. 24 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvWarningThresholdService.java
  81. 26 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IFarmService.java
  82. 16 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IGroupMenuService.java
  83. 29 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IGroupService.java
  84. 12 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/ILoginService.java
  85. 35 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IMenuService.java
  86. 17 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IPigUnitService.java
  87. 34 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/ISysAccountMultilevelService.java
  88. 28 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/IUserService.java
  89. 20 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/AccountGroupServiceImpl.java
  90. 238 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/AuthorizeServiceImpl.java
  91. 158 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/BasePigpenServiceImpl.java
  92. 557 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnergyDataServiceImpl.java
  93. 21 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDataServiceImpl.java
  94. 71 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDeviceMaintainServiceImpl.java
  95. 21 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDeviceOnlineServiceImpl.java
  96. 459 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDeviceServiceImpl.java
  97. 73 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvWarningInfoServiceImpl.java
  98. 139 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvWarningThresholdServiceImpl.java
  99. 96 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/FarmServiceImpl.java
  100. 0 0
      huimv-env-common/src/main/java/com/huimv/env/common/service/impl/GroupMenuServiceImpl.java

+ 143 - 0
huimv-env-admin/pom.xml

@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.4.1</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.huimv.admin</groupId>
+    <artifactId>huimv-env-admin</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>huimv-env-common</artifactId>
+            <version>0.0.7-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.2.5</version>
+        </dependency>
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.1</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>0.9.1</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.2.3</version>
+            <classifier>jdk15</classifier>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.28</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.dustlight.captcha</groupId>
+            <artifactId>redis-store</artifactId>
+            <version>0.0.6</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.dustlight.captcha</groupId>
+            <artifactId>captcha-core</artifactId>
+            <version>0.0.6</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.11</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.14</version>
+        </dependency>
+        <dependency>
+            <groupId>com.jcraft</groupId>
+            <artifactId>jsch</artifactId>
+            <version>0.1.54</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls-poi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <!--                <configuration>-->
+                <!--                    <includeSystemScope>true</includeSystemScope>-->
+                <!--                    <skip>true</skip>-->
+                <!--                    <mainClass>HuimvAdminApplication</mainClass>-->
+                <!--                </configuration>-->
+            </plugin>
+            <!--在这里修改版本-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.4.3</version>
+            </plugin>
+            <!---->
+        </plugins>
+
+    </build>
+</project>

+ 72 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/HuimvAdminApplication.java

@@ -0,0 +1,72 @@
+package com.huimv.env.admin;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.connector.Connector;
+import org.apache.tomcat.util.descriptor.web.SecurityCollection;
+import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
+import org.apache.tomcat.util.http.LegacyCookieProcessor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.boot.web.server.WebServerFactoryCustomizer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScans;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+@ComponentScans({@ComponentScan("com.huimv.env.common.utils"), @ComponentScan("com.huimv.env.common.service"),@ComponentScan("com.huimv.env.common.config")})
+@EntityScan(value = "com.huimv.env.common.entity")
+@MapperScan("com.huimv.env.common.mapper")
+@EnableScheduling
+//@EnableDiscoveryClient
+public class HuimvAdminApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(HuimvAdminApplication.class, args);
+    }
+//    @Bean
+//    public static RestTemplate getRestTemplate(){
+//        return new RestTemplate();
+//    }
+
+//    @Bean
+//    public WebServerFactoryCustomizer<TomcatServletWebServerFactory> cookieProcessorCustomizer() {
+//        return tomcatServletWebServerFactory -> tomcatServletWebServerFactory.addContextCustomizers((TomcatContextCustomizer) context -> {
+//            context.setCookieProcessor(new LegacyCookieProcessor());
+//        });
+//    }
+//    @Bean
+//    public TomcatServletWebServerFactory servletContainer() {
+//        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
+//            @Override
+//            protected void postProcessContext(Context context) {
+//                SecurityConstraint constraint = new SecurityConstraint();
+//                constraint.setUserConstraint("CONFIDENTIAL");
+//                SecurityCollection collection = new SecurityCollection();
+//                collection.addPattern("/*");
+//                constraint.addCollection(collection);
+//                context.addConstraint(constraint);
+//            }
+//        };
+//        tomcat.addAdditionalTomcatConnectors(httpConnector());
+//        return tomcat;
+//    }
+
+//    @Bean
+//    public Connector httpConnector() {
+//        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
+//        connector.setScheme("http");
+//        //Connector监听的http的默认端口号
+//        connector.setPort(8012);
+//        connector.setSecure(false);
+//        //监听到http的端口号后转向到的https的端口号,也就是项目配置的port
+//        connector.setRedirectPort(8011);
+//        return connector;
+//    }
+
+
+}

+ 109 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/AuthorizeController.java

@@ -0,0 +1,109 @@
+package com.huimv.env.admin.controller;
+
+
+
+import com.huimv.env.common.entity.Menu;
+import com.huimv.env.common.service.IAuthorizeService;
+import com.huimv.env.common.service.IMenuService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "/admin/auth")
+@CrossOrigin
+public class AuthorizeController {
+
+    @Autowired
+    IAuthorizeService iAuthorizeService;
+    @Autowired
+    IMenuService iMenuService;
+
+    @PostMapping("/saveAccountGroup")
+    public Result saveAccountGroup(@RequestBody Map<String, String> map){
+        /*
+         * 保存账号关联权限组数据
+         */
+        String accountId = map.get("accountId");
+        String groupIds = map.get("groupIds");
+        return iAuthorizeService.saveAccountGroup(accountId,groupIds);
+    }
+
+    @PostMapping("/saveGroupMenu")
+    public Result saveGroupMenu(@RequestBody Map<String, String> map){
+        /*
+         * 保存权限组关联菜单数据
+         */
+        String groupId = map.get("groupId");
+        String menuIds = map.get("menuIds");
+        String isAll = map.get("isAll");
+        return iAuthorizeService.saveGroupMenu(groupId,menuIds,isAll);
+    }
+
+    @RequestMapping("/getGroupByAccount")
+    public Result getGroupByAccount(@RequestParam(name = "accountId", required = true) String accountId){
+        /*
+         * 根据账号获取权限组
+         */
+        return iAuthorizeService.getGroupByAccount (accountId);
+    }
+
+    @PostMapping("/getMenuByGroup")
+    public Result getMenuByGroup(@RequestBody Map<String, String> map){
+        /*
+         * 根据权限组获取菜单
+         */
+        return iAuthorizeService.getMenuByGroup(map);
+    }
+
+    @PostMapping("/getMenuByGroupAndFarm")
+    public Result getMenuByGroupAndFarm(@RequestBody Map<String, String> map){
+        /*
+         * 根据权限组获取菜单
+         */
+        return iAuthorizeService.getMenuByGroupAndFarm(map);
+    }
+
+    @PostMapping("/getMyMenu")
+    public Result getMyMenuAndButton(@RequestBody  Map<String,String> map){
+        /*
+         * 获取用户的菜单数据
+         */
+        String userId = map.get("userId");
+        String farmId = map.get("farmId");
+        List<Menu> myMenu = iAuthorizeService.getMyMenuAll(userId,farmId);
+
+        List<Map> list = iMenuService.optimizeListUtil(0,myMenu);
+        return new Result(ResultCode.SUCCESS,list);
+    }
+//    //获取菜单-多级
+//    @RequestMapping("/getMyMenuMultilevel")
+//    public Result getMyMenuMultilevel(@RequestParam(name = "userId", required = true) String userId){
+//        return new Result(ResultCode.SUCCESS,iAuthorizeService.getMyMenuMultilevel(userId));
+//    }
+
+
+    @PostMapping("/getMyButton")
+    public Result getMyButton(@RequestBody Map<String,Integer> map){
+        /*
+         * 获取用户的菜单数据
+         */
+        Integer userId = map.get("userId");
+        Integer farmId = map.get("farmId");
+        List list = iAuthorizeService.getMyButton(userId,farmId);
+        return new Result(ResultCode.SUCCESS,list);
+    }
+
+
+    @GetMapping("/getAcountByGroup")
+    public Result getAccountByGroup(String groupId){
+        /*
+         * 根据权限组获取菜单
+         */
+        return iAuthorizeService.getAccountByGroup(groupId);
+    }
+}

+ 82 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/BasePigpenController.java

@@ -0,0 +1,82 @@
+package com.huimv.env.admin.controller;
+
+
+
+import com.huimv.env.common.entity.BasePigpen;
+import com.huimv.env.common.service.IBasePigpenService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultUtil;
+import com.huimv.env.common.entity.dto.BasePigpenDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@RestController
+@RequestMapping("/basePigpen")
+@CrossOrigin
+public class BasePigpenController {
+    @Autowired
+    private IBasePigpenService basePigpenService;
+
+    @PostMapping( "/addPigpen")
+    public Result addPigpen(@RequestBody BasePigpenDto basePigpenDto) {
+        return basePigpenService.addPigpen(basePigpenDto);
+    }
+
+    @PostMapping( "/addUnit")
+    public Result addUnit(@RequestBody BasePigpen basePigpen) {
+        BasePigpen byId = basePigpenService.getById(basePigpen.getParentId());
+        String parentIds = byId.getOther2() + "," + basePigpen.getParentId();
+        basePigpen.setFType(3);
+        basePigpen.setOther2(parentIds);
+        if ( basePigpenService.save(basePigpen)){
+            return ResultUtil.addResult(1);
+        }
+        return ResultUtil.addResult(0);
+    }
+
+    @PostMapping( "/updatePigpen")
+    public Result updatePigpen(@RequestBody BasePigpen basePigpen) {
+         return  basePigpenService.updatePigpen(basePigpen);
+    }
+
+    @PostMapping( "/updateUnit")
+    public Result updateUnit(@RequestBody BasePigpen basePigpen) {
+        if ( basePigpenService.updateById(basePigpen)){
+            return ResultUtil.addResult(1);
+        }
+        return ResultUtil.addResult(0);
+    }
+
+    @PostMapping( "/deletePigpen")
+    public Result deletePigpen(@RequestBody Map<String,Integer> map) {
+        return  basePigpenService.deletePigpen(map);
+    }
+
+    @RequestMapping(value = "/list",method = RequestMethod.POST)
+    public Result list(@RequestBody Map<String, Object> paramsMap) {
+        System.out.println("paramsMap>>"+paramsMap.toString());
+        String farmCode = "";
+        if (paramsMap.get("farmId") != null) {
+            farmCode = paramsMap.get("farmId")+"";
+        }
+        String stageCode = "";
+        if (paramsMap.get("stageCode") != null) {
+            stageCode = paramsMap.get("stageCode")+"";
+        }
+        String buildName = "";
+        if (paramsMap.get("buildName") != null) {
+            buildName = paramsMap.get("buildName")+"";
+        }
+        return basePigpenService.list(farmCode,buildName,stageCode);
+    }
+}

+ 56 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnergyDataController.java

@@ -0,0 +1,56 @@
+package com.huimv.env.admin.controller;
+
+
+
+import com.huimv.env.common.service.IEnergyDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 耗能数据 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+@RestController
+@RequestMapping("/energy-data")
+@CrossOrigin
+public class EnergyDataController {
+
+    @Autowired
+    private IEnergyDataService iEnergyDataService;
+//
+//    @RequestMapping("/listCount")
+//    public Result listCount(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
+//        return iEnergyDataService.listCount(httpServletRequest, paramsMap);
+//    }
+//
+//    @RequestMapping("/listData")
+//    public Result listData(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
+//        return iEnergyDataService.listData(httpServletRequest, paramsMap);
+//    }
+//
+//    @RequestMapping("/listRank")
+//    public Result listRank(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
+//        return iEnergyDataService.listRank(httpServletRequest, paramsMap);
+//    }
+//
+//    //大屏
+//    @RequestMapping("/listDataScreen")
+//    public Result listDataScreen(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
+//        return iEnergyDataService.listDataScreen(httpServletRequest, paramsMap);
+//    }
+//
+//    @RequestMapping("/listRankScreen")
+//    public Result listRankScreen(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
+//        return iEnergyDataService.listRankScreen(httpServletRequest, paramsMap);
+//    }
+}

+ 89 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceController.java

@@ -0,0 +1,89 @@
+package com.huimv.env.admin.controller;
+
+
+import com.huimv.env.common.entity.EnvDevice;
+import com.huimv.env.common.service.IEnvDeviceService;
+import com.huimv.env.common.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@RestController
+@RequestMapping("/envDevice")
+@CrossOrigin
+public class EnvDeviceController {
+    @Autowired
+    private IEnvDeviceService envDeviceService;
+
+    @RequestMapping("/DeviceCount")
+    public Result getDevice(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.count(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/DeviceList")
+    public Result getDeviceList(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.list(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/DeviceAdd")
+    public Result getDeviceAdd(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.add(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/DeviceEdit")
+    public Result getDeviceEdit(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.edit(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/DeviceDelete")
+    public Result getDeviceDelete(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.delete(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/listPigpen")
+    public Result listPigpen(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.listPigpen(httpServletRequest,paramsMap);
+    }
+    @RequestMapping("/listPigpenAll")
+    public Result listPigpenAll(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.listPigpenAll(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/listEnv")
+    public Result listEnv(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.listEnv(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/listDeviceCount")
+    public Result listDeviceCount(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.listDeviceCount(httpServletRequest,paramsMap);
+    }
+    @RequestMapping("/bandingUnitId")
+    public Result bandingUnitId(HttpServletRequest httpServletRequest, @RequestBody EnvDevice envDevice) {
+        return envDeviceService.bandingUnitId(httpServletRequest,envDevice);
+    }
+    @RequestMapping("/unBandingUnitId")
+    public Result unBandingUnitId(HttpServletRequest httpServletRequest, @RequestBody EnvDevice envDevice) {
+        envDevice.setUnitId(0);
+        envDevice.setUnitName("");
+        envDeviceService.updateById(envDevice);
+        return new Result(10000,"解绑成功",true);
+    }
+    @RequestMapping("/listByScreen")
+    public Result listByScreen(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.listEnvCount(httpServletRequest,paramsMap);
+    }
+}

+ 40 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceMaintainController.java

@@ -0,0 +1,40 @@
+package com.huimv.env.admin.controller;
+
+
+
+import com.huimv.env.common.service.IEnvDeviceMaintainService;
+import com.huimv.env.common.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 设备维修记录 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@RestController
+@RequestMapping("/envDeviceMaintain")
+@CrossOrigin
+public class EnvDeviceMaintainController {
+    @Autowired
+    private IEnvDeviceMaintainService envDeviceMaintainService;
+
+    @RequestMapping("/list")
+    public Result list(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceMaintainService.list(httpServletRequest,paramsMap);
+    }
+    @RequestMapping("/add")
+    public Result add(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceMaintainService.add(httpServletRequest,paramsMap);
+    }
+
+}

+ 41 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceOnlineController.java

@@ -0,0 +1,41 @@
+package com.huimv.env.admin.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import com.huimv.env.common.entity.EnvDeviceOnline;
+import com.huimv.env.common.service.IEnvDeviceOnlineService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/envDeviceOnline")
+public class EnvDeviceOnlineController {
+    @Autowired
+    private IEnvDeviceOnlineService envDeviceOnlineService;
+    @RequestMapping("/list")
+    public Result list(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        List<EnvDeviceOnline> list = envDeviceOnlineService.list(new QueryWrapper<EnvDeviceOnline>().eq("farm_id", farmId).orderByAsc("creat_time"));
+        return  new Result(ResultCode.SUCCESS,list);
+    }
+
+
+}

+ 25 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/EnvDeviceSync.java

@@ -0,0 +1,25 @@
+//package com.huimv.env.admin.controller;
+//
+//
+//import com.huimv.env.admin.service.IEnvDeviceService;
+//import com.huimv.env.common.utils.Result;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.transaction.annotation.Transactional;
+//import org.springframework.web.bind.annotation.*;
+//
+//import java.util.Map;
+//
+//@CrossOrigin
+//@RestController
+//@RequestMapping("/admin/envDeviceSync")
+//public class EnvDeviceSync {
+//    @Autowired
+//    private IEnvDeviceService envDeviceService;
+//
+//    @PostMapping("/sync")
+//    @Transactional
+//    public Result sync(@RequestBody Map<String, String> params) throws Exception {
+//        return  envDeviceService.sync(params);
+//
+//    }
+//}

+ 103 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/FarmController.java

@@ -0,0 +1,103 @@
+package com.huimv.env.admin.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONUtil;
+import com.huimv.common.token.TokenSign;
+
+import com.huimv.env.common.entity.Farm;
+import com.huimv.env.common.entity.dto.WeatherDto;
+import com.huimv.env.common.service.IFarmService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/admin/farm")
+public class FarmController {
+
+
+    @Autowired
+    private IFarmService farmService;
+
+    @GetMapping("/getFarm")
+    public Result getFarm(HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return  farmService.getFarm(userId);
+    }
+
+    @GetMapping("/getFarm2")
+    public Result getFarm2(HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return  farmService.getFarm2(userId);
+    }
+    @PostMapping("/list")
+    public Result list(HttpServletRequest request ,@RequestBody Map paramMap){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return  farmService.listPage(userId,paramMap);
+    }
+
+    @PostMapping("/add")
+    public Result add(@RequestBody Farm farm, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        if (userId != 1){
+            return new Result(10001,"该账号不能操作牧场",false);
+        }
+        return  farmService.add(farm);
+    }
+
+    @PostMapping("/edit")
+    public Result edit(@RequestBody Farm farm, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        if (userId != 1){
+            return new Result(10001,"该账号不能操作牧场",false);
+        }
+        farmService.updateById(farm);
+        return new Result(10000,"修改成功",true);
+    }
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(name = "ids") List<Integer> ids, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        if (userId != 1){
+            return new Result(10001,"该账号不能操作牧场",false);
+        }
+        farmService.removeByIds(ids);
+        return new Result(10000,"删除成功",true);
+    }
+
+    @PostMapping("/listFunction")
+    public Result listFunction(@RequestBody Map<String,String> paramsMap){
+        String farmId = paramsMap.get("farmId");
+        return  new Result(ResultCode.SUCCESS,farmService.getById(farmId).getFunction());
+    }
+
+    @PostMapping("/getWeather")
+    public Result getWeather(@RequestBody Map<String,Integer> map) {
+        int farmId =  map.get("farmId");
+        Farm byId = farmService.getById(farmId);
+        String cityCode = byId.getLocation();
+        if (ObjectUtil.isEmpty(cityCode)){
+            cityCode = "330782";
+        }
+        String url="https://restapi.amap.com/v3/weather/weatherInfo?parameters&key=c1d8179ed2dda7ed48c56bed06c0c86e&city="+cityCode+"&extensions=base&output=JSON";
+        String result = HttpUtil.get(url);
+        WeatherDto weatherDto = JSONUtil.toBean(result, WeatherDto.class);
+        return new Result(ResultCode.SUCCESS,weatherDto);
+    }
+}

+ 332 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/LoginController.java

@@ -0,0 +1,332 @@
+package com.huimv.env.admin.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.common.exception.ExceptionEnum;
+import com.huimv.common.exception.MiException;
+import com.huimv.common.utils.IpTools;
+import com.huimv.common.utils.VerifyUtil;
+import com.huimv.env.common.config.AccessToken;
+import com.huimv.env.common.entity.SysAccountMultilevel;
+import com.huimv.env.common.entity.dto.WeCahtVo;
+import com.huimv.env.common.service.ILoginService;
+import com.huimv.env.common.service.ISysAccountMultilevelService;
+import com.huimv.env.common.token.TokenSign;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+
+@RestController
+@RequestMapping(value = "/admin/my")
+@CrossOrigin
+public class LoginController {
+
+    @Autowired
+    ILoginService iLoginService;
+    @Autowired
+    private ISysAccountMultilevelService accountMultilevelService;
+//    @Autowired
+//    private UploadImage uploadImage;
+
+    @RequestMapping("/test")
+    public String logout() {
+        return "线上服务器1";
+    }
+
+    @RequestMapping("/logout")
+    public Result logout(@RequestParam(name = "accountName", required = true) String accountName, @RequestParam(name = "password", required = true) String password) {
+        return iLoginService.logout();
+    }
+
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+
+    @GetMapping("/send")
+    public void createImg(HttpServletRequest request, HttpServletResponse response) {
+        try {
+            //设置响应类型,告诉浏览器输出的内容为图片
+            response.setContentType("image/jpeg");
+            //设置响应头信息,告诉浏览器不要缓存此内容
+            response.setHeader("Pragma", "No-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            response.setDateHeader("Expire", 0);
+            VerifyUtil randomValidateCode = new VerifyUtil();
+            //输出验证码图片
+            String code = randomValidateCode.getRandcode(request, response);
+            System.out.println(code);
+            //将生成的随机验证码存放到redis中
+            String remoteHost = request.getRemoteHost();
+            redisTemplate.opsForValue().set(remoteHost, code, 300, TimeUnit.SECONDS);
+        } catch (Exception e) {
+            System.out.println("获取验证码异常:" + e);
+            throw new MiException(ExceptionEnum.VERIFCATION_FAID);
+        }
+    }
+
+    //登录-多牧场
+    @PostMapping(value = "/loginMultilevel")
+    public Result loginMultilevel(HttpServletRequest req, @RequestBody Map<String, String> map) {
+
+
+        String accountName = map.get("accountName");
+        String password = map.get("password");
+//        String code = map.get("code");
+
+        String remoteHost = req.getRemoteHost();
+
+//        String redisCode = redisTemplate.opsForValue().get(remoteHost);
+//        if (redisCode == null) {
+//            return  new Result(10005,"验证码过期,点击刷新",false);
+//        }
+//        if (!redisCode.equals(code.toUpperCase())) {
+//            return  new Result(10006,"验证码错误,登录失败",false);
+//        }
+        // 未对密码加密
+        Result result = iLoginService.loginMultilevel(accountName, password);
+        if (result.getCode() == 10000) {
+
+            SysAccountMultilevel accountEntity = (SysAccountMultilevel) result.getData();
+            Integer id = accountEntity.getId();
+            IpTools.getRemoteHost(req);
+            AccessToken accessToken = new AccessToken();
+            accessToken.setCreated(new Date());
+            accessToken.setAccountName(accountName);
+            accessToken.setFarmId(accountEntity.getFarmIds());
+            String token = TokenSign.sign(accountName, id, accountEntity.getFarmIds(), null, null);
+            accessToken.setToken(token);
+
+            accessToken.setId(id);
+            accessToken.setLoginIp(remoteHost);
+            accessToken.setType(accountEntity.getType());
+            Integer lastFarmId = accountEntity.getLastFarmId();
+            if (ObjectUtil.isEmpty(lastFarmId)) {
+                lastFarmId = Integer.parseInt(accountEntity.getFarmIds().split(",")[0]);
+            }
+            accessToken.setLastFarmId(lastFarmId);
+            accessToken.setUserName(accountEntity.getUserName());
+
+            return new Result(ResultCode.SUCCESS, accessToken);
+        }
+        return result;
+    }
+
+    //测试-token
+    @PostMapping(value = "/getToken")
+    public String getToken(HttpServletRequest req) {
+        String token = TokenSign.sign("superadmin", 1, null, null, null);
+        return token;
+    }
+
+    @RequestMapping("/logoutClient")
+    public Result logoutClient(HttpServletRequest req, @RequestBody Map<String, String> map) {
+        String accountName = map.get("accountName");
+        String password = map.get("password");
+        String remoteHost = req.getRemoteHost();
+        Result result = iLoginService.loginMultilevel(accountName, password);
+        if (result.getCode() == 10000) {
+            SysAccountMultilevel data = (SysAccountMultilevel) result.getData();
+            AccessToken accessToken = new AccessToken();
+            accessToken.setSysAccountMultilevel(data);
+            accessToken.setAccountName(accountName);
+            accessToken.setUserName(data.getUserName());
+            accessToken.setFarmId(data.getFarmIds());
+            accessToken.setType(data.getType());
+            accessToken.setId(data.getId());
+            String token = TokenSign.sign(data.getUserName(), data.getId(), data.getFarmIds(), data.getWorkLocationType(), data.getType());
+            accessToken.setToken(token);
+            Integer lastFarmId = data.getLastFarmId();
+            if (ObjectUtil.isEmpty(lastFarmId)) {
+                lastFarmId = Integer.parseInt(data.getFarmIds().split(",")[0]);
+            }
+            accessToken.setLastFarmId(lastFarmId);
+            accessToken.setLoginIp(remoteHost);
+            return new Result(ResultCode.SUCCESS, accessToken);
+        } else {
+            return result;
+        }
+    }
+
+
+/*    @RequestMapping("/logoutWeChat")
+    public Result logoutWeChat(HttpServletRequest req, @RequestBody Map<String, String> map) {
+        String remark = map.get("remark");
+        QueryWrapper<SysAccountMultilevel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account", remark);
+        SysAccountMultilevel one = accountMultilevelService.getOne(queryWrapper);
+        AccessToken accessToken = new AccessToken();
+        if (ObjectUtil.isEmpty(one)) {
+            SysAccountMultilevel accountMultilevel = new SysAccountMultilevel();
+            accountMultilevel.setAccount(remark);
+            accountMultilevel.setFarmIds("25");
+            accountMultilevel.setColor("");
+            accountMultilevel.setMode(true);
+            accountMultilevel.setUserName("访客");
+            accountMultilevel.setType(7);
+            accountMultilevelService.save(accountMultilevel);
+            QueryWrapper<SysAccountMultilevel> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("account", remark);
+            SysAccountMultilevel one1 = accountMultilevelService.getOne(queryWrapper1);
+
+            accessToken.setAccountName(remark);
+            accessToken.setUserName("访客");
+            accessToken.setFarmId("25");
+            accessToken.setType(7);
+            accessToken.setId(one1.getId());
+            String token = TokenSign.sign(remark, one1.getId(), one1.getFarmIds(), null,7);
+            accessToken.setToken(token);
+        } else {
+            accessToken.setAccountName(one.getUserName());
+            accessToken.setUserName("访客");
+            accessToken.setFarmId("25");
+            accessToken.setType(7);
+            accessToken.setId(one.getId());
+            String token = TokenSign.sign(remark, one.getId(), one.getFarmIds(), one.getWorkLocationId(),7);
+            accessToken.setToken(token);
+        }
+        return new Result(ResultCode.SUCCESS,accessToken);
+  *      String accountName = map.get("accountName");
+        String password = map.get("password");
+        String remoteHost = req.getRemoteHost();
+        Result result = iLoginService.loginMultilevel(accountName, password);
+        if (result.getCode() == 10000) {
+            SysAccountMultilevel data = (SysAccountMultilevel) result.getData();
+            AccessToken accessToken = new AccessToken();
+            accessToken.setAccountName(accountName);
+            accessToken.setUserName(data.getUserName());
+            accessToken.setFarmId(data.getFarmIds());
+            accessToken.setType(data.getType());
+            accessToken.setId(data.getId());
+            String token = TokenSign.sign(accountName,data.getId(),data.getFarmIds(),data.getWorkLocationId());
+            accessToken.setToken(token);
+            Integer lastFarmId = data.getLastFarmId();
+            if (ObjectUtil.isEmpty(lastFarmId)){
+                lastFarmId = Integer.parseInt(data.getFarmIds().split(",")[0]);
+            }
+            accessToken.setLastFarmId(lastFarmId);
+            accessToken.setLoginIp(remoteHost);
+            return new Result(ResultCode.SUCCESS,accessToken);
+        } else {
+            return result;
+        }*//*
+    }*/
+
+    @GetMapping("/logoutWeChat")
+    public Result logoutWeChat(HttpServletRequest req, @RequestParam String jsCode) {
+        String remoteHost = req.getRemoteHost();
+        Map<String, Object> paramsMap = new HashMap<>();
+        paramsMap.put("appid", "wxa28e45fe5cb10ff1");
+        paramsMap.put("secret", "c16e584ec6e69fd35edd98ec21ec5e94");
+        paramsMap.put("js_code", jsCode);
+        paramsMap.put("grant_type", "authorization_code");
+        String result = HttpUtil.get("https://api.weixin.qq.com/sns/jscode2session", paramsMap);
+        System.out.println(result);
+        JSONObject jsonObject = JSON.parseObject(result);
+        System.out.println(jsonObject);
+        String openid = (String) jsonObject.get("openid");
+        String sessionKey = (String) jsonObject.get("session_key");
+        System.out.println("拿到了openid" + openid);
+        System.out.println("拿到了sessionKey" + sessionKey);
+        QueryWrapper<SysAccountMultilevel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("wechat_id", openid);
+        SysAccountMultilevel data = accountMultilevelService.getOne(queryWrapper);
+        WeCahtVo weCahtVo = new WeCahtVo();
+        weCahtVo.setOpenId(openid);
+        weCahtVo.setSessionKey(sessionKey);
+        if (ObjectUtil.isEmpty(data)) {
+            return new Result(ResultCode.FAIL, weCahtVo);
+        } else {
+            AccessToken accessToken = new AccessToken();
+            accessToken.setSysAccountMultilevel(data);
+            accessToken.setAccountName(data.getAccount());
+            accessToken.setUserName(data.getUserName());
+            accessToken.setFarmId(data.getFarmIds());
+            accessToken.setType(data.getType());
+            accessToken.setId(data.getId());
+            String token = TokenSign.sign(data.getUserName(), data.getId(), data.getFarmIds(), data.getWorkLocationType(), 7);
+            accessToken.setToken(token);
+            Integer lastFarmId = data.getLastFarmId();
+            if (ObjectUtil.isEmpty(lastFarmId)) {
+                lastFarmId = Integer.parseInt(data.getFarmIds().split(",")[0]);
+            }
+            accessToken.setLastFarmId(lastFarmId);
+            accessToken.setLoginIp(remoteHost);
+            return new Result(ResultCode.SUCCESS, accessToken);
+        }
+    }
+
+  /*  @PostMapping("/register")
+    public Result addAdmission(HttpServletRequest req, @RequestParam("userName") String userName,
+                               @RequestParam("phone") String phone,
+                               @RequestParam("workName") String workName,
+                               @RequestParam("papersType") String papersType,
+                               @RequestParam("papersCode") String papersCode,
+                               @RequestParam(value = "imgUrl", required = false) MultipartFile imgUrl,
+                               @RequestParam("openId") String openId) throws IOException {
+        String remoteHost = req.getRemoteHost();
+        QueryWrapper<SysAccountMultilevel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("phone", phone).or().eq("papers_code", papersCode);
+        if (ObjectUtil.isNotEmpty(accountMultilevelService.getOne(queryWrapper))) {
+            return new Result(10001, "该手机号或身份证号已被使用!", false);
+        }
+        if (!PhoneNumberValidator.isValidPhoneNumber(phone)) {
+            return new Result(10001, "手机号格式错误!", false);
+        }
+        if (papersType.equals("0")) {
+            if (!IDCardValidator.isValidIDCard(papersCode)) {
+                return new Result(10001, "身份证号格式错误!", false);
+            }
+        }
+        SysAccountMultilevel sysAccountMultilevel = new SysAccountMultilevel();
+        sysAccountMultilevel.setUserName(userName);
+        sysAccountMultilevel.setPapersCode(papersCode);
+        sysAccountMultilevel.setPhone(phone);
+        sysAccountMultilevel.setAccount(phone);
+        sysAccountMultilevel.setPid(0);
+        sysAccountMultilevel.setPids("0");
+        sysAccountMultilevel.setPassword("123456");
+        sysAccountMultilevel.setWorkName(workName);
+        sysAccountMultilevel.setAccountStatus(1);
+        sysAccountMultilevel.setFarmIds("25");
+        sysAccountMultilevel.setLastFarmId(25);
+        sysAccountMultilevel.setPapersType(papersType);
+        sysAccountMultilevel.setWechatId(openId);
+        sysAccountMultilevel.setType(7);
+        String imageCom = uploadImage.getImageCom(imgUrl);
+        if (imageCom.equals("上传失败")) {
+            return new Result(10001, "图片上传失败!", false);
+        }
+        sysAccountMultilevel.setImgUrl(imageCom);
+        accountMultilevelService.save(sysAccountMultilevel);
+        AccessToken accessToken = new AccessToken();
+        accessToken.setSysAccountMultilevel(sysAccountMultilevel);
+        accessToken.setAccountName(sysAccountMultilevel.getAccount());
+        accessToken.setUserName(sysAccountMultilevel.getUserName());
+        accessToken.setFarmId(sysAccountMultilevel.getFarmIds());
+        accessToken.setType(sysAccountMultilevel.getType());
+        accessToken.setId(sysAccountMultilevel.getId());
+        String token = TokenSign.sign(sysAccountMultilevel.getUserName(), sysAccountMultilevel.getId(), sysAccountMultilevel.getFarmIds(), sysAccountMultilevel.getWorkLocationType(), sysAccountMultilevel.getType());
+        accessToken.setToken(token);
+        Integer lastFarmId = sysAccountMultilevel.getLastFarmId();
+        if (ObjectUtil.isEmpty(lastFarmId)) {
+            lastFarmId = Integer.parseInt(sysAccountMultilevel.getFarmIds().split(",")[0]);
+        }
+        accessToken.setLastFarmId(lastFarmId);
+        accessToken.setLoginIp(remoteHost);
+        return new Result(ResultCode.SUCCESS, accessToken);
+    }*/
+}

+ 47 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/MenuController.java

@@ -0,0 +1,47 @@
+package com.huimv.env.admin.controller;
+
+import com.huimv.env.common.entity.Menu;
+import com.huimv.env.common.service.IMenuService;
+import com.huimv.env.common.token.TokenSign;
+import com.huimv.env.common.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/admin/menu")
+@CrossOrigin
+public class MenuController {
+    @Autowired
+    private IMenuService menuService;
+
+    @PostMapping("/add")
+    public Result addMenu(@RequestBody Menu menu , HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+
+        return menuService.addMenu(menu,userId);
+    }
+
+
+    @PostMapping("/edit")
+    public Result editMenu(@RequestBody Menu menu){
+        return menuService.editMenu(menu);
+    }
+
+
+    @RequestMapping("/remove")
+    public Result removeMenu(@RequestParam(name = "menuId") Integer menuId){
+        return menuService.removeMenu(menuId);
+    }
+
+    @PostMapping("/list")
+    public Result optimizeList() {
+        return menuService.optimizeList();
+    }
+
+    @PostMapping("/list1")
+    public Result list1() {
+        return menuService.list1();
+    }
+}

+ 19 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/PigUnitController.java

@@ -0,0 +1,19 @@
+package com.huimv.env.admin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-07
+ */
+@RestController
+@RequestMapping("/pig-unit")
+public class PigUnitController {
+
+}

+ 164 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/SysAccountMultilevelController.java

@@ -0,0 +1,164 @@
+package com.huimv.env.admin.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.common.token.TokenSign;
+
+import com.huimv.env.common.entity.AccountGroup;
+import com.huimv.env.common.entity.SysAccountMultilevel;
+import com.huimv.env.common.service.IAccountGroupService;
+import com.huimv.env.common.service.ISysAccountMultilevelService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/admin/accountMultilevel")
+public class SysAccountMultilevelController {
+    @Autowired
+    private ISysAccountMultilevelService accountMultilevelService;
+
+    @Autowired
+    private IAccountGroupService accountGroupService;
+//    @Autowired
+//    private UploadImage uploadImage;
+
+
+    @PostMapping("/list")
+    public Result list(@RequestBody Map map , HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        int pageNum = (Integer)map.get("pageNum");
+        int pageSize = (Integer)map.get("pageSize");
+        String searchStr = (String)map.get("searchStr");
+
+        return accountMultilevelService.findUserAccount(searchStr,pageNum,pageSize,userId);
+
+    }
+
+    @PostMapping("/listSubordinate")
+    public Result listSubordinate(@RequestBody Map map , HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        int pageNum = (Integer)map.get("pageNum");
+        int pageSize = (Integer)map.get("pageSize");
+        String searchStr = (String)map.get("searchStr");
+        return accountMultilevelService.listSubordinate(searchStr,pageNum,pageSize,userId);
+    }
+
+    @PostMapping("/listSubordinateByFarm")
+    public Result listSubordinateByFarm(@RequestBody Map map , HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        String farmId = (String)map.get("farmId");
+        return accountMultilevelService.listSubordinateByFarm(farmId,userId);
+    }
+
+    @PostMapping("/add")
+    public Result add(@RequestBody SysAccountMultilevel sysAccountMultilevel , HttpServletRequest request){
+
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return accountMultilevelService.add(sysAccountMultilevel,userId);
+
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody SysAccountMultilevel sysAccountMultilevel){
+        accountMultilevelService.updateById(sysAccountMultilevel);
+
+        return new Result(10000,"修改成功",true);
+
+    }
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(name ="userIds") List<Integer> userIds){
+
+        accountGroupService.remove(new QueryWrapper<AccountGroup>().in("account_id",userIds));
+        accountMultilevelService.removeByIds(userIds);
+
+        return new Result(10000,"删除成功",true);
+
+    }
+
+    @GetMapping("/setAccountStatus")
+    public Result setAccountStatus(@RequestParam(name = "ids") List<Integer> ids, @RequestParam(name = "status") Integer status){
+        /* 设置账号状态 */
+        return accountMultilevelService.setAccountStatus(ids,status);
+    }
+
+    @GetMapping("/findOne")
+    public Result findOne(Integer id){
+        return new Result(ResultCode.SUCCESS, accountMultilevelService.getById(id));
+    }
+
+
+    @GetMapping("/getLastFarmId")
+    public Result getLastFarmId(HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return  accountMultilevelService.getLastFarmId(userId);
+    }
+
+//    @PostMapping("/editImg")
+//    @Transactional(rollbackFor = Exception.class)
+//    public Result editImg(HttpServletRequest httpServletRequest, @RequestParam("img") MultipartFile img) throws IOException {
+//        SysAccountMultilevel sysAccountMultilevel = accountMultilevelService.getById(TokenSign.getMemberIdByJwtToken(httpServletRequest));
+//        if (uploadImage.getImageCom(img).equals("上传失败")) {
+//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//            return new Result(10001,"图片上传失败",false);
+//        }
+//        sysAccountMultilevel.setImgUrl(uploadImage.getImageCom(img));
+//        accountMultilevelService.updateById(sysAccountMultilevel);
+//        return Result.SUCCESS();
+//    }
+
+    @PostMapping("/updateUserName")
+    public Result updateUserName(HttpServletRequest httpServletRequest,@RequestBody Map<String, String> paramsMap){
+        SysAccountMultilevel sysAccountMultilevel = accountMultilevelService.getById(TokenSign.getMemberIdByJwtToken(httpServletRequest));
+        sysAccountMultilevel.setUserName(paramsMap.get("userName"));
+        accountMultilevelService.updateById(sysAccountMultilevel);
+        return Result.SUCCESS();
+    }
+
+    @PostMapping("/updatePaper")
+    public Result updatePaper(HttpServletRequest httpServletRequest,@RequestBody Map<String, String> paramsMap){
+        SysAccountMultilevel sysAccountMultilevel = accountMultilevelService.getById(TokenSign.getMemberIdByJwtToken(httpServletRequest));
+        sysAccountMultilevel.setPapersType(paramsMap.get("papersType"));
+        sysAccountMultilevel.setPapersCode(paramsMap.get("papersCode"));
+        accountMultilevelService.updateById(sysAccountMultilevel);
+        return Result.SUCCESS();
+    }
+
+//    @PostMapping("/updateUser")
+//    public Result updateUser(HttpServletRequest httpServletRequest,
+//                             @RequestParam(value = "img", required = false) MultipartFile img,
+//                             @RequestParam(value = "userName", required = false) String userName,
+//                             @RequestParam(value = "phone", required = false) String phone,
+//                             @RequestParam(value = "workPost", required = false) Integer workPost,
+//                             @RequestParam(value = "workLocation", required = false) String workLocation,
+//                             @RequestParam(value = "workLocationId", required = false) String workLocationId,
+//                             @RequestParam(value = "workName", required = false) String workName,
+//                             @RequestParam(value = "papersType", required = false) String papersType,
+//                             @RequestParam(value = "papersCode", required = false) String papersCode) throws IOException {
+//        return accountMultilevelService.updateUser(httpServletRequest,img,userName,phone,workPost,workLocation,workLocationId,workName,papersType,papersCode);
+//    }
+
+    @PostMapping("/getDetail")
+    public Result getDetail(HttpServletRequest httpServletRequest){
+        return new Result(ResultCode.SUCCESS,accountMultilevelService.getById(TokenSign.getMemberIdByJwtToken(httpServletRequest)));
+    }
+}

+ 65 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/SysGroupController.java

@@ -0,0 +1,65 @@
+package com.huimv.env.admin.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+
+
+import com.huimv.env.common.entity.AccountGroup;
+import com.huimv.env.common.entity.Group;
+import com.huimv.env.common.service.IAccountGroupService;
+import com.huimv.env.common.service.IGroupService;
+import com.huimv.env.common.service.ISysAccountMultilevelService;
+import com.huimv.env.common.token.TokenSign;
+import com.huimv.env.common.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+
+@RestController
+@RequestMapping("/admin/group")
+@CrossOrigin
+public class SysGroupController {
+
+    @Autowired
+    private IGroupService groupService;
+
+    @Autowired
+    private IAccountGroupService accountGroupService;
+    @Autowired
+    private ISysAccountMultilevelService accountMultilevelService;
+
+    @PostMapping("/add")
+    public Result addGroup (@RequestBody Group group, HttpServletRequest request){
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        return groupService.addGroup(group,userId);
+    }
+
+    @PostMapping("/edit")
+    public Result updateGroup(@RequestBody Group group ){
+        return groupService.updateGroup( group);
+    }
+
+    @RequestMapping("/remove")
+    public Result removeGroup(@RequestParam("groupId") Integer groupId) {
+        accountGroupService.remove(new QueryWrapper<AccountGroup>().in("group_id",groupId));
+        return groupService.removeGroup(groupId);
+    }
+
+    @PostMapping("/list")
+    public Result listGroup(@RequestBody Map map , HttpServletRequest request) {
+        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+        List<Integer> allChildId = accountMultilevelService.getAllChildId(userId);
+        return groupService.listGroup(map,allChildId);
+    }
+
+    //根据角色查权限组
+    @PostMapping("/getGroupByUserId")
+    public Result getGroupByUserId(@RequestBody Map map){
+        Integer userId  =  (Integer) map.get("userId");
+        return  groupService.getGroupByUserId(userId);
+    }
+}

+ 44 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/SysUserController.java

@@ -0,0 +1,44 @@
+package com.huimv.env.admin.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+
+import com.huimv.env.common.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/user")
+@CrossOrigin
+public class SysUserController {
+    @Autowired
+    private IUserService iUserService;
+
+//    @PostMapping("/add")
+//    public Result addUser(@RequestBody User user){
+//        return  iUserService.addUser(user);
+//    }
+//
+//    @PostMapping("/edit")
+//    public Result updateUser(@RequestBody User user){
+//        return iUserService.updateUser(user);
+//    }
+//
+//    @RequestMapping("/remove")
+//    public Result removeUser(@RequestParam("userIds") List<Integer> userIds) {
+//
+//        return iUserService.removeUser(userIds);
+//    }
+
+    @PostMapping("/list")
+    public JSONObject listUser(@RequestBody Map map) {
+        System.out.println();
+        int pageNum = (Integer)map.get("pageNum");
+        int pageSize = (Integer)map.get("pageSize");
+        String searchStr = (String)map.get("searchStr");
+        return iUserService.findUserAccount(searchStr,pageNum,pageSize);
+    }
+
+}

+ 104 - 0
huimv-env-admin/src/main/resources/application-dev.yml

@@ -0,0 +1,104 @@
+server:
+  port: 8092
+
+spring:
+  application:
+    name: huimv-env-admin
+
+  datasource:
+    url: jdbc:mysql://115.238.57.190:3306/huimv-env-hylintech?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: hm123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+  jpa:
+    show-sql: true
+    database: mysql
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    open-in-view: true
+
+  #配置rabbitMq 服务器
+  #  rabbitmq:
+  #    host: 10.0.0.4
+  #    port: 5672
+  #    username: huimv
+  #    password: hm123456
+  #    #虚拟host 可以不设置,使用server默认host
+  #    virtual-host: /
+  rabbitmq:
+    host: 119.3.84.55
+    port: 5672
+    username: huimv
+    password: hm123456
+    #虚拟host 可以不设置,使用server默认host
+    #    virtual-host: /dev
+
+    #确认消息已发送到交换机(Exchange)
+    #    publisher-confirms: true #(过时、弃用)
+    publisher-confirm-type: correlated
+    #确认消息已发送到队列(Queue)
+    publisher-returns: true
+
+  #redis
+  #  redis:
+  #    database: 0
+  #    host: 192.168.1.68
+  #    port: 6379
+  #    password: hm123456
+  #    timeout: 5000ms
+  #    jedis:
+  #      pool:
+  #        max-active: 20
+  #        max-wait: -1
+  #        max-idle: 10
+  #        min-idle: 0
+  #    lettuce:
+  #      pool:
+  #        max-active: 3
+  #        min-idle: 2
+  #        max-idle: 3
+  #        max-wait: 1
+  #      shutdown-timeout: 100
+
+  data:
+    redis:
+      repositories:
+        enabled: false
+
+  #是否缓存空值
+  cache:
+    redis:
+      cache-null-values: false
+
+
+
+    #server:
+#  port: 9110
+#spring:
+#  application:
+#    name: huimv-hy-autoGetData
+#
+#  datasource:
+##    url: jdbc:mysql://47.98.175.112:3306/huimv_ql_farm_haiyan?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    #    url: jdbc:mysql://36.22.189.214:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#        url: jdbc:mysql://192.168.1.7:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    username: root
+#    password: hm123456
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+#  jpa:
+#    properties:
+#      hibernate:
+#        enable_lazy_load_no_trans: true
+#    show-sql: true
+#    database: mysql
+#    hibernate:
+#      ddl-auto: update
+#    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+#    open-in-view: true
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"   # * 在yaml 文件属于关键字,所以需要加引号
+

+ 89 - 0
huimv-env-admin/src/main/resources/application-prod.yml

@@ -0,0 +1,89 @@
+server:
+  port: 8085
+
+spring:
+  application:
+    name: huimv-env-admin
+
+  datasource:
+    url: jdbc:mysql://121.36.134.218/huimv-env-hylintech?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: hylintech
+    password: hm123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+  jpa:
+    show-sql: true
+    database: mysql
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    open-in-view: true
+
+  #配置rabbitMq 服务器
+  #  rabbitmq:
+  #    host: 10.0.0.4
+  #    port: 5672
+  #    username: huimv
+  #    password: hm123456
+  #    #虚拟host 可以不设置,使用server默认host
+  #    virtual-host: /
+  rabbitmq:
+    host: 121.36.134.218
+    port: 5672
+    username: admin
+    password: admin
+    #虚拟host 可以不设置,使用server默认host
+    virtual-host: /env
+
+    #确认消息已发送到交换机(Exchange)
+    #    publisher-confirms: true #(过时、弃用)
+    publisher-confirm-type: correlated
+    #确认消息已发送到队列(Queue)
+    publisher-returns: true
+
+  #redis
+  redis:
+    host: 122.112.224.199
+    port: 6379
+    password: hm123456
+
+  data:
+    redis:
+      repositories:
+        enabled: false
+
+  #是否缓存空值
+  cache:
+    redis:
+      cache-null-values: false
+
+
+
+    #server:
+#  port: 9110
+#spring:
+#  application:
+#    name: huimv-hy-autoGetData
+#
+#  datasource:
+##    url: jdbc:mysql://47.98.175.112:3306/huimv_ql_farm_haiyan?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    #    url: jdbc:mysql://36.22.189.214:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#        url: jdbc:mysql://192.168.1.7:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    username: root
+#    password: hm123456
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+#  jpa:
+#    properties:
+#      hibernate:
+#        enable_lazy_load_no_trans: true
+#    show-sql: true
+#    database: mysql
+#    hibernate:
+#      ddl-auto: update
+#    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+#    open-in-view: true
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"   # * 在yaml 文件属于关键字,所以需要加引号
+

+ 34 - 0
huimv-env-admin/src/main/resources/application.properties

@@ -0,0 +1,34 @@
+spring.profiles.active=prod
+#spring.profiles.active=dev
+
+#\u5F00\u542F\u5065\u5EB7\u76D1\u63A7
+management.endpoints.web.exposure.include=*
+
+#########################################################
+###             \u914D\u7F6Eundertow\u53D6\u4EE3tomcat                ###
+#########################################################
+# \u662F\u5426\u6253\u5F00 undertow \u65E5\u5FD7\uFF0C\u9ED8\u8BA4\u4E3A false
+server.undertow.accesslog.enabled=false
+# \u8BBE\u7F6E\u8BBF\u95EE\u65E5\u5FD7\u6240\u5728\u76EE\u5F55
+server.undertow.accesslog.dir=logs
+# \u6307\u5B9A\u5DE5\u4F5C\u8005\u7EBF\u7A0B\u7684 I/0 \u7EBF\u7A0B\u6570\uFF0C\u9ED8\u8BA4\u4E3A 2 \u6216\u8005 CPU \u7684\u4E2A\u6570
+server.undertow.io-threads=
+# \u6307\u5B9A\u5DE5\u4F5C\u8005\u7EBF\u7A0B\u4E2A\u6570\uFF0C\u9ED8\u8BA4\u4E3A I/O \u7EBF\u7A0B\u4E2A\u6570\u7684 8 \u500D
+server.undertow.worker-threads=
+# \u8BBE\u7F6E HTTP POST \u5185\u5BB9\u7684\u6700\u5927\u957F\u5EA6\uFF0C\u9ED8\u8BA4\u4E0D\u505A\u9650\u5236
+server.undertow.max-http-post-size=0
+
+#########################################################
+###   Actuator Monitor  --   Actuator configuration   ###
+#########################################################
+management.security.enabled=false
+
+# \u6570\u636E\u5904\u7406\u6D41\u7A0B
+data.input.flow=2
+
+# \u662F\u5426\u5199\u5165\u6D4B\u8BD5\u6570\u636E(1:\u5199\u5165 0:\u4E0D\u5199\u5165)
+data.test.input=0
+
+# PinYin
+#push.message.fault.list=0:\u521D\u59CB\u5316,1:\u65AD\u7535,2:\u9AD8\u6E29,3:\u4F4E\u6E29,4:\u4F20\u611F\u5668\u6545\u969C
+#push.message.act.list=1:\u62A5\u8B66,2:\u6062\u590D

+ 3 - 3
huimv-env-common/pom.xml

@@ -30,12 +30,12 @@
         <servletApi.version>3.1.0</servletApi.version>
         <freemarker.version>2.3.31</freemarker.version>
         <commonsLang3.version>3.7</commonsLang3.version>
-        <mybatisPlus.version>3.4.3.4</mybatisPlus.version>
+        <mybatisPlus.version>3.4.2</mybatisPlus.version>
         <huimvCommon.version>0.0.6-SNAPSHOT</huimvCommon.version>
         <huimvEnvCommon.version>0.0.1-SNAPSHOT</huimvEnvCommon.version>
         <junitPlatformCommons.version>1.8.2</junitPlatformCommons.version>
-        <mybatisPlusGenerator.version>3.3.2</mybatisPlusGenerator.version>
-        <mybatisPlusExtension.version>3.5.2</mybatisPlusExtension.version>
+        <mybatisPlusGenerator.version>3.2.0</mybatisPlusGenerator.version>
+        <mybatisPlusExtension.version>3.4.2</mybatisPlusExtension.version>
         <captcha.version>0.0.6</captcha.version>
         <captcha.reids.version>0.0.6</captcha.reids.version>
         <net.sf.json-lib.version>2.2.3</net.sf.json-lib.version>

+ 138 - 0
huimv-env-common/src/main/java/com/huimv/env/common/config/AccessToken.java

@@ -0,0 +1,138 @@
+package com.huimv.env.common.config;
+
+
+import com.huimv.env.common.entity.SysAccountMultilevel;
+
+import java.util.Date;
+
+/**
+ * 登录的token信息
+ * @author guojian
+ */
+public class AccessToken {
+    private String token;
+    private String loginIp;
+    private Date created;
+    private String accountName;
+    private Integer code;
+    private Integer id;
+    private Integer type;
+    private String farmId;
+    private String message;
+    private Integer lastFarmId;
+    private String userName;
+
+    public SysAccountMultilevel getSysAccountMultilevel() {
+        return sysAccountMultilevel;
+    }
+
+    public void setSysAccountMultilevel(SysAccountMultilevel sysAccountMultilevel) {
+        this.sysAccountMultilevel = sysAccountMultilevel;
+    }
+
+    private SysAccountMultilevel sysAccountMultilevel;
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Integer getLastFarmId() {
+        return lastFarmId;
+    }
+
+    public void setLastFarmId(Integer lastFarmId) {
+        this.lastFarmId = lastFarmId;
+    }
+
+    public AccessToken() {
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public String getLoginIp() {
+        return loginIp;
+    }
+
+    public void setLoginIp(String loginIp) {
+        this.loginIp = loginIp;
+    }
+
+    public Date getCreated() {
+        return created;
+    }
+
+    public void setCreated(Date created) {
+        this.created = created;
+    }
+
+    public String getAccountName() {
+        return accountName;
+    }
+
+    public void setAccountName(String accountName) {
+        this.accountName = accountName;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public String getFarmId() {
+        return farmId;
+    }
+
+    public void setFarmId(String farmId) {
+        this.farmId = farmId;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public AccessToken(String token, String loginIp, Date created, String accountName, Integer code, Integer id, Integer type, String farmId, String message, SysAccountMultilevel sysAccountMultilevel) {
+        this.token = token;
+        this.loginIp = loginIp;
+        this.created = created;
+        this.accountName = accountName;
+        this.code = code;
+        this.id = id;
+        this.type = type;
+        this.farmId = farmId;
+        this.message = message;
+        this.sysAccountMultilevel = sysAccountMultilevel;
+    }
+}

+ 16 - 0
huimv-env-common/src/main/java/com/huimv/env/common/config/ApiPrefixAutoConfiguration.java

@@ -0,0 +1,16 @@
+package com.huimv.env.common.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class ApiPrefixAutoConfiguration implements WebMvcConfigurer {
+
+    @Override
+    public void configurePathMatch(PathMatchConfigurer configurer) {
+        configurer.addPathPrefix("/huimvApi",  c -> c.isAnnotationPresent(RestController.class));
+    }
+
+}

+ 28 - 0
huimv-env-common/src/main/java/com/huimv/env/common/config/InterceptorConfig.java

@@ -0,0 +1,28 @@
+package com.huimv.env.common.config;
+
+import com.huimv.common.config.JWTInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @Description: 注册验证tocken的拦截器
+ * @Author
+ * @Date 2021/4/19 20:41
+ * @Version V1.0
+ */
+@Configuration
+public class InterceptorConfig implements WebMvcConfigurer {
+    @Bean
+    public com.huimv.common.config.JWTInterceptor jwtInterceptor(){
+        return new JWTInterceptor();
+    }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(jwtInterceptor()).
+                excludePathPatterns("/huimvApi/admin/my/*")
+                .excludePathPatterns("/huimvApi/receive/feed");
+    }
+}

+ 82 - 0
huimv-env-common/src/main/java/com/huimv/env/common/config/JWTInterceptor.java

@@ -0,0 +1,82 @@
+package com.huimv.env.common.config;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.env.common.token.TokenConstant;
+import com.huimv.env.common.token.TokenSign;
+import io.jsonwebtoken.Claims;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * jwt拦截器
+ * </p>
+ *
+ * @since 2021/4/19
+ */
+public class JWTInterceptor implements HandlerInterceptor {
+
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        // 如果不是映射到方法,则直接通过
+        if (!(handler instanceof HandlerMethod)) {
+            return true;
+        }
+
+        response.setContentType("application/json;charset=utf-8");
+        // 获取token
+        String token = request.getHeader("accessToken");
+
+
+        if (null == token) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("data", "token is null");
+            map.put("code", "401");
+            response.setStatus(401);
+            response.getWriter().write(JSONObject.toJSONString(map));
+            return false;
+        } else {
+            Claims claims = TokenSign.getClaims(token);
+            if (claims == null) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("data", "token is overdue");
+                map.put("code", "403");
+                response.setStatus(403);
+                response.getWriter().write(JSONObject.toJSONString(map));
+                return false;
+            }
+
+            boolean result = TokenSign.verify(token);
+            if (result) {
+                //更新存储的token信息
+                TokenConstant.updateTokenMap(token);
+                return true;
+            }
+            Map<String, Object> map = new HashMap<>();
+            map.put("data", "token is null");
+            map.put("code", "401");
+            response.setStatus(401);
+            response.getWriter().write(JSONObject.toJSONString(map));
+            return false;
+
+        }
+    }
+
+
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+
+    }
+}

+ 26 - 0
huimv-env-common/src/main/java/com/huimv/env/common/config/MybatisPlusConfig.java

@@ -0,0 +1,26 @@
+package com.huimv.env.common.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+
+    /**
+     * 分页插件
+     */
+//    @Bean
+//    public PaginationInterceptor paginationInterceptor() {
+//        return new PaginationInterceptor();
+//    }
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}

+ 35 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/AccountGroup.java

@@ -0,0 +1,35 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_account_group")
+public class AccountGroup extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer accountId;
+
+    private Integer groupId;
+
+
+}

+ 58 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/BasePigpen.java

@@ -0,0 +1,58 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("base_pigpen")
+public class BasePigpen implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 栋舍名字
+     */
+    private String buildName;
+
+    /**
+     * 父级
+     */
+    private Integer parentId;
+
+    /**
+     * 1栋 2单元 3房间
+     */
+    private Integer fType;
+    private Integer stageCode;
+
+    private Integer farmId;
+
+    private Integer sort;
+
+    private String other1;
+
+    private String other2;
+
+    private String other3;
+
+
+}

+ 96 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnergyData.java

@@ -0,0 +1,96 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 耗能数据
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("energy_data")
+public class EnergyData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用料记录值
+     */
+    private String feedValue;
+
+    /**
+     * 用料原始值
+     */
+    private String originalFeedValue;
+
+    /**
+     * 用水记录值
+     */
+    private String waterValue;
+
+    /**
+     * 用水原始值
+     */
+    private String originalWaterValue;
+
+    /**
+     * 天然气记录值
+     */
+    private String gasValue;
+
+    /**
+     * 天然气原始值
+     */
+    private String originalGasValue;
+
+    /**
+     * 用电记录值
+     */
+    private String electricityValue;
+
+    /**
+     * 用电原始值
+     */
+    private String originalElectricityValue;
+
+    /**
+     * 原始数据
+     */
+    private String originalData;
+
+    /**
+     * 房舍id
+     */
+    private Integer unitId;
+
+    private Integer farmId;
+
+    private String other1;
+
+    private String other2;
+
+    private String other3;
+
+    /*创建时间*/
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
+    private Date createDate;
+
+
+}

+ 73 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvData.java

@@ -0,0 +1,73 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_data")
+public class EnvData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备id
+     */
+    private String deviceId;
+
+    /**
+     * 温度
+     */
+    private String envTemp;
+
+    /**
+     * 湿度
+     */
+    private String envHum;
+
+    /**
+     * 原始值
+     */
+    private String originalData;
+
+    /**
+     * 单元id
+     */
+    private Integer unitId;
+
+    private Integer farmId;
+
+    private String other1;
+
+    private String other2;
+
+    private String other3;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
+    private Date createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
+    private Date receiveDate;
+
+
+}

+ 77 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvDevice.java

@@ -0,0 +1,77 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_device")
+public class EnvDevice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备编码
+     */
+    private String deviceCode;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 位置
+     */
+    private String buildLocation;
+
+    /**
+     * 房屋id
+     */
+    private String unitName;
+
+    /**
+     * 单元id
+     */
+    private Integer unitId;
+
+    /**
+     * 品牌
+     */
+    private String deviceBrand;
+
+    private String remark;
+
+    /**
+     * 0不在线  1在线
+     */
+    private Integer deviceStatus;
+
+    private Integer farmId;
+
+    private String ohter1;
+
+    private String ohter2;
+
+    private String ohter3;
+
+
+}

+ 60 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvDeviceMaintain.java

@@ -0,0 +1,60 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 设备维修记录
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_device_maintain")
+public class EnvDeviceMaintain implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 维修内容
+     */
+    private String maintainContent;
+
+    /**
+     * 维修时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
+    private Date maintainTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    private Integer farmId;
+
+    private String deviceId;
+
+    private String other1;
+
+    private String other2;
+
+    private byte[] other3;
+
+
+}

+ 73 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvDeviceOnline.java

@@ -0,0 +1,73 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_device_online")
+public class EnvDeviceOnline implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String farmId;
+
+    /**
+     * 在线数
+     */
+    private Integer deviceOn;
+
+    /**
+     * 离线数
+     */
+    private Integer deviceOff;
+
+    /**
+     * 月份
+     */
+    private Integer nowMonth;
+
+    /**
+     * 年份
+     */
+    private Integer nowYear;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(pattern = "yyyy-MM" ,timezone = "GMT+8")
+    private Date creatTime;
+
+    /**
+     * 在线率
+     */
+    private String onlineRate;
+
+    private String ohter1;
+
+    private String ohter2;
+
+    private String ohter3;
+
+
+}

+ 88 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvWarningInfo.java

@@ -0,0 +1,88 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_warning_info")
+public class EnvWarningInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 1.温度 2.湿度 3.NH3 4.co
+     */
+    private Integer warningType;
+
+    /**
+     * 报警内容
+     */
+    private String warningContent;
+
+    /**
+     * 位置
+     */
+    private String buildLocation;
+
+    /**
+     * 单元名称
+     */
+    private String unitName;
+
+    /**
+     * 单元id
+     */
+    private Integer unitId;
+
+    /**
+     * 设备id
+     */
+    private String deviceId;
+
+    /**
+     * 日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date date;
+
+    /**
+     * 人员id
+     */
+    private String userIds;
+
+    /**
+     * 人员名字
+     */
+    private String userNames;
+
+    private Integer farmId;
+
+    private String other1;
+
+    private String other2;
+
+    private String other3;
+
+
+}

+ 73 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvWarningThreshold.java

@@ -0,0 +1,73 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_warning_threshold")
+public class EnvWarningThreshold implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 高温
+     */
+    private String maxTem;
+
+    /**
+     * 低温
+     */
+    private String minTem;
+
+    /**
+     * 高湿度
+     */
+    private String maxHum;
+
+    /**
+     * 低湿度
+     */
+    private String minHum;
+
+    private String maxNh3;
+
+    private String minNh3;
+
+    private String maxCo;
+
+    private String minCo;
+
+    /**
+     * 通知人员id
+     */
+    private String userIds;
+
+    private Integer farmId;
+
+    private String othre1;
+
+    private String othre2;
+
+    private String othre3;
+
+
+}

+ 42 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/Farm.java

@@ -0,0 +1,42 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("base_farm")
+public class Farm extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String farmName;
+
+    private String location;
+
+    private String frontLocation;
+
+
+    private Boolean rowStatus;
+    private String farmMenu;
+    private String farmTopMenu;
+    private String function;
+    
+}

+ 37 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/Group.java

@@ -0,0 +1,37 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_group")
+public class Group extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String groupName;
+
+    private String remark;
+
+    private Integer accountId;
+
+
+}

+ 36 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/GroupMenu.java

@@ -0,0 +1,36 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_group_menu")
+public class GroupMenu extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer groupId;
+
+    private Integer menuId;
+    private Integer isAll;
+
+
+}

+ 49 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/Menu.java

@@ -0,0 +1,49 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_menu")
+public class Menu extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String title;
+
+    private String url;
+
+    private String remark;
+
+    private Integer parentId;
+
+    private Integer sort;
+
+    private Integer weight;
+
+    private String permission;
+
+    private Boolean ifShow;
+
+//    private List<Menu> children;
+
+
+}

+ 47 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/PigUnit.java

@@ -0,0 +1,47 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pig_unit")
+public class PigUnit implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 单元id
+     */
+    private Integer unitId;
+
+    /**
+     * 猪场单元id
+     */
+    private String pigId;
+
+    /**
+     * 牧场id
+     */
+    private Integer farmId;
+
+    /**
+     * 单元名称
+     */
+    private String unitName;
+
+
+}

+ 64 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/SysAccountMultilevel.java

@@ -0,0 +1,64 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+public class SysAccountMultilevel extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String account;
+
+    private String password;
+
+    private Integer pid;
+
+    private String pids;
+
+    private Integer accountStatus;
+
+    private String farmIds;
+
+    private String color;
+
+    private Boolean mode;
+
+    private Integer lastFarmId;
+
+    private String userName;
+    private String farmNames;
+
+    //0管理员,1 场长 2 紧急进程审核员  ,3生物安全负责人 ,4 pcr 检测人员,5洗消站点工作人员
+    private Integer type;
+
+    private String workLocation;
+    private String workLocationType;
+    //工作岗位 1 场长 2 紧急进程审核员  ,3生物安全负责人 ,4 pcr 检测人员,5洗消站点工作人员
+    private String workPost;
+    private String phone;
+    private String imgUrl;
+    private String workName;
+    //证件类型 0身份证 ,1护照
+    private String papersType;
+    private String papersCode;
+    private String wechatId;
+
+}

+ 47 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/User.java

@@ -0,0 +1,47 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("sys_user")
+public class User extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String userName;
+
+    private Integer male;
+
+    private String birthday;
+
+    private String mobile;
+
+    private String address;
+
+    private String job;
+
+    private String remark;
+
+    private String userId;
+
+
+}

+ 42 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/BasePigpenDto.java

@@ -0,0 +1,42 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class BasePigpenDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+
+    /**
+     * 栋舍名字
+     */
+    private String buildName;
+
+    /**
+     * 父级
+     */
+    private Integer parentId;
+
+    /**
+     * 1栋 2单元 3房间
+     */
+    private Integer fType;
+    private Integer stageCode;
+    private Integer floorNum;
+
+    private Integer farmId;
+
+    private Integer sort;
+
+    private String other1;
+
+    private String other2;
+
+    private String other3;
+
+
+}

+ 15 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/DeviceDto.java

@@ -0,0 +1,15 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class DeviceDto {
+
+    /*设备总数*/
+    private Integer deviceCount;
+
+    /*在线设备*/
+    private Integer onDeviceCount;
+
+
+}

+ 5 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/EnvDeviceDto.java

@@ -0,0 +1,5 @@
+package com.huimv.env.common.entity.dto;
+
+public class EnvDeviceDto {
+
+}

+ 10 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/EnvWarningDto.java

@@ -0,0 +1,10 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class EnvWarningDto {
+    private Integer id;
+    private String buildName;
+    private Integer coutnTop;
+}

+ 107 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/MenuDto.java

@@ -0,0 +1,107 @@
+package com.huimv.env.common.entity.dto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.huimv.env.common.entity.Menu;
+
+
+import java.util.List;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+public class MenuDto extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+
+    private String menuName;
+
+    private String url;
+
+    private String remark;
+
+    private Integer parentId;
+
+    private Integer sort;
+
+    private List<Menu> children;
+
+    public MenuDto() {
+    }
+
+    public MenuDto(Integer id, String menuName, String url, String remark, Integer parentId, Integer sort, List<Menu> children) {
+        this.id = id;
+        this.menuName = menuName;
+        this.url = url;
+        this.remark = remark;
+        this.parentId = parentId;
+        this.sort = sort;
+        this.children = children;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getMenuName() {
+        return menuName;
+    }
+
+    public void setMenuName(String menuName) {
+        this.menuName = menuName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Integer getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Integer parentId) {
+        this.parentId = parentId;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    public List<Menu> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<Menu> children) {
+        this.children = children;
+    }
+}

+ 29 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/UserAccountDto.java

@@ -0,0 +1,29 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class UserAccountDto {
+
+     private Integer id;
+
+     private String userName;
+
+     private Integer male;
+
+     private String birthday;
+
+     private String mobile;
+
+     private String address;
+
+     private String job;
+
+     private String remark;
+
+     private String userId;
+
+     private String accountName;
+
+     private Integer accountStatus;
+}

+ 28 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/UserAndAccountGroup.java

@@ -0,0 +1,28 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class UserAndAccountGroup {
+    private String accountName;
+
+    private Integer accountStatus;
+
+    private Integer id;
+
+    private String userName;
+
+    private Integer male;
+
+    private String birthday;
+
+    private String mobile;
+
+    private String address;
+
+    private String job;
+
+    private String remark;
+
+    private Long userId;
+}

+ 10 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/WeCahtVo.java

@@ -0,0 +1,10 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class WeCahtVo {
+
+    private String openId;
+    private String sessionKey;
+}

+ 15 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/WeatherDto.java

@@ -0,0 +1,15 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WeatherDto {
+
+    private String status;
+    private String count;
+    private String info;
+    private String infocode;
+    private List<WeatherLives> lives;
+}

+ 19 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/dto/WeatherLives.java

@@ -0,0 +1,19 @@
+package com.huimv.env.common.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class WeatherLives {
+
+    private String province;
+    private String city;
+    private String adcode;
+    private String weather;
+    private String temperature;
+    private String winddirection;
+    private String windpower;
+    private String humidity;
+    private String reporttime;
+    private String temperature_float;
+    private String humidity_float;
+}

+ 9 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/vo/EnvDataVo.java

@@ -0,0 +1,9 @@
+package com.huimv.env.common.entity.vo;
+
+import com.huimv.env.common.entity.EnvData;
+import lombok.Data;
+
+@Data
+public class EnvDataVo extends EnvData {
+    private String buildName;
+}

+ 39 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/vo/TreeBasePigpen.java

@@ -0,0 +1,39 @@
+package com.huimv.env.common.entity.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: TODO
+ * @Author: 静静
+ * @CreateTime: 2022-07-25  09:33
+ * @Version: 1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TreeBasePigpen implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    private String id;
+
+
+    private String pigpenName;
+
+    private Integer parentId;
+
+    private Integer type;
+
+    private Integer farmCode;
+    //妊娠 产房 保育 育肥 后备 隔离
+    private Integer stageCode;
+
+    private  int sort;
+
+    private List<TreeBasePigpen> childNode;
+}

+ 28 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/vo/TreeCameraFuntionArea.java

@@ -0,0 +1,28 @@
+package com.huimv.env.common.entity.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TreeCameraFuntionArea {
+    private String id;
+
+    /**
+     * 区域(单元)名称
+     */
+    private String functionName;
+
+    /**
+     * 不用管
+     */
+    private String remark;
+
+    private Integer farmId;
+
+    private String functionIds;
+    private Integer functionType;
+    private String camearIds;
+    private String parentId;
+    private List<TreeCameraFuntionArea> childNode;
+}

+ 20 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/AccountGroupMapper.java

@@ -0,0 +1,20 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.AccountGroup;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface AccountGroupMapper extends BaseMapper<AccountGroup> {
+
+    void removeAccountGroup(@Param("accountId") String accountId);
+}

+ 18 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/BasePigpenMapper.java

@@ -0,0 +1,18 @@
+package com.huimv.env.common.mapper;
+
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.BasePigpen;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface BasePigpenMapper extends BaseMapper<BasePigpen> {
+
+}

+ 61 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnergyDataMapper.java

@@ -0,0 +1,61 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+
+import com.huimv.env.common.entity.EnergyData;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 耗能数据 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+@Repository
+public interface EnergyDataMapper extends BaseMapper<EnergyData> {
+
+/*    List<EnergyGasDataVo> listYear(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyFeedDataVo> listYear2(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyWaterDataVo> listYear3(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyElectricityDataVo> listYear4(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyGasDataVo> listDay(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyFeedDataVo> listDay2(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyWaterDataVo> listDay3(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyElectricityDataVo> listDay4(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    EnergyDataVo listCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    *//*11111*//*
+    List<EnergyAllDataVo> listYearGas(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyAllDataVo> listYearWater(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyAllDataVo> listYearFeed(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyAllDataVo> listYearElectricity(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyAllDataVo> listDayGas(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyAllDataVo> listDayWater(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyAllDataVo> listDayFeed(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    List<EnergyAllDataVo> listDayElectricity(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    //能耗使用
+    EnergyData listDataCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);*/
+}

+ 28 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDataMapper.java

@@ -0,0 +1,28 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.huimv.env.common.entity.EnvData;
+import com.huimv.env.common.entity.vo.EnvDataVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+@Repository
+public interface EnvDataMapper extends BaseMapper<EnvData> {
+    List<EnvData> listDay(@Param(Constants.WRAPPER) QueryWrapper<EnvData> queryWrapper);
+
+    List<EnvData> listNow(@Param(Constants.WRAPPER) QueryWrapper<EnvData> queryWrapper);
+
+    List<EnvDataVo> listPigpenAll(@Param("farmId") String farmId);
+}

+ 17 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDeviceMaintainMapper.java

@@ -0,0 +1,17 @@
+package com.huimv.env.common.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.EnvDeviceMaintain;
+
+/**
+ * <p>
+ * 设备维修记录 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface EnvDeviceMaintainMapper extends BaseMapper<EnvDeviceMaintain> {
+
+}

+ 26 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDeviceMapper.java

@@ -0,0 +1,26 @@
+package com.huimv.env.common.mapper;
+
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.EnvDevice;
+import com.huimv.env.common.entity.dto.DeviceDto;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Repository
+public interface EnvDeviceMapper extends BaseMapper<EnvDevice> {
+    DeviceDto getCount(@Param("farmId") String farmId);
+
+    List<String>  selectDeviceCodeByfarmId(@Param("farmId") Integer farmId);
+}

+ 17 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvDeviceOnlineMapper.java

@@ -0,0 +1,17 @@
+package com.huimv.env.common.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.EnvDeviceOnline;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+public interface EnvDeviceOnlineMapper extends BaseMapper<EnvDeviceOnline> {
+
+}

+ 21 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvWarningInfoMapper.java

@@ -0,0 +1,21 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.EnvWarningInfo;
+import com.huimv.env.common.entity.dto.EnvWarningDto;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface EnvWarningInfoMapper extends BaseMapper<EnvWarningInfo> {
+
+    List<EnvWarningDto> listTop(@Param("farmId") String farmId);
+}

+ 17 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/EnvWarningThresholdMapper.java

@@ -0,0 +1,17 @@
+package com.huimv.env.common.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.EnvWarningThreshold;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface EnvWarningThresholdMapper extends BaseMapper<EnvWarningThreshold> {
+
+}

+ 18 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/FarmMapper.java

@@ -0,0 +1,18 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.Farm;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@Repository
+public interface FarmMapper extends BaseMapper<Farm> {
+
+}

+ 18 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/GroupMapper.java

@@ -0,0 +1,18 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.Group;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface GroupMapper extends BaseMapper<Group> {
+
+}

+ 21 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/GroupMenuMapper.java

@@ -0,0 +1,21 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.GroupMenu;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface GroupMenuMapper extends BaseMapper<GroupMenu> {
+
+    void removeGroupMenu(@Param("groupId") String groupId);
+
+}

+ 24 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/MenuMapper.java

@@ -0,0 +1,24 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.Menu;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface MenuMapper extends BaseMapper<Menu> {
+
+    List<Menu> getMyMenu(@Param("accountName") String accountName, String[] array);
+
+    List<String> getMyButton(@Param("userId") Integer userId, String[] array);
+}

+ 17 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/PigUnitMapper.java

@@ -0,0 +1,17 @@
+package com.huimv.env.common.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.PigUnit;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-07
+ */
+public interface PigUnitMapper extends BaseMapper<PigUnit> {
+
+}

+ 22 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/SysAccountMultilevelMapper.java

@@ -0,0 +1,22 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.SysAccountMultilevel;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@Repository
+public interface SysAccountMultilevelMapper extends BaseMapper<SysAccountMultilevel> {
+
+    List<Integer> getLowerLevel(@Param("userId") Integer userId, @Param("farmId") String farmId);
+}

+ 25 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/UserMapper.java

@@ -0,0 +1,25 @@
+package com.huimv.env.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.common.entity.User;
+import com.huimv.env.common.entity.dto.UserAccountDto;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+@Repository
+public interface UserMapper extends BaseMapper<User> {
+
+    List<UserAccountDto> findUserAndAccountByUserName(@Param("searchStr") String searchStr, @Param("start") int start, @Param("pageSize") int pageSize);
+
+    List<UserAccountDto> findUserAndAccount(@Param("start") int start, @Param("pageSize") int pageSize);
+}

+ 17 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IAccountGroupService.java

@@ -0,0 +1,17 @@
+package com.huimv.env.common.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.AccountGroup;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+public interface IAccountGroupService extends IService<AccountGroup> {
+
+}

+ 31 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IAuthorizeService.java

@@ -0,0 +1,31 @@
+package com.huimv.env.common.service;
+
+
+
+import com.huimv.env.common.utils.Result;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IAuthorizeService {
+
+    Result saveAccountGroup(String accountId, String groupIds);
+
+    Result saveGroupMenu(String groupId, String menuIds, String isAll);
+
+
+    Result getMenuByGroup(Map map);
+
+    Result getGroupByAccount(String accountId);
+
+    Result getAccountByGroup(String groupId);
+
+
+    List getMyMenuAll(String accountName, String farmId);
+
+    List getMyButton(Integer userId, Integer farmId);
+
+    List getMyMenuMultilevel(String userId);
+
+    Result getMenuByGroupAndFarm(Map<String, String> map);
+}

+ 27 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IBasePigpenService.java

@@ -0,0 +1,27 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.BasePigpen;
+import com.huimv.env.common.entity.dto.BasePigpenDto;
+import com.huimv.env.common.utils.Result;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface IBasePigpenService extends IService<BasePigpen> {
+
+    Result list(String farmCode, String buildName, String stageCode);
+
+    Result addPigpen(BasePigpenDto basePigpenDto);
+
+    Result updatePigpen(BasePigpen basePigpen);
+
+    Result deletePigpen(Map<String, Integer> map);
+}

+ 30 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IEnergyDataService.java

@@ -0,0 +1,30 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.EnergyData;
+import com.huimv.env.common.utils.Result;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 耗能数据 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+public interface IEnergyDataService extends IService<EnergyData> {
+/*    Result listCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listData(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listRank(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    //大屏
+    Result listDataScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listRankScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);*/
+
+}

+ 16 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDataService.java

@@ -0,0 +1,16 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.EnvData;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+public interface IEnvDataService extends IService<EnvData> {
+
+}

+ 25 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDeviceMaintainService.java

@@ -0,0 +1,25 @@
+package com.huimv.env.common.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.EnvDeviceMaintain;
+import com.huimv.env.common.utils.Result;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 设备维修记录 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface IEnvDeviceMaintainService extends IService<EnvDeviceMaintain> {
+
+     Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result add(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+}

+ 17 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDeviceOnlineService.java

@@ -0,0 +1,17 @@
+package com.huimv.env.common.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.EnvDeviceOnline;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+public interface IEnvDeviceOnlineService extends IService<EnvDeviceOnline> {
+
+}

+ 43 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvDeviceService.java

@@ -0,0 +1,43 @@
+package com.huimv.env.common.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.EnvDevice;
+import com.huimv.env.common.utils.Result;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface IEnvDeviceService extends IService<EnvDevice> {
+    Result count(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result add(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result edit(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result delete(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listPigpen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listEnv(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listDeviceCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+//    Result sync(Map<String, String> params) throws Exception;
+
+    Result bandingUnitId(HttpServletRequest httpServletRequest, EnvDevice envDevice);
+
+    Result listPigpenAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listEnvCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+}

+ 26 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvWarningInfoService.java

@@ -0,0 +1,26 @@
+package com.huimv.env.common.service;
+
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.EnvWarningInfo;
+import com.huimv.env.common.utils.Result;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface IEnvWarningInfoService extends IService<EnvWarningInfo> {
+    Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listTop(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+}

+ 24 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IEnvWarningThresholdService.java

@@ -0,0 +1,24 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.EnvWarningThreshold;
+import com.huimv.env.common.utils.Result;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+public interface IEnvWarningThresholdService extends IService<EnvWarningThreshold> {
+
+    Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result add(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+}

+ 26 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IFarmService.java

@@ -0,0 +1,26 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.Farm;
+import com.huimv.env.common.utils.Result;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+public interface IFarmService extends IService<Farm> {
+
+    Result getFarm(Integer userId);
+
+    Result add(Farm farm);
+
+    Result getFarm2(Integer userId);
+
+    Result listPage(Integer userId, Map paramMap);
+}

+ 16 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IGroupMenuService.java

@@ -0,0 +1,16 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.GroupMenu;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+public interface IGroupMenuService extends IService<GroupMenu> {
+
+}

+ 29 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IGroupService.java

@@ -0,0 +1,29 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.Group;
+import com.huimv.env.common.utils.Result;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+public interface IGroupService extends IService<Group> {
+
+    Result updateGroup(Group group);
+
+    Result removeGroup(Integer groupId);
+
+    Result listGroup(Map map, List<Integer> allChildId);
+
+    Result addGroup(Group group, Integer userId);
+
+    Result getGroupByUserId(Integer userId);
+}

+ 12 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/ILoginService.java

@@ -0,0 +1,12 @@
+package com.huimv.env.common.service;
+
+
+import com.huimv.env.common.utils.Result;
+
+public interface ILoginService {
+
+
+    Result logout();
+
+    Result loginMultilevel(String accountName, String password);
+}

+ 35 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IMenuService.java

@@ -0,0 +1,35 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.Menu;
+import com.huimv.env.common.utils.Result;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+public interface IMenuService extends IService<Menu> {
+    Result addMenu(Menu menu, Integer userId);
+    //修改菜单
+    Result editMenu(Menu menu);
+    //删除菜单(批量)
+    Result removeMenu(Integer menuId);
+   /* //查询所有
+    List<Map> listMenu();
+    //菜单递归
+    List listMenuUtil(List<Menu> list);*/
+
+    //优化查询所有
+    Result optimizeList();
+    //优化菜单递归
+    List<Map> optimizeListUtil(int parentId, List<Menu> menuEntityList);
+
+    Result list1();
+}

+ 17 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IPigUnitService.java

@@ -0,0 +1,17 @@
+package com.huimv.env.common.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.PigUnit;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-08-07
+ */
+public interface IPigUnitService extends IService<PigUnit> {
+
+}

+ 34 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/ISysAccountMultilevelService.java

@@ -0,0 +1,34 @@
+package com.huimv.env.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.SysAccountMultilevel;
+import com.huimv.env.common.utils.Result;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+public interface ISysAccountMultilevelService extends IService<SysAccountMultilevel> {
+
+    Result findUserAccount(String searchStr, int pageNum, int pageSize, Integer userId);
+
+    Result add(SysAccountMultilevel sysAccountMultilevel, Integer userId);
+
+    Result setAccountStatus(List<Integer> ids, Integer status);
+
+    List<Integer> getAllChildId(Integer userId);
+
+    Result listSubordinate(String searchStr, int pageNum, int pageSize, Integer userId);
+
+    Result getLastFarmId(Integer userId);
+
+    Result listSubordinateByFarm(String farmId, Integer userId);
+
+//    Result updateUser(HttpServletRequest httpServletRequest, MultipartFile img, String userName, String phone, Integer workPost, String workLocation, String workLocationId, String workName, String papersType, String papersCode) throws IOException;
+}

+ 28 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IUserService.java

@@ -0,0 +1,28 @@
+package com.huimv.env.common.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.common.entity.User;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09
+ */
+public interface IUserService extends IService<User> {
+
+
+    JSONObject findUserAccount(String searchStr, int pageNum, int pageSize);
+
+
+//    List<UserAndAccountGroup> yxxList(String searchStr, int pageNum, int pageSize);
+//
+//    Result addUser(User user);
+//
+//    Result updateUser(User user);
+//
+//    Result removeUser(List<Integer> userIds);
+}

+ 20 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/AccountGroupServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.env.common.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.env.common.entity.AccountGroup;
+import com.huimv.env.common.mapper.AccountGroupMapper;
+import com.huimv.env.common.service.IAccountGroupService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-09-09 */
+@Service
+public class AccountGroupServiceImpl extends ServiceImpl<AccountGroupMapper, AccountGroup> implements IAccountGroupService {
+
+}

+ 238 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/AuthorizeServiceImpl.java

@@ -0,0 +1,238 @@
+package com.huimv.env.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
+import com.huimv.env.common.entity.AccountGroup;
+import com.huimv.env.common.entity.Farm;
+import com.huimv.env.common.entity.GroupMenu;
+import com.huimv.env.common.entity.Menu;
+import com.huimv.env.common.mapper.AccountGroupMapper;
+import com.huimv.env.common.mapper.FarmMapper;
+import com.huimv.env.common.mapper.GroupMenuMapper;
+import com.huimv.env.common.mapper.MenuMapper;
+import com.huimv.env.common.service.IAuthorizeService;
+import com.huimv.env.common.service.IGroupMenuService;
+import com.huimv.env.common.utils.ConstUtil;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class AuthorizeServiceImpl implements IAuthorizeService {
+
+    @Autowired
+    AccountGroupMapper accountGroupMapper;
+    @Autowired
+    GroupMenuMapper groupMenuMapper;
+    @Autowired
+    IGroupMenuService groupMenuService;
+    @Autowired
+    private MenuMapper menuMapper;
+    @Autowired
+    private FarmMapper farmMapper;
+    
+    @Override
+    @Transactional
+    public Result saveAccountGroup(String accountId, String groupIds) {
+        /**
+         * Step1:先删除原先的账号关联权限组数据;
+         * Step2:再添加新的账号关联权限组数据;
+         */
+        if (accountId == null||"".equals(accountId)){
+
+            accountGroupMapper.removeAccountGroup(groupIds);
+            return new Result(10000, "保存账号关联权限组成功", true);
+        }else {
+            String[] groupIdArray = accountId.split(",");
+            accountGroupMapper.removeAccountGroup(accountId);
+//        for (int a = 0; a < groupIdArray.length; a++) {
+//            accountGroupMapper.removeAccountGroup(accountId,groupIdArray[a]);
+//        }
+            for (int a = 0; a < groupIdArray.length; a++) {
+                AccountGroup accountGroupEntity = new AccountGroup();
+                accountGroupEntity.setAccountId(Integer.parseInt(groupIdArray[a]));
+                accountGroupEntity.setGroupId(Integer.parseInt(groupIds));
+                accountGroupMapper.insert(accountGroupEntity);
+//            accountGroupMapper.insert(Integer.parseInt(accountId),Integer.parseInt(groupIdArray[a]));
+            }
+            return new Result(10000, "保存账号关联权限组成功", true);
+        }
+
+
+    }
+
+    @Override
+    @Transactional
+    public Result saveGroupMenu(String groupId, String menuIds,String isAll) {
+        /**
+         * Step1:先删除原先的权限组关联菜单数据;
+         * Step2:再添加新的账号权限组关联菜单数据;
+         */
+        groupMenuMapper.removeGroupMenu(groupId);
+        if (StringUtils.isNotBlank(menuIds)){
+            String[] menuIdsArray = menuIds.split(",");
+            String[] split = isAll.split(",");
+
+            List<GroupMenu> list = new ArrayList();
+            for (int a = 0; a < menuIdsArray.length; a++) {
+                GroupMenu groupMenu = new GroupMenu();
+                groupMenu.setGroupId(Integer.parseInt(groupId));
+                groupMenu.setMenuId(Integer.parseInt(menuIdsArray[a]));
+                list.add(groupMenu);
+            }
+            if (StringUtils.isNotBlank(isAll)){
+                for (GroupMenu groupMenu : list) {
+                    for (String s : split) {
+                        if (groupMenu.getMenuId()== Integer.parseInt(s)){
+                            groupMenu.setIsAll(1);
+                        }
+                    }
+                }
+            }
+            groupMenuService.saveBatch(list);
+        }
+
+
+        return new Result(10000, "保存权限组关联菜单成功", true);
+    }
+
+
+    @Override
+    public Result getMenuByGroup(Map paramsMap) {
+        String groupId  =  (String)paramsMap.get("groupId");
+        QueryWrapper<GroupMenu> groupMenuQueryWrapper = new QueryWrapper<>();
+        groupMenuQueryWrapper.eq("group_id",groupId);
+        groupMenuQueryWrapper.eq("is_all",0);
+        List<GroupMenu> groupMenuEntityList = groupMenuMapper.selectList(groupMenuQueryWrapper);
+        if (groupMenuEntityList.size() == 0) {
+            return new Result(10005, "当前权限组暂未关联任何菜单.", false);
+        }
+        StringBuilder stringBuffer = new StringBuilder();
+
+        for (GroupMenu groupMenu : groupMenuEntityList) {
+
+            stringBuffer.append(groupMenu.getMenuId());
+            stringBuffer.append(",");
+
+        }
+        stringBuffer.deleteCharAt(stringBuffer.length()-1);
+        return new Result(ResultCode.SUCCESS, stringBuffer.toString());
+    }
+
+    @Override
+    public Result getMenuByGroupAndFarm(Map<String, String> map) {
+        String groupId = (String) map.get("groupId");
+        String farmId = (String) map.get("farmId");
+        Farm farm = farmMapper.selectById(farmId);
+        String farmMenu = farm.getFarmMenu();
+        if (StringUtils.isNotBlank(farmMenu)){
+            return new Result(ConstUtil.ERR_MYMENU_EMPTY_CODE,"该牧场无任何授权菜单",false);
+        }
+        List<String> list = Arrays.asList(farmMenu);
+        QueryWrapper<GroupMenu> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(groupId),"group_id",groupId);
+        queryWrapper.in("menu_id",list);
+//        queryWrapper.eq("is_all",0);
+        List<GroupMenu> groupMenuEntityList = groupMenuMapper.selectList(queryWrapper);
+        if (groupMenuEntityList.size() == 0) {
+            return new Result(10005, "当前权限组暂未关联任何菜单.", false);
+        }
+        StringBuilder stringBuffer = new StringBuilder();
+
+        for (GroupMenu groupMenu : groupMenuEntityList) {
+
+            stringBuffer.append(groupMenu.getMenuId());
+            stringBuffer.append(",");
+
+        }
+        stringBuffer.deleteCharAt(stringBuffer.length()-1);
+        return new Result(ResultCode.SUCCESS, stringBuffer.toString());
+    }
+
+    /**
+     * @param accountId
+     * @return
+     */
+    @Override
+    public Result getGroupByAccount(String accountId) {
+        /* 根据账号id读取已关联权限组 */
+        QueryWrapper<AccountGroup> accountGroupQueryWrapper = new QueryWrapper<>();
+        accountGroupQueryWrapper.eq("account_id",accountId);
+        List<AccountGroup> accountGroupEntityList = accountGroupMapper.selectList(accountGroupQueryWrapper);
+        if (accountGroupEntityList.size() == 0) {
+            return new Result(10006, "当前用户账号暂未关联任何权限组.", false);
+        }
+        StringBuilder idSb = new StringBuilder();
+        for (AccountGroup accountGroupEntity : accountGroupEntityList) {
+            if (idSb.length() > 0) {
+                idSb.append(",");
+            }
+            idSb.append(accountGroupEntity.getGroupId());
+        }
+        return new Result(ResultCode.SUCCESS, idSb.toString());
+    }
+
+
+    @Override
+    public Result getAccountByGroup(String groupId) {
+        /* 根据账号id读取已关联权限组 */
+        QueryWrapper<AccountGroup> accountGroupQueryWrapper = new QueryWrapper<>();
+        accountGroupQueryWrapper.eq("group_id",groupId);
+        List<AccountGroup> accountGroupEntityList = accountGroupMapper.selectList(accountGroupQueryWrapper);
+        if (accountGroupEntityList.size() == 0) {
+            return new Result(10006, "当前权限组暂未关联任何用户账号.", false);
+        }
+        StringBuilder idSb = new StringBuilder();
+        for (AccountGroup accountGroupEntity : accountGroupEntityList) {
+            if (idSb.length() > 0) {
+                idSb.append(",");
+            }
+            idSb.append(accountGroupEntity.getAccountId());
+        }
+        return new Result(ResultCode.SUCCESS, idSb.toString());
+    }
+
+    @Override
+    public List getMyMenuAll(String accountName,String farmId) {
+        if ("1".equals(accountName)){
+            List<Menu> menus = menuMapper.selectList(new QueryWrapper<Menu>().orderByAsc("sort"));
+            return menus;
+        }
+        Farm farm = farmMapper.selectById(farmId);
+        String farmMenu = farm.getFarmMenu();
+        String[] farmMenus = farmMenu.split(",");
+//        List<String> farmMenus = Arrays.asList(farmMenu);
+        return menuMapper.getMyMenu(accountName,farmMenus);
+    }
+
+    @Override
+    public List<String> getMyButton(Integer userId, Integer farmId) {
+        Farm farm = farmMapper.selectById(farmId);
+        String farmMenu = farm.getFarmMenu();
+        if (userId == 1){
+            List<Menu> menus = menuMapper.selectList(null);
+            List<String> list = new ArrayList<>();
+            for (Menu menu : menus) {
+                list.add(menu.getPermission());
+            }
+            return list;
+        }
+        String[] menus = farmMenu.split(",");
+        return menuMapper.getMyButton(userId,menus);
+    }
+
+    @Override
+    public List getMyMenuMultilevel(String userId) {
+        return null;
+    }
+
+
+}

+ 158 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/BasePigpenServiceImpl.java

@@ -0,0 +1,158 @@
+package com.huimv.env.common.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.env.common.entity.BasePigpen;
+import com.huimv.env.common.entity.EnvDevice;
+import com.huimv.env.common.entity.dto.BasePigpenDto;
+import com.huimv.env.common.entity.vo.TreeBasePigpen;
+import com.huimv.env.common.mapper.BasePigpenMapper;
+import com.huimv.env.common.mapper.EnvDeviceMapper;
+import com.huimv.env.common.service.IBasePigpenService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import com.huimv.env.common.utils.ResultUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Service
+public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePigpen> implements IBasePigpenService {
+    @Autowired
+    private BasePigpenMapper basePigpenMapper;
+    @Autowired
+    private EnvDeviceMapper envDeviceMapper;
+
+    @Override
+    @Transactional
+    public Result addPigpen(BasePigpenDto basePigpenDto) {
+        Integer  num = basePigpenMapper.selectCount(new QueryWrapper<BasePigpen>().eq("build_name", basePigpenDto.getBuildName()));
+        if (num  > 0){
+            return ResultUtil.exist();
+        }
+        BasePigpen basePigpen = new BasePigpen();
+        BeanUtil.copyProperties(basePigpenDto,basePigpen);
+        basePigpen.setParentId(0);
+        basePigpen.setFType(1);
+        basePigpen.setOther2("0");
+        int insert = basePigpenMapper.insert(basePigpen);
+        Integer id = basePigpen.getId();
+        String buildName = basePigpen.getBuildName();
+        Integer floorNum = basePigpenDto.getFloorNum();
+        for (Integer integer = 1; integer <= floorNum; integer++) {
+            BasePigpen basePigpen1 = new BasePigpen();
+            basePigpen1.setFType(2);
+            basePigpen1.setParentId(id);
+            basePigpen1.setBuildName(buildName+Convert.numberToChinese(integer,false) +"层");
+            basePigpen1.setOther1(Convert.numberToChinese(integer,false) +"层");
+            basePigpen1.setOther2("0,"+id);
+            basePigpen1.setFarmId(basePigpen.getFarmId());
+            basePigpen1.setStageCode(basePigpen.getStageCode());
+            basePigpenMapper.insert(basePigpen1);
+        }
+        return ResultUtil.addResult(insert);
+    }
+
+    @Override
+    @Transactional
+    public Result updatePigpen(BasePigpen basePigpen) {
+        basePigpenMapper.updateById(basePigpen);
+        Integer id = basePigpen.getId();
+        List<BasePigpen> parentId = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().eq("parent_id", id));
+        String buildName = basePigpen.getBuildName();
+        if (StringUtils.isNotBlank(buildName)){
+            for (BasePigpen pigpen : parentId) {
+                String other1 = pigpen.getOther1();
+                pigpen.setBuildName(buildName+other1);
+                basePigpenMapper.updateById(pigpen);
+            }
+        }
+        return ResultUtil.updateResult(1);
+    }
+
+    @Override
+    @Transactional
+    public Result deletePigpen(Map<String, Integer> map) {
+        Integer integer = map.get("id");
+        Integer integer1 = envDeviceMapper.selectCount(new QueryWrapper<EnvDevice>().eq("unit_id", integer));
+        if (integer1 > 0){
+            return new Result(10001,"删除失败,该栋舍下有采集器",false);
+        }
+        List<BasePigpen> other2 = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().like("other2", integer));
+        for (BasePigpen basePigpen : other2) {
+            Integer count = envDeviceMapper.selectCount(new QueryWrapper<EnvDevice>().eq("unit_id", basePigpen.getId()));
+            if (count > 0){
+                return new Result(10001,"删除失败,该栋舍下有采集器",false);
+            }
+            basePigpenMapper.deleteById(basePigpen);
+        }
+        basePigpenMapper.deleteById(integer);
+        return ResultUtil.deleteResult(1);
+    }
+
+    @Override
+    public Result list(String farmCode, String buildName, String stageCode) {
+        QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+        queryWrapper.like(StringUtils.isNotBlank(buildName),"build_name", buildName);
+        queryWrapper.like(StringUtils.isNotBlank(stageCode),"stage_code", stageCode);
+        queryWrapper.eq(StringUtils.isNotBlank(farmCode),"farm_id", farmCode);
+        queryWrapper.orderByAsc("sort");
+        //创建排序
+        List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);
+        //将结果List改为树
+        List<TreeBasePigpen> treeBasePigpens = parseBizBaseArea(basePigpens);
+        return new Result(ResultCode.SUCCESS,treeBasePigpens);
+    }
+
+    /**
+     * 查询结果 转换成树形结构
+     * @param bizBaseAreas 原始数据
+     * @return 树
+     */
+    private List<TreeBasePigpen> parseBizBaseArea(List<BasePigpen> bizBaseAreas){
+        //构建需要展示的树形节点结构
+        Map<String, TreeBasePigpen> nodeMap = bizBaseAreas.stream().map(basePigpen -> {
+            TreeBasePigpen  baseVo = new TreeBasePigpen();
+            baseVo.setId(basePigpen.getId()+"");
+            baseVo.setFarmCode(basePigpen.getFarmId());
+            baseVo.setParentId(basePigpen.getParentId());
+            baseVo.setSort(basePigpen.getSort());
+            baseVo.setStageCode(basePigpen.getStageCode());
+            baseVo.setPigpenName(basePigpen.getBuildName());
+            baseVo.setType(basePigpen.getFType());
+            baseVo.setChildNode(new ArrayList<>());
+            return baseVo;
+        }).collect(Collectors.toMap(TreeBasePigpen::getId, b -> b,(k1, k2)->k1));
+        //创建数组存父亲节点
+        ArrayList<TreeBasePigpen> roots = new ArrayList<>();
+        //构建树形
+        nodeMap.values().forEach(item->{
+            String parentCode = item.getParentId()+"";
+            if (nodeMap.get(parentCode) == null){
+                //父节点为空,说明当前节点就已经是父节点了 将该节点存起来
+                roots.add(item);
+            }else {
+                //父节点 不为空,说明有父节点,拿到该节点的父节点的孩子节点(就是我自己),将该节点存起来
+                nodeMap.get(parentCode).getChildNode().add(item);
+            }
+        });
+        return roots;
+    }
+}

+ 557 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnergyDataServiceImpl.java

@@ -0,0 +1,557 @@
+package com.huimv.env.common.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.common.utils.DataUill;
+import com.huimv.env.common.entity.BasePigpen;
+import com.huimv.env.common.entity.EnergyData;
+import com.huimv.env.common.mapper.BasePigpenMapper;
+import com.huimv.env.common.mapper.EnergyDataMapper;
+import com.huimv.env.common.service.IEnergyDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+/**
+ * <p>
+ * 耗能数据 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+@Service
+public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyData> implements IEnergyDataService {
+
+    @Autowired
+    private EnergyDataMapper dataMapper;
+//    @Autowired
+//    private BasePigpenMapper basePigpenMapper;
+//    @Autowired
+//    private EnergyWarningInfoMapper warningInfoMapper;
+
+//    @Override
+//    public Result listCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+//        String farmId = paramsMap.get("farmId");
+//        QueryWrapper<EnergyData> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("farm_id", farmId);
+//        EnergyDataVo energyDataVo = dataMapper.listCount(queryWrapper);
+//        QueryWrapper<EnergyWarningInfo> queryWrapper1 = new QueryWrapper<>();
+//        queryWrapper1.eq("farm_id", farmId);
+//        Integer count = warningInfoMapper.selectCount(queryWrapper1);
+////        Float f = 0.00f;
+////        f = (Float.parseFloat(energyDataVo.getElectricityValue()) +
+////                Float.parseFloat(energyDataVo.getFeedValue()) +
+////                Float.parseFloat(energyDataVo.getGasValue()) + Float.parseFloat(energyDataVo.getWaterValue()));
+////        DecimalFormat df1 = new DecimalFormat("#.00");
+//        energyDataVo.setCount(count);
+//        return new Result(ResultCode.SUCCESS, energyDataVo);
+//    }
+//
+//    @Override
+//    public Result listData(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+//        String farmId = paramsMap.get("farmId");
+//        String dataType = paramsMap.get("dataType");
+//        String timeType = paramsMap.get("timeType");
+//        String startTime = paramsMap.get("startTime");
+//        String endTime = paramsMap.get("endTime");
+//
+//        if (dataType == null || dataType == "") {
+//            dataType = "1";
+//        }
+//        if (timeType == null || timeType == "") {
+//            timeType = "3";
+//        }
+//
+//        QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
+//        dataQueryWrapper.eq("farm_id", farmId);
+//        //用水
+//        if ("1".equals(dataType)) {
+//            //自定义
+//            if ("4".equals(timeType)) {
+//                startTime = startTime + " 00:00:00";
+//                endTime = endTime + " 23:59:59";
+//                dataQueryWrapper.between("create_date", startTime, endTime);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayWater(dataQueryWrapper));
+//            }
+//            //全年
+//            if ("3".equals(timeType)) {
+//                DateTime dateTime = DateUtil.beginOfYear(new Date());
+//                dataQueryWrapper.ge("create_date", dateTime);
+//                List<EnergyAllDataVo> energyWaterDataVos = dataMapper.listYearWater(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyWaterDataVos);
+//            }
+//            //本月
+//            if ("2".equals(timeType)) {
+//                Date timesMonthmorning = DataUill.getTimesMonthmorning();
+//                dataQueryWrapper.ge("create_date", timesMonthmorning);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayWater(dataQueryWrapper));
+//            }
+//            //本周
+//            if ("1".equals(timeType)) {
+//                Calendar calendar = Calendar.getInstance();
+//                calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+//                dataQueryWrapper.ge("create_date", calendar.getTime());
+//                List<EnergyAllDataVo> energyWaterDataVos = dataMapper.listDayWater(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyWaterDataVos);
+//            }
+//        }
+//        //用电
+//        else if ("2".equals(dataType)) {
+//            //自定义
+//            if ("4".equals(timeType)) {
+//                startTime = startTime + " 00:00:00";
+//                endTime = endTime + " 23:59:59";
+//                dataQueryWrapper.between("create_date", startTime, endTime);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayElectricity(dataQueryWrapper));
+//            }
+//            //全年
+//            if ("3".equals(timeType)) {
+//                DateTime dateTime = DateUtil.beginOfYear(new Date());
+//                dataQueryWrapper.ge("create_date", dateTime);
+//                List<EnergyAllDataVo> energyElectricityDataVos = dataMapper.listYearElectricity(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyElectricityDataVos);
+//            }
+//            //本月
+//            if ("2".equals(timeType)) {
+//                Date timesMonthmorning = DataUill.getTimesMonthmorning();
+//                dataQueryWrapper.ge("create_date", timesMonthmorning);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayElectricity(dataQueryWrapper));
+//            }
+//            //本周
+//            if ("1".equals(timeType)) {
+//                Calendar calendar = Calendar.getInstance();
+//                calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+//                dataQueryWrapper.ge("create_date", calendar.getTime());
+//                List<EnergyAllDataVo> energyElectricityDataVos = dataMapper.listDayElectricity(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyElectricityDataVos);
+//            }
+//        }
+//        //饲料
+//        else if ("3".equals(dataType)) {
+//            //自定义
+//            if ("4".equals(timeType)) {
+//                startTime = startTime + " 00:00:00";
+//                endTime = endTime + " 23:59:59";
+//                dataQueryWrapper.between("create_date", startTime, endTime);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayFeed(dataQueryWrapper));
+//            }
+//            //全年
+//            if ("3".equals(timeType)) {
+//                DateTime dateTime = DateUtil.beginOfYear(new Date());
+//                dataQueryWrapper.ge("create_date", dateTime);
+//                List<EnergyAllDataVo> energyFeedDataVos = dataMapper.listYearFeed(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyFeedDataVos);
+//            }
+//            //本月
+//            if ("2".equals(timeType)) {
+//                Date timesMonthmorning = DataUill.getTimesMonthmorning();
+//                dataQueryWrapper.ge("create_date", timesMonthmorning);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayFeed(dataQueryWrapper));
+//            }
+//            //本周
+//            if ("1".equals(timeType)) {
+//                Calendar calendar = Calendar.getInstance();
+//                calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+//                dataQueryWrapper.ge("create_date", calendar.getTime());
+//                List<EnergyAllDataVo> energyFeedDataVos = dataMapper.listDayFeed(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyFeedDataVos);
+//            }
+//        }
+//        //天然气
+//        else if ("4".equals(dataType)) {
+//            //自定义
+//            if ("4".equals(timeType)) {
+//                startTime = startTime + " 00:00:00";
+//                endTime = endTime + " 23:59:59";
+//                dataQueryWrapper.between("create_date", startTime, endTime);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayGas(dataQueryWrapper));
+//            }
+//            //全年
+//            if ("3".equals(timeType)) {
+//                DateTime dateTime = DateUtil.beginOfYear(new Date());
+//                dataQueryWrapper.ge("create_date", dateTime);
+//                List<EnergyAllDataVo> energyGasDataVos = dataMapper.listYearGas(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyGasDataVos);
+//            }
+//            //本月
+//            if ("2".equals(timeType)) {
+//                Date timesMonthmorning = DataUill.getTimesMonthmorning();
+//                dataQueryWrapper.ge("create_date", timesMonthmorning);
+//                return new Result(ResultCode.SUCCESS, dataMapper.listDayGas(dataQueryWrapper));
+//            }
+//            //本周
+//            if ("1".equals(timeType)) {
+//                Calendar calendar = Calendar.getInstance();
+//                calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+//                dataQueryWrapper.ge("create_date", calendar.getTime());
+//                List<EnergyAllDataVo> energyGasDataVos = dataMapper.listDayGas(dataQueryWrapper);
+//                return new Result(ResultCode.SUCCESS, energyGasDataVos);
+//            }
+//        }
+//        return new Result(ResultCode.SUCCESS);
+//    }
+//
+//    @Override
+//    public Result listRank(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+//        String farmId = paramsMap.get("farmId");
+//        String dataType = paramsMap.get("dataType");
+//        String timeType = paramsMap.get("timeType");
+//        String startTime = paramsMap.get("startTime");
+//        String endTime = paramsMap.get("endTime");
+//        if (dataType == null || dataType == "") {
+//            dataType = "1";
+//        }
+//        if (timeType == null || timeType == "") {
+//            timeType = "3";
+//        }
+//        QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
+//        basePigpenQueryWrapper.eq("farm_id", farmId);
+//        JSONArray jsonArray = new JSONArray();
+//        basePigpenQueryWrapper.eq("parent_id", 0);
+//        List<BasePigpen> basePigpens = basePigpenMapper.selectList(basePigpenQueryWrapper);//得到所有的栋舍
+//        for (BasePigpen basePigpen : basePigpens) {
+//            QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+//            queryWrapper.eq("farm_id", farmId).eq("parent_id", basePigpen.getId()).eq("f_type", 2);
+//            List<BasePigpen> pigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的楼层
+//            Float value = 0.00f;
+//            for (BasePigpen pigpen : pigpens) {
+//                QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
+//                queryWrapper1.like("other2", pigpen.getId()).eq("farm_id", farmId);
+//                List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
+//                List<Integer> idList = new ArrayList<>();
+//                basePigpens1.forEach(item -> {
+//                    idList.add(item.getId());
+//                });//某一层所有单元的id
+//                QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
+//                if (ObjectUtil.isNotEmpty(idList)) {
+//                    dataQueryWrapper.eq("farm_id", farmId).in("unit_id", idList);
+//                } else {
+//                    dataQueryWrapper.eq("farm_id", farmId);
+//                }
+//
+//
+//                if ("4".equals(timeType)) {
+//                    //自定义
+//                    startTime = startTime + " 00:00:00";
+//                    endTime = endTime + " 23:59:59";
+//                    dataQueryWrapper.between("create_date", startTime, endTime);
+//                } else if ("3".equals(timeType)) {
+//                    //本年
+//                    DateTime dateTime = DateUtil.beginOfYear(new Date());
+//                    dataQueryWrapper.ge("create_date", dateTime);
+//                } else if ("2".equals(timeType)) {
+//                    //本月
+//                    Date timesMonthmorning = DataUill.getTimesMonthmorning();
+//                    dataQueryWrapper.ge("create_date", timesMonthmorning);
+//                } else if ("1".equals(timeType)) {
+//                    //本周
+//                    Calendar calendar = Calendar.getInstance();
+//                    calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+//                    dataQueryWrapper.ge("create_date", calendar.getTime());
+//                }
+//
+//
+//                dataQueryWrapper.select(
+//                        "IFNULL(SUM(water_value),0) waterValue,IFNULL(SUM(gas_value),0) gasValue" +
+//                                ",IFNULL(SUM(electricity_value),0) electricityValue" +
+//                                ",IFNULL(SUM(feed_value),0) feedValue  "
+//                );
+//                EnergyData energyData = dataMapper.selectOne(dataQueryWrapper);
+//                JSONObject jsonObject = new JSONObject();
+//
+//
+//                if ("1".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getWaterValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getWaterValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                if ("2".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getElectricityValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getElectricityValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                if ("3".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getFeedValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getFeedValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                if ("4".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getGasValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getGasValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                jsonObject.put("buildName", pigpen.getBuildName());
+//                jsonArray.add(jsonObject);
+//                value = 0.00f;
+//            }
+//        }
+//
+//        JSONArray arraySort = jsonArraySort(jsonArray, "value", true);
+//        return new Result(ResultCode.SUCCESS, arraySort);
+//    }
+//
+//    @Override
+//    public Result listDataScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+//        String farmId = paramsMap.get("farmId");
+//        QueryWrapper<EnergyData> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("farm_id", farmId);
+//        List<EnergyAllDataVo> energyGasDataVos = dataMapper.listDayGas(queryWrapper);
+//        List<EnergyAllDataVo> energyFeedDataVos = dataMapper.listDayFeed(queryWrapper);
+//        List<EnergyAllDataVo> energyWaterDataVos = dataMapper.listDayWater(queryWrapper);
+//        List<EnergyAllDataVo> energyElectricityDataVos = dataMapper.listDayElectricity(queryWrapper);
+//        JSONObject jsonObject = new JSONObject();
+//        jsonObject.put("gas", energyGasDataVos);
+//        jsonObject.put("water", energyWaterDataVos);
+//        jsonObject.put("energyElectricity", energyElectricityDataVos);
+//        jsonObject.put("feed", energyFeedDataVos);
+//        return new Result(ResultCode.SUCCESS, jsonObject);
+//    }
+//
+//    @Override
+//    public Result listRankScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+//        String farmId = paramsMap.get("farmId");
+//        String dataType = paramsMap.get("dataType");
+//        if (dataType == null || dataType == "") {
+//            dataType = "1";
+//        }
+//        QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
+//        basePigpenQueryWrapper.eq("farm_id", farmId);
+//        JSONArray jsonArray = new JSONArray();
+//        basePigpenQueryWrapper.eq("parent_id", 0);
+//        List<BasePigpen> basePigpens = basePigpenMapper.selectList(basePigpenQueryWrapper);//得到所有的栋舍
+//        for (BasePigpen basePigpen : basePigpens) {
+//            QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+//            queryWrapper.eq("farm_id", farmId).eq("parent_id", basePigpen.getId()).eq("f_type", 2);
+//            List<BasePigpen> pigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的楼层
+//            Float value = 0.00f;
+//            for (BasePigpen pigpen : pigpens) {
+//                QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
+//                queryWrapper1.like("other2", pigpen.getId()).eq("farm_id", farmId);
+//                List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
+//                List<Integer> idList = new ArrayList<>();
+//                basePigpens1.forEach(item -> {
+//                    idList.add(item.getId());
+//                });//某一层所有单元的id
+//                QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
+//                if (ObjectUtil.isNotEmpty(idList)) {
+//                    dataQueryWrapper.eq("farm_id", farmId).in(("unit_id"), idList);
+//                } else {
+//                    dataQueryWrapper.eq("farm_id", farmId);
+//                }
+//
+//
+//                dataQueryWrapper.select(
+//                        "IFNULL(SUM(water_value),0) waterValue,IFNULL(SUM(gas_value),0) gasValue" +
+//                                ",IFNULL(SUM(electricity_value),0) electricityValue" +
+//                                ",IFNULL(SUM(feed_value),0) feedValue  "
+//                );
+//                EnergyData energyData = dataMapper.selectOne(dataQueryWrapper);
+//                JSONObject jsonObject = new JSONObject();
+//                if ("1".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getWaterValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getWaterValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                if ("2".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getElectricityValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getElectricityValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                if ("3".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getFeedValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getFeedValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                if ("4".equals(dataType)) {
+//                    if (Float.parseFloat(energyData.getGasValue()) != 0.0f) {
+//                        value = value + Float.parseFloat(energyData.getGasValue());
+//                        jsonObject.put("value", value);
+//                    } else {
+//                        jsonObject.put("value", 0);
+//                    }
+//                }
+//                jsonObject.put("buildName", pigpen.getBuildName());
+//                jsonArray.add(jsonObject);
+//                value = 0.00f;
+//            }
+//        }
+//        JSONArray arraySort = jsonArraySort1(jsonArray, "value", true);
+//        JSONArray array = new JSONArray();
+//        if (arraySort.size() < 5) {
+//            return new Result(ResultCode.SUCCESS, arraySort);
+//        } else {
+//            for (int i = 0; i < 5; i++) {
+//                array.add(arraySort.get(i));
+//            }
+//            return new Result(ResultCode.SUCCESS, array);
+//        }
+//    }
+//
+//
+//    /*数组排序*/
+//    public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
+//        //存放排序结果json数组
+//        JSONArray sortedJsonArray = new JSONArray();
+//        //用于排序的list
+//        List<JSONObject> jsonValues = new ArrayList<JSONObject>();
+//        //将参数json数组每一项取出,放入list
+//        if (jsonArr.size() < 8) {
+//            for (int i = 0; i < jsonArr.size(); i++) {
+//                jsonValues.add(jsonArr.getJSONObject(i));
+//            }
+//            //快速排序,重写compare方法,完成按指定字段比较,完成排序
+//            Collections.sort(jsonValues, new Comparator<JSONObject>() {
+//                //排序字段
+//                private final String KEY_NAME = sortKey;
+//
+//                //重写compare方法
+//                @Override
+//                public int compare(JSONObject a, JSONObject b) {
+//                    //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
+//                    //String valA = new String();
+//                    //String valB = new String();
+//                    Float valA = 0.00f;
+//                    Float valB = 0.00f;
+//                    try {
+//                        valA = Float.parseFloat(a.getString(KEY_NAME));
+//                        valB = Float.parseFloat(b.getString(KEY_NAME));
+//                    } catch (JSONException e) {
+//                        e.printStackTrace();
+//                    }
+//                    //是升序还是降序
+//                    if (is_desc) {
+//                        return -valA.compareTo(valB);
+//                    } else {
+//                        return -valB.compareTo(valA);
+//                    }
+//
+//                }
+//            });
+//            //将排序后结果放入结果jsonArray
+//            for (int i = 0; i < jsonArr.size(); i++) {
+//                sortedJsonArray.add(jsonValues.get(i));
+//            }
+//        } else {
+//            for (int i = 0; i < 8; i++) {
+//                jsonValues.add(jsonArr.getJSONObject(i));
+//            }
+//            //快速排序,重写compare方法,完成按指定字段比较,完成排序
+//            Collections.sort(jsonValues, new Comparator<JSONObject>() {
+//                //排序字段
+//                private final String KEY_NAME = sortKey;
+//
+//                //重写compare方法
+//                @Override
+//                public int compare(JSONObject a, JSONObject b) {
+//                    //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
+//                    //String valA = new String();
+//                    //String valB = new String();
+//                    Float valA = 0.00f;
+//                    Float valB = 0.00f;
+//                    try {
+//                        valA = Float.parseFloat(a.getString(KEY_NAME));
+//                        valB = Float.parseFloat(b.getString(KEY_NAME));
+//                    } catch (JSONException e) {
+//                        e.printStackTrace();
+//                    }
+//                    //是升序还是降序
+//                    if (is_desc) {
+//                        return -valA.compareTo(valB);
+//                    } else {
+//                        return -valB.compareTo(valA);
+//                    }
+//
+//                }
+//            });
+//            //将排序后结果放入结果jsonArray
+//            for (int i = 0; i < 8; i++) {
+//                sortedJsonArray.add(jsonValues.get(i));
+//            }
+//        }
+//
+//        return sortedJsonArray;
+//    }
+//
+//    /*数组排序*/
+//    public static JSONArray jsonArraySort1(JSONArray jsonArr, String sortKey, boolean is_desc) {
+//        //存放排序结果json数组
+//        JSONArray sortedJsonArray = new JSONArray();
+//        //用于排序的list
+//        List<JSONObject> jsonValues = new ArrayList<JSONObject>();
+//        //将参数json数组每一项取出,放入list
+//
+//        for (int i = 0; i < jsonArr.size(); i++) {
+//            jsonValues.add(jsonArr.getJSONObject(i));
+//        }
+//        //快速排序,重写compare方法,完成按指定字段比较,完成排序
+//        Collections.sort(jsonValues, new Comparator<JSONObject>() {
+//            //排序字段
+//            private final String KEY_NAME = sortKey;
+//
+//            //重写compare方法
+//            @Override
+//            public int compare(JSONObject a, JSONObject b) {
+//                //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
+//                //String valA = new String();
+//                //String valB = new String();
+//                Float valA = 0.00f;
+//                Float valB = 0.00f;
+//                try {
+//                    valA = Float.parseFloat(a.getString(KEY_NAME));
+//                    valB = Float.parseFloat(b.getString(KEY_NAME));
+//                } catch (JSONException e) {
+//                    e.printStackTrace();
+//                }
+//                //是升序还是降序
+//                if (is_desc) {
+//                    return -valA.compareTo(valB);
+//                } else {
+//                    return -valB.compareTo(valA);
+//                }
+//
+//            }
+//        });
+//        //将排序后结果放入结果jsonArray
+//        if (jsonArr.size() < 5) {
+//            for (int i = 0; i < jsonArr.size(); i++) {
+//                sortedJsonArray.add(jsonValues.get(i));
+//            }
+//        } else {
+//            for (int i = 0; i < 5; i++) {
+//                sortedJsonArray.add(jsonValues.get(i));
+//            }
+//        }
+//        return sortedJsonArray;
+//    }
+
+}

+ 21 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDataServiceImpl.java

@@ -0,0 +1,21 @@
+package com.huimv.env.common.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.env.common.entity.EnvData;
+import com.huimv.env.common.mapper.EnvDataMapper;
+import com.huimv.env.common.service.IEnvDataService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-14
+ */
+@Service
+public class EnvDataServiceImpl extends ServiceImpl<EnvDataMapper, EnvData> implements IEnvDataService {
+
+}

+ 71 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDeviceMaintainServiceImpl.java

@@ -0,0 +1,71 @@
+package com.huimv.env.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.env.common.entity.EnvDeviceMaintain;
+import com.huimv.env.common.mapper.EnvDeviceMaintainMapper;
+import com.huimv.env.common.service.IEnvDeviceMaintainService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * <p>
+ * 设备维修记录 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Service
+public class EnvDeviceMaintainServiceImpl extends ServiceImpl<EnvDeviceMaintainMapper, EnvDeviceMaintain> implements IEnvDeviceMaintainService {
+
+    @Autowired
+    private EnvDeviceMaintainMapper envDeviceMaintainMapper;
+
+    @Override
+    public Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String deviceId = paramsMap.get("deviceId");
+        QueryWrapper<EnvDeviceMaintain> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("device_id", deviceId).eq("farm_id", farmId).orderByDesc("maintain_time");
+        return new Result(ResultCode.SUCCESS,envDeviceMaintainMapper.selectList(queryWrapper));
+    }
+
+    @Override
+    public Result add(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String deviceId = paramsMap.get("deviceId");
+        String maintainContent = paramsMap.get("maintainContent");
+        String remark = paramsMap.get("remark");
+
+        Date dateTime = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = simpleDateFormat.format(dateTime);
+        Date date = null;
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            date = simpleDateFormat1.parse(format);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        EnvDeviceMaintain envDeviceMaintain = new EnvDeviceMaintain();
+        envDeviceMaintain.setMaintainContent(maintainContent);
+        envDeviceMaintain.setDeviceId(deviceId);
+        envDeviceMaintain.setFarmId(Integer.parseInt(farmId));
+        envDeviceMaintain.setRemark(remark);
+        envDeviceMaintain.setMaintainTime(date);
+
+        envDeviceMaintainMapper.insert(envDeviceMaintain);
+        return new Result(ResultCode.SUCCESS,"添加成功");
+    }
+
+}

+ 21 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDeviceOnlineServiceImpl.java

@@ -0,0 +1,21 @@
+package com.huimv.env.common.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.env.common.entity.EnvDeviceOnline;
+import com.huimv.env.common.mapper.EnvDeviceOnlineMapper;
+import com.huimv.env.common.service.IEnvDeviceOnlineService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-03-02
+ */
+@Service
+public class EnvDeviceOnlineServiceImpl extends ServiceImpl<EnvDeviceOnlineMapper, EnvDeviceOnline> implements IEnvDeviceOnlineService {
+
+}

+ 459 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvDeviceServiceImpl.java

@@ -0,0 +1,459 @@
+package com.huimv.env.common.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.common.utils.DataUill;
+
+import com.huimv.env.common.entity.BasePigpen;
+import com.huimv.env.common.entity.EnvData;
+import com.huimv.env.common.entity.EnvDevice;
+import com.huimv.env.common.entity.EnvWarningInfo;
+import com.huimv.env.common.entity.vo.EnvDataVo;
+import com.huimv.env.common.mapper.BasePigpenMapper;
+import com.huimv.env.common.mapper.EnvDataMapper;
+import com.huimv.env.common.mapper.EnvDeviceMapper;
+import com.huimv.env.common.mapper.EnvWarningInfoMapper;
+import com.huimv.env.common.service.IEnvDeviceService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Service
+public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice> implements IEnvDeviceService {
+
+    @Autowired
+    private EnvDeviceMapper envDeviceMapper;
+    @Autowired
+    private BasePigpenMapper basePigpenMapper;
+    @Autowired
+    private EnvDataMapper dataMapper;
+//    @Autowired
+//    private RestTemplate restTemplate;
+    @Autowired
+    private EnvWarningInfoMapper warningInfoMapper;
+
+    @Override
+    public Result count(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        Integer count = envDeviceMapper.selectCount(queryWrapper);
+        JSONObject jsonObject = new JSONObject();
+        if (count == 0) {
+            jsonObject.put("DeviceCount", 0);
+            jsonObject.put("OnDeviceCount", 0);
+            jsonObject.put("OffDeviceCount", 0);
+            jsonObject.put("OnDeviceRate", 0);
+        } else {
+            QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("device_status", 1).eq("farm_id", farmId);
+            Integer count1 = envDeviceMapper.selectCount(queryWrapper1);
+            Integer OffDeviceCount = count- count1;
+            //创建一个数值格式化对象
+            NumberFormat numberFormat = NumberFormat.getInstance();
+            //设置精确到小数点后两位
+            numberFormat.setMaximumFractionDigits(2);
+            String onDeviceRate = numberFormat.format((float)count1 / (float) count* 100) + "%";
+            jsonObject.put("DeviceCount", count);
+            jsonObject.put("OnDeviceCount", count1);
+            jsonObject.put("OffDeviceCount", OffDeviceCount);
+            jsonObject.put("OnDeviceRate", onDeviceRate);
+        }
+        return new Result(ResultCode.SUCCESS, jsonObject);
+    }
+
+    @Override
+    public Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageSize = paramsMap.get("pageSize");
+        String pageNo = paramsMap.get("pageNo");
+        if (pageSize==null||pageSize=="") {
+            pageSize = "10";
+        }
+        if (pageNo==null||pageNo=="") {
+            pageNo = "1";
+        }
+        QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        Page<EnvDevice> page = new Page(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
+        return new Result(ResultCode.SUCCESS,envDeviceMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result add(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String DeviceName = paramsMap.get("DeviceName");
+        String BuildLocation = paramsMap.get("BuildLocation");
+        String DeviceBrand = paramsMap.get("DeviceBrand");
+        String remark = paramsMap.get("remark");
+        if (remark == null || remark == "") {
+            remark = null;
+        }
+
+        EnvDevice envDevice = new EnvDevice();
+        envDevice.setFarmId(Integer.parseInt(farmId));
+        envDevice.setDeviceName(DeviceName);
+        envDevice.setBuildLocation(BuildLocation);
+        envDevice.setDeviceBrand(DeviceBrand);
+        envDevice.setRemark(remark);
+        QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("device_name", DeviceName).eq("farm_id",farmId);
+        EnvDevice device = envDeviceMapper.selectOne(queryWrapper);
+        if (ObjectUtil.isEmpty(device)) {
+            envDeviceMapper.insert(envDevice);
+        } else {
+            return new Result(ResultCode.FAIL, "设备名称已存在");
+        }
+        return new Result(ResultCode.SUCCESS,"添加成功");
+    }
+
+    @Override
+    public Result edit(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String id = paramsMap.get("id");
+        String DeviceName = paramsMap.get("DeviceName");
+        String BuildLocation = paramsMap.get("BuildLocation");
+        String DeviceBrand = paramsMap.get("DeviceBrand");
+        String remark = paramsMap.get("remark");
+        if (remark == null || remark == "") {
+            remark = null;
+        }
+
+        QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("id", id);
+        EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper);
+        envDevice.setFarmId(Integer.parseInt(farmId));
+        envDevice.setDeviceName(DeviceName);
+        envDevice.setDeviceBrand(DeviceBrand);
+        envDevice.setBuildLocation(BuildLocation);
+        envDevice.setRemark(remark);
+
+        QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("device_name", DeviceName);
+        if (ObjectUtil.isEmpty(envDeviceMapper.selectOne(queryWrapper1))) {
+            envDeviceMapper.updateById(envDevice);
+        } else {
+            return new Result(ResultCode.FAIL, "设备名称已存在");
+        }
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result delete(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String id = paramsMap.get("id");
+        QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("id", id).eq("farm_id", farmId);
+        envDeviceMapper.delete(queryWrapper);
+        return new Result(ResultCode.SUCCESS,"删除成功");
+    }
+
+    @Override
+    public Result listPigpen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String id = paramsMap.get("id");//楼层id
+
+        JSONArray jsonArray = new JSONArray();
+        QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        if (id == null || id == "") {
+            queryWrapper.eq("parent_id", 3);
+        } else {
+            queryWrapper.like("other2", id);
+        }
+        List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//得到栋舍单元
+        for (int i = 0; i < basePigpens.size(); i++) {
+           /* QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("unit_name",basePigpens.get(i).getId());
+            EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper1);//找到栋舍绑定的设备,利用单元id*/
+
+            QueryWrapper<EnvData> queryWrapper2 = new QueryWrapper<>();
+            queryWrapper2.eq("unit_id",basePigpens.get(i).getId()).orderByDesc("create_time").last(" limit 1");//通过设备id来拿取数据
+            EnvData envData = dataMapper.selectOne(queryWrapper2);
+            JSONObject jsonObject = new JSONObject();
+            if (ObjectUtil.isEmpty(envData)) {
+                jsonObject.put("temp", 0);//温度
+                jsonObject.put("hum", 0);//湿度
+                jsonObject.put("location", basePigpens.get(i).getBuildName());
+                jsonObject.put("unit_id", basePigpens.get(i).getId());//单元id
+            } else {
+                jsonObject.put("temp", envData.getEnvTemp());//温度
+                jsonObject.put("hum", envData.getEnvHum());//湿度
+                jsonObject.put("location", basePigpens.get(i).getBuildName());
+                jsonObject.put("unit_id", envData.getUnitId());//单元id
+            }
+            jsonArray.add(jsonObject);
+        }
+        return new Result(ResultCode.SUCCESS,jsonArray);
+    }
+
+    @Override
+    public Result listEnv(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String id = paramsMap.get("id");//单元id
+        String type = paramsMap.get("type");//查询类型
+        String startTime = paramsMap.get("startTime");
+        String endTime = paramsMap.get("endTime");
+
+        if (type == null || type == "") {
+            type = "1";
+        }
+
+        QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
+        basePigpenQueryWrapper.eq("farm_id", farmId).eq("id", id);
+        BasePigpen basePigpen = basePigpenMapper.selectOne(basePigpenQueryWrapper);
+
+        QueryWrapper<EnvData> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("unit_id", id).eq("farm_id", farmId);
+
+        Map map = new HashMap<>();
+        //自定义查询
+        if ("4".equals(type)) {
+            startTime = startTime + " 00:00:00";
+            endTime = endTime + " 23:59:59";
+            queryWrapper.between("create_time", startTime, endTime);
+            List<EnvData> envData = dataMapper.listDay(queryWrapper);
+
+            map.put("location", basePigpen.getBuildName());
+            map.put("data", envData);
+        }
+
+        //本月
+        else if ("3".equals(type)) {
+            Date timesMonthmorning = DataUill.getTimesMonthmorning();
+            queryWrapper.ge("create_time", timesMonthmorning);
+            List<EnvData> envData = dataMapper.listDay(queryWrapper);
+            map.put("location", basePigpen.getBuildName());
+            map.put("data", envData);
+
+        }
+
+        //本周
+        else if ("2".equals(type)) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+            queryWrapper.ge("create_time",calendar.getTime());
+            List<EnvData> envData = dataMapper.listDay(queryWrapper);
+            map.put("location", basePigpen.getBuildName());
+            map.put("data", envData);
+        }
+
+        //今日
+        else if ("1".equals(type)) {
+            Date timesmorning = DataUill.getTimesmorning();
+            queryWrapper.ge("create_time", timesmorning);
+            List<EnvData> envData = dataMapper.listNow(queryWrapper);
+//            List<EnvData> envData = dataMapper.selectList(queryWrapper);
+            map.put("location", basePigpen.getBuildName());
+            map.put("data", envData);
+        }
+        return new Result(ResultCode.SUCCESS,map);
+    }
+
+    @Override
+    public Result listDeviceCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        Integer offCount = 0;
+        Integer onCount = 0;
+        QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("parent_id", 0);
+        List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的栋
+        JSONArray jsonArray = new JSONArray();
+        for (int i = 0; i < basePigpens.size(); i++) {
+            QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.like("other2", basePigpens.get(i).getId());
+            List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);//得到所有的楼层
+            for (int j = 0; j < basePigpens1.size(); j++) {
+                QueryWrapper<EnvDevice> deviceQueryWrapper = new QueryWrapper<>();
+                deviceQueryWrapper.eq("unit_id",basePigpens1.get(j).getId());
+                EnvDevice envDevice = envDeviceMapper.selectOne(deviceQueryWrapper);
+                if (ObjectUtil.isNotEmpty(envDevice)) {
+                    if (envDevice.getDeviceStatus() == 0) {
+                        offCount++;
+                    } else {
+                        onCount++;
+                    }
+                }
+
+            }
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("location",basePigpens.get(i).getBuildName());
+            jsonObject.put("onDevice", onCount);
+            jsonObject.put("offDevice", offCount);
+            jsonArray.add(jsonObject);
+            offCount = 0;
+            onCount = 0;
+        }
+        return new Result(ResultCode.SUCCESS,jsonArray);
+    }
+
+//    @Override
+//    @Transactional
+//    public Result sync(Map<String, String> params) throws Exception {
+//        String farmId = params.get("farmId");
+//        //获取所有栏舍
+//        Map<String, Object> map = new HashMap<String, Object>();
+//        String s = HttpClientSSLUtils.doPost("https://yzwlw.loongk.com/mobile/login?username=华统&password=21218cca77804d2ba1922c33e0151105", JSON.toJSONString(map));
+//        System.out.println("登录带栏舍:"+s);
+//        LoginDto loginDto = JSONUtil.toBean(s, LoginDto.class);
+//        DataToken token = loginDto.getData().getToken();
+//        String encode = Base64.encode(token.getUserId() + "_" + token.getToken());
+//        HttpHeaders headers = new HttpHeaders();
+//        headers.add("Authorization",encode);
+//        HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
+//        List<DataShacks> shacks = loginDto.getData().getShacks();
+//        // 不能删除,需做比较
+//        List<String> zengXinDeviceId = shacks.stream().map(DataShacks::getId).collect(Collectors.toList());
+//        List<String> huatongDeviceId = envDeviceMapper.selectDeviceCodeByfarmId(Integer.parseInt(farmId));
+//
+//        CopyOnWriteArrayList<String> zengXinDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(zengXinDeviceId);
+//        CopyOnWriteArrayList<String> huatongDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(huatongDeviceId);
+//        //新增的设备
+//        zengXinDeviceIdCopy.removeAll(huatongDeviceId);
+//        //新增
+//        if (zengXinDeviceIdCopy.size() >0){
+//            for (String deviceId : zengXinDeviceIdCopy) {
+//                syncConfig(deviceId,requestEntity,farmId);
+//            }
+//        }
+//        //需要删除的设备
+//        huatongDeviceIdCopy.removeAll(zengXinDeviceId);
+//        if (huatongDeviceIdCopy.size() >0){
+//            this.remove(new QueryWrapper<EnvDevice>().in("device_code",huatongDeviceIdCopy));
+//        }
+//        System.out.println("zengxin:"+zengXinDeviceIdCopy);
+//        System.out.println(huatongDeviceIdCopy);
+//        return new Result(10000,"同步成功",false);
+//    }
+
+    @Override
+    public Result bandingUnitId(HttpServletRequest httpServletRequest, EnvDevice envDevice) {
+        Integer unitId = envDevice.getUnitId();
+        int count = this.count(new QueryWrapper<EnvDevice>().eq("unit_id", unitId));
+        if (count>0){
+            return new Result(10001,"绑定失败,该栋舍已有设备",false);
+        }
+        this.updateById(envDevice);
+        return new Result(10000,"绑定成功",true);
+    }
+
+    @Override
+    public Result listPigpenAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        //TODO 优化一下
+        String farmId = paramsMap.get("farmId");
+        List objects = new ArrayList<>();
+        List<EnvDataVo> envDatas = dataMapper.listPigpenAll(farmId);
+        for (EnvDataVo envData : envDatas) {
+            JSONObject jsonObject = new JSONObject();
+            if (ObjectUtil.isNotEmpty(envData)){
+                jsonObject.put("temp", envData.getEnvTemp());//温度
+                jsonObject.put("hum", envData.getEnvHum());//湿度
+                jsonObject.put("location", envData.getBuildName());
+                jsonObject.put("unit_id", envData.getId());//单元id
+                jsonObject.put("aq", 0);//单元id
+            }else {
+                jsonObject.put("temp", 0);//温度
+                jsonObject.put("hum", 0);//湿度
+                jsonObject.put("location", envData.getBuildName());
+                jsonObject.put("unit_id", envData.getId());//单元id
+                jsonObject.put("aq", 0);//单元id
+            }
+            objects.add(jsonObject);
+        }
+
+        return new Result(ResultCode.SUCCESS,objects);
+    }
+
+    @Override
+    public Result listEnvCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        Integer count = envDeviceMapper.selectCount(queryWrapper);//设备检测数量
+        queryWrapper.eq("device_status", 1);
+        Integer count1 = envDeviceMapper.selectCount(queryWrapper);//设备在线数量
+        //创建一个数值格式化对象
+        NumberFormat numberFormat = NumberFormat.getInstance();
+        //设置精确到小数点后两位
+        numberFormat.setMaximumFractionDigits(2);
+        String onDeviceRate = numberFormat.format((float)count1 / (float) count* 100); //设备在线率
+        QueryWrapper<EnvWarningInfo> warningInfoQueryWrapper = new QueryWrapper<>();
+        warningInfoQueryWrapper.eq("farm_id", farmId);
+        Integer warnCount = warningInfoMapper.selectCount(warningInfoQueryWrapper);//全年报警数量
+        Date timesmorning = DataUill.getTimesmorning();
+        warningInfoQueryWrapper.ge("date", timesmorning);
+        Integer warningCountToday = warningInfoMapper.selectCount(warningInfoQueryWrapper);//今日报警数量
+        //得到监测保障天数
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        long day = 0;
+        try {
+            Date now = new Date();
+            String nowTime = sdf.format(now);
+//            System.out.println(now);
+            Date date = sdf.parse("2023-01-01");//指定日期
+            Date mydate = sdf.parse(nowTime);//当前日期
+            day = (mydate.getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
+//            System.out.println(day);
+        } catch (Exception e) {
+            return new Result(ResultCode.SUCCESS, "");
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("WarningCountYear", warnCount);
+        jsonObject.put("WarningCountToday", warningCountToday);
+        jsonObject.put("EnvCount", count);
+        jsonObject.put("OnCount", count1);
+        jsonObject.put("onDeviceRate", onDeviceRate);
+        jsonObject.put("day", day);
+        return new Result(ResultCode.SUCCESS, jsonObject);
+    }
+
+//    //添加新的设备
+//    private void syncConfig(String shackId,HttpEntity httpEntity,String farmId) {
+//        try {
+//            ResponseEntity<String> exchangePeizhi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackConfig/"+shackId, HttpMethod.GET, httpEntity, String.class);
+//            String peizhibody = exchangePeizhi.getBody();
+//            ShackConfigDto shackConfigDto = JSONUtil.toBean(peizhibody, ShackConfigDto.class);
+//            ShackConfigData data = shackConfigDto.getData();
+//            List<ShackConfigDataSensors> sensors = data.getSensors();
+//            if (ObjectUtil.isNotEmpty(sensors)){
+//                EnvDevice envDevice =new EnvDevice();
+//                envDevice.setFarmId(Integer.parseInt(farmId));
+//                envDevice.setDeviceBrand("增鑫");
+//                envDevice.setDeviceCode(data.getId());
+//                envDevice.setDeviceName(data.getName());
+//                for (ShackConfigDataSensors sensor : sensors) {
+//                    if ("TEMPERATURE".equals(sensor.getType())){
+//                        envDevice.setOhter1(sensor.getId());
+//                    }
+//                    if ("HUMIDITY".equals(sensor.getType())){
+//                        envDevice.setOhter2(sensor.getId());
+//                    }
+//                }
+//                envDeviceMapper.insert(envDevice);
+//            }
+//        }catch (Exception e){
+//            System.out.println("设备同步异常:" + e +"  deviceId"+shackId);
+//        }
+//
+//    }
+
+
+}

+ 73 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvWarningInfoServiceImpl.java

@@ -0,0 +1,73 @@
+package com.huimv.env.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.huimv.env.common.entity.EnvWarningInfo;
+import com.huimv.env.common.entity.dto.EnvWarningDto;
+import com.huimv.env.common.mapper.EnvWarningInfoMapper;
+import com.huimv.env.common.service.IEnvWarningInfoService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Service
+public class EnvWarningInfoServiceImpl extends ServiceImpl<EnvWarningInfoMapper, EnvWarningInfo> implements IEnvWarningInfoService {
+
+    @Autowired
+    private EnvWarningInfoMapper envWarningInfoMapper;
+    @Override
+    public Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String pageSize = paramsMap.get("pageSize");
+        String pageNo = paramsMap.get("pageNo");
+        String farmId =paramsMap.get("farmId");
+        String userIds = paramsMap.get("userIds");
+        if (pageSize==null||pageSize=="") {
+            pageSize = "10";
+        }
+        if (pageNo==null||pageNo=="") {
+            pageNo = "1";
+        }
+        QueryWrapper<EnvWarningInfo> queryWrapper = new QueryWrapper<>();
+        if ("1".equals(userIds)) {
+            queryWrapper.eq("farm_id", farmId).orderByDesc("date");
+        } else {
+            queryWrapper.eq("farm_id", farmId).like("user_ids",userIds).orderByDesc("date");
+        }
+        Page<EnvWarningInfo> page = new Page<>(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
+        Page<EnvWarningInfo> warningInfoPage = envWarningInfoMapper.selectPage(page, queryWrapper);
+        return new Result(ResultCode.SUCCESS,warningInfoPage);
+    }
+
+    @Override
+    public Result listTop(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        List<EnvWarningDto> envWarningDtoList = envWarningInfoMapper.listTop(farmId);
+        return new Result(ResultCode.SUCCESS,envWarningDtoList);
+    }
+
+    @Override
+    public Result listScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        QueryWrapper<EnvWarningInfo> wrapper = new QueryWrapper<>();
+        wrapper.eq("farm_id",farmId);
+        wrapper.orderByDesc("id");
+        wrapper.isNotNull("unit_id");
+        wrapper.last("limit 5");
+        return new Result(ResultCode.SUCCESS, this.list(wrapper));
+    }
+}

+ 139 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/EnvWarningThresholdServiceImpl.java

@@ -0,0 +1,139 @@
+package com.huimv.env.common.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.common.token.TokenSign;
+
+import com.huimv.env.common.entity.EnvWarningThreshold;
+import com.huimv.env.common.mapper.EnvWarningThresholdMapper;
+import com.huimv.env.common.mapper.SysAccountMultilevelMapper;
+import com.huimv.env.common.service.IEnvWarningThresholdService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-13
+ */
+@Service
+public class EnvWarningThresholdServiceImpl extends ServiceImpl<EnvWarningThresholdMapper, EnvWarningThreshold> implements IEnvWarningThresholdService {
+
+    @Autowired
+    EnvWarningThresholdMapper envWarningThresholdMapper;
+    @Autowired
+    SysAccountMultilevelMapper sysAccountMultilevelMapper;
+    @Override
+    public Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+
+        Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
+        List<Integer> userIds =sysAccountMultilevelMapper.getLowerLevel( userId,farmId);
+        List<Integer> collect =new ArrayList<>();
+        QueryWrapper<EnvWarningThreshold> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        EnvWarningThreshold envWarningThreshold = envWarningThresholdMapper.selectOne(queryWrapper);
+        JSONObject jsonObject = new JSONObject();
+        String userIds1 = "";
+        if (ObjectUtil.isNotEmpty(envWarningThreshold)){
+            userIds1 = envWarningThreshold.getUserIds();
+        }
+        if (StringUtils.isNotBlank(userIds1)){
+            collect = Arrays.stream(userIds1.split(",")).map(Integer::valueOf).filter(userIds::contains).collect(Collectors.toList());
+        }
+
+        if (ObjectUtil.isEmpty(envWarningThreshold)) {
+            jsonObject.put("maxTem", 0);
+            jsonObject.put("minTem", 0);
+            jsonObject.put("maxHum", 0);
+            jsonObject.put("minHum", 0);
+            jsonObject.put("maxNh3", 0);
+            jsonObject.put("maxCo", 0);
+            jsonObject.put("userIds", null);
+        } else {
+            jsonObject.put("maxTem", envWarningThreshold.getMaxTem());
+            jsonObject.put("minTem", envWarningThreshold.getMinTem());
+            jsonObject.put("maxHum", envWarningThreshold.getMaxHum());
+            jsonObject.put("minHum", envWarningThreshold.getMinHum());
+            jsonObject.put("maxNh3", envWarningThreshold.getMaxNh3());
+            jsonObject.put("maxCo", envWarningThreshold.getMaxCo());
+            jsonObject.put("userIds", collect);
+        }
+        return new Result(ResultCode.SUCCESS,jsonObject);
+    }
+
+    @Override
+    public Result add(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String userIds = paramsMap.get("userIds");
+        String farmId = paramsMap.get("farmId");
+        String maxTem = paramsMap.get("maxTem");
+        String minTem = paramsMap.get("minTem");
+        /*String maxHum = paramsMap.get("maxHum");
+        String minHum = paramsMap.get("minHum");*/
+        String maxNh3= paramsMap.get("maxNh3");
+        String maxCo = paramsMap.get("maxCo");
+
+        QueryWrapper<EnvWarningThreshold> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        EnvWarningThreshold envWarningThreshold = envWarningThresholdMapper.selectOne(queryWrapper);
+
+        //去掉属于该人物的id
+        Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
+        //下属id
+        List<Integer> lowerLevelIds = sysAccountMultilevelMapper.getLowerLevel( userId,farmId);
+        //上传id
+        List<Integer> uoloadIds = new ArrayList<>();
+        if (StringUtils.isNotBlank(userIds)){
+            uoloadIds = Arrays.stream(userIds.split(",")).map(Integer::valueOf).collect(Collectors.toList());
+        }
+        //现有id
+        String oldUserIds = envWarningThreshold.getUserIds();
+        List<Integer> oldUsersIds = new ArrayList<>();
+        if (StringUtils.isNotBlank(oldUserIds)){
+            oldUsersIds = Arrays.stream(oldUserIds.split(",")).map(Integer::valueOf).collect(Collectors.toList());
+        }
+        // 现有 -下属 + 上传
+        oldUsersIds.removeAll(lowerLevelIds);
+        oldUsersIds.addAll(uoloadIds);
+
+
+        EnvWarningThreshold threshold = new EnvWarningThreshold();
+      /*  threshold.setMaxHum(maxHum);
+        threshold.setMinHum(minHum);*/
+        threshold.setMaxTem(maxTem);
+        threshold.setMinTem(minTem);
+        threshold.setMaxNh3(maxNh3);
+        threshold.setMaxCo(maxCo);
+        threshold.setUserIds( oldUsersIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
+        threshold.setFarmId(Integer.parseInt(farmId));
+
+        if (Double.parseDouble(maxTem) < Double.parseDouble(minTem)) {
+            return new Result(10001, "最高温度不能小于最低温度", false);
+        } /*else if (Integer.parseInt(maxHum) < Integer.parseInt(minHum)) {
+            return new Result(10001, "最高湿度不能小于最低湿度", false);
+        } */else {
+            if (ObjectUtil.isEmpty(envWarningThreshold)) {
+                envWarningThresholdMapper.insert(threshold);
+            } else {
+                threshold.setId(envWarningThreshold.getId());
+                envWarningThresholdMapper.updateById(threshold);
+            }
+        }
+        return Result.SUCCESS();
+    }
+}

+ 96 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/FarmServiceImpl.java

@@ -0,0 +1,96 @@
+package com.huimv.env.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.huimv.env.common.entity.Farm;
+import com.huimv.env.common.entity.SysAccountMultilevel;
+import com.huimv.env.common.mapper.FarmMapper;
+import com.huimv.env.common.mapper.SysAccountMultilevelMapper;
+import com.huimv.env.common.service.IFarmService;
+import com.huimv.env.common.utils.Result;
+import com.huimv.env.common.utils.ResultCode;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author astupidcoder
+ * @since 2021-10-14
+ */
+@Service
+public class FarmServiceImpl extends ServiceImpl<FarmMapper, Farm> implements IFarmService {
+
+    @Autowired
+    private SysAccountMultilevelMapper accountMultilevelMapper;
+    @Override
+    public Result getFarm(Integer userId) {
+        SysAccountMultilevel sysAccountMultilevel = accountMultilevelMapper.selectById(userId);
+        String farmIds = sysAccountMultilevel.getFarmIds();
+        List list ;
+        if (userId == 1){
+            list = this.list();
+        }else {
+            List<String> list1 = Arrays.asList(farmIds.split(","));
+           list = (List)this.listByIds(list1);
+        }
+        return new Result(ResultCode.SUCCESS,list);
+    }
+
+    @Override
+    public Result add(Farm farm) {
+        this.save(farm);
+        return new Result(10000,"添加成功",true);
+    }
+
+    @Override
+    public Result getFarm2(Integer userId) {
+        SysAccountMultilevel sysAccountMultilevel = accountMultilevelMapper.selectById(userId);
+        String farmIds = sysAccountMultilevel.getFarmIds();
+        List<Farm> list ;
+        if (userId == 1){
+            list = this.list();
+        }else {
+            List<String> list1 = Arrays.asList(farmIds.split(","));
+            list = this.listByIds(list1);
+        }
+        String str = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q";
+        String[] split = str.split(",");
+        Integer i = 0;
+        for (Farm farm : list) {
+            farm.setFarmName(split[i]+"牧场");
+            i++;
+        }
+        return new Result(ResultCode.SUCCESS,list);
+    }
+
+    @Override
+    public Result listPage(Integer userId, Map paramMap) {
+        int pageNum = (Integer)paramMap.get("pageNum");
+        int pageSize = (Integer)paramMap.get("pageSize");
+        String farmName = (String)paramMap.get("farmName");
+        QueryWrapper<Farm> wrapper= new QueryWrapper<>();
+        wrapper.like("farm_name",farmName);
+        SysAccountMultilevel sysAccountMultilevel = accountMultilevelMapper.selectById(userId);
+        String farmIds = sysAccountMultilevel.getFarmIds();
+        if (StringUtils.isBlank(farmIds)){
+            return new Result(10001,"未绑定牧场",false);
+        }
+        if (userId != 1){
+            List<String> list1 = Arrays.asList(farmIds.split(","));
+            wrapper.in("id",list1);
+        }
+        IPage<Farm> page = this.page(new Page<>(pageNum, pageSize), wrapper);
+        return new Result(ResultCode.SUCCESS,page);
+    }
+}

+ 0 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/GroupMenuServiceImpl.java


Some files were not shown because too many files changed in this diff