Browse Source

提交:幼儿检测

mine
袁强 3 months ago
parent
commit
6f97d57877
  1. 71
      yq-admin/src/main/java/yq/web/controller/behaviorDetection/BehaviorDetectionController.java
  2. 70
      yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java
  3. 46
      yq-system/src/main/java/yq/system/domain/BehaviorDetection.java
  4. 27
      yq-system/src/main/java/yq/system/domain/vo/BehaviorDetectionVo.java
  5. 24
      yq-system/src/main/java/yq/system/mapper/BehaviorDetectionMapper.java
  6. 25
      yq-system/src/main/java/yq/system/service/IBehaviorDetectionService.java
  7. 54
      yq-system/src/main/java/yq/system/service/impl/BehaviorDetectionServiceImpl.java
  8. 96
      yq-system/src/main/resources/mapper/system/BehaviorDetectionMapper.xml
  9. 2
      yq-system/src/main/resources/mapper/system/MineFaceMapper.xml

71
yq-admin/src/main/java/yq/web/controller/behaviorDetection/BehaviorDetectionController.java

@ -0,0 +1,71 @@
package yq.web.controller.behaviorDetection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import yq.common.core.controller.BaseController;
import yq.common.core.domain.AjaxResult;
import yq.common.core.page.TableDataInfo;
import yq.framework.config.ServerConfig;
import yq.system.domain.BehaviorDetection;
import yq.system.service.IBehaviorDetectionService;
import yq.system.service.IMineFaceService;
import java.util.List;
import static yq.common.utils.PageUtils.startPage;
/**
* @auther yq
* @data 2025/3/14
*/
@RestController
@RequestMapping("/system/behaviorDetection")
public class BehaviorDetectionController extends BaseController {
@Autowired
private IMineFaceService mineFaceService;
@Autowired
private IBehaviorDetectionService behaviorDetectionService;
/**
* 查询请填写功能名称列表
*/
@GetMapping("/list")
public TableDataInfo list(BehaviorDetection behaviorDetection)
{
startPage();
List<BehaviorDetection> list = behaviorDetectionService.list(behaviorDetection);
return getDataTable(list);
}
/**
* 查询请填写功能名称列表
*/
@GetMapping("/getFaceLatest")
public AjaxResult getFaceLatest(String behaviorType)
{
BehaviorDetection behaviorDetection = behaviorDetectionService.getFaceLatest(behaviorType);
return AjaxResult.success(behaviorDetection);
}
/**
* 查询请填写功能名称列表
*/
@GetMapping("/saveBehavior")
public void saveBehavior(BehaviorDetection behaviorDetection)
{
behaviorDetectionService.saveBehavior(behaviorDetection);
}
@GetMapping("/updateBehavior")
public void updateBehavior(BehaviorDetection behaviorDetection)
{
behaviorDetectionService.updateBehavior(behaviorDetection);
}
}

70
yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java

@ -12,26 +12,26 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import yq.common.annotation.Log;
import yq.common.core.controller.BaseController;
import yq.common.core.domain.AjaxResult;
import yq.common.core.domain.entity.SysDevice;
import yq.common.core.domain.entity.SysTicket;
import yq.common.core.domain.vo.SysDeviceVo;
import yq.common.core.page.TableDataInfo;
import yq.common.core.redis.RedisCache;
import yq.common.enums.BusinessType;
import yq.common.exception.ServiceException;
import yq.common.utils.DateUtils;
import yq.common.utils.EzvizUtil;
import yq.common.utils.FaceEnginUtil;
import yq.system.domain.BehaviorDetection;
import yq.system.domain.MineFace;
import yq.system.domain.MineWarning;
import yq.system.domain.vo.FaceByteVo;
import yq.system.service.IMineFaceService;
import yq.system.service.IMineWarningService;
import yq.system.service.ISysDeviceService;
import yq.system.service.*;
import yq.common.utils.FileUploadUtil;
import yq.system.service.ISysTicketService;
import java.io.File;
import java.io.IOException;
@ -42,6 +42,8 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import static yq.common.utils.PageUtils.startPage;
/**
* @Author yuanqiang
* @Date 2023/8/17 10:14
@ -50,7 +52,7 @@ import java.util.Map;
@RestController
@RequestMapping("/nologin")
public class NoLogin {
public class NoLogin extends BaseController {
@Autowired
@ -61,7 +63,8 @@ public class NoLogin {
private IMineWarningService mineWarningService;
@Autowired
private RedisCache redisCache;
@Autowired
private IBehaviorDetectionService behaviorDetectionService;
@Autowired
private IMineFaceService mineFaceService;
@ -181,6 +184,61 @@ public class NoLogin {
/**
* 查询请填写功能名称列表
*/
// @PreAuthorize("@ss.hasPermi('system:behavior:list')")
@GetMapping("/getFaceLatest")
public AjaxResult getFaceLatest(String behaviorType)
{
BehaviorDetection behaviorDetection = behaviorDetectionService.getFaceLatest(behaviorType);
return AjaxResult.success(behaviorDetection);
}
/**
* 查询请填写功能名称列表
*/
@PostMapping("/saveBehavior")
public void saveBehavior(@RequestBody BehaviorDetection behaviorDetection)
{
behaviorDetectionService.saveBehavior(behaviorDetection);
}
@PostMapping("/updateBehavior")
public void updateBehavior(@RequestBody BehaviorDetection behaviorDetection)
{
behaviorDetectionService.updateBehavior(behaviorDetection);
}
/**
* 查询请填写功能名称列表
*/
@GetMapping("/listBehaviorDetection")
public TableDataInfo list(BehaviorDetection behaviorDetection)
{
startPage();
List<BehaviorDetection> list = behaviorDetectionService.list(behaviorDetection);
return getDataTable(list);
}
/**
* 统计
*/
@GetMapping("/behaviorCount")
public List<Map<String,Object>> behaviorCount()
{
return behaviorDetectionService.behaviorCount();
}
@GetMapping("/behaviorTypeCount")
public List<Map<String,Object>> behaviorTypeCount()
{
return behaviorDetectionService.behaviorTypeCount();
}
}

