From d8f66b834134f6b755fd3fb93bb91b56f9d31f6f Mon Sep 17 00:00:00 2001
From: Van333 <van666666@foxmail.com>
Date: 星期四, 29 十二月 2022 15:46:53 +0800
Subject: [PATCH] 放假备份。对接光伏对外接口,单灯,灯杆调整。

---
 src/main/java/api/controller/CameraController.java                                 |   38 +
 src/main/java/api/controller/PhotovoltaicController.java                           |  126 +++
 src/main/java/api/service/PhotovoltaicEntityService.java                           |   18 
 src/main/java/api/service/impl/PhotovoltaicEntityServiceImpl.java                  |   60 +
 src/main/java/api/service/impl/HuinengMachineErrorServiceImpl.java                 |   68 +
 src/main/java/api/dao/SysUserRoleDao.java                                          |   42 +
 .idea/encodings.xml                                                                |    1 
 src/main/java/api/bean/SysUserRoleEntity.java                                      |   40 +
 src/main/java/api/service/impl/SysUserCompanyServiceImpl.java                      |   36 +
 src/main/java/api/PhotovoltaicHeartDataController.java                             |   35 
 src/main/java/api/bean/HuinengMachineError.java                                    |   55 +
 src/main/java/api/service/SinglelampDataServer.java                                |    2 
 src/main/resources/mapper/PhotovoltaicErrorDao.xml                                 |  162 ++++
 pom.xml                                                                            |    5 
 src/main/java/api/dao/SysUserCompanyDao.java                                       |   29 
 .idea/sonarlint/issuestore/index.pb                                                |   18 
 src/main/java/api/bean/PhotovoltaicError.java                                      |   38 +
 src/main/java/api/service/impl/SysUserRoleServiceImpl.java                         |   38 +
 src/main/resources/mapper/SysUserRoleDao.xml                                       |   13 
 src/main/java/api/dao/PhotovoltaicHeartDataDao.java                                |   26 
 src/main/java/api/service/SysUserCompanyService.java                               |   22 
 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst |   32 
 src/main/java/api/service/PhotovoltaicHeartDataService.java                        |   21 
 src/main/java/api/service/impl/PhotovoltaicErrorServiceImpl.java                   |   63 +
 src/main/resources/mapper/HuinengMachineErrorDao.xml                               |  128 +++
 target/api-1.0-SNAPSHOT.jar.original                                               |    0 
 src/main/java/api/bean/SysUserCompanyEntity.java                                   |   32 
 src/main/java/api/dao/PhotovoltaicEntityDao.java                                   |   44 +
 src/main/java/api/bean/Pages.java                                                  |   22 
 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst   |   59 
 .idea/jarRepositories.xml                                                          |    5 
 src/main/resources/mapper/PhotovoltaicHeartDataDao.xml                             |  136 +++
 src/main/java/api/bean/PhotovoltaicErrorCode.java                                  |   36 +
 src/main/java/api/dao/HuinengMachineErrorDao.java                                  |   26 
 src/main/java/api/controller/TimerController.java                                  |   12 
 src/main/resources/mapper/PhotovoltaicEntityDao.xml                                |  109 +++
 src/main/java/api/controller/PoleController.java                                   |    6 
 src/main/java/api/service/HuinengMachineErrorService.java                          |   20 
 src/main/java/api/PhotovoltaicEntityController.java                                |  138 +++
 src/main/java/api/service/PhotovoltaicErrorService.java                            |   20 
 src/main/java/api/service/SysUserRoleService.java                                  |   37 +
 src/main/java/api/bean/PhotovoltaicEntity.java                                     |   50 +
 src/main/java/api/controller/SinglelampDataController.java                         |    1 
 src/main/java/api/service/impl/PhotovoltaicHeartDataServiceImpl.java               |   78 ++
 src/main/java/api/bean/ReqParams.java                                              |    2 
 src/main/java/api/bean/PhotovoltaicHeartData.java                                  |  171 ++++
 src/main/java/api/dao/PhotovoltaicErrorDao.java                                    |   26 
 47 files changed, 2,063 insertions(+), 83 deletions(-)

diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 63e9001..aa00ffa 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -2,5 +2,6 @@
 <project version="4">
   <component name="Encoding">
     <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index ae53faa..3539251 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -7,6 +7,11 @@
       <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
     </remote-repository>
     <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
       <option name="id" value="spring-snapshots" />
       <option name="name" value="Spring Snapshots" />
       <option name="url" value="http://repo.spring.io/libs-snapshot-local" />
diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
index 9a1b83c..e0bfa1f 100644
--- a/.idea/sonarlint/issuestore/index.pb
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -5,15 +5,15 @@
 "src/main/java/api/dao/LampDao.java,d\0\d0d1e8f47438a32015e088e692535feeed269aef
 ]
 -src/main/java/api/service/WeatherService.java,9\3\93a9bd117cced6b9c7148662c8fd3c4c897df38c
