Ver código fonte

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

jz.kai 5 anos atrás
pai
commit
c314ec1eb7

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

@@ -7,6 +7,7 @@ import com.jpsoft.smart.modules.base.entity.PersonInfo;
 import com.jpsoft.smart.modules.common.dto.Sort;
 import org.springframework.stereotype.Repository;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -23,4 +24,16 @@ public interface PersonDeviceFilterLogDAO {
     PersonDeviceFilterLog findByPersonIdAndDeviceNoAndTimeZones(@Param("personId") Integer personId, @Param("deviceNo") String deviceNo, @Param("timeZones") String timeZones);
 
     int update(PersonDeviceFilterLog personDeviceFilterLog);
+
+    List<PersonDeviceFilterLog> search(Map<String, Object> searchParams, List<Sort> sortList);
+
+    List<PersonDeviceFilterLog> findByPersonAndDate(@Param("personId") Long personId, @Param("startDate")String startDate, @Param("endDate")String endDate);
+
+    List<PersonDeviceFilterLog> temperatureNormalStatistics(@Param("temperature")BigDecimal temperature, @Param("startDate")String startDate, @Param("endDate")String endDate);
+
+    List<PersonDeviceFilterLog> temperatureUnusualStatistics(@Param("temperature")BigDecimal temperature,@Param("startDate")String startDate, @Param("endDate")String endDate);
+
+    List<PersonDeviceFilterLog> list();
+
+    List<Map<String, Object>> unusualStatistics(@Param("temperature")BigDecimal temperature,@Param("startDate")String startDate,@Param("endDate")String endDate);
 }

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

@@ -2,8 +2,10 @@ package com.jpsoft.smart.modules.base.dao;
 
 import com.jpsoft.smart.modules.base.entity.PersonDeviceLog;
 import com.jpsoft.smart.modules.common.dto.Sort;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -20,4 +22,6 @@ public interface PersonDeviceLogDAO {
     List<PersonDeviceLog> search(Map<String, Object> searchParams, List<Sort> sortList);
 
     List<PersonDeviceLog> simpleSearch(Map<String, Object> searchParams, List<Sort> sortList);
+
+    List<PersonDeviceLog> findByPersonAndDate(@Param("personId") Long personId, @Param("startDate")String startDate, @Param("endDate")String endDate);
 }

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

@@ -1,9 +1,14 @@
 package com.jpsoft.smart.modules.base.service;
 
 import cn.hutool.json.JSONObject;
+import com.github.pagehelper.Page;
+import com.jpsoft.smart.modules.base.entity.PersonDeviceFilterLog;
+import com.jpsoft.smart.modules.common.dto.Sort;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author 墨鱼_mo
@@ -21,5 +26,16 @@ public interface PersonDeviceFilterLogService {
      */
     void deviceInsertFilterLog(String deviceNo, BigDecimal temperature, JSONObject faceImageJson, JSONObject libMatInfoListJson, JSONObject matchPersonInfo, Date date);
 
+    Page<PersonDeviceFilterLog> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList);
+
+    List<PersonDeviceFilterLog> findByPersonAndDate(Long personId,String startDate,String endDate);
+
+    List<PersonDeviceFilterLog> list();
+
+    List<PersonDeviceFilterLog> temperatureNormalStatistics(BigDecimal temperature,String startDate,String endDate);
+
+    List<PersonDeviceFilterLog> temperatureUnusualStatistics(BigDecimal temperature,String startDate,String endDate);
+
+    List<Map<String, Object>> unusualStatistics(BigDecimal temperature,String startDate,String endDate);
 
 }

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

@@ -28,5 +28,6 @@ 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);
+    List<PersonDeviceLog> findByPersonAndDate(Long personId,String startDate,String endDate);
     Page<PersonDeviceLog> simplePageSearch(Map<String, Object> searchParams, int pageNum, int pageSize,boolean count, List<Sort> sortList);
 }

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

