Browse Source

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

zhengqiang 5 năm trước cách đây
mục cha
commit
df2351c88b

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

@@ -30,6 +30,8 @@ public interface PersonDeviceFilterLogDAO {
 
     List<PersonDeviceFilterLog> findByPersonAndDate(@Param("personId") Long personId, @Param("startDate")String startDate, @Param("endDate")String endDate);
 
+    PersonDeviceFilterLog findByPersonOrderTemperature(@Param("personId") Long personId, @Param("startDate")String startDate, @Param("endDate")String endDate);
+
     List<PersonDeviceFilterLog> temperatureNormalStatistics(String companyCode,BigDecimal temperature, Date startDate, Date endDate);
 
     List<PersonDeviceFilterLog> temperatureUnusualStatistics(String companyCode,BigDecimal temperature,Date startDate,Date endDate);

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

@@ -142,4 +142,8 @@ public class PersonInfo {
 
     @ApiModelProperty(value="权限(1-个人用户,2-企业管理员)")
     private String popedom;
+
+    private BigDecimal lastTemperatureLog;
+
+    private Boolean isNormal;
 }

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

@@ -31,6 +31,8 @@ public interface PersonDeviceFilterLogService {
 
     List<PersonDeviceFilterLog> findByPersonAndDate(Long personId,String startDate,String endDate);
 
+    PersonDeviceFilterLog findByPersonOrderTemperature(Long personId,String startDate,String endDate);
+
     List<PersonDeviceFilterLog> list();
 
     List<PersonDeviceFilterLog> temperatureNormalStatistics(String companyCode,BigDecimal temperature,Date startDate,Date endDate);

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

@@ -156,6 +156,11 @@ public class PersonDeviceFilterLogServiceImpl implements PersonDeviceFilterLogSe
         return personDeviceFilterLogDAO.findByPersonAndDate(personId,startDate,endDate);
     }
 
+    @Override
+    public PersonDeviceFilterLog findByPersonOrderTemperature(Long personId,String startDate,String endDate){
+        return personDeviceFilterLogDAO.findByPersonOrderTemperature(personId,startDate,endDate);
+    }
+
     @Override
     public PersonDeviceFilterLog lastPersonLog(Long personId){
         return personDeviceFilterLogDAO.lastPersonLog(personId);

+ 19 - 0
common/src/main/resources/mapper/base/PersonDeviceFilterLog.xml

@@ -134,6 +134,15 @@
         order by record_time desc
 	</select>
 
+    <select id="findByPersonOrderTemperature" resultMap="PersonDeviceFilterLogMap">
+		select * from base_person_device_filter_log where person_id = #{personId}
+		and del_flag=false
+		<![CDATA[
+           and record_time >= #{startDate} and record_time <= #{endDate}
+        ]]>
+        order by temperature_ desc LIMIT 1
+	</select>
+
 
     <select id="search" parameterType="hashmap" resultMap="PersonDeviceFilterLogMap">
         <![CDATA[
@@ -159,6 +168,16 @@
             <if test="searchParams.abnormalFilter!=null">
                 and a.temperature_>37
             </if>
+            <if test="searchParams.fever==true">
+                <![CDATA[
+                and a.temperature_>37
+                ]]>
+            </if>
+            <if test="searchParams.fever==false">
+                <![CDATA[
+                and a.temperature_<=37
+                ]]>
+            </if>
         </where>
         <foreach item="sort" collection="sortList"  open="order by" separator=",">
             ${sort.name} ${sort.order}

+ 43 - 28
web/src/main/java/com/jpsoft/smart/modules/mobile/controller/IndividualLogApiController.java

@@ -12,6 +12,7 @@ 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.web.bind.annotation.*;
 
@@ -53,7 +54,22 @@ public class IndividualLogApiController {
 
             searchParams.put("companyId",companyId);
 
-            Page<PersonInfo> page = personInfoService.pageSearch(searchParams,pageIndex,pageSize,false,sortList);
+            Page<PersonInfo> page = personInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+            for (PersonInfo personInfo:page) {
+                PersonDeviceFilterLog personDeviceFilterLog = personDeviceFilterLogService.lastPersonLog(personInfo.getId());
+
+                if(personDeviceFilterLog!=null){
+                    personInfo.setLastTemperatureLog(personDeviceFilterLog.getTemperature());
+                    double temperature = personDeviceFilterLog.getTemperature().doubleValue();
+                    if(temperature>=37){
+                        personInfo.setIsNormal(false);
+                    }
+                    else{
+                        personInfo.setIsNormal(true);
+                    }
+                }
+            }
 
             messageResult.setResult(true);
             messageResult.setData(PojoUtils.pageWrapper(page));
@@ -182,54 +198,53 @@ public class IndividualLogApiController {
         try {
             List<Map<String,Object>> totalList = new ArrayList<>();
 
-            Date now = new Date();
             PersonInfo person = personInfoService.get(Long.valueOf(personId));
 
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat f = new SimpleDateFormat("HH");
+            SimpleDateFormat f = new SimpleDateFormat("MM-dd");
+
+            for (int j = 0; j < 3;j++) {
 
-            for (int i = 0;i < 14;i++) {
                 Map<String, Object> map = new HashMap<>();
 
-                Calendar rightNow = Calendar.getInstance();
-                rightNow.setTime(now);
-                rightNow.add(Calendar.DATE, -(i + 1));
-                Date dt1 = rightNow.getTime();
-                String startDate = sdf.format(dt1);
+                map.put("startDate", sdf.format(DateTime.now().plusDays(-14-(j*14)).toDate()));
+                map.put("endDate", sdf.format(DateTime.now().plusDays(-(j*14)).toDate()));
 
-                Calendar rightNow2 = Calendar.getInstance();
-                rightNow2.setTime(now);
-                rightNow2.add(Calendar.DATE, -i);
-                Date dt2 = rightNow2.getTime();
-                String endDate = sdf.format(dt2);
+                List<Map<String, Object>> list1 = new ArrayList<>();
+
+                for (int i = 0; i < 14; i++) {
+
+                    Map<String, Object> map1 = new HashMap<>();
 
-                List<PersonDeviceFilterLog> personDeviceLogList = personDeviceFilterLogService.findByPersonAndDate(person.getId(),startDate,endDate);
+                    String startDate = sdf.format(DateTime.now().plusDays( - i-(j*14)).toDate());
 
-                map.put("date",startDate);
+                    String endDate = sdf.format(DateTime.now().plusDays(1 - i-(j*14)).toDate());
 
-                if(personDeviceLogList.size()>0) {
+                    PersonDeviceFilterLog personDeviceFilterLog = personDeviceFilterLogService.findByPersonOrderTemperature(person.getId(), startDate, endDate);
+
+                    if (personDeviceFilterLog != null) {
 
-                    List<Map<String, Object>> list = new ArrayList<>();
-                    boolean isDanger = false;
-                    for (PersonDeviceFilterLog personDeviceFilterLog : personDeviceLogList) {
-                        Map<String, Object> mapChi = new HashMap<>();
                         Date recordTime = personDeviceFilterLog.getRecordTime();
                         String hour = f.format(recordTime);
 
-                        mapChi.put("name", hour + "时");
-                        mapChi.put("value", personDeviceFilterLog.getTemperature());
+                        boolean isDanger = false;
+
+                        map1.put("name", hour);
+                        map1.put("value", personDeviceFilterLog.getTemperature());
                         double temperatureDou = Double.parseDouble(personDeviceFilterLog.getTemperature().toString());
                         if (temperatureDou >= 37) {
                             isDanger = true;
                         }
-                        list.add(mapChi);
-                    }
 
-                    map.put("list", list);
-                    map.put("danger", isDanger);
+                        map1.put("danger", isDanger);
 
-                    totalList.add(map);
+                        list1.add(map1);
+                    }
                 }
+
+                map.put("list", list1);
+
+                totalList.add(map);
             }
 
             messageResult.setData(totalList);

+ 35 - 31
web/src/main/java/com/jpsoft/smart/modules/mobile/controller/PersonDeviceFilterLogController.java

@@ -87,42 +87,48 @@ public class PersonDeviceFilterLogController {
     }
 
     @ApiOperation(value="体温记录(个人列表)")
-    @RequestMapping(value = "list",method = RequestMethod.POST)
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
             @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
             @ApiImplicitParam(name="subject",value = "目标(不传)",paramType = "form"),
-            @ApiImplicitParam(name = "recordDate",value = "查询日期(yyyy-MM-dd)", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name="fever",value = "是否异常",required = false,paramType = "form",dataType = "Boolean")
+//            @ApiImplicitParam(name = "recordDate",value = "查询日期(yyyy-MM-dd)", required = false, paramType = "form",dataType = "String")
     })
-    public MessageResult<List<PersonDeviceFilterLogDTO>> list(@RequestParam(value="recordDate",defaultValue="") String recordDate,
-                                                              @RequestAttribute String subject,
-                                                              String token){
-        MessageResult<List<PersonDeviceFilterLogDTO>> msgResult = new MessageResult<>();
+    public MessageResult<Map> pageList(//@RequestParam(value="recordDate",defaultValue="") String recordDate,
+                                      @RequestParam(value="fever",defaultValue="") Boolean fever,
+                                      @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+                                      @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+                                      @RequestAttribute String subject,
+                                      String token){
+        MessageResult<Map> msgResult = new MessageResult<>();
 
         try {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            Calendar calendar = Calendar.getInstance();
-            calendar.setTime(sdf.parse(recordDate));
-            Date beginTime = calendar.getTime();
-            calendar.add(Calendar.DATE, 1);
-            calendar.add(Calendar.SECOND, -1);
-            Date endTime = calendar.getTime();
-
-            List<PersonDeviceFilterLogDTO> listPersonDeviceFilterLogDTO = new ArrayList<>();
-
-            Map<String,Object> searchParams = new HashMap<>();
-            searchParams.put("personId",subject);
-            searchParams.put("beginTime",beginTime);
-            searchParams.put("endTime",endTime);
             List<Sort> sortList = new ArrayList<>();
             sortList.add(new Sort("a.id_","asc"));
 
-            Page<PersonDeviceFilterLog> page = personDeviceFilterLogService.pageSearch(searchParams,1,1000,false, sortList);
-            for(PersonDeviceFilterLog personDeviceFilterLog : page.getResult()){
-                PersonDeviceFilterLogDTO personDeviceFilterLogDTO = new PersonDeviceFilterLogDTO();
-                PojoUtils.map(personDeviceFilterLog, personDeviceFilterLogDTO);
-
-                DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(personDeviceFilterLog.getDeviceNo());
-                PersonInfo personInfo = personInfoService.get(Long.valueOf(personDeviceFilterLog.getPersonId()));
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("personId",subject);
+            if(fever != null){
+                searchParams.put("fever", fever);
+            }
+//            if(StringUtils.isNotEmpty(recordDate)) {
+//                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+//                Calendar calendar = Calendar.getInstance();
+//                calendar.setTime(sdf.parse(recordDate));
+//                Date beginTime = calendar.getTime();
+//                calendar.add(Calendar.DATE, 1);
+//                calendar.add(Calendar.SECOND, -1);
+//                Date endTime = calendar.getTime();
+//
+//                searchParams.put("beginTime", beginTime);
+//                searchParams.put("endTime", endTime);
+//            }
+
+            Page<PersonDeviceFilterLog> page = personDeviceFilterLogService.pageSearch(searchParams,pageIndex,pageSize,true, sortList);
+            Page<PersonDeviceFilterLogDTO> pageDTO = PojoUtils.convertPage(page, PersonDeviceFilterLogDTO.class);
+            for(PersonDeviceFilterLogDTO personDeviceFilterLogDTO : pageDTO.getResult()){
+                DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(personDeviceFilterLogDTO.getDeviceNo());
+                PersonInfo personInfo = personInfoService.get(Long.valueOf(personDeviceFilterLogDTO.getPersonId()));
 
                 if(deviceInfo != null) {
                     personDeviceFilterLogDTO.setDeviceName(deviceInfo.getAliasName());
@@ -130,17 +136,15 @@ public class PersonDeviceFilterLogController {
                 if(personInfo != null) {
                     personDeviceFilterLogDTO.setPersonName(personInfo.getName());
                 }
-                if(personDeviceFilterLog.getTemperature().compareTo(new BigDecimal("37")) == 1){//|| personDeviceFilterLog.getTemperature().compareTo(new BigDecimal("37")) == 0
+                if(personDeviceFilterLogDTO.getTemperature().compareTo(new BigDecimal("37")) == 1){//|| personDeviceFilterLog.getTemperature().compareTo(new BigDecimal("37")) == 0
                     personDeviceFilterLogDTO.setFever(true);
                 }else {
                     personDeviceFilterLogDTO.setFever(false);
                 }
-
-                listPersonDeviceFilterLogDTO.add(personDeviceFilterLogDTO);
             }
 
             msgResult.setResult(true);
-            msgResult.setData(listPersonDeviceFilterLogDTO);
+            msgResult.setData(PojoUtils.pageWrapper(pageDTO));
         }
         catch(Exception ex){
             logger.error(ex.getMessage(),ex);