From a2203aa10f47f686daf00fa3831952f076b4a212 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 14 Jun 2024 09:30:24 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=9B=BE=E7=89=87=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/constant/Constant.java | 5 +- .../service/impl/VehicleServiceImpl.java | 2 +- .../screen/mapper/AccessMgeMapper.java | 31 ---- .../service/impl/AccessMgeServiceImpl.java | 85 ++++++--- .../main/resources/mapper/AccessMgeMapper.xml | 164 +++++++++++------- 5 files changed, 164 insertions(+), 123 deletions(-) diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java index 07cb0eb..9125003 100644 --- a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java +++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/Constant.java @@ -74,11 +74,14 @@ public class Constant { public final static String WARN = "1"; public final static String NOT_WARN = "0"; - /**车辆闸机、人员闸机 编码*/ + /**人员闸机编码*/ public final static String PERSON_CAR_TYPE = "1907"; + /**车辆闸机编码*/ + public final static String CAR_GATE = "1911"; /**人员闸机检测名称*/ public final static String PERSON = "绑定人"; public final static String CAR = "车牌号"; + public final static String PHOTO = "image"; public final static String ACCESS_TIME = "出入时间"; public final static String ACCESS_TYPE = "出入类型"; public final static String ACCESS_TYPE_IN = "入"; diff --git a/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/VehicleServiceImpl.java b/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/VehicleServiceImpl.java index 92a09da..2d4c5ce 100644 --- a/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/VehicleServiceImpl.java +++ b/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/VehicleServiceImpl.java @@ -103,7 +103,7 @@ public class VehicleServiceImpl implements VehicleService { dto.setEndDate(arr[1]); } try { - dto.setTypeCode(Constant.PERSON_CAR_TYPE); + dto.setTypeCode(Constant.CAR_GATE); dto.setModeName(Constant.CAR); list = mapper.getLists(dto); for (VehicleVo vo : list) { diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/AccessMgeMapper.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/AccessMgeMapper.java index c6ccec1..9b35667 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/AccessMgeMapper.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/AccessMgeMapper.java @@ -47,35 +47,4 @@ public interface AccessMgeMapper { */ List getPerStatisticsList(AccessMgeDto dto); - /** - * 车辆基本信息 - * - * @param carNum - * @return String - * @description - * @author cwchen - * @date 2024/4/19 10:14 - */ - String getCarBasicInfo(String carNum); - - /** - * 获取车辆/人员入场 离场状态 - * - * @param sourceType - * @return String - * @description - * @author cwchen - * @date 2024/4/19 10:19 - */ - String getAccessLists(String sourceType); - - /** - * 人员基本信息 - * @param userId - * @return String - * @description - * @author cwchen - * @date 2024/4/19 13:12 - */ - String getPeopleBasicInfo(String userId); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/AccessMgeServiceImpl.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/AccessMgeServiceImpl.java index 149e674..72846c0 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/AccessMgeServiceImpl.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/AccessMgeServiceImpl.java @@ -1,20 +1,29 @@ package com.securitycontrol.screen.service.impl; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.securitycontrol.common.core.constant.Constant; +import com.securitycontrol.common.core.constant.HttpStatus; +import com.securitycontrol.common.core.constant.SecurityConstants; +import com.securitycontrol.common.core.domain.Result; import com.securitycontrol.common.core.utils.StringUtils; import com.securitycontrol.common.core.utils.aes.DateTimeHelper; import com.securitycontrol.common.core.web.domain.AjaxResult; +import com.securitycontrol.entity.background.vo.HumanManageVo; import com.securitycontrol.entity.screen.dto.AccessMgeDto; import com.securitycontrol.entity.screen.vo.AccessMgeVo; +import com.securitycontrol.entity.system.vo.ResourceFileVo; import com.securitycontrol.screen.mapper.AccessMgeMapper; import com.securitycontrol.screen.service.AccessMgeService; +import com.securitycontrol.system.api.RemoteFileService; +import com.securitycontrol.system.api.domain.SysFile; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.math.BigDecimal; +import java.util.*; /** * 出入管理 @@ -27,6 +36,9 @@ public class AccessMgeServiceImpl implements AccessMgeService { @Resource(name = "AccessMgeMapper") private AccessMgeMapper mapper; + @Resource + private RemoteFileService remoteFileService; + @Override public AjaxResult getVehicleStatistics(AccessMgeDto dto) { return totalAccessData("1",dto); @@ -70,12 +82,53 @@ public class AccessMgeServiceImpl implements AccessMgeService { @Override public AjaxResult getPerStatisticsPhoto(AccessMgeDto dto) { List list = new ArrayList<>(); + List noWarnList = new ArrayList<>(); + List warnList = new ArrayList<>(); + Map map = new HashMap<>(2); try { + dto.setModeName(Constant.PHOTO); + dto.setTypeCode(Constant.PERSON_CAR_TYPE); list = mapper.getPerStatisticsPhoto(dto); + if(CollectionUtils.isNotEmpty(list)){ + for (AccessMgeVo vo : list) { + if(StringUtils.isNotEmpty(vo.getVal())){ + Result result = remoteFileService.getImgBase64(vo.getVal(), SecurityConstants.INNER); + if (result != null && result.getCode() == HttpStatus.SUCCESS && result.getData() != null) { + String jsonString = JSON.toJSONString(result.getData()); + JSONObject item = JSON.parseObject(jsonString); + String base64 = item.getString("url"); + vo.setBase64(base64); + } + vo.setPersonName(handleData(vo.getSourceData())); + } + if(Objects.equals("0",vo.getIsWarn()) || StringUtils.isEmpty(vo.getIsWarn())){ + noWarnList.add(vo); + }else if(Objects.equals("1",vo.getIsWarn())){ + warnList.add(vo); + } + } + } } catch (Exception e) { log.error("今日、当月人员出入场统计图片-查询失败", e); } - return AjaxResult.success(list); + map.put("noWarnList",noWarnList); + map.put("warnList",warnList); + return AjaxResult.success(map); + } + + public static String handleData(String jsonStr){ + try { + if(StringUtils.isEmpty(jsonStr)){ + return null; + }else{ + JSONObject jsonObject = JSONObject.parseObject(jsonStr); + String personName = jsonObject.getString("personName"); + return personName; + } + } catch (Exception e) { + log.error("人员出入数据解析异常",e); + return null; + } } @Override @@ -96,22 +149,9 @@ public class AccessMgeServiceImpl implements AccessMgeService { // type : 1.车辆 2.人员 List list = new ArrayList<>(); try { - dto.setTypeCode(Constant.PERSON_CAR_TYPE); + dto.setTypeCode(Objects.equals(Constant.TYPE, type) ? Constant.CAR_GATE: Constant.PERSON_CAR_TYPE); dto.setModeName(Objects.equals(Constant.TYPE, type) ? Constant.CAR : Constant.PERSON); list = Objects.equals(Constant.TYPE, type) ? mapper.getVehicleStatisticsList(dto) : mapper.getPerStatisticsList(dto); - for (AccessMgeVo accessMgeVo : list) { - String basicInfo = Objects.equals(Constant.TYPE, type) ? mapper.getCarBasicInfo(accessMgeVo.getCarNum()) : mapper.getPeopleBasicInfo(accessMgeVo.getUserId()); - String data = mapper.getAccessLists(accessMgeVo.getSourceType()); - if (StringUtils.isNotBlank(basicInfo)) { - String[] split = basicInfo.split("@"); - accessMgeVo.setUserName(split[0]); - accessMgeVo.setPhone(split[1]); - } - if (StringUtils.isNotEmpty(data)) { - String[] dataArr = data.split(","); - setAccessData(accessMgeVo, dataArr); - } - } } catch (Exception e) { log.error(Objects.equals(Constant.TYPE, type) ? "获取车辆出入场记录" : "获取人员出入场记录", e); } @@ -124,20 +164,13 @@ public class AccessMgeServiceImpl implements AccessMgeService { List dataList = new ArrayList<>(); List list = new ArrayList<>(); try { - dto.setTypeCode(Constant.PERSON_CAR_TYPE); + dto.setTypeCode(Objects.equals(Constant.TYPE, type) ? Constant.CAR_GATE: Constant.PERSON_CAR_TYPE); dto.setModeName(Objects.equals(Constant.TYPE, type) ? Constant.CAR : Constant.PERSON); String[] dateArr = DateTimeHelper.getMonthFirstAndLastDay().split(" - "); dto.setStartDate(dateArr[0]); dto.setEndDate(dateArr[1]); AccessMgeVo vo = new AccessMgeVo(); list = Objects.equals(Constant.TYPE, type) ? mapper.getVehicleStatisticsList(dto) : mapper.getPerStatisticsList(dto); - for (AccessMgeVo accessMgeVo : list) { - String data = mapper.getAccessLists(accessMgeVo.getSourceType()); - if (StringUtils.isNotEmpty(data)) { - String[] dataArr = data.split(","); - setAccessData(accessMgeVo, dataArr); - } - } // 今日入 今日出 当月入 当月出 int jtrNum = 0, jrcNum = 0, dyrNum = 0, dycNum = 0; for (AccessMgeVo mgeVo : list) { diff --git a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/AccessMgeMapper.xml b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/AccessMgeMapper.xml index afe3b56..d55eb2f 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/AccessMgeMapper.xml +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/AccessMgeMapper.xml @@ -19,76 +19,112 @@ + + - - - - - - - - + SELECT r.proName,r.accessTime AS accesssTime,r.personName AS userName,r.image,r.type AS accessType + FROM ( + SELECT tp.pro_name AS proName,thdv.source_type,a.val AS accessTime,b.val AS personName,c.val AS image,d.val AS type + FROM tb_his_device_value thdv + INNER JOIN tb_device_detail tdd ON thdv.attribute_id = tdd.id AND tdd.del_flag = 0 + INNER JOIN tb_bd_device tbd ON tdd.device_id = tbd.device_id AND tbd.devic_type = #{typeCode} AND tbd.del_flag = 0 + INNER JOIN tb_project tp ON thdv.bid_code = tp.bid_code AND tp.del_flag = 0 + LEFT JOIN ( + SELECT thdv.val,thdv.source_type + FROM tb_his_device_value thdv + INNER JOIN tb_device_detail tdd ON thdv.attribute_id = tdd.id AND tdd.del_flag = 0 AND tdd.device_code = 'dataTime' + WHERE thdv.bid_code = #{bidCode} + ) a ON a.source_type = thdv.source_type + LEFT JOIN ( + SELECT thdv.val,thdv.source_type + FROM tb_his_device_value thdv + INNER JOIN tb_device_detail tdd ON thdv.attribute_id = tdd.id AND tdd.del_flag = 0 AND tdd.device_code = 'personName' + WHERE thdv.bid_code = #{bidCode} + ) b ON b.source_type = thdv.source_type + LEFT JOIN ( + SELECT trf.file_id AS val,thdv.source_type + FROM tb_his_device_value thdv + INNER JOIN tb_resource_file trf ON thdv.val = trf.source_id AND trf.del_flag = 0 AND trf.source_type = '人员出入' + INNER JOIN tb_device_detail tdd ON thdv.attribute_id = tdd.id AND tdd.del_flag = 0 AND tdd.device_code = 'image' + WHERE thdv.bid_code = #{bidCode} + ) c ON c.source_type = thdv.source_type + LEFT JOIN ( + SELECT thdv.val,thdv.source_type + FROM tb_his_device_value thdv + INNER JOIN tb_device_detail tdd ON thdv.attribute_id = tdd.id AND tdd.del_flag = 0 AND tdd.device_code = 'type' + WHERE thdv.bid_code = #{bidCode} + ) d ON d.source_type = thdv.source_type + WHERE thdv.bid_code = #{bidCode} + ORDER BY thdv.create_time DESC + ) r + + + r.accessTime BETWEEN CONCAT(#{startDate},' 00:00:00') AND CONCAT(#{endDate},' 23:59:59') + + + AND INSTR(r.personName,#{userName}) > 0 + + + AND INSTR(r.pro_name,#{proName}) > 0 + + + GROUP BY r.source_type + ORDER BY r.accessTime DESC \ No newline at end of file From 1cea1bf69a1b103e0d7936521236e75315526799 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 14 Jun 2024 09:32:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=9B=BE=E7=89=87=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/screen/vo/AccessMgeVo.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/AccessMgeVo.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/AccessMgeVo.java index c547240..fc6a8d3 100644 --- a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/AccessMgeVo.java +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/AccessMgeVo.java @@ -63,4 +63,16 @@ public class AccessMgeVo { private String sourceType; private String userId; + + private String val; + + private String createTime; + + private String isWarn; + + private String base64; + + private String sourceData; + + private String personName; }