Sfoglia il codice sorgente

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

yanliming 5 anni fa
parent
commit
4a52db3aea
20 ha cambiato i file con 716 aggiunte e 49 eliminazioni
  1. 18 0
      common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonCompanyDAO.java
  2. 4 0
      common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonDeviceLogDAO.java
  3. 58 0
      common/src/main/java/com/jpsoft/smart/modules/base/dto/PersonDeviceLogDTO.java
  4. 63 0
      common/src/main/java/com/jpsoft/smart/modules/base/entity/PersonCompany.java
  5. 6 0
      common/src/main/java/com/jpsoft/smart/modules/base/entity/WarningPusher.java
  6. 17 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/PersonCompanyService.java
  7. 2 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/PersonDeviceLogService.java
  8. 70 0
      common/src/main/java/com/jpsoft/smart/modules/base/service/impl/PersonCompanyServiceImpl.java
  9. 39 34
      common/src/main/java/com/jpsoft/smart/modules/base/service/impl/PersonDeviceLogServiceImpl.java
  10. 1 1
      common/src/main/java/com/jpsoft/smart/modules/common/utils/LApiUtil.java
  11. 6 6
      common/src/main/java/com/jpsoft/smart/modules/common/utils/WechatMessageUtil.java
  12. 1 1
      common/src/main/java/com/jpsoft/smart/modules/lapi/service/ILapiService.java
  13. 91 0
      common/src/main/resources/mapper/base/PersonCompany.xml
  14. 23 0
      common/src/main/resources/mapper/base/PersonDeviceLog.xml
  15. 19 5
      common/src/main/resources/mapper/base/WarningPusher.xml
  16. 3 1
      web/src/main/java/com/jpsoft/smart/config/WebMvcConfig.java
  17. 225 0
      web/src/main/java/com/jpsoft/smart/modules/base/controller/PersonCompanyController.java
  18. 18 1
      web/src/main/java/com/jpsoft/smart/modules/base/controller/WarningPusherController.java
  19. 48 0
      web/src/main/java/com/jpsoft/smart/modules/mobile/controller/PersonDeviceLogApiController.java
  20. 4 0
      web/src/test/java/com/jpsoft/smart/LApiTest.java

+ 18 - 0
common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonCompanyDAO.java

@@ -0,0 +1,18 @@
+package com.jpsoft.smart.modules.base.dao;
+
+import java.util.List;
+import org.springframework.stereotype.Repository;
+import com.jpsoft.smart.modules.base.entity.PersonCompany;
+import java.util.Map;
+import com.jpsoft.smart.modules.common.dto.Sort;
+
+@Repository
+public interface PersonCompanyDAO {
+	int insert(PersonCompany entity);
+	int update(PersonCompany entity);
+	int exist(String id);
+	PersonCompany get(String id);
+	int delete(String id);
+	List<PersonCompany> list();
+	List<PersonCompany> search(Map<String,Object> searchParams,List<Sort> sortList);
+}

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

@@ -24,4 +24,8 @@ public interface PersonDeviceLogDAO {
     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);
+
+    PersonDeviceLog  get(String id);
+
+
 }

+ 58 - 0
common/src/main/java/com/jpsoft/smart/modules/base/dto/PersonDeviceLogDTO.java

@@ -0,0 +1,58 @@
+package com.jpsoft.smart.modules.base.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2020-3-23 11:34
+ */
+@Data
+public class PersonDeviceLogDTO {
+    @ApiModelProperty(value = "ID")
+    private String id;
+    @ApiModelProperty(value = "设备序列号")
+    private String deviceNo;
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+    @ApiModelProperty(value = "人员id")
+    private Integer personId;
+    @ApiModelProperty(value = "人员名称")
+    private String personName;
+    @ApiModelProperty(value = "记录温度")
+    private BigDecimal temperature;
+    @ApiModelProperty(value = "匹配状态")
+    private Integer matchStatus;
+    @ApiModelProperty(value = "匹配信息")
+    private String  matchMsg;
+    @ApiModelProperty(value = "匹配人脸 ID")
+    private Integer  matchFaceId;
+    @ApiModelProperty(value = "图片地址")
+    private String faceImage;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+    @ApiModelProperty(value = "记录时间")
+    private Date recordTime;
+    @ApiModelProperty(value = "是否删除")
+    private Boolean delFlag;
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    @ApiModelProperty(value = "更新人")
+    private String  updateBy;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    @ApiModelProperty(value = "温度是否正常")
+    private Boolean fever;
+
+}