46
yq-system/src/main/java/yq/system/domain/BehaviorDetection.java

@ -0,0 +1,46 @@
package yq.system.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import yq.common.annotation.Excel;
import java.util.Date;
/**
* @auther yq
* @data 2025/3/14
*/
@Data
public class BehaviorDetection {
private Long id;
//人脸库id
private Long faceId;
//人名
private String faceName;
private String age;
//饮水量
private Integer waterIntake;
//行为类型 1:饮水 2:睡眠 3:行走 4:坐姿
private int behaviorType;
@Excel(name = "创建时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@Excel(name = "开始时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@Excel(name = "结束时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
}

27
yq-system/src/main/java/yq/system/domain/vo/BehaviorDetectionVo.java

@ -0,0 +1,27 @@
package yq.system.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @auther yq
* @data 2025/3/15
*/
@Data
public class BehaviorDetectionVo {
private String faceName;
private Long age;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date latestTime;
private Long totalWaterIntake;
private Long totalWaterCount;
private Boolean isAboveThreshold;
}

24
yq-system/src/main/java/yq/system/mapper/BehaviorDetectionMapper.java

@ -0,0 +1,24 @@
package yq.system.mapper;
import yq.system.domain.BehaviorDetection;
import java.util.List;
import java.util.Map;
/**
* @auther yq
* @data 2025/3/14
*/
public interface BehaviorDetectionMapper {
List<BehaviorDetection> list(BehaviorDetection behaviorDetection);
BehaviorDetection getFaceLatest(String behaviorType);
void saveBehavior(BehaviorDetection behaviorDetection);
void updateBehavior(BehaviorDetection behaviorDetection);
List<Map<String,Object>> behaviorTypeCount();
List<Map<String,Object>> behaviorCount();
}

25
yq-system/src/main/java/yq/system/service/IBehaviorDetectionService.java

@ -0,0 +1,25 @@
package yq.system.service;
import yq.system.domain.BehaviorDetection;
import java.util.List;
import java.util.Map;
/**
* @auther yq
* @data 2025/3/14
*/
public interface IBehaviorDetectionService {
List<BehaviorDetection> list(BehaviorDetection behaviorDetection);
BehaviorDetection getFaceLatest(String behaviorType);
void saveBehavior(BehaviorDetection behaviorDetection);
void updateBehavior(BehaviorDetection behaviorDetection);
List<Map<String,Object>>behaviorTypeCount();
List<Map<String,Object>>behaviorCount();
}

54
yq-system/src/main/java/yq/system/service/impl/BehaviorDetectionServiceImpl.java

@ -0,0 +1,54 @@
package yq.system.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yq.system.domain.BehaviorDetection;
import yq.system.mapper.BehaviorDetectionMapper;
import yq.system.service.IBehaviorDetectionService;
import java.util.List;
import java.util.Map;
/**
* @auther yq
* @data 2025/3/14
*/
@Service
public class BehaviorDetectionServiceImpl implements IBehaviorDetectionService {
@Autowired
private BehaviorDetectionMapper behaviorDetectionMapper;
@Override
public List<BehaviorDetection> list(BehaviorDetection behaviorDetection) {
List<BehaviorDetection> detectionList = behaviorDetectionMapper.list(behaviorDetection);
return detectionList;
}
@Override
public BehaviorDetection getFaceLatest(String behaviorType) {
return behaviorDetectionMapper.getFaceLatest(behaviorType);
}
@Override
public void saveBehavior(BehaviorDetection behaviorDetection) {
behaviorDetectionMapper.saveBehavior(behaviorDetection);
}
@Override
public void updateBehavior(BehaviorDetection behaviorDetection) {
behaviorDetectionMapper.updateBehavior(behaviorDetection);
}
@Override
public List<Map<String,Object>> behaviorTypeCount() {
return behaviorDetectionMapper.behaviorTypeCount();
}
@Override
public List<Map<String,Object>> behaviorCount() {
return behaviorDetectionMapper.behaviorCount();
}
}

96
yq-system/src/main/resources/mapper/system/BehaviorDetectionMapper.xml

@ -0,0 +1,96 @@
<?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">
<mapper namespace="yq.system.mapper.BehaviorDetectionMapper">
<resultMap type="BehaviorDetection" id="BehaviorDetectionResult">
<result property="id" column="id" />
<result property="faceId" column="face_id" />
<result property="faceName" column="face_name" />
<result property="age" column="age" />
<result property="createTime" column="create_time" />
<result property="waterIntake" column="water_intake" />
<result property="behaviorType" column="behavior_type" />
<result property="startTime" column="start_time" />
<result property="endTime" column="end_time" />
</resultMap>
<resultMap type="BehaviorDetection" id="BehaviorResult">
<result property="faceName" column="face_name" />
<result property="age" column="age" />
<result property="createTime" column="create_time" />
<result property="waterIntake" column="water_intake" />
<result property="behaviorType" column="behavior_type" />
<result property="startTime" column="start_time" />
<result property="endTime" column="end_time" />
</resultMap>
<insert id="saveBehavior">
insert into behavior_detection (face_id,face_name,behavior_type, water_intake, create_time,start_time,end_time)
values (#{faceId},#{faceName},#{behaviorType}, #{waterIntake}, now(),#{startTime},#{endTime})
</insert>
<update id="updateBehavior">
update behavior_detection
set
water_intake = #{waterIntake} ,
start_time = #{startTime},
end_time = #{endTime}
where id = #{id}
</update>
<select id="list" resultType="behaviorDetectionVo">
SELECT
mf.face_name as faceName,
CASE
WHEN LENGTH(mf.birth_date) = 15 THEN
-- 15位身份证号,提取出生年份、月份、日期并计算年龄
FLOOR(DATEDIFF(CURDATE(), STR_TO_DATE(CONCAT('19', SUBSTRING(mf.birth_date, 7, 6)), '%Y%m%d')) / 365.25)
WHEN LENGTH(mf.birth_date) = 18 THEN
-- 18位身份证号,提取出生年份、月份、日期并计算年龄
FLOOR(DATEDIFF(CURDATE(), STR_TO_DATE(SUBSTRING(mf.birth_date, 7, 8), '%Y%m%d')) / 365.25)
ELSE
NULL
END AS age,
MAX(bd.create_time) AS latestTime, -- 显示最新记录时间
SUM(bd.water_intake) AS totalWaterIntake, -- 当天饮水总量
COUNT(bd.id) AS totalWaterCount, -- 当天饮水次数
CASE
WHEN SUM(bd.water_intake) > 1000 THEN 'true' -- 超过阈值显示 'true'
ELSE 'false' -- 不超过阈值显示 'false'
END AS isAboveThreshold
FROM
behavior_detection bd
INNER JOIN
mine_face mf ON bd.face_id = mf.id
WHERE
DATE(bd.create_time) = CURDATE() and bd.behavior_type=1 -- 仅查询当天的数据
GROUP BY
mf.id, mf.face_name
</select>
<select id="getFaceLatest" resultMap="BehaviorDetectionResult">
select * from behavior_detection where behavior_type = #{behaviorType} and water_intake is null order by create_time desc limit 1
</select>
<select id="behaviorTypeCount" resultType="java.util.Map">
select behavior_type as behaviorType,
CASE
WHEN behavior_type = 1 THEN '饮水'
WHEN behavior_type = 2 THEN '睡眠'
WHEN behavior_type = 3 THEN '行走'
WHEN behavior_type = 4 THEN '坐姿'
ELSE '未知'
END AS behaviorTypeName, COUNT(id) as behaviorCount from behavior_detection GROUP BY behavior_type
</select>
<select id="behaviorCount" resultType="java.util.Map">
select face_name as faceName,COUNT(id) as behaviorCount ,
CASE
WHEN behavior_type = 1 THEN '饮水'
WHEN behavior_type = 2 THEN '睡眠'
WHEN behavior_type = 3 THEN '行走'
WHEN behavior_type = 4 THEN '坐姿'
ELSE '未知'
END AS behaviorTypeName
from behavior_detection
where date_format(create_time,'%y%m%d') &gt;= date_format(now(),'%y%m%d')
GROUP BY face_name ,behavior_type
</select>
</mapper>

2
yq-system/src/main/resources/mapper/system/MineFaceMapper.xml

@ -78,7 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT
mf.id,
mf.face_name,
FLOOR(TIMESTAMPDIFF(MONTH,mf.birth_date , SYSDATE()) / 12) AS age,
FLOOR(TIMESTAMPDIFF(MONTH, STR_TO_DATE(SUBSTRING(mf.birth_date, 7, 14),'%Y%m%d'), SYSDATE())/12) AS age,
mf.face_byte,
mf.face_url,
mf.face_phone,

Loading…
Cancel
Save