Procházet zdrojové kódy

Merge remote-tracking branch 'origin/V1' into V1

yanliming před 5 roky
rodič
revize
19de17f80c
19 změnil soubory, kde provedl 316 přidání a 15 odebrání
  1. 2 0
      common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonDeviceLogDAO.java
  2. 2 0
      common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonInfoDAO.java
  3. 2 0
      common/src/main/java/com/jpsoft/smart/modules/base/entity/PersonInfo.java
  4. 1 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/PersonDeviceLogService.java
  5. 2 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/PersonInfoService.java
  6. 2 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/impl/ParkingInfoServiceImpl.java
  7. 7 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/impl/PersonDeviceLogServiceImpl.java
  8. 5 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/impl/PersonInfoServiceImpl.java
  9. 25 1
      common/src/main/resources/mapper/base/PersonDeviceLog.xml
  10. 13 1
      common/src/main/resources/mapper/base/PersonInfo.xml
  11. 7 1
      electricity/src/main/java/com/jpsoft/smart/electricity/server/handler/MeterServerHandler.java
  12. 4 0
      web/pom.xml
  13. 1 1
      web/src/main/java/com/jpsoft/smart/config/WebMvcConfig.java
  14. 20 3
      web/src/main/java/com/jpsoft/smart/modules/base/controller/CompanyInfoController.java
  15. 9 3
      web/src/main/java/com/jpsoft/smart/modules/base/controller/PersonDeviceLogController.java
  16. 0 3
      web/src/main/java/com/jpsoft/smart/modules/base/controller/PersonInfoController.java
  17. 39 0
      web/src/main/java/com/jpsoft/smart/modules/base/controller/WarningPusherController.java
  18. 163 0
      web/src/main/java/com/jpsoft/smart/modules/mobile/controller/PersonDeviceLogApiController.java
  19. 12 2
      web/src/main/java/com/jpsoft/smart/modules/mobile/controller/PersonInfoApiController.java

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonDeviceLogDAO.java

@@ -18,4 +18,6 @@ public interface PersonDeviceLogDAO {
     void insert(PersonDeviceLog personDeviceLog);
 
     List<PersonDeviceLog> search(Map<String, Object> searchParams, List<Sort> sortList);
+
+    List<PersonDeviceLog> simpleSearch(Map<String, Object> searchParams, List<Sort> sortList);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonInfoDAO.java

@@ -19,4 +19,6 @@ public interface PersonInfoDAO {
     PersonInfo findByNameAndPhone(String name, String phone);
 
 	PersonInfo findByOpenId(String openId);
+
+    List<PersonInfo> findByCompanyId(String companyId);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/entity/PersonInfo.java

@@ -140,4 +140,6 @@ public class PersonInfo {
     @ApiModelProperty(value = "人脸相片地址")
     private String faceImageUrl;
 
+    @ApiModelProperty(value="权限(1-个人用户,2-企业管理员)")
+    private Integer popedom;
 }

+ 1 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/PersonDeviceLogService.java

@@ -28,4 +28,5 @@ public interface PersonDeviceLogService {
     void deviceInsertLog(String deviceNo, BigDecimal temperature, JSONObject faceImageJson, JSONObject libMatInfoListJson, JSONObject matchPersonInfo, Date date) ;
 
     Page<PersonDeviceLog> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize,boolean count, List<Sort> sortList);
+    Page<PersonDeviceLog> simplePageSearch(Map<String, Object> searchParams, int pageNum, int pageSize,boolean count, List<Sort> sortList);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/PersonInfoService.java

@@ -17,4 +17,6 @@ public interface PersonInfoService {
 
     PersonInfo findByNameAndPhone(String name, String phone);
 	PersonInfo findByOpenId(String openId);
+
+    List<PersonInfo> findByCompanyId(String companyId);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/impl/ParkingInfoServiceImpl.java

@@ -67,4 +67,6 @@ public class ParkingInfoServiceImpl implements ParkingInfoService {
         
         return page;
 	}
+
+
 }

+ 7 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/impl/PersonDeviceLogServiceImpl.java

@@ -137,5 +137,12 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
     }
 
 
+    @Override
+    public Page<PersonDeviceLog> simplePageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
+        Page<PersonDeviceLog> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+            personDeviceLogDAO.simpleSearch(searchParams,sortList);
+        });
 
+        return page;
+    }
 }

+ 5 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/impl/PersonInfoServiceImpl.java