+ 63 - 0
common/src/main/java/com/jpsoft/smart/modules/base/entity/PersonCompany.java

@@ -0,0 +1,63 @@
+package com.jpsoft.smart.modules.base.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+  描述:base_person_company的实体类
+ */
+@Data
+@ApiModel(value = "base_person_company的实体类")
+public class PersonCompany {
+	/**
+	 *编号
+	 */
+        @ApiModelProperty(value = "编号")
+	private String id;
+	/**
+	 *人员编号
+	 */
+        @ApiModelProperty(value = "人员编号")
+	private Long personId;
+	/**
+	 *单位编号
+	 */
+        @ApiModelProperty(value = "单位编号")
+	private String companyId;
+	/**
+	 *是否删除
+	 */
+        @ApiModelProperty(value = "是否删除")
+	private Boolean delFlag;
+	/**
+	 *创建人
+	 */
+        @ApiModelProperty(value = "创建人")
+	private String createBy;
+	/**
+	 *创建时间
+	 */
+    	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	    @ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 *更新人
+	 */
+        @ApiModelProperty(value = "更新人")
+	private String updateBy;
+	/**
+	 *更新时间
+	 */
+    	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	    @ApiModelProperty(value = "更新时间")
+	private Date updateTime;
+}

+ 6 - 0
common/src/main/java/com/jpsoft/smart/modules/base/entity/WarningPusher.java

@@ -26,6 +26,12 @@ public class WarningPusher {
 	 */
         @ApiModelProperty(value = "所属公司编号")
 	private String companyId;
+
+	/**
+	 *所属公司编号
+	 */
+	@ApiModelProperty(value = "所属公司名称")
+	private String companyName;
 	/**
 	 *最大测温次数
 	 */

+ 17 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/PersonCompanyService.java

@@ -0,0 +1,17 @@
+package com.jpsoft.smart.modules.base.service;
+
+import java.util.List;
+import java.util.Map;
+import com.jpsoft.smart.modules.base.entity.PersonCompany;
+import com.github.pagehelper.Page;
+import com.jpsoft.smart.modules.common.dto.Sort;
+
+public interface PersonCompanyService {
+	PersonCompany get(String id);
+	boolean exist(String id);
+	int insert(PersonCompany model);
+	int update(PersonCompany model);
+	int delete(String id);
+	List<PersonCompany> list();
+	Page<PersonCompany> pageSearch(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/PersonDeviceLogService.java

@@ -30,4 +30,6 @@ public interface PersonDeviceLogService {
     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);
+
+    PersonDeviceLog get(String id);
 }

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

@@ -0,0 +1,70 @@
+package com.jpsoft.smart.modules.base.service.impl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import javax.annotation.Resource;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import com.jpsoft.smart.modules.base.dao.PersonCompanyDAO;
+import com.jpsoft.smart.modules.base.entity.PersonCompany;
+import com.jpsoft.smart.modules.base.service.PersonCompanyService;
+import com.github.pagehelper.Page;
+import com.jpsoft.smart.modules.common.dto.Sort;
+import com.github.pagehelper.PageHelper;
+
+@Transactional
+@Component(value="personCompanyService")
+public class PersonCompanyServiceImpl implements PersonCompanyService {
+	@Resource(name="personCompanyDAO")
+	private PersonCompanyDAO personCompanyDAO;
+
+	@Override
+	public PersonCompany get(String id) {
+		// TODO Auto-generated method stub
+		return personCompanyDAO.get(id);
+	}
+
+	@Override
+	public int insert(PersonCompany model) {
+		// TODO Auto-generated method stub
+		//model.setId(UUID.randomUUID().toString());
+		
+		return personCompanyDAO.insert(model);
+	}
+
+	@Override
+	public int update(PersonCompany model) {
+		// TODO Auto-generated method stub
+		return personCompanyDAO.update(model);		
+	}
+
+	@Override
+	public int delete(String id) {
+		// TODO Auto-generated method stub
+		return personCompanyDAO.delete(id);
+	}
+
+	@Override
+	public boolean exist(String id) {
+		// TODO Auto-generated method stub
+		int count = personCompanyDAO.exist(id);
+		
+		return count > 0 ? true : false;
+	}
+	
+	@Override
+	public List<PersonCompany> list() {
+		// TODO Auto-generated method stub
+		return personCompanyDAO.list();
+	}
+		
+	@Override
+	public Page<PersonCompany> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
+        Page<PersonCompany> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+            personCompanyDAO.search(searchParams,sortList);
+        });
+        
+        return page;
+	}
+}

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

