浏览代码

sql语句优化。

zhengqiang 5 年之前
父节点
当前提交
f2f27ab904

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

@@ -1,11 +1,8 @@
 package com.jpsoft.smart.modules.base.dao;
 import com.github.pagehelper.Page;
-import com.jpsoft.smart.modules.base.entity.CompanyInfo;
+import com.jpsoft.smart.modules.base.entity.*;
 import org.apache.ibatis.annotations.Param;
 
-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.common.dto.Sort;
 import org.springframework.stereotype.Repository;
 
@@ -60,7 +57,7 @@ public interface PersonDeviceFilterLogDAO {
 
     Integer countDetectedByCompanyId(String companyId, Date startDate, Date endDate);
 
-    long countUndetectedByCompanyCode(String companyCode,Long personId, Date startTime, Date endTime);
+    long countUndetectedByCompanyCode(String companyCode, List<PersonCompany> personCompanyList, Date startTime, Date endTime);
 
     List<PersonInfo> findUndetectedByCompanyCode(@Param("searchParams") Map<String, Object> searchParams);
 

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

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.json.JSONObject;
 import com.github.pagehelper.Page;
 import com.jpsoft.smart.modules.base.entity.CompanyInfo;
+import com.jpsoft.smart.modules.base.entity.PersonCompany;
 import com.jpsoft.smart.modules.base.entity.PersonDeviceFilterLog;
 import com.jpsoft.smart.modules.base.entity.PersonInfo;
 import com.jpsoft.smart.modules.common.dto.Sort;
@@ -60,7 +61,7 @@ public interface PersonDeviceFilterLogService {
      * @return
      */
     long countByTimeRangeAndCompanyCode(String companyCode,Long personId,int status,float temperatureMax,Date startTime, Date endTime);
-    long countUndetectedByCompanyCode(String companyCode,Long personId, Date startTime, Date endTime);
+    long countUndetectedByCompanyCode(String companyCode, List<PersonCompany> personCompanyList, Date startTime, Date endTime);
 
     Integer getDayAbnormalNum(Date startTime, Date endTime);
 

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

@@ -241,8 +241,8 @@ public class PersonDeviceFilterLogServiceImpl implements PersonDeviceFilterLogSe
     }
 
     @Override
-    public long countUndetectedByCompanyCode(String companyCode, Long personId, Date startTime, Date endTime) {
-        return personDeviceFilterLogDAO.countUndetectedByCompanyCode(companyCode, personId, startTime, endTime);
+    public long countUndetectedByCompanyCode(String companyCode, List<PersonCompany> personCompanyList, Date startTime, Date endTime) {
+        return personDeviceFilterLogDAO.countUndetectedByCompanyCode(companyCode, personCompanyList, startTime, endTime);
     }
 
     @Override

+ 13 - 3
common/src/main/resources/mapper/base/PersonDeviceFilterLog.xml

@@ -296,10 +296,15 @@
         ]]>
         and (
             b.code_ like #{companyCode}
-        <if test="personId!=null">
+<!--        <if test="personId!=null">
             or b.id_ in (
                 select d.company_id from base_person_company d where d.person_id = #{personId}
             )
+        </if>-->
+        <if test="personCompanyList!=null">
+            <foreach collection="personCompanyList" index="index" item="item" open=" or b.id_ in(" separator="," close=")">
+                #{item.companyId}
+            </foreach>
         </if>
         )
     </select>
@@ -382,10 +387,15 @@
         ]]>
         and (
         b.code_ like #{searchParams.companyCode}
-        <if test="searchParams.personId!=null">
+<!--        <if test="personId!=null">
             or b.id_ in (
-                select d.company_id from base_person_company d where d.person_id = #{searchParams.personId}
+            select d.company_id from base_person_company d where d.person_id = #{personId}
             )
+        </if>-->
+        <if test="searchParams.personCompanyList!=null">
+            <foreach collection="searchParams.personCompanyList" index="index" item="item" open=" or b.id_ in(" separator="," close=")">
+                #{item.companyId}
+            </foreach>
         </if>
         )
         order by a.id_ asc

+ 17 - 3
web/src/main/java/com/jpsoft/smart/modules/mobile/controller/PersonDeviceLogApiController.java

@@ -57,6 +57,9 @@ public class PersonDeviceLogApiController {
     @Autowired
     private ValueOperations<String, Object> valueOperations;
 
+    @Autowired
+    private PersonCompanyService personCompanyService;
+
     @PostMapping("queryTemperatureRawRecordList")
     @ApiOperation(value="根据实时数据查看企业人员温度数据")
     @ApiImplicitParams({
@@ -489,7 +492,9 @@ public class PersonDeviceLogApiController {
             long abnormalCount = personDeviceFilterLogService.countByTimeRangeAndCompanyCode(companyInfo.getCode() + "%",personInfo.getId(),
                     -1,temperatureConfig.getMax(),startTime,endTime);
 
-            long undetectedCount = personDeviceFilterLogService.countUndetectedByCompanyCode(companyInfo.getCode() + "%",personInfo.getId(),
+            List<PersonCompany> personCompanyList = personCompanyService.findByPersonId(personInfo.getId());
+
+            long undetectedCount = personDeviceFilterLogService.countUndetectedByCompanyCode(companyInfo.getCode() + "%",personCompanyList,
                     startTime,endTime);
 
             Map<String,Object> map1 = new HashMap();
@@ -639,7 +644,9 @@ public class PersonDeviceLogApiController {
                 }
             }
 
-            long undetectedCount = personDeviceFilterLogService.countUndetectedByCompanyCode(companyInfo.getCode() + "%",personInfo.getId(),startTime,endTime);
+            List<PersonCompany> personCompanyList = personCompanyService.findByPersonId(personInfo.getId());
+
+            long undetectedCount = personDeviceFilterLogService.countUndetectedByCompanyCode(companyInfo.getCode() + "%",personCompanyList,startTime,endTime);
 
             map.put("companyTotalCount",companyTotalCount);
             map.put("personTotalCount",personTotalCount);
@@ -653,6 +660,8 @@ public class PersonDeviceLogApiController {
         catch (Exception ex){
             msgResult.setMessage(ex.getMessage());
             msgResult.setResult(false);
+
+            log.error(ex.getMessage(),ex);
         }
 
         return msgResult;
@@ -693,7 +702,12 @@ public class PersonDeviceLogApiController {
 
             Map<String,Object> searchParams = new HashMap<>();
             searchParams.put("companyCode",companyInfo.getCode() + "%");
-            searchParams.put("personId",personInfo.getId());
+//            searchParams.put("personId",personInfo.getId());
+
+            List<PersonCompany> personCompanyList = personCompanyService.findByPersonId(personInfo.getId());
+
+            searchParams.put("personCompanyList",personCompanyList);
+
             searchParams.put("startTime",startTime);
             searchParams.put("endTime",endTime);