From 6f97d57877b6b978c1f186c19032efbf0bd3bc68 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Mon, 17 Mar 2025 10:54:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E5=B9=BC=E5=84=BF?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BehaviorDetectionController.java | 71 ++++++++++++++ .../yq/web/controller/nologin/NoLogin.java | 70 ++++++++++++-- .../yq/system/domain/BehaviorDetection.java | 46 +++++++++ .../system/domain/vo/BehaviorDetectionVo.java | 27 ++++++ .../mapper/BehaviorDetectionMapper.java | 24 +++++ .../service/IBehaviorDetectionService.java | 25 +++++ .../impl/BehaviorDetectionServiceImpl.java | 54 +++++++++++ .../mapper/system/BehaviorDetectionMapper.xml | 96 +++++++++++++++++++ .../mapper/system/MineFaceMapper.xml | 2 +- 9 files changed, 408 insertions(+), 7 deletions(-) create mode 100644 yq-admin/src/main/java/yq/web/controller/behaviorDetection/BehaviorDetectionController.java create mode 100644 yq-system/src/main/java/yq/system/domain/BehaviorDetection.java create mode 100644 yq-system/src/main/java/yq/system/domain/vo/BehaviorDetectionVo.java create mode 100644 yq-system/src/main/java/yq/system/mapper/BehaviorDetectionMapper.java create mode 100644 yq-system/src/main/java/yq/system/service/IBehaviorDetectionService.java create mode 100644 yq-system/src/main/java/yq/system/service/impl/BehaviorDetectionServiceImpl.java create mode 100644 yq-system/src/main/resources/mapper/system/BehaviorDetectionMapper.xml diff --git a/yq-admin/src/main/java/yq/web/controller/behaviorDetection/BehaviorDetectionController.java b/yq-admin/src/main/java/yq/web/controller/behaviorDetection/BehaviorDetectionController.java new file mode 100644 index 0000000..5ead813 --- /dev/null +++ b/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 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); + + } +} diff --git a/yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java b/yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java index 80a67a7..280ff91 100644 --- a/yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java +++ b/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 list = behaviorDetectionService.list(behaviorDetection); + return getDataTable(list); + } + + /** + * 统计 + */ + @GetMapping("/behaviorCount") + public List> behaviorCount() + { + return behaviorDetectionService.behaviorCount(); + } + + @GetMapping("/behaviorTypeCount") + public List> behaviorTypeCount() + { + return behaviorDetectionService.behaviorTypeCount(); + } + + } diff --git a/yq-system/src/main/java/yq/system/domain/BehaviorDetection.java b/yq-system/src/main/java/yq/system/domain/BehaviorDetection.java new file mode 100644 index 0000000..3cd9723 --- /dev/null +++ b/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; + +} diff --git a/yq-system/src/main/java/yq/system/domain/vo/BehaviorDetectionVo.java b/yq-system/src/main/java/yq/system/domain/vo/BehaviorDetectionVo.java new file mode 100644 index 0000000..49db28d --- /dev/null +++ b/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; + +} diff --git a/yq-system/src/main/java/yq/system/mapper/BehaviorDetectionMapper.java b/yq-system/src/main/java/yq/system/mapper/BehaviorDetectionMapper.java new file mode 100644 index 0000000..35fb485 --- /dev/null +++ b/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 list(BehaviorDetection behaviorDetection); + + BehaviorDetection getFaceLatest(String behaviorType); + + void saveBehavior(BehaviorDetection behaviorDetection); + + void updateBehavior(BehaviorDetection behaviorDetection); + + List> behaviorTypeCount(); + + List> behaviorCount(); +} \ No newline at end of file diff --git a/yq-system/src/main/java/yq/system/service/IBehaviorDetectionService.java b/yq-system/src/main/java/yq/system/service/IBehaviorDetectionService.java new file mode 100644 index 0000000..ccb5279 --- /dev/null +++ b/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 list(BehaviorDetection behaviorDetection); + BehaviorDetection getFaceLatest(String behaviorType); + + void saveBehavior(BehaviorDetection behaviorDetection); + + void updateBehavior(BehaviorDetection behaviorDetection); + + List>behaviorTypeCount(); + + List>behaviorCount(); + +} diff --git a/yq-system/src/main/java/yq/system/service/impl/BehaviorDetectionServiceImpl.java b/yq-system/src/main/java/yq/system/service/impl/BehaviorDetectionServiceImpl.java new file mode 100644 index 0000000..ed92379 --- /dev/null +++ b/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 list(BehaviorDetection behaviorDetection) { + List 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> behaviorTypeCount() { + return behaviorDetectionMapper.behaviorTypeCount(); + } + + @Override + public List> behaviorCount() { + return behaviorDetectionMapper.behaviorCount(); + } +} diff --git a/yq-system/src/main/resources/mapper/system/BehaviorDetectionMapper.xml b/yq-system/src/main/resources/mapper/system/BehaviorDetectionMapper.xml new file mode 100644 index 0000000..d316e3d --- /dev/null +++ b/yq-system/src/main/resources/mapper/system/BehaviorDetectionMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 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}) + + + update behavior_detection + set + water_intake = #{waterIntake} , + start_time = #{startTime}, + end_time = #{endTime} + where id = #{id} + + + + + + + \ No newline at end of file diff --git a/yq-system/src/main/resources/mapper/system/MineFaceMapper.xml b/yq-system/src/main/resources/mapper/system/MineFaceMapper.xml index 954009f..eb0a39e 100644 --- a/yq-system/src/main/resources/mapper/system/MineFaceMapper.xml +++ b/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,