@@ -6,11 +6,9 @@ import com.github.pagehelper.PageHelper;
 import com.jpsoft.smart.config.OSSConfig;
 import com.jpsoft.smart.config.WxConfig;
 import com.jpsoft.smart.modules.base.dao.*;
-import com.jpsoft.smart.modules.base.entity.CompanyInfo;
-import com.jpsoft.smart.modules.base.entity.DeviceInfo;
-import com.jpsoft.smart.modules.base.entity.PersonDeviceLog;
-import com.jpsoft.smart.modules.base.entity.PersonInfo;
+import com.jpsoft.smart.modules.base.entity.*;
 import com.jpsoft.smart.modules.base.service.PersonDeviceLogService;
+import com.jpsoft.smart.modules.base.service.WarningPusherService;
 import com.jpsoft.smart.modules.common.dto.Sort;
 import com.jpsoft.smart.modules.common.utils.*;
 import com.jpsoft.smart.modules.common.utils.Base64;
@@ -46,6 +44,8 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
     @Autowired
     private WxConfig wxConfig;
 
+    @Autowired
+    private WarningPusherService warningPusherService;
 
 
     @Resource(name = "personDeviceLogDAO")
@@ -61,7 +61,6 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
     private DeviceInfoDAO deviceInfoDAO;
 
 
-
     @Override
     public void deviceInsertLog(String deviceNo, BigDecimal temperature, JSONObject faceImageJson, JSONObject libMatInfoListJson, JSONObject matchPersonInfo, Date date) {
         String retFileUrl = "";
@@ -83,7 +82,6 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
             retFileUrl = OSSUtil.upload(ossConfig, "/devicePersonLog", faceImageJson.getStr("Name"), inputStream);
         } catch (Exception e) {
             log.error("保存图片路径错误" + e.getMessage());
-            //  e.printStackTrace();
         }
 
 
@@ -108,12 +106,9 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
         personDeviceLog.setFaceImage(retFileUrl);
         personDeviceLogDAO.insert(personDeviceLog);
 
-        //人员识别成功,温度超过37.3时发送模板消息给监管者
+        //人员识别成功,温度超过限定时发送模板消息给监管者
         if (personDeviceLog.getPersonId() != 0) {
-            if (temperature.compareTo(new BigDecimal(37.3)) == 1) {
-                sendTemperatureAlarmsyncTask(personDeviceLog);
-            }
-
+            sendTemperatureAlarmsyncTask(personDeviceLog);
         }
 
     }
