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 fccd9cd..cd5d01d 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 @@ -81,10 +81,9 @@ public class Constant { public final static String CAR = "车牌号"; public final static String ACCESS_TIME = "出入时间"; public final static String ACCESS_TYPE = "出入类型"; - - - - + public final static String ACCESS_TYPE_IN = "入"; + public final static String ACCESS_TYPE_OUT = "出"; + public final static String TYPE = "1"; public final static String[] BUILD_ARR = {"12A0,合肥","12B0,马鞍山","12C0,芜湖","12D0,安庆","12F0,淮南", "12G0,宣城","12H0,阜阳","12J0,铜陵","12L0,蚌埠","12M0,滁州","12N0,六安","12P0,淮北","12Q0,宿州","12R0,池州", diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java index ffcf144..bfda97d 100644 --- a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java +++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java @@ -882,4 +882,21 @@ public class DateTimeHelper { return 0L; } } + + /** + * 获取当前月的第一天和最后一天 + */ + public static String getMonthFirstAndLastDay() { + Calendar a = Calendar.getInstance(); + //把日期设置为当月第一天 + a.set(Calendar.DATE, 1); + //日期回滚一天,也就是最后一天 + a.roll(Calendar.DATE, -1); + //当月有多少天 + int maxDate = a.get(Calendar.DATE); + SimpleDateFormat sdfTwo = new SimpleDateFormat("yyyy-MM-"); + String startTime = sdfTwo.format(new Date()) + "01"; + String endTime = sdfTwo.format(new Date()) + maxDate; + return startTime + " - " + endTime; + } } diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/dto/AccessMgeDto.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/dto/AccessMgeDto.java index c32e950..fc796e6 100644 --- a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/dto/AccessMgeDto.java +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/dto/AccessMgeDto.java @@ -35,4 +35,10 @@ public class AccessMgeDto { @ApiModelProperty(value = "姓名") private String userName; + + @ApiModelProperty(value = "字典编码") + private String typeCode; + + @ApiModelProperty(value = "检测名称") + private String modeName; } 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 d77176c..c547240 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 @@ -59,4 +59,8 @@ public class AccessMgeVo { @ApiModelProperty(value = "时间") @Excel(name = "时间", width = 10.0, orderNum = "6") private String accesssTime; + + private String sourceType; + + private String userId; } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/AccessMgeController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/AccessMgeController.java index 72c6de2..feebd54 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/AccessMgeController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/AccessMgeController.java @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import com.securitycontrol.common.core.utils.ExcelStyleUtil; +import com.securitycontrol.common.core.utils.aes.DateTimeHelper; import com.securitycontrol.common.core.utils.aes.StringHelper; import com.securitycontrol.common.core.web.controller.BaseController; import com.securitycontrol.common.core.web.domain.AjaxResult; @@ -75,9 +76,12 @@ public class AccessMgeController extends BaseController { try{ startLayPage(); if(StringHelper.isNotEmpty(dto.getDate())){ - String[] date = dto.getDate().split("~"); + String[] date = dto.getDate().split(" - "); dto.setStartDate(date[0]); dto.setEndDate(date[1]); + }else{ + dto.setStartDate(DateTimeHelper.getNowDate()); + dto.setEndDate(DateTimeHelper.getNowDate()); } List list = service.getVehicleStatisticsList(dto); return getDataTableLayui(list); @@ -93,9 +97,12 @@ public class AccessMgeController extends BaseController { try { List proExportVoList = new ArrayList<>(); if(StringHelper.isNotEmpty(dto.getDate())){ - String[] date = dto.getDate().split("~"); + String[] date = dto.getDate().split(" - "); dto.setStartDate(date[0]); dto.setEndDate(date[1]); + }else{ + dto.setStartDate(DateTimeHelper.getNowDate()); + dto.setEndDate(DateTimeHelper.getNowDate()); } List proLists = service.getVehicleStatisticsList(dto); for (int i = 0; i < proLists.size(); i++) { @@ -104,11 +111,11 @@ public class AccessMgeController extends BaseController { BeanUtils.copyProperties(proLists.get(i), exportVo); proExportVoList.add(exportVo); } - ExportParams exportParams = new ExportParams("今日、当月车辆出入场统计", "今日、当月车辆出入场统计", ExcelType.XSSF); + ExportParams exportParams = new ExportParams("车辆出入统计", "车辆出入统计", ExcelType.XSSF); exportParams.setStyle(ExcelStyleUtil.class); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, AccessMgeVo.class, proExportVoList); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("今日、当月车辆出入场统计" + ".xlsx", "UTF-8")); + response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("车辆出入统计" + ".xlsx", "UTF-8")); ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.close(); @@ -150,9 +157,12 @@ public class AccessMgeController extends BaseController { try{ startLayPage(); if(StringHelper.isNotEmpty(dto.getDate())){ - String[] date = dto.getDate().split("~"); + String[] date = dto.getDate().split(" - "); dto.setStartDate(date[0]); dto.setEndDate(date[1]); + }else{ + dto.setStartDate(DateTimeHelper.getNowDate()); + dto.setEndDate(DateTimeHelper.getNowDate()); } List list = service.getPerStatisticsList(dto); return getDataTableLayui(list); @@ -168,9 +178,12 @@ public class AccessMgeController extends BaseController { try { List proExportVoList = new ArrayList<>(); if(StringHelper.isNotEmpty(dto.getDate())){ - String[] date = dto.getDate().split("~"); + String[] date = dto.getDate().split(" - "); dto.setStartDate(date[0]); dto.setEndDate(date[1]); + }else{ + dto.setStartDate(DateTimeHelper.getNowDate()); + dto.setEndDate(DateTimeHelper.getNowDate()); } List proLists = service.getPerStatisticsList(dto); for (int i = 0; i < proLists.size(); i++) { @@ -179,11 +192,11 @@ public class AccessMgeController extends BaseController { BeanUtils.copyProperties(proLists.get(i), exportVo); proExportVoList.add(exportVo); } - ExportParams exportParams = new ExportParams("今日、当月人员出入场统计", "今日、当月人员出入场统计", ExcelType.XSSF); + ExportParams exportParams = new ExportParams("人员出入统计", "人员出入统计", ExcelType.XSSF); exportParams.setStyle(ExcelStyleUtil.class); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, AccessMgesVo.class, proExportVoList); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("今日、当月人员出入场统计" + ".xlsx", "UTF-8")); + response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("人员出入统计" + ".xlsx", "UTF-8")); ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.close(); 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 a4ed999..c6ccec1 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 @@ -9,19 +9,15 @@ import java.util.List; /** * 出入管理 + * * @author lsun */ @Repository("AccessMgeMapper") public interface AccessMgeMapper { - /** - * 今日、当月车辆出入场统计 - * @param dto - * @return - */ - List getVehicleStatistics(AccessMgeDto dto); /** * 今日、当月车辆出入场统计图片 + * * @param dto * @return */ @@ -29,20 +25,15 @@ public interface AccessMgeMapper { /** * 今日、当月车辆出入场统计列表 + * * @param dto * @return */ List getVehicleStatisticsList(AccessMgeDto dto); - /** - * 今日、当月人员出入场统计 - * @param dto - * @return - */ - List getPerStatistics(AccessMgeDto dto); - /** * 今日、当月人员出入场统计图片 + * * @param dto * @return */ @@ -50,8 +41,41 @@ public interface AccessMgeMapper { /** * 今日、当月人员出入场统计列表 + * * @param dto * @return */ 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 6f47338..149e674 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,5 +1,8 @@ package com.securitycontrol.screen.service.impl; +import com.securitycontrol.common.core.constant.Constant; +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.screen.dto.AccessMgeDto; import com.securitycontrol.entity.screen.vo.AccessMgeVo; @@ -11,9 +14,11 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * 出入管理 + * * @author lsun */ @Slf4j @@ -24,13 +29,7 @@ public class AccessMgeServiceImpl implements AccessMgeService { @Override public AjaxResult getVehicleStatistics(AccessMgeDto dto) { - List list = new ArrayList<>(); - try { - list = mapper.getVehicleStatistics(dto); - } catch (Exception e) { - log.error("今日、当月车辆出入场统计-查询失败", e); - } - return AjaxResult.success(list); + return totalAccessData("1",dto); } @Override @@ -47,23 +46,25 @@ public class AccessMgeServiceImpl implements AccessMgeService { @Override public List getVehicleStatisticsList(AccessMgeDto dto) { List list = new ArrayList<>(); - try { - list = mapper.getVehicleStatisticsList(dto); - } catch (Exception e) { - log.error("获取今日、当月车辆出入场统计列表",e); - } + list = getOutAndInRecord("1", dto); return list; } + public AccessMgeVo setAccessData(AccessMgeVo vo, String[] valArr) { + for (String str : valArr) { + String[] splitStr = str.split("@"); + if (Objects.equals(splitStr[0], Constant.ACCESS_TIME)) { + vo.setAccesssTime(splitStr[1]); + } else if (Objects.equals(splitStr[0], Constant.ACCESS_TYPE)) { + vo.setAccessType(splitStr[1]); + } + } + return vo; + } + @Override public AjaxResult getPerStatistics(AccessMgeDto dto) { - List list = new ArrayList<>(); - try { - list = mapper.getPerStatistics(dto); - } catch (Exception e) { - log.error("今日、当月人员出入场统计-查询失败", e); - } - return AjaxResult.success(list); + return totalAccessData("2",dto); } @Override @@ -79,12 +80,87 @@ public class AccessMgeServiceImpl implements AccessMgeService { @Override public List getPerStatisticsList(AccessMgeDto dto) { + List list = new ArrayList<>(); + list = getOutAndInRecord("2", dto); + return list; + } + + /** + * 人员/车辆 出入场记录 + * @return List + * @description + * @author cwchen + * @date 2024/4/19 13:33 + */ + public List getOutAndInRecord(String type, AccessMgeDto dto) { + // type : 1.车辆 2.人员 List list = new ArrayList<>(); try { - list = mapper.getPerStatisticsList(dto); + dto.setTypeCode(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("获取今日、当月人员出入场统计列表",e); + log.error(Objects.equals(Constant.TYPE, type) ? "获取车辆出入场记录" : "获取人员出入场记录", e); } return list; } + + public AjaxResult totalAccessData(String type, AccessMgeDto dto){ + System.err.println(type); + // type : 1.车辆 2.人员 + List dataList = new ArrayList<>(); + List list = new ArrayList<>(); + try { + dto.setTypeCode(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) { + if (Objects.equals(mgeVo.getAccessType(), Constant.ACCESS_TYPE_IN)) { + dyrNum++; + if (mgeVo.getAccesssTime().contains(DateTimeHelper.getNowDate())) { + jtrNum++; + } + } else if (Objects.equals(mgeVo.getAccessType(), Constant.ACCESS_TYPE_OUT)) { + dycNum++; + if (mgeVo.getAccesssTime().contains(DateTimeHelper.getNowDate())) { + jrcNum++; + } + } + } + vo.setJtrNum(jtrNum + ""); + vo.setJrcNum(jrcNum + ""); + vo.setDyrNum(dyrNum + ""); + vo.setDycNum(dycNum + ""); + dataList.add(vo); + } catch (Exception e) { + log.error(Objects.equals(Constant.TYPE, type) ? "统计车辆出入场数量" : "统计人员出入场数量", e); + } + return AjaxResult.success(dataList); + } } 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 8cfbff6..0412d9c 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/AccessMgeMapper.xml +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/AccessMgeMapper.xml @@ -2,66 +2,6 @@ - - - - + + + + + + \ No newline at end of file