-U
-%src/main/java/api/APIApplication.java,b\a\ba3268bafd7e0ebaede0ee9191f3fb1e1c429db1
-7
-pom.xml,4\4\442292b8a7efeabbe4cc176709b833b1792140ec
-\
-,src/main/java/api/dao/SinglelampDataDao.java,c\e\ce4a830e5e4def64dc852bb018931e75b6adb0a2
-c
-3src/main/java/api/service/SinglelampDataServer.java,c\7\c72fbd54d77e074dc19b9a2f8657b608014f95ab
 `
 0src/main/java/api/bean/PoleSensorV2VOEntity.java,d\4\d4cc4e15977bad28854c14d8c280f689febe6570
 U
-%src/main/java/api/utils/HttpUtil.java,0\0\0097a929f7209d0ce32de24604bdd3ce8e365117
\ No newline at end of file
+%src/main/java/api/APIApplication.java,b\a\ba3268bafd7e0ebaede0ee9191f3fb1e1c429db1
+e
+5src/main/java/api/controller/WeatherV2Controller.java,c\6\c6f2cda030094ab71d90caeaf0d3a6d607ca19c4
+\
+,src/main/java/api/dao/SinglelampDataDao.java,c\e\ce4a830e5e4def64dc852bb018931e75b6adb0a2
+j
+:src/main/java/api/controller/OldSystemLoginController.java,0\c\0cd175614b2b4167efc66fd7bf6676af1f646c09
+Z
+*src/main/java/api/service/PoleService.java,f\6\f664ae3a66d4021886879267708e49b9d5e82048
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index fa3db8e..2cf0a4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -136,6 +136,11 @@
             <artifactId>spring-boot-configuration-processor</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.2.0</version>
+        </dependency>
         <!--MP渚濊禆-->
        <!-- <dependency>
             <groupId>com.baomidou</groupId>
diff --git a/src/main/java/api/PhotovoltaicEntityController.java b/src/main/java/api/PhotovoltaicEntityController.java
new file mode 100644
index 0000000..d08aadb
--- /dev/null
+++ b/src/main/java/api/PhotovoltaicEntityController.java
@@ -0,0 +1,138 @@
+//package api;
+//
+//
+//import com.baomidou.mybatisplus.extension.api.ApiController;
+//import com.github.pagehelper.PageInfo;
+//import io.machine.common.utils.R;
+//import io.machine.modules.photovoltaic.entity.PhotovoltaicEntity;
+//import io.machine.modules.photovoltaic.service.PhotovoltaicEntityService;
+//import org.springframework.web.bind.annotation.*;
+//
+//import javax.annotation.Resource;
+//import java.io.Serializable;
+//import java.util.*;
+//import java.util.stream.Collectors;
+//
+//import static io.machine.common.utils.ShiroUtils.getUserId;
+//
+///**
+// * (PhotovoltaicEntity)琛ㄦ帶鍒跺眰
+// *
+// * @author makejava
+// * @since 2022-09-28 17:35:48
+// */
+//@RestController
+//@RequestMapping("photovoltaic")
+//public class PhotovoltaicEntityController extends ApiController {
+//    /**
+//     * 鏈嶅姟瀵硅薄
+//     */
+//    @Resource
+//    private PhotovoltaicEntityService photovoltaicEntityService;
+//
+//    /**
+//     * 鍒嗛〉鏌ヨ鎵�鏈夋暟鎹�
+//     *
+//     * @return 鎵�鏈夋暟鎹�
+//     */
+//    @RequestMapping("/list")
+//    public R selectAll(@RequestBody Map map) {
+//        PageInfo<PhotovoltaicEntity> pageInfo = photovoltaicEntityService.list(
+//                (Integer) map.get("page"),
+//                (Integer) map.get("size"),
+//                (String) map.get("key"),
+//                getUserId()
+//        );
+//        return R.ok().put("page", pageInfo);
+//    }
+//
+//    /**
+//     * 閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁
+//     *
+//     * @param id 涓婚敭
+//     * @return 鍗曟潯鏁版嵁
+//     */
+//    @PostMapping("{id}")
+//    public R selectOne(@PathVariable Serializable id) {
+//        return R.ok().put("data",this.photovoltaicEntityService.getById(id));
+//    }
+//
+//    /**
+//     * 鏂板鏁版嵁
+//     *
+//     * @param photovoltaicEntity 瀹炰綋瀵硅薄
+//     * @return 鏂板缁撴灉
+//     */
+//    @PostMapping("save")
+//    public R insert(@RequestBody PhotovoltaicEntity photovoltaicEntity) {
+//        photovoltaicEntity.setCreateTime(new Date());
+//        photovoltaicEntity.setUpdateTime(new Date());
+//
+//        photovoltaicEntity.setCreateUserId(getUserId());
+//        String result = "淇濆瓨澶辫触";
+//        if (this.photovoltaicEntityService.save(photovoltaicEntity)){
+//            result = "淇濆瓨鎴愬姛";
+//        }
+//        return R.ok().put("data",result);
+//    }
+//
+//    /**
+//     * 淇敼鏁版嵁
+//     *
+//     * @param photovoltaicEntity 瀹炰綋瀵硅薄
+//     * @return 淇敼缁撴灉
+//     */
+//    @PostMapping("update")
+//    public R update(@RequestBody PhotovoltaicEntity photovoltaicEntity) {
+//
+//        photovoltaicEntity.setUpdateTime(new Date());
+//        String result = "淇敼澶辫触";
+//
+//        PageInfo<PhotovoltaicEntity> list = photovoltaicEntityService.list(
+//                1,
+//                1000,
+//                null,
+//                getUserId()
+//        );
+//        List<Integer> haslist = list.getList().stream().map(PhotovoltaicEntity::getPhotovoltaicId).collect(Collectors.toList());
+//
+//
+//        if (!haslist.containsAll(Collections.singleton(photovoltaicEntity.getPhotovoltaicId()))){
+//            result = "璇锋鏌hotovoltaicId鏄惁鍚堟硶";
+//        }
+//        if (this.photovoltaicEntityService.updateById(photovoltaicEntity)){
+//            result = "淇敼鎴愬姛";
+//        }
+//        return R.ok().put("data",result);
+//    }
+//
+//    /**
+//     * 鍒犻櫎鏁版嵁
+//     *
+//     * @param ids 涓婚敭缁撳悎
+//     * @return 鍒犻櫎缁撴灉
+//     */
+//    @PostMapping("delete")
+//    public R delete(@RequestBody Long[] ids) {
+//
+//        String result = "鍒犻櫎澶辫触";
+//
+//        PageInfo<PhotovoltaicEntity> list = photovoltaicEntityService.list(
+//                1,
+//                1000,
+//                null,
+//                getUserId()
+//        );
+//        List<Integer> haslist = list.getList().stream().map(PhotovoltaicEntity::getPhotovoltaicId).collect(Collectors.toList());
+//
+//
+//        if (!haslist.containsAll(Arrays.asList(ids))){
+//            result = "璇锋鏌ds鏄惁鍚堟硶";
+//        }
+//        if (this.photovoltaicEntityService.removeByIds(Arrays.asList(ids))){
+//            result = ids.clone().toString()+"鍒犻櫎鎴愬姛";
+//        }
+//        return R.ok().put("data",result);
+//    }
+//}
+//
diff --git a/src/main/java/api/PhotovoltaicHeartDataController.java b/src/main/java/api/PhotovoltaicHeartDataController.java
new file mode 100644
index 0000000..9aaae80
--- /dev/null
+++ b/src/main/java/api/PhotovoltaicHeartDataController.java
@@ -0,0 +1,35 @@
+//package api;
+//
+//import com.github.pagehelper.PageInfo;
+//import io.machine.common.bean.Pages;
+//import io.machine.common.utils.R;
+//import io.machine.modules.photovoltaic.entity.PhotovoltaicHeartData;
+//import io.machine.modules.photovoltaic.service.PhotovoltaicHeartDataService;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.annotation.Resource;
+//
+///**
+// * 鍏変紡蹇冭烦鏁版嵁琛�(PhotovoltaicHeartData)琛ㄦ帶鍒跺眰
+// *
+// * @author makejava
+// * @since 2022-09-29 17:36:34
+// */
+//@RestController
+//@RequestMapping("photovoltaicHeartData")
+//public class PhotovoltaicHeartDataController {
+//    /**
+//     * 鏈嶅姟瀵硅薄
+//     */
+//    @Resource
+//    private PhotovoltaicHeartDataService photovoltaicHeartDataService;
+//
+//    @RequestMapping("/list")
+//    public R list(@RequestBody Pages pages) {
+//            PageInfo<PhotovoltaicHeartData> page = photovoltaicHeartDataService.list(pages);
+//            return R.ok().put("page",page);
+//    }
+//}
+//
diff --git a/src/main/java/api/bean/HuinengMachineError.java b/src/main/java/api/bean/HuinengMachineError.java
new file mode 100644
index 0000000..eda2f68
--- /dev/null
+++ b/src/main/java/api/bean/HuinengMachineError.java
@@ -0,0 +1,55 @@
+package api.bean;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (HuinengMachineError)琛ㄥ疄浣撶被
+ *
+ * 鍏堝埆楠備负鍟ョ敤鎷奸煶锛屽氨鐭ラ亾瀹冨彨huinengji锛屾病鍒殑淇℃伅浜�
+ * @author makejava
+ * @since 2022-10-22 17:52:06
+ */
+@SuppressWarnings("serial")
+@Data
+public class HuinengMachineError extends Model<HuinengMachineError> {
+
+    @TableId(value = "error_id", type = IdType.AUTO)
+    private Long errorId;
+
+    private String streetlightMac;
+
+    private String errorCode;
+
+    private String errorMsg;
+
+//    private String destinationAddress;
+
+    private Date timestamp;
+
+    @TableField(exist = false)
+    private String photovoltaicId;
+
+    @TableField(exist = false)
+    private String photovoltaicName;
+
+    /**
+     * 鑾峰彇涓婚敭鍊�
+     *
+     * @return 涓婚敭鍊�
+     */
+    @Override
+    protected Serializable pkVal() {
+        return this.errorId;
+    }
+
+    }
+
+
diff --git a/src/main/java/api/bean/Pages.java b/src/main/java/api/bean/Pages.java
new file mode 100644
index 0000000..90eadc4
--- /dev/null
+++ b/src/main/java/api/bean/Pages.java
@@ -0,0 +1,22 @@
+package api.bean;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Pages {
+
+    private Integer page;
+    private Integer size;
+    private String key;
+    private Integer groupId;
+    private List cardIdList;
+    private Long streetlightId;
+    private String mac;
+
+    private String field;
+    private String sort;
+    private Integer photovoltaicId;
+
+}
diff --git a/src/main/java/api/bean/PhotovoltaicEntity.java b/src/main/java/api/bean/PhotovoltaicEntity.java
new file mode 100644
index 0000000..98eaf44
--- /dev/null
+++ b/src/main/java/api/bean/PhotovoltaicEntity.java
@@ -0,0 +1,50 @@
+package api.bean;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * (PhotovoltaicEntity)琛ㄥ疄浣撶被
+ *
+ * @author makejava
+ * @since 2022-09-28 17:35:50
+ */
+@Data
+public class PhotovoltaicEntity {
+    //鍏変紡涓绘満id
+    private Integer photovoltaicId;
+    //鍏変紡涓绘満鍚嶇О
+    private String photovoltaicName;
+    //鍏変紡涓绘満搴忓垪鍙�
+    private String photovoltaicMac;
+    //0鐢垫睜/1甯傜數浼樺厛妯″紡
+    private Integer photovoltaicWorkPattern;
+    //鍏変紡纭欢璀﹀憡
+//    private String photovoltaicWorkWaring;
+    //缁戝畾鐏潌id
+    private Long bindPoleStreelightId;
+    //鍏変紡纭欢鐗堟湰
+    private String hardwareVersion;
+    //淇敼鏃堕棿
+    private Date updateTime;
+    //鍒涘缓鑰匢D
+    private Long createUserId;
+    //鍒涘缓鏃堕棿
+    private Date createTime;
+    //杞欢鐗堟湰
+    private String softwareVersion;
+
+    /**
+     * 鐏潌mac
+     * */
+    @TableField(exist = false)
+    private String codeNumber;
+
+//    @TableField(exist = false)
+//    private Integer onlineStatus;
+
+
+}
+
diff --git a/src/main/java/api/bean/PhotovoltaicError.java b/src/main/java/api/bean/PhotovoltaicError.java
new file mode 100644
index 0000000..79751d9
--- /dev/null
+++ b/src/main/java/api/bean/PhotovoltaicError.java
@@ -0,0 +1,38 @@
+package api.bean;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * (PhotovoltaicError)琛ㄥ疄浣撶被
+ *
+ * @author makejava
+ * @since 2022-09-30 11:53:07
+ */
+@Data
+public class PhotovoltaicError {
+
+    private Integer errorId;
+
+    private String streetlightMac;
+
+    private String errorCode;
+
+    private String errorMsg;
+
+    private String destinationAddress;
+
+    private Date timestamp;
+
+    @TableField(exist = false)
+    private String photovoltaicId;
+
+    @TableField(exist = false)
+    private String photovoltaicName;
+
+
+}
+
diff --git a/src/main/java/api/bean/PhotovoltaicErrorCode.java b/src/main/java/api/bean/PhotovoltaicErrorCode.java
new file mode 100644
index 0000000..79165c7
--- /dev/null
+++ b/src/main/java/api/bean/PhotovoltaicErrorCode.java
@@ -0,0 +1,36 @@
+package api.bean;
+
+
+
+
+/**
+ *鍏変紡鏁呴殰鐮�
+ *
+ * @author makejava
+ * @since 2022-09-30 11:53:07
+ */
+public class PhotovoltaicErrorCode {
+
+
+
+    /*
+      bit31	            bit30   	    bit29       	bit28       	bit27       	        bit26       	    bit25       	        bit24
+      0	                  0	            0	            鐢垫睜鍙嶆帴	        "鐢垫睜浣庢俯淇濇姢锛屽仠姝㈠厖鐢�"   "杩囧厖淇濇姢锛屽仠姝㈠厖鐢�"	    "鐢垫睜浣庢俯淇濇姢锛岀姝㈡斁鐢�"	"鐢垫睜楂樻俯淇濇姢锛岀姝㈡斁鐢�"
+
+      bit23	            bit22	        bit21	        bit20	        bit19	                bit18	            bit17	                bit16
+      鏈娴嬪埌鐢垫睜锛堥搮閰革級	渚涚數鐘舵��	        0	            0	            0	                    0	                0	                    0
+
+      bit15            	bit14	        bit13	        bit12	        bit11	                bit10	            bit9	                bit8
+      0	                 0	            0	            鍏変紡鏉挎帴鍙�	    鍏変紡宸ヤ綔鐐硅秴鍘�	        0	                鍏変紡杈撳叆瓒呭帇	            0
+
+      bit7	            bit6	        bit5	        bit4	        bit3	                bit2	             bit1	                bit0
+      鍏変紡鍔熺巼杩囧ぇ "鐢垫睜楂樻俯淇濇姢锛岀姝㈠厖鐢�" 涓绘満娓╁害杩囬珮	    璐熻浇杩囪浇	        璐熻浇鐭矾	                鐢垫睜娆犲帇	            鐢垫睜瓒呭帇	                鐢垫睜杩囨斁
+
+      */
+//    鐢垫睜杩囨斁(0),
+//
+//    鐢垫睜瓒呭帇(1),
+
+
+}
+
diff --git a/src/main/java/api/bean/PhotovoltaicHeartData.java b/src/main/java/api/bean/PhotovoltaicHeartData.java
new file mode 100644
index 0000000..ae61b5c
--- /dev/null
+++ b/src/main/java/api/bean/PhotovoltaicHeartData.java
@@ -0,0 +1,171 @@
+package api.bean;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import lombok.Data;
+
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 鍏変紡蹇冭烦鏁版嵁琛�(PhotovoltaicHeartData)瀹炰綋绫�
+ *
+ * @author makejava
+ * @since 2022-09-29 17:36:34
+ */
+@Data
+public class PhotovoltaicHeartData implements Serializable {
+
+
+    @TableField(exist = false)
+    private String streetlightName;
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = -38053934285994098L;
+    /**
+     * 涓婚敭ID
+     */
+    private Long photovoltaicHeartDataId;
+    /**
+     * 璺伅ID
+     */
+    @TableField(exist=false)
+    private Integer streetlightId;
+    /**
+     * 璐熻浇鐘舵�佸拰鍏呯數鐘舵��
+     * 楂� 8 浣嶏細
+     * b7:璐熻浇鐘舵�侊紙0锛氳礋杞藉凡鍏筹紝1锛氳礋杞藉凡寮�锛�
+     * b0锝瀊6:涓轰寒搴﹀�硷紙0% ~100%锛�
+     * 浣� 8 浣嶏細
+     * 00H:鏈紑鍚厖鐢�
+     * 01H:鍚姩鍏呯數妯″紡
+     * 02H:mppt 鍏呯數妯″紡
+     * 03H:鍧囪 鍏呯數妯″紡
+     * 04H:鎻愬崌鍏呯數妯″紡
+     * 05H:娴厖鍏呯數妯″紡
+     * 06H:闄愭祦(瓒呭姛鐜�)
+     * 1110010000000000
+     */
+    private String chargingStatus;
+    /**
+     * 鐢垫睜鐢甸噺SOC
+     */
+    private Integer batteryLevel;
+    /**
+     * 鐢垫睜鐢靛帇
+     */
+    private Double batteryVoltage;
+    /**
+     * 鐢垫睜鍏呯數鐢垫祦
+     */
+    private Double batteryChargingCurrent;
+    /**
+     * 璁惧娓╁害/鐢垫睜娓╁害
+     */
+    private Double deviceTemperature;
+    /**
+     * 璁惧娓╁害/鐢垫睜娓╁害
+     */
+    private Double batteryTemperature;
+//    /**
+//     * 鐩存祦璐熻浇鐢靛帇
+//     */
+//    private Double dcLoadVoltage;
+//    /**
+//     * 鐩存祦璐熻浇鐢垫祦
+//     */
+//    private Double dcLoadCurrent;
+//    /**
+//     * 鐩存祦璐熻浇鍔熺巼
+//     */
+//    private Double dcLoadPower;
+    /**
+     * 鍏変紡鏉跨數鍘�
+     */
+    private Double photovoltaicPanelVoltage;
+    /**
+     * 鍏変紡鏉跨數娴�
+     */
+    private Double photovoltaicPanelCurrent;
+    /**
+     * 鍏変紡鏉垮厖鐢靛姛鐜�
+     */
+    private Double photovoltaicPanelChargingPower;
+//    /**
+//     * 褰撳ぉ鍏呯數鏃堕暱
+//     */
+//    private Double samedayChargingDuration;
+//    /**
+//     * 褰撳ぉ鍏呯數鏈�澶у姛鐜�
+//     */
+//    private Double samedayChargingMaxpower;
+//    /**
+//     * 褰撳ぉ鐢垫睜鏈�楂樻俯搴�
+//     */
+//    private Double samedayChargingMaxtemp;
+//    /**
+//     * 褰撳ぉ鐢垫睜鏈�浣庢俯搴�
+//     */
+//    private Double samedayChargingMintemp;
+//    /**
+//     * 褰撳ぉ鏀剧數鏈�澶у姛鐜�
+//     */
+//    private Double samedayDischargingMaxpower;
+//    /**
+//     * 褰撳ぉ鍏呯數瀹夋椂鏁�
+//     */
+//    private Double samedayBatteryChargingAh;
+//    /**
+//     * 褰撳ぉ鏀剧數瀹夋椂鏁�
+//     */
+//    private Double samedayBatteryDischargingAh;
+//    /**
+//     * 褰撳ぉ鍙戠數閲�
+//     */
+//    private Double samedayGeneratingCapacity;
+//    /**
+//     * 褰撳ぉ鐢ㄧ數閲�
+//     */
+//    private Double samedayUsedCapacity;
+//    /**
+//     * 鎬昏繍琛屽ぉ鏁�
+//     */
+//    private Double totalOperatingDays;
+//    /**
+//     * 钃勭數姹犳�诲厖婊℃鏁�
+//     */
+//    private Double batteryFullChargeTimes;
+//    /**
+//     * 绱鍙戠數閲�
+//     */
+//    private Double allGeneratingCapacity;
+//    /**
+//     * 绱鐢ㄧ數閲�
+//     */
+//    private Double allUsedCapacity;
+    /**
+     * 鏁版嵁鎻掑叆鏃堕棿
+     */
+    private Date dataCreateTime;
+
+    private String streetlightMac;
+
+    //鍏変紡涓绘満id
+    @TableField(exist=false)
+    private Integer photovoltaicId;
+    //鍏変紡涓绘満鍚嶇О
+    @TableField(exist=false)
+    private String photovoltaicName;
+
+
+
+
+
+}
+
+
+
+
+
diff --git a/src/main/java/api/bean/ReqParams.java b/src/main/java/api/bean/ReqParams.java
index b52783c..b05d7e1 100644
--- a/src/main/java/api/bean/ReqParams.java
+++ b/src/main/java/api/bean/ReqParams.java
@@ -48,6 +48,8 @@
     private Integer lightNumber;
 
     private String deviceSerial;
+
+    private Integer photovoltaicId;
     public String getApiKey() {
         return "84b5f9d6b37c47edb1adae628aaaf3e5";
     }
diff --git a/src/main/java/api/bean/SysUserCompanyEntity.java b/src/main/java/api/bean/SysUserCompanyEntity.java
new file mode 100644
index 0000000..7207a23
--- /dev/null
+++ b/src/main/java/api/bean/SysUserCompanyEntity.java
@@ -0,0 +1,32 @@
+package api.bean;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @program: machine-fast
+ * @description: 鐢ㄦ埛涓庡叕鍙稿搴斿叧绯�
+ * @author: YSS
+ * @create: 2019-04-18 11:13
+ **/
+@Data
+@TableName("sys_user_company")
+public class SysUserCompanyEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @TableId
+    private Long id;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    private Long userId;
+
+    /**
+     * 瑙掕壊ID
+     */
+    private Long companyId;
+}
diff --git a/src/main/java/api/bean/SysUserRoleEntity.java b/src/main/java/api/bean/SysUserRoleEntity.java
new file mode 100644
index 0000000..2a8c39c
--- /dev/null
+++ b/src/main/java/api/bean/SysUserRoleEntity.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2016-2019 浜轰汉寮�婧� All rights reserved.
+ *
+ * https://www.machine.io
+ *
+ * 鐗堟潈鎵�鏈夛紝渚垫潈蹇呯┒锛�
+ */
+
+package api.bean;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鐢ㄦ埛涓庤鑹插搴斿叧绯�
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@TableName("sys_user_role")
+public class SysUserRoleEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+	@TableId
+	private Long id;
+
+	/**
+	 * 鐢ㄦ埛ID
+	 */
+	private Long userId;
+
+	/**
+	 * 瑙掕壊ID
+	 */
+	private Long roleId;
+
+
+}
diff --git a/src/main/java/api/controller/CameraController.java b/src/main/java/api/controller/CameraController.java
index 6584974..d8607bd 100644
--- a/src/main/java/api/controller/CameraController.java
+++ b/src/main/java/api/controller/CameraController.java
@@ -7,6 +7,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.google.common.util.concurrent.RateLimiter;
+import com.google.gson.Gson;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -32,6 +33,43 @@
     RateLimiter rateLimiter = RateLimiter.create(10.0);
 
 
+    @RequestMapping(value = "/list",method = RequestMethod.POST)
+    public Msg listWithNotStatus(@RequestBody ReqParams reqParams){
+        rateLimiter.acquire(1);
+        if (reqParams.getLimit()>200){
+            return Msg.error("limit exception!!!");
+        }
+        Long userId = accessService.getUserId(reqParams.getAccessToken());
+
+
+        if(userId == null){
+            return Msg.error("accessToken exception!!!");
+        }
+
+        reqParams.setApiKey(reqParams.getApiKey());
+        reqParams.setUserId(userId);
+
+        String result = HttpUtil.Post(
+                "http://47.106.172.9:8888/machine-fast/serv/api/camera/cameraList",
+                new Gson().toJson(reqParams)
+        );
+
+        Map msg = JSON.parseObject(result, HashMap.class);
+
+        if (msg.get("msg").equals("success")){
+
+            return Msg.ok().put("data",msg.get("data"));
+        }
+        else {
+            return Msg.error(msg.get("msg").toString());
+        }
+
+
+    }
+
+
+
+
     @RequestMapping(value = "/getToken", method = RequestMethod.POST)
     public Msg getToken(@RequestBody ReqParams reqParams) {
         rateLimiter.acquire(1);
diff --git a/src/main/java/api/controller/PhotovoltaicController.java b/src/main/java/api/controller/PhotovoltaicController.java
new file mode 100644
index 0000000..5cd444e
--- /dev/null
+++ b/src/main/java/api/controller/PhotovoltaicController.java
@@ -0,0 +1,126 @@
+package api.controller;
+
+import api.bean.*;
+import api.result.Msg;
+import api.service.*;
+import com.github.pagehelper.PageInfo;
+import com.google.common.util.concurrent.RateLimiter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+@RestController
+@RequestMapping()
+public class PhotovoltaicController {
+    @Autowired
+    private AccessService accessService;
+    @Autowired
+    private HuinengMachineErrorService huinengMachineErrorService;
+    @Autowired
+    private PhotovoltaicEntityService photovoltaicEntityService;
+    @Autowired
+    private PhotovoltaicHeartDataService photovoltaicHeartDataService;
+
+    RateLimiter rateLimiter = RateLimiter.create(10.0);
+
+
+    /**
+     * 鍏変紡涓绘満鍒楄〃
+     * */
+    @RequestMapping(value = "/photovoltaic/list")
+    public Msg photovoltaicList(@RequestBody ReqParams reqParams){
+        rateLimiter.acquire(1);
+        if(reqParams.getLimit() > 200){
+            return Msg.error("limit exception!!!");
+        }
+
+        Long userId = accessService.getUserId(reqParams.getAccessToken());
+
+        if(userId == null) {
+            return Msg.error("server exception");
+        }
+
+        PageInfo<PhotovoltaicEntity> info = photovoltaicEntityService.list(reqParams.getPage(), reqParams.getLimit(), reqParams.getKey(), userId);
+
+//        Map data = new HashMap();
+//
+//        data.put("total",info.getTotal());
+//        data.put("list",info.getList());
+
+        return Msg.ok().put("data",info);
+
+    }
+
+    /**
+     * 鍏変紡涓绘満蹇冭烦鍖呭垪琛�
+     * */
+    @RequestMapping(value = "/photovoltaicHeartData/list")
+    public Msg photovoltaicHeartDataList(@RequestBody ReqParams reqParams){
+        rateLimiter.acquire(1);
+        if(reqParams.getLimit() > 200){
+            return Msg.error("limit exception!!!");
+        }
+
+        Long userId = accessService.getUserId(reqParams.getAccessToken());
+
+        if(userId == null) {
+            return Msg.error("server exception");
+        }
+
+        Pages pages = new Pages();
+
+        pages.setPage(reqParams.getPage());
+        pages.setSize(reqParams.getLimit());
+        pages.setPhotovoltaicId(reqParams.getPhotovoltaicId());
+
+        PageInfo<PhotovoltaicHeartData> info = photovoltaicHeartDataService.list(pages, userId);
+
+        Map data = new HashMap();
+
+//        data.put("total",info.getTotal());
+//        data.put("list",info.getList());
+
+        return Msg.ok().put("data",info);
+
+    }
+
+    /**
+     * 鎱ц兘鏈烘晠闅滃垪琛�
+     * */
+    @RequestMapping(value = "/huinengMachineError/list")
+    public Msg soilList(@RequestBody ReqParams reqParams){
+        rateLimiter.acquire(1);
+        if(reqParams.getLimit() > 200){
+            return Msg.error("limit exception!!!");
+        }
+
+        Long userId = accessService.getUserId(reqParams.getAccessToken());
+
+        if(userId == null) {
+            return Msg.error("server exception");
+        }
+
+        Pages pages = new Pages();
+
+        pages.setPage(reqParams.getPage());
+        pages.setSize(reqParams.getLimit());
+        pages.setPhotovoltaicId(reqParams.getPhotovoltaicId());
+
+        PageInfo<HuinengMachineError> info = huinengMachineErrorService.list(pages, userId);
+
+
+//        Map data = new HashMap();
+
+//        data.put("total",info.getTotal());
+//        data.put("list",info.getList());
+
+        return Msg.ok().put("data",info);
+
+    }
+
+}
diff --git a/src/main/java/api/controller/PoleController.java b/src/main/java/api/controller/PoleController.java
index e3e6bcc..8f80579 100644
--- a/src/main/java/api/controller/PoleController.java
+++ b/src/main/java/api/controller/PoleController.java
@@ -50,7 +50,7 @@
         reqParams.setUserId(userId);
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/pole/polestreetlight/listWithNotStatus",
+                "http://47.106.172.9:8888/machine-fast/serv/api/pole/polestreetlight/listWithNotStatus",
                 new Gson().toJson(reqParams)
         );
 
@@ -81,7 +81,7 @@
         reqParams.setUserId(userId);
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/pole/polestreetlight/getStatusById",
+                "http://47.106.172.9:8888/machine-fast/serv/api/pole/polestreetlight/getStatusById",
                 new Gson().toJson(reqParams)
         );
 
@@ -118,7 +118,7 @@
 
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/pole/polestreetlight/lightBatch",
+                "http://47.106.172.9:8888/machine-fast/serv/api/pole/polestreetlight/lightBatch",
                 new Gson().toJson(reqParams)
         );
 
diff --git a/src/main/java/api/controller/SinglelampDataController.java b/src/main/java/api/controller/SinglelampDataController.java
index 2afe3c3..726d2c6 100644
--- a/src/main/java/api/controller/SinglelampDataController.java
+++ b/src/main/java/api/controller/SinglelampDataController.java
@@ -35,6 +35,7 @@
 
     @RequestMapping(value = "/list",method = RequestMethod.POST)
     public Msg list(@RequestBody ReqParams reqParams){
+        System.out.println(reqParams.toString());
         rateLimiter.acquire(1);
         if (reqParams.getLimit()>200){
             return Msg.error("limit exception!!!");
diff --git a/src/main/java/api/controller/TimerController.java b/src/main/java/api/controller/TimerController.java
index 36725a6..7500d5a 100644
--- a/src/main/java/api/controller/TimerController.java
+++ b/src/main/java/api/controller/TimerController.java
@@ -65,7 +65,7 @@
 
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/timer/list",
+                "http://47.106.172.9:8888/machine-fast/serv/api/timer/list",
                 new Gson().toJson(reqParams)
         );
 
@@ -102,7 +102,7 @@
         reqParams.setTimerRequest(timerRequest);
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/timer/getStreetlightListByTimerId",
+                "http://47.106.172.9:8888/machine-fast/serv/api/timer/getStreetlightListByTimerId",
                 new Gson().toJson(reqParams)
         );
 
@@ -148,7 +148,7 @@
 
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/timer/listByTimerId",
+                "http://47.106.172.9:8888/machine-fast/serv/api/timer/listByTimerId",
                 new Gson().toJson(reqParams)
         );
 
@@ -188,7 +188,7 @@
 
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/timer/deleteTimerByTimerId",
+                "http://47.106.172.9:8888/machine-fast/serv/api/timer/deleteTimerByTimerId",
                 new Gson().toJson(reqParams)
         );
 
@@ -235,7 +235,7 @@
 
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/timer/addTimer",
+                "http://47.106.172.9:8888/machine-fast/serv/api/timer/addTimer",
                 new Gson().toJson(reqParams)
         );
 
@@ -284,7 +284,7 @@
 
 
         String result = HttpUtil.Post(
-                "http://127.0.0.1:8888/machine-fast/serv/api/timer/updateTimer",
+                "http://47.106.172.9:8888/machine-fast/serv/api/timer/updateTimer",
                 new Gson().toJson(reqParams)
         );
 
diff --git a/src/main/java/api/dao/HuinengMachineErrorDao.java b/src/main/java/api/dao/HuinengMachineErrorDao.java
new file mode 100644
index 0000000..659a892
--- /dev/null
+++ b/src/main/java/api/dao/HuinengMachineErrorDao.java
@@ -0,0 +1,26 @@
+package api.dao;
+
+import api.bean.HuinengMachineError;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * (HuinengMachineError)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2022-10-22 17:52:05
+ */
+@Mapper
+public interface HuinengMachineErrorDao extends BaseMapper<HuinengMachineError> {
+
+
+
+    List<HuinengMachineError> findAllBySort(int page, int size, String field, String sort);
+
+    List<HuinengMachineError> findByCompanyBySort(int page, int size, Long userId, Object o, String field, String sort);
+
+    List<HuinengMachineError> findByPhotovoltaicId(Integer photovoltaicId);
+}
+
diff --git a/src/main/java/api/dao/PhotovoltaicEntityDao.java b/src/main/java/api/dao/PhotovoltaicEntityDao.java
new file mode 100644
index 0000000..892a8d7
--- /dev/null
+++ b/src/main/java/api/dao/PhotovoltaicEntityDao.java
@@ -0,0 +1,44 @@
+package api.dao;
+
+import api.bean.PhotovoltaicEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * (PhotovoltaicEntity)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2022-09-28 17:35:49
+ */
+@Mapper
+public interface PhotovoltaicEntityDao extends BaseMapper<PhotovoltaicEntity> {
+
+/**
+* 鎵归噺鏂板鏁版嵁锛圡yBatis鍘熺敓foreach鏂规硶锛�
+*
+* @param entities List<PhotovoltaicEntity> 瀹炰緥瀵硅薄鍒楄〃
+* @return 褰卞搷琛屾暟
+*/
+int insertBatch(@Param("entities") List<PhotovoltaicEntity> entities);
+
+/**
+* 鎵归噺鏂板鎴栨寜涓婚敭鏇存柊鏁版嵁锛圡yBatis鍘熺敓foreach鏂规硶锛�
+*
+* @param entities List<PhotovoltaicEntity> 瀹炰緥瀵硅薄鍒楄〃
+* @return 褰卞搷琛屾暟
+* @throws org.springframework.jdbc.BadSqlGrammarException 鍏ュ弬鏄┖List鐨勬椂鍊欎細鎶汼QL璇彞閿欒鐨勫紓甯革紝璇疯嚜琛屾牎楠屽叆鍙�
+*/
+int insertOrUpdateBatch(@Param("entities") List<PhotovoltaicEntity> entities);
+
+    List<PhotovoltaicEntity> listAll(@Param("key") String key);
+
+    List<PhotovoltaicEntity> listByCompanyId(@Param("key")String key, Long companyId);
+
+    List<PhotovoltaicEntity> listByUserId(@Param("key")String key, Long userId);
+
+
+}
+
diff --git a/src/main/java/api/dao/PhotovoltaicErrorDao.java b/src/main/java/api/dao/PhotovoltaicErrorDao.java
new file mode 100644
index 0000000..d2daea6
--- /dev/null
+++ b/src/main/java/api/dao/PhotovoltaicErrorDao.java
@@ -0,0 +1,26 @@
+package api.dao;
+
+import api.bean.PhotovoltaicError;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * (PhotovoltaicError)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2022-09-30 11:53:07
+ */
+@Mapper
+public interface PhotovoltaicErrorDao extends BaseMapper<PhotovoltaicError> {
+
+
+    List<PhotovoltaicError> findAllBySort(int page, int size, String field, String sort);
+
+    List<PhotovoltaicError> findByCompanyBySort(int page, int size, Long userId, Object o, String field, String sort);
+
+    List<PhotovoltaicError> findByPhotovoltaicId(Integer photovoltaicId);
+}
+
diff --git a/src/main/java/api/dao/PhotovoltaicHeartDataDao.java b/src/main/java/api/dao/PhotovoltaicHeartDataDao.java
new file mode 100644
index 0000000..a51030d
--- /dev/null
+++ b/src/main/java/api/dao/PhotovoltaicHeartDataDao.java
@@ -0,0 +1,26 @@
+package api.dao;
+
+
+import api.bean.PhotovoltaicHeartData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 鍏変紡蹇冭烦鏁版嵁琛�(PhotovoltaicHeartData)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2022-09-29 17:36:34
+ */
+@Mapper
+public interface PhotovoltaicHeartDataDao extends BaseMapper<PhotovoltaicHeartData> {
+
+    List<PhotovoltaicHeartData> findAllBySort(@Param("page") Integer page,@Param("size") Integer size,@Param("field")String field,@Param("sort") String sort);
+
+    List<PhotovoltaicHeartData> findByCompanyBySort(@Param("page") Integer page,@Param("size") Integer size,@Param("userId")Long userId,@Param("groupId") Integer groupId,@Param("field")String field,@Param("sort") String sort);
+
+    List<PhotovoltaicHeartData> findByPhotovoltaicId(@Param("photovoltaicId") Integer photovoltaicId);
+}
+
diff --git a/src/main/java/api/dao/SysUserCompanyDao.java b/src/main/java/api/dao/SysUserCompanyDao.java
new file mode 100644
index 0000000..f4ac5eb
--- /dev/null
+++ b/src/main/java/api/dao/SysUserCompanyDao.java
@@ -0,0 +1,29 @@
+package api.dao;
+
+import api.bean.SysUserCompanyEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @program: machine-fast
+ * @description:
+ * @author: YSS
+ * @create: 2019-04-18 11:21
+ **/
+@Mapper
+@Repository
+public interface SysUserCompanyDao extends BaseMapper<SysUserCompanyEntity> {
+
+    @Select("select company_id from sys_user_company where user_id = #{userId}")
+    Long queryCompanyId(@Param("userId") Long userId);
+
+    @Select("select * from sys_user_company where company_id = (select company_id from sys_user_company where user_id = #{userId})")
+    List<SysUserCompanyEntity> listByCompanyId(@Param("userId") Long userId);
+
+}
+
diff --git a/src/main/java/api/dao/SysUserRoleDao.java b/src/main/java/api/dao/SysUserRoleDao.java
new file mode 100644
index 0000000..121f5be
--- /dev/null
+++ b/src/main/java/api/dao/SysUserRoleDao.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2016-2019 浜轰汉寮�婧� All rights reserved.
+ *
+ * https://www.machine.io
+ *
+ * 鐗堟潈鎵�鏈夛紝渚垫潈蹇呯┒锛�
+ */
+
+package api.dao;
+
+import api.bean.SysUserRoleEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * 鐢ㄦ埛涓庤鑹插搴斿叧绯�
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Mapper
+public interface SysUserRoleDao extends BaseMapper<SysUserRoleEntity> {
+
+//	/**
+//	 * 鏍规嵁鐢ㄦ埛ID锛岃幏鍙栬鑹睮D鍒楄〃
+//	 */
+//	List<Long> queryRoleIdList(Long userId);
+
+    /**
+	 * 鏍规嵁鐢ㄦ埛ID锛岃幏鍙栬鑹睮D鍒楄〃
+	 */
+	@Select("select role_id from sys_user_role where user_id = #{userId}")
+	Long queryRoleId(@Param("userId")Long userId);
+
+
+	/**
+	 * 鏍规嵁瑙掕壊ID鏁扮粍锛屾壒閲忓垹闄�
+	 */
+	int deleteBatch(Long[] roleIds);
+
+}
diff --git a/src/main/java/api/service/HuinengMachineErrorService.java b/src/main/java/api/service/HuinengMachineErrorService.java
new file mode 100644
index 0000000..402db18
--- /dev/null
+++ b/src/main/java/api/service/HuinengMachineErrorService.java
@@ -0,0 +1,20 @@
+package api.service;
+
+
+import api.bean.HuinengMachineError;
+import api.bean.Pages;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+
+/**
+ * (HuinengMachineError)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2022-10-22 17:52:07
+ */
+public interface HuinengMachineErrorService extends IService<HuinengMachineError> {
+
+
+    PageInfo<HuinengMachineError> list(Pages pages,Long userId);
+}
+
diff --git a/src/main/java/api/service/PhotovoltaicEntityService.java b/src/main/java/api/service/PhotovoltaicEntityService.java
new file mode 100644
index 0000000..b9c8c8a
--- /dev/null
+++ b/src/main/java/api/service/PhotovoltaicEntityService.java
@@ -0,0 +1,18 @@
+package api.service;
+
+import api.bean.PhotovoltaicEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+
+/**
+ * (PhotovoltaicEntity)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2022-09-28 17:35:51
+ */
+public interface PhotovoltaicEntityService extends IService<PhotovoltaicEntity> {
+
+    PageInfo<PhotovoltaicEntity> list(Integer page, Integer limit, String key, Long userId);
+
+}
+
diff --git a/src/main/java/api/service/PhotovoltaicErrorService.java b/src/main/java/api/service/PhotovoltaicErrorService.java
new file mode 100644
index 0000000..bda003f
--- /dev/null
+++ b/src/main/java/api/service/PhotovoltaicErrorService.java
@@ -0,0 +1,20 @@
+package api.service;
+
+import api.bean.Pages;
+import api.bean.PhotovoltaicError;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+
+/**
+ * (PhotovoltaicError)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2022-09-30 11:53:07
+ */
+public interface PhotovoltaicErrorService extends IService<PhotovoltaicError> {
+
+
+
+    PageInfo<PhotovoltaicError> list(Pages pages, Long userId);
+}
+
diff --git a/src/main/java/api/service/PhotovoltaicHeartDataService.java b/src/main/java/api/service/PhotovoltaicHeartDataService.java
new file mode 100644
index 0000000..603096f
--- /dev/null
+++ b/src/main/java/api/service/PhotovoltaicHeartDataService.java
@@ -0,0 +1,21 @@
+package api.service;
+
+import api.bean.Pages;
+import api.bean.PhotovoltaicHeartData;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+
+/**
+ * 鍏変紡蹇冭烦鏁版嵁琛�(PhotovoltaicHeartData)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2022-09-29 17:36:34
+ */
+public interface PhotovoltaicHeartDataService extends IService<PhotovoltaicHeartData> {
+
+
+
+    PageInfo<PhotovoltaicHeartData> list(Pages pages,Long userId);
+
+    PageInfo<PhotovoltaicHeartData> getPhotovoltaicHeartDataByMac(Integer page, Integer size, String mac);
+}
diff --git a/src/main/java/api/service/SinglelampDataServer.java b/src/main/java/api/service/SinglelampDataServer.java
index 7e5ae13..cc07864 100644
--- a/src/main/java/api/service/SinglelampDataServer.java
+++ b/src/main/java/api/service/SinglelampDataServer.java
@@ -40,7 +40,7 @@
             list = singlelampDao.selectAll();
         } else if (roleId.longValue() == 2 || roleId.longValue() == 3) {
             count = singlelampDao.countByCompany(userId);
-            list = singlelampDao.selectByCompany(1, count, userId);
+            list = singlelampDao.selectByCompany(0, count, userId);
 
         }
         Integer listLimit = reqParams.getLimit();
diff --git a/src/main/java/api/service/SysUserCompanyService.java b/src/main/java/api/service/SysUserCompanyService.java
new file mode 100644
index 0000000..d4b2d1c
--- /dev/null
+++ b/src/main/java/api/service/SysUserCompanyService.java
@@ -0,0 +1,22 @@
+package api.service;
+
+import api.bean.SysUserCompanyEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @program: machine-fast
+ * @description:
+ * @author: YSS
+ * @create: 2019-04-18 11:09
+ **/
+public interface SysUserCompanyService extends IService<SysUserCompanyEntity> {
+
+
+    Long queryCompanyId(Long userId);
+
+    List<SysUserCompanyEntity> listByCompanyId(Long userId);
+
+
+}
diff --git a/src/main/java/api/service/SysUserRoleService.java b/src/main/java/api/service/SysUserRoleService.java
new file mode 100644
index 0000000..d00efa9
--- /dev/null
+++ b/src/main/java/api/service/SysUserRoleService.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2016-2019 浜轰汉寮�婧� All rights reserved.
+ *
+ * https://www.machine.io
+ *
+ * 鐗堟潈鎵�鏈夛紝渚垫潈蹇呯┒锛�
+ */
+
+package api.service;
+
+import api.bean.SysUserRoleEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+
+/**
+ * 鐢ㄦ埛涓庤鑹插搴斿叧绯�
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface SysUserRoleService extends IService<SysUserRoleEntity> {
+
+
+//	/**
+//	 * 鏍规嵁鐢ㄦ埛ID锛岃幏鍙栬鑹睮D鍒楄〃
+//	 */
+//	List<Long> queryRoleIdList(Long userId);
+
+	/**
+	 * 鏍规嵁瑙掕壊ID鏁扮粍锛屾壒閲忓垹闄�
+	 */
+	int deleteBatch(Long[] roleIds);
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛ID锛岃幏鍙栬鑹睮D
+	 */
+	Long queryRoleId(Long userId);
+}
diff --git a/src/main/java/api/service/impl/HuinengMachineErrorServiceImpl.java b/src/main/java/api/service/impl/HuinengMachineErrorServiceImpl.java
new file mode 100644
index 0000000..3525f1b
--- /dev/null
+++ b/src/main/java/api/service/impl/HuinengMachineErrorServiceImpl.java
@@ -0,0 +1,68 @@
+package api.service.impl;
+
+import api.bean.HuinengMachineError;
+import api.bean.Pages;
+import api.dao.HuinengMachineErrorDao;
+import api.service.HuinengMachineErrorService;
+import api.service.SysUserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * (HuinengMachineError)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2022-10-22 17:52:08
+ */
+@Service("huinengMachineErrorService")
+public class HuinengMachineErrorServiceImpl extends ServiceImpl<HuinengMachineErrorDao, HuinengMachineError> implements HuinengMachineErrorService {
+
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+    @Autowired
+    private HuinengMachineErrorDao huinengMachineErrorDao;
+
+
+    @Override
+    public PageInfo<HuinengMachineError> list(Pages pages,Long userId) {
+
+            //鑾峰彇瑙掕壊鍒楄〃
+            Long roleId = sysUserRoleService.queryRoleId(userId);
+
+            if (roleId == null || roleId == 0) {
+                return null;
+            }
+
+            int page = pages.getPage() - 1;
+            int size = pages.getSize();
+
+            List<HuinengMachineError> allList = new ArrayList<>();
+
+            if (pages.getPhotovoltaicId() == null){
+                if (roleId.longValue() == 1) {
+                    allList = huinengMachineErrorDao.findAllBySort(page, size, pages.getField(), pages.getSort());
+                }else{
+                    allList = huinengMachineErrorDao.findByCompanyBySort(page, size,userId, null, pages.getField(), pages.getSort());
+                }
+            }else {
+                PageHelper.startPage(page, size);
+                allList = huinengMachineErrorDao.findByPhotovoltaicId(pages.getPhotovoltaicId());
+            }
+
+            PageInfo<HuinengMachineError> pageInfo = new PageInfo<>(allList);
+
+            return pageInfo;
+
+
+    }
+}
+
diff --git a/src/main/java/api/service/impl/PhotovoltaicEntityServiceImpl.java b/src/main/java/api/service/impl/PhotovoltaicEntityServiceImpl.java
new file mode 100644
index 0000000..c0b9c63
--- /dev/null
+++ b/src/main/java/api/service/impl/PhotovoltaicEntityServiceImpl.java
@@ -0,0 +1,60 @@
+package api.service.impl;
+
+import api.bean.PhotovoltaicEntity;
+import api.dao.PhotovoltaicEntityDao;
+import api.service.PhotovoltaicEntityService;
+import api.service.SysUserCompanyService;
+import api.service.SysUserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * (PhotovoltaicEntity)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2022-09-28 17:35:51
+ */
+@Service("photovoltaicEntityService")
+public class PhotovoltaicEntityServiceImpl extends ServiceImpl<PhotovoltaicEntityDao, PhotovoltaicEntity> implements PhotovoltaicEntityService {
+
+    @Autowired
+    private SysUserCompanyService sysUserCompanyService;
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+//    @Autowired
+//    private MqttService mqttService;
+
+    @Autowired
+    private PhotovoltaicEntityDao photovoltaicEntityDao;
+
+    @Override
+    public PageInfo<PhotovoltaicEntity> list(Integer page, Integer limit, String key, Long userId) {
+        System.out.println(userId);
+        Long roleId = sysUserRoleService.queryRoleId(userId);
+        Long companyId = sysUserCompanyService.queryCompanyId(userId);
+
+        List<PhotovoltaicEntity> list;
+        if (roleId == 1) {
+            PageHelper.startPage(page,limit);
+            list = photovoltaicEntityDao.listAll(key);
+            System.out.println(list.size());
+        }else if (roleId == 2) {
+            PageHelper.startPage(page,limit);
+            list = photovoltaicEntityDao.listByCompanyId(key, companyId);
+        }else {
+            PageHelper.startPage(page,limit);
+            list = photovoltaicEntityDao.listByUserId(key,  userId);
+        }
+        PageInfo<PhotovoltaicEntity> pageInfo = new PageInfo<>(list);
+
+        return pageInfo;
+    }
+}
+
diff --git a/src/main/java/api/service/impl/PhotovoltaicErrorServiceImpl.java b/src/main/java/api/service/impl/PhotovoltaicErrorServiceImpl.java
new file mode 100644
index 0000000..8d2ccfe
--- /dev/null
+++ b/src/main/java/api/service/impl/PhotovoltaicErrorServiceImpl.java
@@ -0,0 +1,63 @@
+package api.service.impl;
+
+import api.bean.Pages;
+import api.bean.PhotovoltaicError;
+import api.dao.PhotovoltaicErrorDao;
+import api.service.PhotovoltaicErrorService;
+import api.service.SysUserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * (PhotovoltaicError)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2022-09-30 11:53:07
+ */
+@Service("photovoltaicErrorService")
+public class PhotovoltaicErrorServiceImpl extends ServiceImpl<PhotovoltaicErrorDao, PhotovoltaicError> implements PhotovoltaicErrorService {
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+    @Autowired
+    private PhotovoltaicErrorDao photovoltaicErrorDao;
+    @Override
+    public PageInfo<PhotovoltaicError> list(Pages pages,Long userId) {
+        //鑾峰彇瑙掕壊鍒楄〃
+        Long roleId = sysUserRoleService.queryRoleId(userId);
+
+        if (roleId == null || roleId == 0) {
+            return null;
+        }
+
+        int page = pages.getPage() - 1;
+        int size = pages.getSize();
+
+        List<PhotovoltaicError> allList = new ArrayList<>();
+
+        if (pages.getPhotovoltaicId() == null){
+            if (roleId.longValue() == 1) {
+                allList = photovoltaicErrorDao.findAllBySort(page, size, pages.getField(), pages.getSort());
+            }else{
+                allList = photovoltaicErrorDao.findByCompanyBySort(page, size,userId, null, pages.getField(), pages.getSort());
+            }
+        }else {
+            PageHelper.startPage(page, size);
+            allList = photovoltaicErrorDao.findByPhotovoltaicId(pages.getPhotovoltaicId());
+        }
+
+        PageInfo<PhotovoltaicError> pageInfo = new PageInfo<>(allList);
+
+        return pageInfo;
+
+    }
+}
+
diff --git a/src/main/java/api/service/impl/PhotovoltaicHeartDataServiceImpl.java b/src/main/java/api/service/impl/PhotovoltaicHeartDataServiceImpl.java
new file mode 100644
index 0000000..8cddf51
--- /dev/null
+++ b/src/main/java/api/service/impl/PhotovoltaicHeartDataServiceImpl.java
@@ -0,0 +1,78 @@
+package api.service.impl;
+
+import api.bean.Pages;
+import api.bean.PhotovoltaicHeartData;
+import api.dao.PhotovoltaicHeartDataDao;
+import api.service.PhotovoltaicHeartDataService;
+import api.service.SysUserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鍏変紡蹇冭烦鏁版嵁琛�(PhotovoltaicHeartData)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2022-09-29 17:36:34
+ */
+@Service("photovoltaicHeartDataService")
+public class PhotovoltaicHeartDataServiceImpl extends ServiceImpl<PhotovoltaicHeartDataDao,PhotovoltaicHeartData> implements PhotovoltaicHeartDataService {
+    @Resource
+    private PhotovoltaicHeartDataDao photovoltaicHeartDataDao;
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+
+    @Override
+    public PageInfo<PhotovoltaicHeartData> list(Pages pages,Long userId){
+        //鑾峰彇瑙掕壊鍒楄〃
+        Long roleId = sysUserRoleService.queryRoleId(userId);
+
+        if (roleId == null || roleId == 0) {
+            return null;
+        }
+
+        int page = pages.getPage() - 1;
+        int size = pages.getSize();
+
+        List<PhotovoltaicHeartData> allList = new ArrayList<>();
+
+        if (pages.getPhotovoltaicId() == null){
+            if (roleId.longValue() == 1) {
+
+
+                allList = photovoltaicHeartDataDao.findAllBySort(page, size, pages.getField(), pages.getSort());
+
+
+            }else{
+
+
+                allList = photovoltaicHeartDataDao.findByCompanyBySort(page, size,userId, null, pages.getField(), pages.getSort());
+
+            }
+        }else {
+                        PageHelper.startPage(page, size);
+            allList = photovoltaicHeartDataDao.findByPhotovoltaicId(pages.getPhotovoltaicId());
+        }
+
+
+        PageInfo<PhotovoltaicHeartData> pageInfo = new PageInfo<>(allList);
+
+        return pageInfo;
+
+
+    }
+
+    @Override
+    public PageInfo<PhotovoltaicHeartData> getPhotovoltaicHeartDataByMac(Integer page, Integer size, String mac) {
+        return null;
+    }
+}
diff --git a/src/main/java/api/service/impl/SysUserCompanyServiceImpl.java b/src/main/java/api/service/impl/SysUserCompanyServiceImpl.java
new file mode 100644
index 0000000..56708fc
--- /dev/null
+++ b/src/main/java/api/service/impl/SysUserCompanyServiceImpl.java
@@ -0,0 +1,36 @@
+package api.service.impl;
+
+import api.bean.SysUserCompanyEntity;
+import api.dao.SysUserCompanyDao;
+import api.service.SysUserCompanyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @program: machine-fast
+ * @description:
+ * @author: YSS
+ * @create: 2019-04-18 11:19
+ **/
+
+@Service("sysUserCompanyService")
+public class SysUserCompanyServiceImpl extends ServiceImpl<SysUserCompanyDao, SysUserCompanyEntity> implements SysUserCompanyService {
+
+    @Autowired
+    private SysUserCompanyDao sysUserCompanyDao;
+
+
+    @Override
+    public Long queryCompanyId(Long userId) {
+        return baseMapper.queryCompanyId(userId);
+    }
+
+    @Override
+    public List<SysUserCompanyEntity> listByCompanyId(Long userId) {
+        return sysUserCompanyDao.listByCompanyId(userId);
+    }
+
+}
diff --git a/src/main/java/api/service/impl/SysUserRoleServiceImpl.java b/src/main/java/api/service/impl/SysUserRoleServiceImpl.java
new file mode 100644
index 0000000..41470ed
--- /dev/null
+++ b/src/main/java/api/service/impl/SysUserRoleServiceImpl.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2016-2019 浜轰汉寮�婧� All rights reserved.
+ *
+ * https://www.machine.io
+ *
+ * 鐗堟潈鎵�鏈夛紝渚垫潈蹇呯┒锛�
+ */
+
+package api.service.impl;
+
+
+import api.bean.SysUserRoleEntity;
+import api.dao.SysUserRoleDao;
+import api.service.SysUserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 鐢ㄦ埛涓庤鑹插搴斿叧绯�
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Service("sysUserRoleService")
+public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleDao, SysUserRoleEntity> implements SysUserRoleService {
+
+
+
+	@Override
+	public int deleteBatch(Long[] roleIds){
+		return baseMapper.deleteBatch(roleIds);
+	}
+
+	@Override
+	public Long queryRoleId(Long userId) {
+		return baseMapper.queryRoleId(userId);
+	}
+}
diff --git a/src/main/resources/mapper/HuinengMachineErrorDao.xml b/src/main/resources/mapper/HuinengMachineErrorDao.xml
new file mode 100644
index 0000000..45d996e
--- /dev/null
+++ b/src/main/resources/mapper/HuinengMachineErrorDao.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="api.dao.HuinengMachineErrorDao">
+
+    <select id="findAllBySort" resultType="api.bean.HuinengMachineError">
+        select
+            ps.streetlight_name ,
+            ps.streetlight_id,
+            pe.photovoltaic_name,
+            pe.photovoltaic_id,
+            hme.*
+        from
+            pole_streetlight ps
+                right join
+            (
+                select
+                    *
+                from
+                    huineng_machine_error
+                        join
+                    (
+                        select
+                            max(error_id) as id
+                        from
+                            huineng_machine_error
+                        group by
+                            streetlight_mac
+                        limit #{page},#{size}
+                    ) a
+                    on
+                        error_id = a.id ) hme
+            on
+                hme.streetlight_mac = ps.code_number
+                join
+            photovoltaic_entity pe
+            on
+                pe.bind_pole_streelight_id = streetlight_id
+    </select>
+
+    <select id="findByCompanyBySort"
+            resultType="api.bean.HuinengMachineError">
+        select
+            *
+        from
+            huineng_machine_error hme
+                join
+            (
+                select
+                    *
+                from
+                    (
+                        select
+                            ps.streetlight_id ,
+                            ps.streetlight_name,
+                            ps.code_number
+                        from
+                            pole_streetlight ps
+                        where
+                                ps.streetlight_id in (
+                                select
+                                    pus.streetlight_id
+                                from
+                                    pole_user_streetlight pus
+                                where
+                                        pus.company_id in(
+                                        select
+                                            suc.company_id
+                                        from
+                                            sys_user_company suc
+                                        where
+                                                suc.user_id =
+                                                #{userId}
+
+                                    )
+                            )
+                        limit #{page},#{size}) streetlight
+                        join
+                    (
+                        select
+                            max(error_id) as maxid,
+                            streetlight_mac
+                        from
+                            huineng_machine_error hme2
+                        group by
+                            streetlight_mac
+                    ) a
+                    on
+                        a.streetlight_mac = streetlight.code_number)
+                b
+            on
+                b.maxid = hme.error_id
+                join
+            photovoltaic_entity pe
+            on
+                pe.bind_pole_streelight_id = streetlight_id
+
+
+    </select>
+
+    <select id="findByPhotovoltaicId"
+            resultType="api.bean.HuinengMachineError"
+            parameterType="java.lang.Integer">
+
+        select
+            ps.streetlight_name ,
+            ps.streetlight_id,
+            hme.*,
+            pe.photovoltaic_name,
+            pe.photovoltaic_id
+        from
+            pole_streetlight ps
+                right join
+            (
+                select
+                    *
+                from
+                    huineng_machine_error
+            ) hme
+            on
+                hme.streetlight_mac = ps.code_number
+                join
+            photovoltaic_entity pe
+            on
+                pe.bind_pole_streelight_id = streetlight_id
+        where ps.streetlight_id in (
+            select pe.bind_pole_streelight_id  from photovoltaic_entity pe where pe.photovoltaic_id = #{photovoltaicId})
+    </select>
+</mapper>
diff --git a/src/main/resources/mapper/PhotovoltaicEntityDao.xml b/src/main/resources/mapper/PhotovoltaicEntityDao.xml
new file mode 100644
index 0000000..948720c
--- /dev/null
+++ b/src/main/resources/mapper/PhotovoltaicEntityDao.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="api.dao.PhotovoltaicEntityDao">
+
+    <resultMap type="api.bean.PhotovoltaicEntity" id="PhotovoltaicEntityMap">
+        <result property="photovoltaicId" column="photovoltaic_id" jdbcType="INTEGER"/>
+        <result property="photovoltaicName" column="photovoltaic_name" jdbcType="VARCHAR"/>
+        <result property="photovoltaicMac" column="photovoltaic_mac" jdbcType="VARCHAR"/>
+        <result property="photovoltaicWorkPattern" column="photovoltaic_work_pattern" jdbcType="INTEGER"/>
+        <result property="photovoltaicWorkWaring" column="photovoltaic_work_waring" jdbcType="VARCHAR"/>
+        <result property="bindPoleStreelightId" column="bind_pole_streelight_id" jdbcType="INTEGER"/>
+        <result property="hardwareVersion" column="hardware_version" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <result property="createUserId" column="create_user_id" jdbcType="INTEGER"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="softwareVersion" column="software_version" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <!-- 鎵归噺鎻掑叆 -->
+    <insert id="insertBatch" keyProperty="photovoltaicId" useGeneratedKeys="true">
+        insert into machine.photovoltaic_entity(photovoltaic_name, photovoltaic_mac, photovoltaic_work_pattern, photovoltaic_work_waring, bind_pole_streelight_id, hardware_version, update_time, create_user_id, create_time, software_version)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+        (#{entity.photovoltaicName}, #{entity.photovoltaicMac}, #{entity.photovoltaicWorkPattern}, #{entity.photovoltaicWorkWaring}, #{entity.bindPoleStreelightId}, #{entity.hardwareVersion}, #{entity.updateTime}, #{entity.createUserId}, #{entity.createTime}, #{entity.softwareVersion})
+        </foreach>
+    </insert>
+    <!-- 鎵归噺鎻掑叆鎴栨寜涓婚敭鏇存柊 -->
+    <insert id="insertOrUpdateBatch" keyProperty="photovoltaicId" useGeneratedKeys="true">
+        insert into machine.photovoltaic_entity(photovoltaic_name, photovoltaic_mac, photovoltaic_work_pattern, photovoltaic_work_waring, bind_pole_streelight_id, hardware_version, update_time, create_user_id, create_time, software_version)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.photovoltaicName}, #{entity.photovoltaicMac}, #{entity.photovoltaicWorkPattern}, #{entity.photovoltaicWorkWaring}, #{entity.bindPoleStreelightId}, #{entity.hardwareVersion}, #{entity.updateTime}, #{entity.createUserId}, #{entity.createTime}, #{entity.softwareVersion})
+        </foreach>
+        on duplicate key update
+         photovoltaic_name = values(photovoltaic_name) , photovoltaic_mac = values(photovoltaic_mac) , photovoltaic_work_pattern = values(photovoltaic_work_pattern) , photovoltaic_work_waring = values(photovoltaic_work_waring) , bind_pole_streelight_id = values(bind_pole_streelight_id) , hardware_version = values(hardware_version) , update_time = values(update_time) , create_user_id = values(create_user_id) , create_time = values(create_time) , software_version = values(software_version)     </insert>
+
+    <select id="listAll" resultType="api.bean.PhotovoltaicEntity">
+        select
+        a.*,
+        b.streetlight_id,b.streetlight_name,b.code_number
+        from photovoltaic_entity a
+        join pole_streetlight b on a.bind_pole_streelight_id = b.streetlight_id
+        <if test="key != null and key != ''">
+            where
+            (a.bind_pole_streelight_id like '%${key}%'
+            or a.photovoltaic_id like '%${key}%'
+            or a.photovoltaic_name like '%${key}%'
+            or b.streetlight_name like '%${key}%')
+        </if>
+
+    </select>
+
+    <select id="listByCompanyId" resultType="api.bean.PhotovoltaicEntity">
+
+        select
+        a.*,
+        b.streetlight_id,b.streetlight_name,b.code_number
+        from
+        photovoltaic_entity a
+        inner join (
+        select
+        streetlight_id,streetlight_name,code_number
+        from
+        pole_streetlight
+        where
+        streetlight_id in
+        ( SELECT streetlight_id FROM pole_user_streetlight WHERE user_id IN
+        ( SELECT user_id FROM sys_user_company WHERE company_id = #{companyId})
+        )
+        ) b on a.bind_pole_streelight_id = b.streetlight_id
+
+        <if test="key != null and key != ''">
+            where
+            (a.bind_pole_streelight_id like '%${key}%'
+            or a.photovoltaic_id like '%${key}%'
+            or a.photovoltaic_name like '%${key}%'
+            or b.streetlight_name like '%${key}%')
+        </if>
+
+    </select>
+
+    <select id="listByUserId" resultType="api.bean.PhotovoltaicEntity">
+
+
+        select
+        a.*,
+        b.streetlight_id,b.streetlight_name,b.code_number
+        from
+        photovoltaic_entity a
+        inner join (
+        select
+        streetlight_id,streetlight_name,code_number
+        from
+        pole_streetlight
+        where
+        streetlight_id in
+        ( SELECT streetlight_id FROM pole_user_streetlight WHERE user_id = #{userId} )
+        )  b on a.bind_pole_streelight_id = b.streetlight_id
+        <if test="key != null and key != ''">
+            where
+            (a.bind_pole_streelight_id like '%${key}%'
+            or a.photovoltaic_id like '%${key}%'
+            or a.photovoltaic_name like '%${key}%'
+            or b.streetlight_name like '%${key}%')
+        </if>
+
+    </select>
+</mapper>
+
diff --git a/src/main/resources/mapper/PhotovoltaicErrorDao.xml b/src/main/resources/mapper/PhotovoltaicErrorDao.xml
new file mode 100644
index 0000000..58f9b84
--- /dev/null
+++ b/src/main/resources/mapper/PhotovoltaicErrorDao.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="api.dao.PhotovoltaicErrorDao">
+
+    <resultMap type="api.bean.PhotovoltaicError" id="PhotovoltaicErrorMap">
+        <result property="errorId" column="error_id" jdbcType="INTEGER"/>
+        <result property="mac" column="mac" jdbcType="VARCHAR"/>
+        <result property="errorCode" column="error_code" jdbcType="VARCHAR"/>
+        <result property="errorMsg" column="error_msg" jdbcType="VARCHAR"/>
+        <result property="destinationAddress" column="destination_address" jdbcType="VARCHAR"/>
+        <result property="timestamp" column="timestamp" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <!-- 鎵归噺鎻掑叆 -->
+    <insert id="insertBatch" keyProperty="" useGeneratedKeys="true">
+        insert into machine.photovoltaic_error(error_id, mac, error_code, error_msg, destination_address, timestamp)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.errorId}, #{entity.mac}, #{entity.errorCode}, #{entity.errorMsg}, #{entity.destinationAddress},
+            #{entity.timestamp})
+        </foreach>
+    </insert>
+    <!-- 鎵归噺鎻掑叆鎴栨寜涓婚敭鏇存柊 -->
+    <insert id="insertOrUpdateBatch" keyProperty="" useGeneratedKeys="true">
+        insert into machine.photovoltaic_error(error_id, mac, error_code, error_msg, destination_address, timestamp)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.errorId}, #{entity.mac}, #{entity.errorCode}, #{entity.errorMsg}, #{entity.destinationAddress},
+            #{entity.timestamp})
+        </foreach>
+        on duplicate key update
+        error_id = values(error_id) , mac = values(mac) , error_code = values(error_code) , error_msg =
+        values(error_msg) , destination_address = values(destination_address) , timestamp = values(timestamp)
+    </insert>
+
+
+    <select id="findAllBySort" resultType="api.bean.PhotovoltaicError">
+        select
+            ps.streetlight_name ,
+            ps.streetlight_id,
+            pe.photovoltaic_name,
+            pe.photovoltaic_id,
+            phd.*
+        from
+            pole_streetlight ps
+                right join
+            (
+                select
+                    *
+                from
+                    photovoltaic_error phe
+                        join
+                    (
+                        select
+                            max(error_id) as id
+                        from
+                            photovoltaic_error
+                        group by
+                            streetlight_mac
+                        limit #{page},#{size}
+                    ) a
+                    on
+                        error_id = a.id ) phd
+            on
+                phd.streetlight_mac = ps.code_number
+                join
+            photovoltaic_entity pe
+            on
+                pe.bind_pole_streelight_id = streetlight_id
+    </select>
+
+
+
+    <select id="findByCompanyBySort" resultType="api.bean.PhotovoltaicError">
+        select
+            *
+        from
+            photovoltaic_error phe
+                join
+            (
+                select
+                    *
+                from
+                    (
+                        select
+                            ps.streetlight_id ,
+                            ps.streetlight_name,
+                            ps.code_number
+                        from
+                            pole_streetlight ps
+                        where
+                                ps.streetlight_id in (
+                                select
+                                    pus.streetlight_id
+                                from
+                                    pole_user_streetlight pus
+                                where
+                                        pus.company_id in(
+                                        select
+                                            suc.company_id
+                                        from
+                                            sys_user_company suc
+                                        where
+                                                suc.user_id =
+                                                #{userId}
+                                    )
+                            )
+                        limit #{page},#{size}) streetlight
+                        join
+                    (
+                        select
+                            max(error_id) as maxid,
+                            streetlight_mac
+                        from
+                            photovoltaic_error
+                        group by
+                            streetlight_mac
+                    ) a
+                    on
+                        a.streetlight_mac = streetlight.code_number)
+                b
+            on
+                b.maxid = phe.error_id
+                join
+            photovoltaic_entity pe
+            on
+                pe.bind_pole_streelight_id = streetlight_id
+
+    </select>
+
+
+
+    <select id="findByPhotovoltaicId" resultType="api.bean.PhotovoltaicError"
+            parameterType="java.lang.Integer">
+
+        select
+            ps.streetlight_name ,
+            ps.streetlight_id,
+            phe.*,
+            pe.photovoltaic_name,
+            pe.photovoltaic_id
+        from
+            pole_streetlight ps
+                right join
+            (
+                select
+                    *
+                from
+                    photovoltaic_error
+            ) phe
+            on
+                phe.streetlight_mac = ps.code_number
+                join
+            photovoltaic_entity pe
+            on
+                pe.bind_pole_streelight_id = streetlight_id
+        where ps.streetlight_id in (
+            select pe.bind_pole_streelight_id  from photovoltaic_entity pe where pe.photovoltaic_id = #{photovoltaicId})
+        order by error_id desc
+    </select>
+</mapper>
+
diff --git a/src/main/resources/mapper/PhotovoltaicHeartDataDao.xml b/src/main/resources/mapper/PhotovoltaicHeartDataDao.xml
new file mode 100644
index 0000000..23ee387
--- /dev/null
+++ b/src/main/resources/mapper/PhotovoltaicHeartDataDao.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="api.dao.PhotovoltaicHeartDataDao">
+
+<select id="findAllBySort" resultType="api.bean.PhotovoltaicHeartData">
+
+    select
+    ps.streetlight_name ,
+    ps.streetlight_id,
+    pe.photovoltaic_name,
+    pe.photovoltaic_id,
+    phd.*
+    from
+    pole_streetlight ps
+    right join
+    (
+    select
+    *
+    from
+    photovoltaic_heart_data
+    join
+    (
+    select
+    max(photovoltaic_heart_data_id) as id
+    from
+    photovoltaic_heart_data
+    group by
+    streetlight_mac
+    limit #{page},#{size}
+    ) a
+    on
+    photovoltaic_heart_data_id = a.id ) phd
+    on
+    phd.streetlight_mac = ps.code_number
+    join
+    photovoltaic_entity pe
+    on
+    pe.bind_pole_streelight_id = streetlight_id
+    <if test="field != null and field != ''">
+        ORDER BY ${field}
+        <if test="sort != null and sort != ''">${sort}</if>
+    </if>
+
+    </select>
+
+<select id="findByCompanyBySort" resultType="api.bean.PhotovoltaicHeartData">
+
+
+    select
+        *
+    from
+        photovoltaic_heart_data phd
+            join
+        (
+            select
+                *
+            from
+                (
+                    select
+                        ps.streetlight_id ,
+                        ps.streetlight_name,
+                        ps.code_number
+                    from
+                        pole_streetlight ps
+                    where
+                            ps.streetlight_id in (
+                            select
+                                pus.streetlight_id
+                            from
+                                pole_user_streetlight pus
+                            where
+                                    pus.company_id in(
+                                    select
+                                        suc.company_id
+                                    from
+                                        sys_user_company suc
+                                    where
+                                            suc.user_id =
+                                            #{userId}
+                                )
+                        )
+                    limit #{page},#{size}) streetlight
+                    join
+                (
+                    select
+                        max(photovoltaic_heart_data_id) as maxid,
+                        streetlight_mac
+                    from
+                        photovoltaic_heart_data
+                    group by
+                        streetlight_mac
+                ) a
+                on
+                    a.streetlight_mac = streetlight.code_number)
+            b
+        on
+            b.maxid = phd.photovoltaic_heart_data_id
+            join
+        photovoltaic_entity pe
+        on
+            pe.bind_pole_streelight_id = streetlight_id
+</select>
+
+
+
+
+
+<select id="findByPhotovoltaicId" resultType="api.bean.PhotovoltaicHeartData">
+    select
+        ps.streetlight_name ,
+        ps.streetlight_id,
+        phd.*,
+        pe.photovoltaic_name,
+        pe.photovoltaic_id
+    from
+        pole_streetlight ps
+            right join
+        (
+            select
+                *
+            from
+                photovoltaic_heart_data
+         ) phd
+        on
+            phd.streetlight_mac = ps.code_number
+            join
+        photovoltaic_entity pe
+        on
+            pe.bind_pole_streelight_id = streetlight_id
+    where ps.streetlight_id in (
+        select pe.bind_pole_streelight_id  from photovoltaic_entity pe where pe.photovoltaic_id = #{photovoltaicId})
+    order by photovoltaic_heart_data_id desc
+</select>
+
+</mapper>
+
diff --git a/src/main/resources/mapper/SysUserRoleDao.xml b/src/main/resources/mapper/SysUserRoleDao.xml
new file mode 100644
index 0000000..4268644
--- /dev/null
+++ b/src/main/resources/mapper/SysUserRoleDao.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="api.dao.SysUserRoleDao">
+
+	<delete id="deleteBatch">
+		delete from sys_user_role where role_id in
+		<foreach item="roleId" collection="array" open="(" separator="," close=")">
+			#{roleId}
+		</foreach>
+	</delete>
+
+</mapper>
diff --git a/target/api-1.0-SNAPSHOT.jar.original b/target/api-1.0-SNAPSHOT.jar.original
index 79a5f6c..e3cb02d 100644
--- a/target/api-1.0-SNAPSHOT.jar.original
+++ b/target/api-1.0-SNAPSHOT.jar.original
Binary files differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index f9c65d0..e69de29 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,32 +0,0 @@
-api\dao\LampDao.class
-api\service\PoleService.class
-api\bean\SinglelampDataEntity.class
-api\controller\PoleController.class
-api\controller\OldSystemLoginController.class
-api\dao\WeatherV2Dao.class
-api\service\WeatherService.class
-api\bean\PoleLightBatchEntity.class
-api\bean\TimerRequest.class
-api\bean\ReqParams.class
-api\service\SinglelampDataServer.class
-api\controller\CameraController.class
-api\service\WeatherV2Service.class
-api\utils\HttpUtil.class
-api\controller\WeatherController.class
-api\bean\LoginForm.class
-api\controller\SinglelampDataController.class
-api\dao\SinglelampDataDao.class
-api\bean\PoleSensorV2VOEntity.class
-api\controller\TimerController.class
-api\dao\AccessDao.class
-api\service\AccessService.class
-api\bean\PoleSensorV2SoilVOEntity.class
-api\bean\LampEntity.class
-api\result\Msg.class
-api\bean\AccessEntity.class
-api\utils\CommonHeader.class
-api\APIApplication.class
-api\dao\WeatherDao.class
-api\controller\WeatherV2Controller.class
-api\bean\WeatherEntity.class
-api\controller\AccessController.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 7e6cd76..c6679ee 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,32 +1,27 @@
-D:\Coding\api\src\main\java\api\service\WeatherService.java
-D:\Coding\api\src\main\java\api\controller\PoleController.java
-D:\Coding\api\src\main\java\api\service\PoleService.java
-D:\Coding\api\src\main\java\api\service\WeatherV2Service.java
-D:\Coding\api\src\main\java\api\service\SinglelampDataServer.java
-D:\Coding\api\src\main\java\api\bean\TimerRequest.java
-D:\Coding\api\src\main\java\api\controller\SinglelampDataController.java
-D:\Coding\api\src\main\java\api\dao\AccessDao.java
-D:\Coding\api\src\main\java\api\controller\AccessController.java
-D:\Coding\api\src\main\java\api\bean\LampEntity.java
-D:\Coding\api\src\main\java\api\dao\LampDao.java
-D:\Coding\api\src\main\java\api\controller\OldSystemLoginController.java
-D:\Coding\api\src\main\java\api\bean\PoleSensorV2SoilVOEntity.java
-D:\Coding\api\src\main\java\api\dao\SinglelampDataDao.java
-D:\Coding\api\src\main\java\api\bean\AccessEntity.java
-D:\Coding\api\src\main\java\api\service\AccessService.java
-D:\Coding\api\src\main\java\api\dao\WeatherV2Dao.java
-D:\Coding\api\src\main\java\api\bean\ReqParams.java
-D:\Coding\api\src\main\java\api\utils\HttpUtil.java
-D:\Coding\api\src\main\java\api\controller\TimerController.java
-D:\Coding\api\src\main\java\api\bean\PoleSensorV2VOEntity.java
-D:\Coding\api\src\main\java\api\dao\WeatherDao.java
-D:\Coding\api\src\main\java\api\bean\SinglelampDataEntity.java
-D:\Coding\api\src\main\java\api\bean\WeatherEntity.java
-D:\Coding\api\src\main\java\api\bean\PoleLightBatchEntity.java
-D:\Coding\api\src\main\java\api\controller\CameraController.java
-D:\Coding\api\src\main\java\api\controller\WeatherV2Controller.java
-D:\Coding\api\src\main\java\api\result\Msg.java
-D:\Coding\api\src\main\java\api\utils\CommonHeader.java
-D:\Coding\api\src\main\java\api\controller\WeatherController.java
-D:\Coding\api\src\main\java\api\bean\LoginForm.java
-D:\Coding\api\src\main\java\api\APIApplication.java
+C:\coding\api\src\main\java\api\APIApplication.java
+C:\coding\api\src\main\java\api\service\SinglelampDataServer.java
+C:\coding\api\src\main\java\api\bean\PoleSensorV2VOEntity.java
+C:\coding\api\src\main\java\api\controller\AccessController.java
+C:\coding\api\src\main\java\api\bean\SinglelampDataEntity.java
+C:\coding\api\src\main\java\api\bean\TimerRequest.java
+C:\coding\api\src\main\java\api\service\WeatherV2Service.java
+C:\coding\api\src\main\java\api\result\Msg.java
+C:\coding\api\src\main\java\api\bean\WeatherEntity.java
+C:\coding\api\src\main\java\api\service\AccessService.java
+C:\coding\api\src\main\java\api\bean\AccessEntity.java
+C:\coding\api\src\main\java\api\dao\WeatherDao.java
+C:\coding\api\src\main\java\api\controller\SinglelampDataController.java
+C:\coding\api\src\main\java\api\service\WeatherService.java
+C:\coding\api\src\main\java\api\controller\WeatherV2Controller.java
+C:\coding\api\src\main\java\api\controller\TimerController.java
+C:\coding\api\src\main\java\api\bean\ReqParams.java
+C:\coding\api\src\main\java\api\controller\OldSystemLoginController.java
+C:\coding\api\src\main\java\api\dao\WeatherV2Dao.java
+C:\coding\api\src\main\java\api\bean\PoleSensorV2SoilVOEntity.java
+C:\coding\api\src\main\java\api\controller\CameraController.java
+C:\coding\api\src\main\java\api\bean\LampEntity.java
+C:\coding\api\src\main\java\api\bean\LoginForm.java
+C:\coding\api\src\main\java\api\dao\AccessDao.java
+C:\coding\api\src\main\java\api\dao\SinglelampDataDao.java
+C:\coding\api\src\main\java\api\controller\WeatherController.java
+C:\coding\api\src\main\java\api\dao\LampDao.java

--
Gitblit v1.9.3