@@ -77,4 +77,9 @@ public class PersonInfoServiceImpl implements PersonInfoService {
 	public PersonInfo findByOpenId(String openId) {
 		return personInfoDAO.findByOpenId(openId);
 	}
+
+	@Override
+	public List<PersonInfo> findByCompanyId(String companyId) {
+		return personInfoDAO.findByCompanyId(companyId);
+	}
 }

+ 25 - 1
common/src/main/resources/mapper/base/PersonDeviceLog.xml

@@ -3,7 +3,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.smart.modules.base.dao.PersonDeviceLogDAO">
-    <resultMap id="PersonDeviceLogMap" type="com.jpsoft.smart.modules.base.entity.PersonDeviceLog">
+    <resultMap id="SimpleMap" type="com.jpsoft.smart.modules.base.entity.PersonDeviceLog">
         <id property="id" column="id_" />
         <result property="createBy" column="create_by" />
         <result property="createTime" column="create_time" />
@@ -19,6 +19,8 @@
         <result property="matchFaceId" column="match_face_id" />
         <result property="faceImage" column="face_image" />
         <result property="recordTime" column="record_time" />
+    </resultMap>
+    <resultMap id="PersonDeviceLogMap" extends="SimpleMap" type="com.jpsoft.smart.modules.base.entity.PersonDeviceLog">
         <association property="device" column="device_no"
                      select="com.jpsoft.smart.modules.base.dao.DeviceInfoDAO.getByDeviceNo"></association>
         <association property="person" column="person_id"
@@ -53,6 +55,25 @@
 		)
 	]]>
     </insert>
+    <select id="simpleSearch" parameterType="hashmap" resultMap="SimpleMap">
+        select * from base_person_device_log a
+        <where>
+            and a.del_flag = false
+            <if test="searchParams.personId != null">
+                and a.person_id = #{searchParams.personId}
+            </if>
+            <if test="searchParams.beginTime != null">
+                <![CDATA[
+                  and a.record_time >= #{searchParams.beginTime}
+                ]]>
+            </if>
+            <if test="searchParams.endTime != null">
+                <![CDATA[
+                  and a.record_time <= #{searchParams.endTime}
+                ]]>
+            </if>
+        </where>
+    </select>
     <select id="search" parameterType="hashmap" resultMap="PersonDeviceLogMap">
         <![CDATA[
 			select * from base_person_device_log a left join base_device_info b
@@ -67,6 +88,9 @@
                     #{item}
                 </foreach>
             </if>
+            <if test="searchParams.personId != null">
+                and a.person_id = #{searchParams.personId}
+            </if>
             <if test="searchParams.deviceNo != null">
                 and a.device_no like #{searchParams.deviceNo}
             </if>

+ 13 - 1
common/src/main/resources/mapper/base/PersonInfo.xml

@@ -28,6 +28,7 @@
         <result property="createTime" column="create_time"/>
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
+        <result property="popedom" column="popedom_"/>
     </resultMap>
     <insert id="insert" parameterType="com.jpsoft.smart.modules.base.entity.PersonInfo">
         <!--
@@ -39,7 +40,8 @@
 		insert into base_person_info
 	    (company_id,name_,phone_,id_card,open_id,face_enabled,face_bound,card_enabled,
 	    app_enabled,password_enabled,guest_enabled,position1_,position2_,
-	    position3_,position4_,position5_,face_image_url,del_flag,create_by,create_time,update_by,update_time)
+	    position3_,position4_,position5_,face_image_url,del_flag,
+	    create_by,create_time,update_by,update_time,popedom_)
 		values
 		(
             #{companyId,jdbcType=VARCHAR}
@@ -64,6 +66,7 @@
             ,#{createTime,jdbcType= TIMESTAMP }
             ,#{updateBy,jdbcType=VARCHAR}
             ,#{updateTime,jdbcType= TIMESTAMP }
+            ,#{popedom,jdbcType= NUMERIC }
 		)
 	]]>
     </insert>
@@ -139,6 +142,9 @@
             <if test="updateTime!=null">
                 update_time=#{updateTime,jdbcType= TIMESTAMP },
             </if>
+            <if test="popedom!=null">
+                popedom_=#{popedom,jdbcType= NUMERIC },
+            </if>
         </set>
         where id_=#{id}
     </update>
@@ -213,4 +219,10 @@
         left join base_company_info b on a.company_id = b.id_
         where a.open_id=#{openId} and a.del_flag = 0 limit 1
     </select>
+    <select id="findByCompanyId" resultType="com.jpsoft.smart.modules.base.entity.PersonInfo">
+        select a.* from base_person_info a
+        where
+        a.company_id=#{companyId} and a.del_flag = 0
+        order by a.id_ asc
+    </select>
 </mapper>