@@ -2,11 +2,14 @@ package com.jpsoft.smart.modules.base.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.json.JSONObject;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
 import com.jpsoft.smart.config.OSSConfig;
 import com.jpsoft.smart.modules.base.dao.PersonDeviceFilterLogDAO;
 import com.jpsoft.smart.modules.base.dao.PersonDeviceLogDAO;
 import com.jpsoft.smart.modules.base.entity.PersonDeviceFilterLog;
 import com.jpsoft.smart.modules.base.service.PersonDeviceFilterLogService;
+import com.jpsoft.smart.modules.common.dto.Sort;
 import com.jpsoft.smart.modules.common.utils.LApiUtil;
 import com.jpsoft.smart.modules.common.utils.OSSUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -20,6 +23,8 @@ import javax.annotation.Resource;
 import java.io.ByteArrayInputStream;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author 墨鱼_mo
@@ -128,4 +133,41 @@ public class PersonDeviceFilterLogServiceImpl implements PersonDeviceFilterLogSe
 
 
     }
+
+
+    @Override
+    public  Page<PersonDeviceFilterLog> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList){
+        Page<PersonDeviceFilterLog> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+            personDeviceFilterLogDAO.search(searchParams,sortList);
+        });
+
+        return page;
+    }
+
+    @Override
+    public List<PersonDeviceFilterLog> findByPersonAndDate(Long personId,String startDate,String endDate){
+        return personDeviceFilterLogDAO.findByPersonAndDate(personId,startDate,endDate);
+    }
+
+
+    @Override
+    public List<PersonDeviceFilterLog> temperatureNormalStatistics(BigDecimal temperature,String startDate,String endDate){
+        return personDeviceFilterLogDAO.temperatureNormalStatistics(temperature,startDate,endDate);
+    }
+
+    @Override
+    public List<PersonDeviceFilterLog> temperatureUnusualStatistics(BigDecimal temperature,String startDate,String endDate){
+        return personDeviceFilterLogDAO.temperatureUnusualStatistics(temperature,startDate,endDate);
+    }
+
+
+    @Override
+    public List<PersonDeviceFilterLog> list(){
+        return personDeviceFilterLogDAO.list();
+    }
+
+    @Override
+    public List<Map<String, Object>> unusualStatistics(BigDecimal temperature,String startDate,String endDate){
+        return personDeviceFilterLogDAO.unusualStatistics(temperature,startDate,endDate);
+    }
 }

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

@@ -146,4 +146,9 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
 
         return page;
     }
+
+    @Override
+    public List<PersonDeviceLog> findByPersonAndDate(Long personId,String startDate,String endDate){
+        return personDeviceLogDAO.findByPersonAndDate(personId,startDate,endDate);
+    }
 }

+ 3 - 3
common/src/main/java/com/jpsoft/smart/modules/common/utils/POIUtils.java