@@ -122,33 +117,38 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
     public void sendTemperatureAlarmsyncTask(PersonDeviceLog personDeviceLog) {
 
         try {
-            Map<String, Object> searchParams = new HashMap<>();
-            searchParams.put("deviceNo",personDeviceLog.getDeviceNo() );
-            searchParams.put("personId", personDeviceLog.getPersonId());
-            searchParams.put("minTemperature", new BigDecimal(37.3));
-            searchParams.put("beginTime",new Date(personDeviceLog.getRecordTime().getTime() - 300000));
-            List<Sort> sortList = new ArrayList<>();
-            sortList.add(new Sort("record_time","desc"));
-            List<PersonDeviceLog> personDeviceLogList = personDeviceLogDAO.search(searchParams,sortList);
-            if (personDeviceLogList.size()>=3){
-                PersonInfo personInfo =  personInfoDAO.get(personDeviceLog.getPersonId().longValue());
-                if (personInfo == null){
-                    throw new Exception(personDeviceLog.getPersonId()+"对应的人员不存在");
-                }
-                CompanyInfo companyInfo = companyInfoDAO.get(personInfo.getCompanyId());
-                if (companyInfo == null){
-                    throw new Exception(personInfo.getName()+"对应的公司不存在");
-                }
-                DeviceInfo deviceInfo = deviceInfoDAO.findByDeviceNo(personDeviceLog.getDeviceNo());
-                if (deviceInfo == null){
-                    throw new Exception(personDeviceLog.getDeviceNo()+"设备不存在");
+            PersonInfo personInfo = personInfoDAO.get(personDeviceLog.getPersonId().longValue());
+            if (personInfo == null) {
+                throw new Exception(personDeviceLog.getPersonId() + "对应的人员不存在");
+            }
+            CompanyInfo companyInfo = companyInfoDAO.get(personInfo.getCompanyId());
+            if (companyInfo == null) {
+                throw new Exception(personInfo.getName() + "对应的公司不存在");
+            }
+            DeviceInfo deviceInfo = deviceInfoDAO.findByDeviceNo(personDeviceLog.getDeviceNo());
+            if (deviceInfo == null) {
+                throw new Exception(personDeviceLog.getDeviceNo() + "设备不存在");
+            }
+            List<WarningPusher> warningPusherList = warningPusherService.findByCompanyId(personInfo.getCompanyId());
+            if (warningPusherList.size() <= 0) {
+                throw new Exception("对应公司没有体温报警监管者");
+            }
+            for (WarningPusher warningPusher : warningPusherList) {
+                Map<String, Object> searchParams = new HashMap<>();
+                searchParams.put("deviceNo", personDeviceLog.getDeviceNo());
+                searchParams.put("personId", personDeviceLog.getPersonId());
+                searchParams.put("minTemperature", warningPusher.getTemperature());
+                searchParams.put("beginTime", new Date(personDeviceLog.getRecordTime().getTime() - 300000));
+                List<Sort> sortList = new ArrayList<>();
+                sortList.add(new Sort("record_time", "desc"));
+                List<PersonDeviceLog> personDeviceLogList = personDeviceLogDAO.search(searchParams, sortList);
+                if (personDeviceLogList.size() >= warningPusher.getTimes()) {
+                    WechatMessageUtil.sendTemperatureAlarmInfo(warningPusher.getOpenId(), companyInfo.getName() + "_" + deviceInfo.getAliasName(), wxConfig.getAppId(), wxConfig.getAppSecret(),personDeviceLog.getId());
                 }
-
-                WechatMessageUtil.sendTemperatureAlarmInfo("oLowyuM2vn3HHZU6NvYSNoLoeZcc",companyInfo.getName()+"_"+deviceInfo.getAliasName(),wxConfig.getAppId(),wxConfig.getAppSecret(),"Mg9Ldk_kaoHAUwXFHEatrGugTlOz3yrMmMk7VoBca4M");
             }
 
         } catch (Exception e) {
-            log.error(e.getMessage());
+            log.error(e.getMessage(), e);
         }
 
     }
@@ -172,6 +172,11 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
         return page;
     }
 
+    @Override
+    public PersonDeviceLog get(String id) {
+        return personDeviceLogDAO.get(id);
+    }
+
     @Override
     public List<PersonDeviceLog> findByPersonAndDate(Long personId, String startDate, String endDate) {
         return personDeviceLogDAO.findByPersonAndDate(personId, startDate, endDate);

+ 1 - 1
common/src/main/java/com/jpsoft/smart/modules/common/utils/LApiUtil.java

@@ -15,7 +15,7 @@ import java.util.HashMap;
 @Slf4j
 @Component
 public class LApiUtil {
-    private final static int TIMEOUT = 20*1000;
+    private final static int TIMEOUT = 10*1000;
 
     public static JSONObject PostRequest(String url,HashMap map){
         String body = HttpRequest.post(url)

+ 6 - 6
common/src/main/java/com/jpsoft/smart/modules/common/utils/WechatMessageUtil.java

@@ -20,7 +20,7 @@ public class WechatMessageUtil {
 
 	private static final String TEMPLATE_REDIRECT_PRE_URL = "http://wuyeopenlocktest-wecat.sudaonline.net";
 
-	private static final String TEMPERATURE_ALARM_PRE_URL = "http://wisdomhousewechat.sudaonline.net/123.jpg";
+	private static final String TEMPERATURE_ALARM_PRE_URL = "http://wisdomhousewechat.sudaonline.net/prevention/addetail_fll.html?id=";
 
 
 
@@ -377,12 +377,12 @@ public class WechatMessageUtil {
 	 * @param place
 	 * @param appId
 	 * @param appSecret
-	 * @param templateId
 	 * @return
 	 */
-	public static boolean sendTemperatureAlarmInfo( String openId,String place,String appId,String appSecret,String templateId) {
+	public static boolean sendTemperatureAlarmInfo( String openId,String place,String appId,String appSecret,String personDeviceLogId) {
 
 
+        String templateId = "Mg9Ldk_kaoHAUwXFHEatrGugTlOz3yrMmMk7VoBca4M";
 		JSONObject sendData = new JSONObject();
 
 		JSONObject first = new JSONObject();
@@ -408,8 +408,8 @@ public class WechatMessageUtil {
 		sendData.put("keyword2", keyword2);
 		sendData.put("remark", remark);
 
-		//w8Zk_VQMFIEVSIBPZid7zSrvHmBdrgnqF76u8PLCZEs cs
-		boolean ret = sendTemplate(sendData, appId,appSecret,templateId,openId, TEMPERATURE_ALARM_PRE_URL);
+
+		boolean ret = sendTemplate(sendData, appId,appSecret,templateId,openId, TEMPERATURE_ALARM_PRE_URL+personDeviceLogId);
 
 		return ret;
 	}
@@ -470,7 +470,7 @@ public class WechatMessageUtil {
 
 		//sendAlarmNoticeMessage("周界入侵警报", "周界入侵,目标ID:1419,区域范围:(0.327,0.698)(0.674,0.936)(0.67,0.985)(0.352,0.973)", "oHjCawgwCGen5k1-hAsimdEX5lZo", "","8dpP8XM1XaiiIByXiuAeFIZeNjEow1AleG_h8O2xyVA","wx7e70eb62a8459869","909d17e353268da57c4f18cc09798049");
 		//sendNoticeMessage("测试", "sdfsdfasfasdfafasdfasdf", "oHjCawgwCGen5k1-hAsimdEX5lZo", "2222","vsw6sb9lMA3bcsE8MdeaGENvI1HSUy2ht9B8hS3jEzA","wx7e70eb62a8459869","909d17e353268da57c4f18cc09798049");
-		sendTemperatureAlarmInfo("oLowyuOQ9ULF3LUGt6h3fTrsnbVE","荆鹏软件_门房考勤机","wx0b3c41a903053808","43557bd62f77b0c3d6670e991872f0e7","Mg9Ldk_kaoHAUwXFHEatrGugTlOz3yrMmMk7VoBca4M");
+		//sendTemperatureAlarmInfo("oLowyuOQ9ULF3LUGt6h3fTrsnbVE","荆鹏软件_门房考勤机","wx0b3c41a903053808","43557bd62f77b0c3d6670e991872f0e7","Mg9Ldk_kaoHAUwXFHEatrGugTlOz3yrMmMk7VoBca4M");
 		getContent("<p>内容</p>");
 
 	}

+ 1 - 1
common/src/main/java/com/jpsoft/smart/modules/lapi/service/ILapiService.java

@@ -53,7 +53,7 @@ public interface ILapiService {
 
 
     /**
-     * 根据设备编码和人员id删除数据
+     * 根据设备ID和人员id删除数据
      * @param id 人员id
      * @param deviceIds 设备id(多个以逗号隔开)
      * @return

+ 91 - 0
common/src/main/resources/mapper/base/PersonCompany.xml

@@ -0,0 +1,91 @@
+<?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">
+<!-- namespace必须指向DAO接口 -->
+<mapper namespace="com.jpsoft.smart.modules.base.dao.PersonCompanyDAO">
+	<resultMap id="PersonCompanyMap" type="com.jpsoft.smart.modules.base.entity.PersonCompany">
+		<id property="id" column="id_" />
+			<result property="personId" column="person_id" />
+			<result property="companyId" column="company_id" />
+			<result property="delFlag" column="del_flag" />
+			<result property="createBy" column="create_by" />
+			<result property="createTime" column="create_time" />
+			<result property="updateBy" column="update_by" />
+			<result property="updateTime" column="update_time" />
+			</resultMap>
+	<insert id="insert" parameterType="com.jpsoft.smart.modules.base.entity.PersonCompany">
+	<!--
+	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+		select sys_guid() from dual
+	</selectKey>
+	-->
+	<![CDATA[
+		insert into base_person_company
+	    (id_,person_id,company_id,del_flag,create_by,create_time,update_by,update_time)
+		values
+		(
+#{id,jdbcType=VARCHAR}
+,#{personId,jdbcType= NUMERIC }
+,#{companyId,jdbcType=VARCHAR}
+,#{delFlag,jdbcType= NUMERIC }
+,#{createBy,jdbcType=VARCHAR}
+,#{createTime,jdbcType= TIMESTAMP }
+,#{updateBy,jdbcType=VARCHAR}
+,#{updateTime,jdbcType= TIMESTAMP }
+		)
+	]]>
+	</insert>
+	<delete id="delete" parameterType="string">
+		delete from base_person_company where id_=#{id,jdbcType=VARCHAR}
+	</delete>
+	<update id="update" parameterType="com.jpsoft.smart.modules.base.entity.PersonCompany">
+		update base_person_company
+		<set>
+				<if test="personId!=null">
+		person_id=#{personId,jdbcType= NUMERIC },
+		</if>
+				<if test="companyId!=null">
+		company_id=#{companyId,jdbcType=VARCHAR},
+		</if>
+				<if test="delFlag!=null">
+		del_flag=#{delFlag,jdbcType= NUMERIC },
+		</if>
+				<if test="createBy!=null">
+		create_by=#{createBy,jdbcType=VARCHAR},
+		</if>
+				<if test="createTime!=null">
+		create_time=#{createTime,jdbcType= TIMESTAMP },
+		</if>
+				<if test="updateBy!=null">
+		update_by=#{updateBy,jdbcType=VARCHAR},
+		</if>
+				<if test="updateTime!=null">
+		update_time=#{updateTime,jdbcType= TIMESTAMP },
+		</if>
+		</set>
+	where id_=#{id}
+	</update>
+	<select id="get" parameterType="string" resultMap="PersonCompanyMap">
+		select 
+id_,person_id,company_id,del_flag,create_by,create_time,update_by,update_time		from base_person_company where id_=#{0}
+	</select>
+	<select id="exist" parameterType="string" resultType="int">
+		select count(*) from base_person_company where id_=#{0}
+	</select>
+	<select id="list" resultMap="PersonCompanyMap">
+		select * from base_person_company
+	</select>
+	<select id="search" parameterType="hashmap" resultMap="PersonCompanyMap">
+		<![CDATA[
+			select * from base_person_company
+		]]>
+		<where>
+			<if test="searchParams.id != null">
+				and ID_ like #{searchParams.id}
+			</if>
+		</where>
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+	        ${sort.name} ${sort.order}
+	 	</foreach>
+	</select>
+</mapper>

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

@@ -3,6 +3,25 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.smart.modules.base.dao.PersonDeviceLogDAO">
+    <sql id="Base_Column_List">
+	device_no,
+	person_id,
+	id_,
+	create_by,
+	create_time,
+	update_by,
+	update_time,
+	is_effective,
+	del_flag,
+	device_no,
+	person_id,
+	temperature_,
+	match_status,
+	match_msg,
+	match_face_id,
+	face_image,
+	record_time
+</sql>
     <resultMap id="SimpleMap" type="com.jpsoft.smart.modules.base.entity.PersonDeviceLog">
         <id property="id" column="id_" />
         <result property="createBy" column="create_by" />
@@ -142,4 +161,8 @@
         </foreach>
     </select>
 
+    <select id="get" resultMap="SimpleMap">
+        select * from base_person_device_log where id_=#{0}
+    </select>
+
 </mapper>

+ 19 - 5
common/src/main/resources/mapper/base/WarningPusher.xml

@@ -6,6 +6,7 @@
     <resultMap id="WarningPusherMap" type="com.jpsoft.smart.modules.base.entity.WarningPusher">
         <id property="id" column="id_"/>
         <result property="companyId" column="company_id"/>
+        <result property="companyName" column="company_name"/>
         <result property="times" column="times_"/>
         <result property="temperature" column="temperature_"/>
         <result property="name" column="name_"/>
@@ -94,20 +95,33 @@
         select
         id_,company_id,times_,temperature_,name_,phone_,open_id,remark_,del_flag,create_by,create_time,update_by,update_time
         from base_warning_pusher where id_=#{0}
+        and del_flag = 0
     </select>
     <select id="exist" parameterType="string" resultType="int">
-        select count(*) from base_warning_pusher where id_=#{0}
+        select count(*) from base_warning_pusher where id_=#{0} and del_flag = 0
     </select>
     <select id="list" resultMap="WarningPusherMap">
-        select * from base_warning_pusher
+        select * from base_warning_pusher where del_flag = 0
     </select>
     <select id="search" parameterType="hashmap" resultMap="WarningPusherMap">
         <![CDATA[
-			select * from base_warning_pusher
+			select a.*,b.name_ as company_name
+			from base_warning_pusher a left join base_company_info b
+			on a.company_id = b.id_
 		]]>
         <where>
+            a.del_flag = 0
             <if test="searchParams.id != null">
-                and ID_ like #{searchParams.id}
+                and a.ID_ like #{searchParams.id}
+            </if>
+            <if test="searchParams.name != null">
+                and a.name_ like #{searchParams.name}
+            </if>
+            <if test="searchParams.phone != null">
+                and a.phone_ like #{searchParams.phone}
+            </if>
+            <if test="searchParams.companyId != null">
+                and a.company_id = #{searchParams.companyId}
             </if>
         </where>
         <foreach item="sort" collection="sortList" open="order by" separator=",">
@@ -115,6 +129,6 @@
         </foreach>
     </select>
     <select id="findByCompanyId" resultMap="WarningPusherMap">
-        select * from base_warning_pusher where company_id=#{companyId}
+        select * from base_warning_pusher where company_id=#{companyId} and del_flag = 0
     </select>
 </mapper>

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

@@ -65,6 +65,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/mobile/personInfoApi/findByNameAndPhone")
 				.excludePathPatterns("/mobile/personInfoApi/getVerifyCode")
 				.excludePathPatterns("/mobile/personInfoApi/validateCode")
-				.excludePathPatterns("/mobile/personInfoApi/findByOpenId");
+				.excludePathPatterns("/mobile/personInfoApi/findByOpenId")
+				.excludePathPatterns("/mobile/personDeviceLogApi/detail")
+		;
 	}
 }

+ 225 - 0
web/src/main/java/com/jpsoft/smart/modules/base/controller/PersonCompanyController.java

@@ -0,0 +1,225 @@
+package com.jpsoft.smart.modules.base.controller;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.smart.modules.common.utils.PojoUtils;
+import com.jpsoft.smart.modules.common.dto.Sort;
+import com.jpsoft.smart.modules.common.dto.MessageResult;
+import com.jpsoft.smart.modules.base.entity.PersonCompany;
+import com.jpsoft.smart.modules.base.service.PersonCompanyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@RestController
+@RequestMapping("/personCompany")
+@Api(description = "personCompany")
+public class PersonCompanyController {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private PersonCompanyService personCompanyService;
+
+    @ApiOperation(value="创建空记录")
+    @GetMapping("create")
+    public MessageResult<PersonCompany> create(){
+        MessageResult<PersonCompany> msgResult = new MessageResult<>();
+
+        PersonCompany personCompany = new PersonCompany();
+
+        msgResult.setData(personCompany);
+        msgResult.setResult(true);
+
+        return msgResult;
+    }
+    
+    @ApiOperation(value="添加信息")
+    @PostMapping("add")
+    public MessageResult<PersonCompany> add(@RequestBody PersonCompany personCompany,@RequestAttribute String subject){
+        MessageResult<PersonCompany> msgResult = new MessageResult<>();
+
+        try {
+            personCompany.setId(UUID.randomUUID().toString());
+            personCompany.setDelFlag(false);
+            personCompany.setCreateBy(subject);
+            personCompany.setCreateTime(new Date());
+            
+            int affectCount = personCompanyService.insert(personCompany);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(personCompany);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库添加失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="获取信息")
+    @GetMapping("edit/{id}")
+    public MessageResult<PersonCompany> edit(@PathVariable("id") String id){
+        MessageResult<PersonCompany> msgResult = new MessageResult<>();
+
+        try {
+            PersonCompany personCompany = personCompanyService.get(id);
+
+            if (personCompany != null) {
+                msgResult.setResult(true);
+                msgResult.setData(personCompany);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库不存在该记录!");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="更新用户")
+    @PostMapping("update")
+    public MessageResult<PersonCompany> update(@RequestBody PersonCompany personCompany,@RequestAttribute String subject){
+        MessageResult<PersonCompany> msgResult = new MessageResult<>();
+
+        try {
+            personCompany.setUpdateBy(subject);
+            personCompany.setUpdateTime(new Date());
+            
+            int affectCount = personCompanyService.update(personCompany);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(personCompany);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库更新失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+	@ApiOperation(value="删除")
+    @PostMapping("delete/{id}")
+    public MessageResult<Integer> delete(@PathVariable("id") String id,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            PersonCompany personCompany = personCompanyService.get(id);
+            personCompany.setDelFlag(true);
+            personCompany.setUpdateBy(subject);
+            personCompany.setUpdateTime(new Date());
+
+            int affectCount = personCompanyService.update(personCompany);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value="批量删除")
+    @PostMapping("batchDelete")
+    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            int affectCount = 0;
+
+            for (String id : idList) {
+                PersonCompany personCompany = personCompanyService.get(id);
+                personCompany.setDelFlag(true);
+                personCompany.setUpdateBy(subject);
+                personCompany.setUpdateTime(new Date());
+
+                affectCount += personCompanyService.update(personCompany);
+            }
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="列表")
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
+            String id,
+            @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("id_","asc"));
+
+        if (StringUtils.isNotEmpty(id)) {
+            searchParams.put("id","%" + id + "%");
+        }
+
+        Page<PersonCompany> page = personCompanyService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+}

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

@@ -197,8 +197,16 @@ public class WarningPusherController {
 
     @ApiOperation(value="列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name",value = "姓名", required = false, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "phone",value = "手机号", required = false, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "companyId",value = "企业id", required = false, paramType = "form",dataType = "String")
+    })
     public MessageResult<Map> pageList(
             String id,
+            @RequestParam(value="name",defaultValue="") String name,
+            @RequestParam(value="companyId",defaultValue="") String companyId,
+            @RequestParam(value="phone",defaultValue="") String phone,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             @RequestAttribute String subject){
@@ -211,11 +219,20 @@ public class WarningPusherController {
         Map<String,Object> searchParams = new HashMap<>();
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+        sortList.add(new Sort("b.sort_no","asc"));
 
         if (StringUtils.isNotEmpty(id)) {
             searchParams.put("id","%" + id + "%");
         }
+        if (StringUtils.isNotEmpty(name)) {
+            searchParams.put("name","%" + name + "%");
+        }
+        if (StringUtils.isNotEmpty(phone)) {
+            searchParams.put("phone","%" + phone + "%");
+        }
+        if (StringUtils.isNotEmpty(companyId)) {
+            searchParams.put("companyId",companyId);
+        }
 
         Page<WarningPusher> page = warningPusherService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
 

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

@@ -3,6 +3,8 @@ 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.dto.PersonDeviceFilterLogDTO;
+import com.jpsoft.smart.modules.base.dto.PersonDeviceLogDTO;
 import com.jpsoft.smart.modules.base.entity.*;
 import com.jpsoft.smart.modules.base.service.*;
 import com.jpsoft.smart.modules.common.dto.MessageResult;
@@ -618,4 +620,50 @@ public class PersonDeviceLogApiController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="体温记录(异常)")
+    @RequestMapping(value = "detail",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="token",value = "令牌",required = true,paramType = "form"),
+            @ApiImplicitParam(name="id",value = "编号",paramType = "form")
+    })
+    public MessageResult<PersonDeviceLogDTO> detail(String id, String token){
+        MessageResult<PersonDeviceLogDTO> msgResult = new MessageResult<>();
+
+        try {
+            PersonDeviceLog personDeviceLog = personDeviceLogService.get(id);
+            PersonDeviceLogDTO personDeviceLogDTO = new PersonDeviceLogDTO();
+
+            if (personDeviceLog != null) {
+                PojoUtils.map(personDeviceLog, personDeviceLogDTO);
+
+                DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(personDeviceLog.getDeviceNo());
+                PersonInfo personInfo = personInfoService.get(Long.valueOf(personDeviceLog.getPersonId()));
+
+                if(deviceInfo != null) {
+                    personDeviceLogDTO.setDeviceName(deviceInfo.getAliasName());
+                }
+                if(personInfo != null) {
+                    personDeviceLogDTO.setPersonName(personInfo.getName());
+                }
+
+                personDeviceLogDTO.setFever(true);
+
+
+                msgResult.setResult(true);
+                msgResult.setData(personDeviceLogDTO);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库不存在该记录!");
+            }
+        }
+        catch(Exception ex){
+            log.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }

+ 4 - 0
web/src/test/java/com/jpsoft/smart/LApiTest.java

@@ -1,6 +1,8 @@
 package com.jpsoft.smart;
 
+import com.jpsoft.smart.modules.base.dto.PersonDeviceLogDTO;
 import com.jpsoft.smart.modules.base.entity.DeviceInfo;
+import com.jpsoft.smart.modules.common.dto.MessageResult;
 import com.jpsoft.smart.modules.lapi.service.ILapiService;
 import com.jpsoft.smart.modules.lapi.vo.LapiMsgResult;
 import com.jpsoft.smart.modules.lapi.vo.LapiResult;
@@ -159,4 +161,6 @@ public class LApiTest {
 
     }
 
+
+
 }