+ 7 - 1
electricity/src/main/java/com/jpsoft/smart/electricity/server/handler/MeterServerHandler.java

@@ -22,7 +22,13 @@ public class MeterServerHandler extends SimpleChannelInboundHandler<MeterReceive
 
     @Override
     protected void channelRead0(ChannelHandlerContext ctx, MeterReceivePacket msg) throws Exception {
-        log.warn("收到电表数据:" + msg.toString());
+        String content = msg.toString();
+
+        if (content.length()>1024){
+            content = content.substring(0,1024);
+        }
+
+        log.warn("收到电表数据:" + content);
 
         //终端编号
         String terminalNo = ctx.channel().attr(AttributeKeys.TERMINAL_NO).get();

+ 4 - 0
web/pom.xml

@@ -97,6 +97,10 @@
             <version>${alipay.version}</version>
         </dependency>
         <!--支付相关 end-->
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 1 - 1
web/src/main/java/com/jpsoft/smart/config/WebMvcConfig.java

@@ -59,7 +59,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/base/alarmInfo/alarmNotify")
 				.excludePathPatterns("/base/informationInfo/addMobile")
 				.excludePathPatterns("/base/employeeInfo/mobile/**")
-				.excludePathPatterns("/base/companyInfo/list")
+//				.excludePathPatterns("/base/companyInfo/list")
 				.excludePathPatterns("/wechat/**")
 				.excludePathPatterns("/mobile/personInfoApi/findByNameAndPhone")
 				.excludePathPatterns("/mobile/personInfoApi/getVerifyCode")

+ 20 - 3
web/src/main/java/com/jpsoft/smart/modules/base/controller/CompanyInfoController.java

@@ -9,7 +9,11 @@ import com.jpsoft.smart.modules.common.dto.Sort;
 import com.jpsoft.smart.modules.common.dto.MessageResult;
 import com.jpsoft.smart.modules.base.entity.CompanyInfo;
 import com.jpsoft.smart.modules.base.service.CompanyInfoService;
+import com.jpsoft.smart.modules.sys.entity.User;
+import com.jpsoft.smart.modules.sys.service.UserService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -29,7 +33,8 @@ public class CompanyInfoController {
 
     @Autowired
     private CompanyInfoService companyInfoService;
-
+    @Autowired
+    private UserService userService;
     @Autowired
     private CompanyPositionService companyPositionService;
 
@@ -307,10 +312,22 @@ public class CompanyInfoController {
 
     @ApiOperation(value="所有单位列表")
     @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<List<CompanyInfo>> list(){
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="subject",value = "当前用户编号(不传)",paramType = "form")
+    })
+    public MessageResult<List<CompanyInfo>> list(HttpServletRequest request){
+        String subject = (String)request.getAttribute("subject");
+
         MessageResult<List<CompanyInfo>> msgResult = new MessageResult<>();
+        User user = userService.get(subject);
+        List<CompanyInfo> list = new ArrayList<>();
 
-        List<CompanyInfo> list = companyInfoService.list();
+        if (userService.hasRole(subject,"SYSADMIN")) {
+            list = companyInfoService.list();
+        }
+        if(userService.hasRole(subject,"ADMIN")){
+            list.add(companyInfoService.get(user.getCompanyId()));
+        }
 
         msgResult.setResult(true);
         msgResult.setData(list);

+ 9 - 3
web/src/main/java/com/jpsoft/smart/modules/base/controller/PersonDeviceLogController.java

@@ -83,18 +83,24 @@ public class PersonDeviceLogController {
         sortList.add(new Sort("a.record_time","desc"));
 
         //为公司管理员
-        boolean is_admin = userService.hasRole(subject,"ADMIN");
-        if(is_admin){
+        boolean isSysAdmin = userService.hasRole(subject,"SYSADMIN");
+
+        if(!isSysAdmin){
             User user = userService.get(subject);
             String companyId = user.getCompanyId();
 
             List<DeviceInfo> deviceInfoList = deviceInfoService.findByCompanyId(companyId);
             List<String> deviceIdList = new ArrayList<String>();
+
             for (DeviceInfo deviceInfo:deviceInfoList) {
                 deviceIdList.add(deviceInfo.getId());
             }
 
-            searchParams.put("deviceIdList",deviceIdList);
+            if (deviceIdList.size()==0) {
+                deviceIdList.add("-1");
+            }
+
+            searchParams.put("deviceIdList", deviceIdList);
         }
         if(StringUtil.isNotEmpty(deviceNo)){
             searchParams.put("deviceNo","%"+deviceNo+"%");

+ 0 - 3
web/src/main/java/com/jpsoft/smart/modules/base/controller/PersonInfoController.java

@@ -14,15 +14,12 @@ import com.jpsoft.smart.modules.lapi.service.ILapiService;
 import com.jpsoft.smart.modules.lapi.vo.LapiMsgResult;
 import com.jpsoft.smart.modules.sys.entity.User;
 import com.jpsoft.smart.modules.sys.service.UserService;
-import com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.*;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;

+ 39 - 0
web/src/main/java/com/jpsoft/smart/modules/base/controller/WarningPusherController.java

@@ -7,6 +7,8 @@ import com.jpsoft.smart.modules.common.dto.MessageResult;
 import com.jpsoft.smart.modules.base.entity.WarningPusher;
 import com.jpsoft.smart.modules.base.service.WarningPusherService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -222,4 +224,41 @@ public class WarningPusherController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="绑定微信")
+    @PostMapping("bindWeChat")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id",value = "编号", required = true, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "openId",value = "微信id", required = true, paramType = "form",dataType = "String")
+    })
+    public MessageResult<WarningPusher> bindWeChat(@RequestParam(value="id",defaultValue="") String id,
+                                                   @RequestParam(value="openId",defaultValue="") String openId,
+                                                   @RequestAttribute String subject){
+        MessageResult<WarningPusher> msgResult = new MessageResult<>();
+
+        try {
+            WarningPusher warningPusher = warningPusherService.get(id);
+            warningPusher.setOpenId(openId);
+            warningPusher.setUpdateBy(subject);
+            warningPusher.setUpdateTime(new Date());
+
+            int affectCount = warningPusherService.update(warningPusher);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(warningPusher);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库更新失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }

+ 163 - 0
web/src/main/java/com/jpsoft/smart/modules/mobile/controller/PersonDeviceLogApiController.java

@@ -0,0 +1,163 @@
+package com.jpsoft.smart.modules.mobile.controller;
+
+import com.github.pagehelper.Page;
+import com.google.common.collect.Lists;
+import com.jpsoft.smart.modules.base.entity.PersonDeviceLog;
+import com.jpsoft.smart.modules.base.entity.PersonInfo;
+import com.jpsoft.smart.modules.base.service.PersonDeviceLogService;
+import com.jpsoft.smart.modules.base.service.PersonInfoService;
+import com.jpsoft.smart.modules.common.dto.MessageResult;
+import com.jpsoft.smart.modules.common.dto.Sort;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.joda.time.DateTime;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+@RestController
+@RequestMapping("/mobile/personDeviceLogApi")
+public class PersonDeviceLogApiController {
+    @Autowired
+    private PersonInfoService personInfoService;
+
+    @Autowired
+    private PersonDeviceLogService personDeviceLogService;
+
+    @PostMapping("queryTemperatureRecordListByEnt")
+    @ApiOperation(value="企业管理员查看温度记录(需要传令牌)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="queryDate",value = "查询日期",required = true,paramType = "form"),
+            @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
+            @ApiImplicitParam(name="subject",value = "目标(不传)",paramType = "form")
+    })
+    public MessageResult<List> queryTemperatureRecordListByEnt(
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date queryDate,
+            String token,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            @RequestAttribute String subject){
+        List<Map> recordList = new ArrayList<>();
+
+        MessageResult<List> messageResult = new MessageResult<>();
+
+        try {
+            PersonInfo admin = personInfoService.get(Long.valueOf(subject));
+
+            Map<String, Object> personSearchParam = new HashMap<>();
+            personSearchParam.put("companyId",admin.getCompanyId());
+
+            List<Sort> sortList1 = new ArrayList<>();
+            sortList1.add(new Sort("id_","asc"));
+
+            Page<PersonInfo> personList = personInfoService.pageSearch(personSearchParam,pageIndex,pageSize,true,sortList1);
+
+            DateTime startTime = new DateTime(queryDate);
+
+            for (PersonInfo person : personList) {
+                Map<String, Object> recordMap = new HashMap<>();
+
+                recordMap.put("name", person.getName());
+                recordMap.put("faceImageUrl", person.getFaceImageUrl());
+
+                Map<String, Object> searchParams = new HashMap<>();
+
+                searchParams.put("personId", person.getId());
+                searchParams.put("beginTime", startTime.toDate());
+                searchParams.put("endTime", startTime.plusDays(1).toDate());
+
+                List<Sort> sortList = new ArrayList<>();
+                sortList.add(new Sort("record_time", "asc"));
+
+                Page<PersonDeviceLog> page = personDeviceLogService.simplePageSearch(searchParams, 1, 100, false, sortList);
+
+                Map<Integer, List> hourMap = new TreeMap<>();
+
+                //收集每个人每小时的测量温度
+                for (PersonDeviceLog personDeviceLog : page) {
+                    DateTime recordTime = new DateTime(personDeviceLog.getRecordTime());
+
+                    int hour = recordTime.getHourOfDay();
+
+                    if (hourMap.containsKey(hour)) {
+                        hourMap.get(hour).add(personDeviceLog);
+                    } else {
+                        List<PersonDeviceLog> logList = new ArrayList<>();
+                        logList.add(personDeviceLog);
+                        hourMap.put(hour, logList);
+                    }
+                }
+
+                //每个小时取一条温度数据小于37的即可,如果没有则取最低的
+                BigDecimal stdLower = new BigDecimal(36);
+                BigDecimal stdUpper = new BigDecimal(37);
+
+                Map<Integer, PersonDeviceLog> hourFilterMap = new TreeMap<>();
+
+                for (Integer hour : hourMap.keySet()) {
+                    List<PersonDeviceLog> logList = hourMap.get(hour);
+
+                    List<PersonDeviceLog> filterList = logList.stream()
+                            //查询是否有36度至37度
+                            .filter((log) -> {
+                                if (log.getTemperature().compareTo(stdLower) >= 0
+                                        && log.getTemperature().compareTo(stdUpper) <= 0) {
+                                    return true;
+                                } else {
+                                    return false;
+                                }
+                            })
+                            //体温由低到高排列
+                            .sorted(Comparator.comparing(PersonDeviceLog::getTemperature)).collect(Collectors.toList());
+
+                    if (filterList.size() > 0) {
+                        hourFilterMap.put(hour, filterList.get(0));
+                    } else {
+                        //如果不存在,则取最低的一条
+                        Optional<PersonDeviceLog> optional = logList.stream()
+                                .sorted(Comparator.comparing(PersonDeviceLog::getTemperature)).findFirst();
+
+                        if (optional.isPresent()) {
+                            hourFilterMap.put(hour, optional.get());
+                        }
+                    }
+                }
+
+                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+
+                List<Map> personDeviceLogs = hourFilterMap.keySet().stream()
+                        .map((key) -> hourFilterMap.get(key))
+                        .sorted(Comparator.comparing(PersonDeviceLog::getRecordTime))
+                        .map((log)->{
+                            Map<String,Object> map = new HashMap<>();
+                            map.put("temperature",log.getTemperature());
+                            map.put("recordTime",sdf.format(log.getRecordTime()));
+
+                            return map;
+                        })
+                        .collect(Collectors.toList());
+
+                recordMap.put("list", personDeviceLogs);
+
+                recordList.add(recordMap);
+            }
+
+            messageResult.setResult(true);
+            messageResult.setData(recordList);
+        }
+        catch (Exception ex){
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+}

+ 12 - 2
web/src/main/java/com/jpsoft/smart/modules/mobile/controller/PersonInfoApiController.java

@@ -1,6 +1,7 @@
 package com.jpsoft.smart.modules.mobile.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.domain.Person;
 import com.github.pagehelper.Page;
 import com.jpsoft.smart.config.OSSConfig;
 import com.jpsoft.smart.modules.base.entity.PersonInfo;
@@ -167,9 +168,10 @@ public class PersonInfoApiController {
     @ApiOperation(value="验证短信验证码(公开接口)")
     @ApiImplicitParams({
             @ApiImplicitParam(name="personId",value = "人员编号",required = true,paramType = "form"),
-            @ApiImplicitParam(name="verifyCode",value = "验证码",required = true,paramType = "form")
+            @ApiImplicitParam(name="verifyCode",value = "验证码",required = true,paramType = "form"),
+            @ApiImplicitParam(name="openId",value = "微信openId",paramType = "form")
     })
-    public MessageResult<String> validateCode(Long personId,String verifyCode){
+    public MessageResult<String> validateCode(Long personId,String verifyCode,String openId){
         MessageResult<String> messageResult = new MessageResult<>();
 
         try {
@@ -185,6 +187,14 @@ public class PersonInfoApiController {
                 throw new Exception("验证码错误!");
             }
 
+            if (StringUtils.isNotEmpty(openId)){
+                PersonInfo personInfo = personInfoService.get(personId);
+                personInfo.setOpenId(openId);
+                personInfo.setUpdateTime(new Date());
+
+                personInfoService.update(personInfo);
+            }
+
             String token = createToken(personId);
 
             messageResult.setData(token);