@@ -408,11 +408,11 @@ public class POIUtils {
                 if (cell != null && StringUtils.isNotEmpty(cell.getStringCellValue())) {
                     Row dataRow2 = destSheet.createRow(destRowIndex);
 
-                    for (int i = 0; i < dataRow1.getLastCellNum(); i++) {
+                    int lastCellNum = Math.min(dataRow1.getLastCellNum(),100);
+
+                    for (int i = 0; i < lastCellNum; i++) {
                         if (dataRow1.getCell(i) != null) {
                             dataRow2.createCell(i).setCellValue((String) getCellValue(0, srcRowIndex, i));
-                        } else {
-                            break;
                         }
                     }
 

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

@@ -121,4 +121,57 @@
         where id_=#{id}
     </update>
 
+    <select id="findByPersonAndDate" 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 record_time desc
+	</select>
+
+
+    <select id="search" parameterType="hashmap" resultMap="PersonDeviceFilterLogMap">
+        <![CDATA[
+			select * from base_person_device_filter_log a left join base_device_info b
+			on  a.device_no = b.device_no left join base_person_info c
+			on a.person_id = c.id_
+		]]>
+        <where>
+            and a.del_flag = false and b.del_flag=false
+            <if test="searchParams.personId != null">
+                and a.person_id = #{searchParams.personId}
+            </if>
+        </where>
+        <foreach item="sort" collection="sortList"  open="order by" separator=",">
+            ${sort.name} ${sort.order}
+        </foreach>
+    </select>
+    <select id="temperatureNormalStatistics"   resultMap="PersonDeviceFilterLogMap">
+        select * from base_person_device_filter_log where del_flag=false
+        <![CDATA[
+          and temperature_ < #{temperature} and record_time >= #{startDate} and record_time <= #{endDate}
+        ]]>
+    </select>
+    <select id="temperatureUnusualStatistics"   resultMap="PersonDeviceFilterLogMap">
+        select * from base_person_device_filter_log where del_flag=false
+        <![CDATA[
+          and temperature_ >= #{temperature} and record_time >= #{startDate} and record_time <= #{endDate}
+        ]]>
+    </select>
+    <select id="list"   resultMap="PersonDeviceFilterLogMap">
+        select * from base_person_device_filter_log where del_flag=false
+    </select>
+
+    <select id="unusualStatistics"   resultMap="PersonDeviceFilterLogMap">
+        select c.name_ as name,count(b.id_) as personCount from base_person_device_filter_log a
+        LEFT JOIN base_person_info b on a.person_id=b.id_
+        LEFT JOIN base_company_info c on b.company_id=c.id_
+        <![CDATA[
+            where a.del_flag=false and a.temperature_ <= #{temperature} and
+            a.record_time >= #{startDate} and a.record_time < #{endDate}
+        ]]>
+        GROUP BY c.id_
+    </select>
+
 </mapper>

+ 9 - 0
common/src/main/resources/mapper/base/PersonDeviceLog.xml

@@ -74,6 +74,15 @@
             </if>
         </where>
     </select>
+    <select id="findByPersonAndDate" resultMap="SimpleMap">
+		select * from base_person_device_log where person_id = #{personId}
+		and del_flag=false
+		<![CDATA[
+           and record_time >= #{startDate} and record_time <= #{endDate}
+        ]]>
+        order by record_time desc
+	</select>
+
     <select id="search" parameterType="hashmap" resultMap="PersonDeviceLogMap">
         <![CDATA[
 			select * from base_person_device_log a left join base_device_info b

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

@@ -675,7 +675,7 @@ public class PersonInfoController {
 
             int affectCount = 0;
             int failCount = 0;
-            int validateColIndex = 9;
+            int validateColIndex = 13;
 
             for(int rowIndex=1 ; rowIndex<=sheet1.getLastRowNum(); rowIndex++){
                 try {

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

@@ -1,17 +1,21 @@
 package com.jpsoft.smart.modules.mobile.controller;
 
 import com.github.pagehelper.Page;
+import com.github.pagehelper.util.StringUtil;
 import com.google.common.collect.Lists;
 import com.jpsoft.smart.modules.base.entity.CompanyInfo;
+import com.jpsoft.smart.modules.base.entity.PersonDeviceFilterLog;
 import com.jpsoft.smart.modules.base.entity.PersonDeviceLog;
 import com.jpsoft.smart.modules.base.entity.PersonInfo;
 import com.jpsoft.smart.modules.base.service.CompanyInfoService;
+import com.jpsoft.smart.modules.base.service.PersonDeviceFilterLogService;
 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 com.jpsoft.smart.modules.common.utils.PojoUtils;
 import com.jpsoft.smart.modules.common.utils.StringUtils;
+import com.jpsoft.smart.modules.sys.entity.User;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -36,6 +40,9 @@ public class PersonDeviceLogApiController {
     @Autowired
     private PersonDeviceLogService personDeviceLogService;
 
+    @Autowired
+    private PersonDeviceFilterLogService personDeviceFilterLogService;
+
     @Autowired
     private CompanyInfoService companyInfoService;
 
@@ -204,4 +211,246 @@ public class PersonDeviceLogApiController {
 
         return messageResult;
     }
+
+
+    @PostMapping("listByPersonIdFourteenDays")
+    @ApiOperation(value="查询个人用户14天内的日志台账")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
+            @ApiImplicitParam(name="subject",value = "目标(不传)",paramType = "form")
+    })
+    public MessageResult<List> listByPersonIdFourteenDays(String token,@RequestAttribute String subject){
+        MessageResult<List> messageResult = new MessageResult<>();
+
+        try {
+            Date now = new Date();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String endDate = sdf.format(now);
+            Calendar rightNow = Calendar.getInstance();
+            rightNow.setTime(now);
+            rightNow.add(Calendar.DATE, -14);
+            Date dt1 = rightNow.getTime();
+            String startDate = sdf.format(dt1);
+
+            PersonInfo person = personInfoService.get(Long.valueOf(subject));
+
+            List<PersonDeviceFilterLog> personDeviceLogList = personDeviceFilterLogService.findByPersonAndDate(person.getId(),startDate,endDate);
+
+            messageResult.setData(personDeviceLogList);
+            messageResult.setResult(true);
+        }
+        catch (Exception ex){
+            messageResult.setMessage(ex.getMessage());
+            messageResult.setResult(false);
+        }
+
+        return messageResult;
+    }
+
+
+    @ApiOperation(value="移动端台账日志列表")
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
+            @ApiImplicitParam(name="subject",value = "目标(不传)",paramType = "form")
+    })
+    public MessageResult<Map> pageList(
+            String token,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            @RequestAttribute String subject){
+
+        //当前用户ID
+        System.out.println(subject);
+
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("a.record_time","desc"));
+
+        PersonInfo person = personInfoService.get(Long.valueOf(subject));
+
+        searchParams.put("personId",person.getId());
+
+        Page<PersonDeviceFilterLog> page = personDeviceFilterLogService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="体温台账饼图统计")
+    @RequestMapping(value = "temperaturePieChart",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="startTime",value = "开始时间(格式:yyyy-MM-dd)",paramType = "form"),
+            @ApiImplicitParam(name="endTime",value = "截止时间(格式:yyyy-MM-dd)",paramType = "form"),
+            @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
+            @ApiImplicitParam(name="subject",value = "目标(不传)",paramType = "form")
+    })
+    public MessageResult<List<Map>> temperaturePieChart(
+            String startTime,String endTime,
+            String token, @RequestAttribute String subject){
+        MessageResult<List<Map>> msgResult = new MessageResult<>();
+        List<Map> listMap = new ArrayList<>();
+        try{
+            String startDate = "";
+            String endDate = "";
+            //37度以上为异常体温
+            BigDecimal bd = new BigDecimal(37);
+
+            if(StringUtil.isNotEmpty(startTime)&&StringUtil.isNotEmpty(endTime)) {
+                startDate = startTime;
+                endDate = endTime;
+            }
+            else{
+                Date now = new Date();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+                Calendar rightNow = Calendar.getInstance();
+                rightNow.setTime(now);
+                rightNow.add(Calendar.DATE, -14);
+
+                Calendar now1 = Calendar.getInstance();
+                now1.setTime(now);
+                now1.add(Calendar.DATE, 1);
+
+                Date dt1 = rightNow.getTime();
+                Date dt2 = now1.getTime();
+                startDate = sdf.format(dt1);
+                endDate = sdf.format(dt2);
+            }
+
+            List<PersonDeviceFilterLog> normalPersonDeviceFilterLogList = personDeviceFilterLogService.temperatureNormalStatistics(bd,startDate,endDate);
+            List<PersonDeviceFilterLog> unusualPersonDeviceFilterLogList = personDeviceFilterLogService.temperatureUnusualStatistics(bd,startDate,endDate);
+
+            Map<String,Object> map1 = new HashMap();
+
+            map1.put("name","体温正常");
+            map1.put("value",normalPersonDeviceFilterLogList.size());
+
+            listMap.add(map1);
+
+            Map<String,Object> map2 = new HashMap();
+
+            map2.put("name","体温异常");
+            map2.put("value",unusualPersonDeviceFilterLogList.size());
+
+            listMap.add(map2);
+
+            msgResult.setResult(true);
+            msgResult.setData(listMap);
+        }
+        catch (Exception ex){
+            msgResult.setMessage(ex.getMessage());
+            msgResult.setResult(false);
+        }
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value="体温台账统计")
+    @RequestMapping(value = "temperatureStatistics",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
+            @ApiImplicitParam(name="subject",value = "目标(不传)",paramType = "form")
+    })
+    public MessageResult<List<Map>> temperatureStatistics(
+            String token, @RequestAttribute String subject){
+        MessageResult<List<Map>> msgResult = new MessageResult<>();
+        List<Map> listMap = new ArrayList<>();
+
+        try{
+            List<PersonDeviceFilterLog> personDeviceFilterLogList = personDeviceFilterLogService.list();
+            Map map = new HashMap();
+            map.put("已检测",personDeviceFilterLogList.size());
+            List<CompanyInfo> companyList = companyInfoService.list();
+            listMap.add(map);
+            Map map1 = new HashMap();
+            map1.put("企业数量",companyList.size());
+            listMap.add(map1);
+            List<PersonInfo> personInfo = personInfoService.list();
+            Map map2 = new HashMap();
+            map2.put("监管人数",personInfo.size());
+            listMap.add(map2);
+
+            msgResult.setResult(true);
+            msgResult.setData(listMap);
+
+        }
+        catch (Exception ex){
+            msgResult.setMessage(ex.getMessage());
+            msgResult.setResult(false);
+        }
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value="异常统计")
+    @RequestMapping(value = "unusualStatistics",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="startTime",value = "开始时间(格式:yyyy-MM-dd)",paramType = "form"),
+            @ApiImplicitParam(name="endTime",value = "截止时间(格式:yyyy-MM-dd)",paramType = "form"),
+            @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
+            @ApiImplicitParam(name="subject",value = "目标(不传)",paramType = "form")
+    })
+    public MessageResult< List<Map<String, Object>>> unusualStatistics(
+            String startTime,String endTime,
+            String token, @RequestAttribute String subject) {
+        MessageResult<List<Map<String, Object>>> msgResult = new MessageResult<>();
+
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        try{
+            String startDate = "";
+            String endDate = "";
+            //37度以上为异常体温
+            BigDecimal bd = new BigDecimal(37);
+
+            if(StringUtil.isNotEmpty(startTime)&&StringUtil.isNotEmpty(endTime)) {
+                startDate = startTime;
+                endDate = endTime;
+            }
+            else{
+                Date now = new Date();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+                Calendar rightNow = Calendar.getInstance();
+                rightNow.setTime(now);
+                rightNow.add(Calendar.DATE, -14);
+
+                Calendar now1 = Calendar.getInstance();
+                now1.setTime(now);
+                now1.add(Calendar.DATE, 1);
+
+                Date dt1 = rightNow.getTime();
+                Date dt2 = now1.getTime();
+                startDate = sdf.format(dt1);
+                endDate = sdf.format(dt2);
+            }
+
+            List<Map<String, Object>> mapList = personDeviceFilterLogService.unusualStatistics(bd,startDate,endDate);
+
+
+            for (Map<String, Object> map:mapList) {
+                if(map.get("name")!=null&&StringUtil.isNotEmpty(map.get("name").toString())){
+                    list.add(map);
+                }
+            }
+
+            msgResult.setResult(true);
+            msgResult.setData(list);
+        }
+        catch (Exception ex){
+            msgResult.setMessage(ex.getMessage());
+            msgResult.setResult(false);
+        }
+
+        return msgResult;
+    }
+
 }