feat(): 新增封闭区域人员车辆进出记录功能

dev_km_logs
lishiwei 2026-08-19 16:55:53 +08:00
parent 7e693dc8c3
commit f2fa4dd82f
11 changed files with 309 additions and 38 deletions

View File

@ -11,6 +11,8 @@ import com.zcloud.primeport.dto.ClosedAreaCorpStatCmd;
import com.zcloud.primeport.dto.ClosedAreaCountCmd; import com.zcloud.primeport.dto.ClosedAreaCountCmd;
import com.zcloud.primeport.dto.ClosedAreaPageQry; import com.zcloud.primeport.dto.ClosedAreaPageQry;
import com.zcloud.primeport.dto.ClosedAreaUpdateCmd; import com.zcloud.primeport.dto.ClosedAreaUpdateCmd;
import com.zcloud.primeport.dto.PersonInOutRecordQry;
import com.zcloud.primeport.dto.VehicleInOutRecordQry;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCorpStatCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCorpStatCO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -73,6 +75,18 @@ public class ClosedAreaController {
return closedAreaService.listAllByJurisdictionalCorpId(id); return closedAreaService.listAllByJurisdictionalCorpId(id);
} }
@ApiOperation("封闭区域人员进出记录")
@PostMapping("/personInOutRecord")
public PageResponse personInOutRecord(@RequestBody PersonInOutRecordQry qry) {
return closedAreaService.personInOutPage(qry);
}
@ApiOperation("封闭区域车辆进出记录")
@PostMapping("/vehicleInOutRecord")
public PageResponse vehicleInOutRecord(@RequestBody VehicleInOutRecordQry qry) {
return closedAreaService.vehicleInOutPage(qry);
}
@ApiOperation("详情") @ApiOperation("详情")
@GetMapping("/{id}") @GetMapping("/{id}")
public SingleResponse<ClosedAreaCO> getInfoById(@PathVariable("id") Long id) { public SingleResponse<ClosedAreaCO> getInfoById(@PathVariable("id") Long id) {

View File

@ -14,13 +14,20 @@ import com.zcloud.primeport.dto.ClosedAreaCorpStatCmd;
import com.zcloud.primeport.dto.ClosedAreaCountCmd; import com.zcloud.primeport.dto.ClosedAreaCountCmd;
import com.zcloud.primeport.dto.ClosedAreaPageQry; import com.zcloud.primeport.dto.ClosedAreaPageQry;
import com.zcloud.primeport.dto.ClosedAreaUpdateCmd; import com.zcloud.primeport.dto.ClosedAreaUpdateCmd;
import com.zcloud.primeport.dto.PersonInOutRecordQry;
import com.zcloud.primeport.dto.VehicleInOutRecordQry;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCorpStatCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCorpStatCO;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO;
import com.zcloud.primeport.persistence.dataobject.HkAccessRecordDO;
import com.zcloud.primeport.persistence.dataobject.HkVehicleAccessRecordDO;
import com.zcloud.primeport.persistence.repository.ClosedAreaRepository;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
@AllArgsConstructor @AllArgsConstructor
@ -30,6 +37,7 @@ public class ClosedAreaServiceImpl implements ClosedAreaServiceI {
private final ClosedAreaRemoveExe closedAreaRemoveExe; private final ClosedAreaRemoveExe closedAreaRemoveExe;
private final ClosedAreaQueryExe closedAreaQueryExe; private final ClosedAreaQueryExe closedAreaQueryExe;
private final ClosedAreaCountExe closedAreaCountExe; private final ClosedAreaCountExe closedAreaCountExe;
private final ClosedAreaRepository closedAreaRepository;
@Override @Override
public ClosedAreaCO queryById(Long id) { public ClosedAreaCO queryById(Long id) {
@ -93,4 +101,52 @@ public class ClosedAreaServiceImpl implements ClosedAreaServiceI {
public MultiResponse<ClosedAreaCO> listAllByhgAuthArea(String hgAuthArea) { public MultiResponse<ClosedAreaCO> listAllByhgAuthArea(String hgAuthArea) {
return closedAreaQueryExe.listAllByhgAuthArea(hgAuthArea); return closedAreaQueryExe.listAllByhgAuthArea(hgAuthArea);
} }
@Override
public PageResponse personInOutPage(PersonInOutRecordQry qry) {
Map<String, Object> params = buildPersonInOutParams(qry);
List<HkAccessRecordDO> list = closedAreaRepository.listPersonInOutRecord(params);
long total = closedAreaRepository.countPersonInOutRecord(params);
return PageResponse.of(list, (int) total, qry.getPageSize(), qry.getPageIndex());
}
@Override
public PageResponse vehicleInOutPage(VehicleInOutRecordQry qry) {
Map<String, Object> params = buildVehicleInOutParams(qry);
List<HkVehicleAccessRecordDO> list = closedAreaRepository.listVehicleInOutRecord(params);
long total = closedAreaRepository.countVehicleInOutRecord(params);
return PageResponse.of(list, (int) total, qry.getPageSize(), qry.getPageIndex());
}
private Map<String, Object> buildPersonInOutParams(PersonInOutRecordQry qry) {
Map<String, Object> params = new HashMap<>();
params.put("closedAreaId", qry.getClosedAreaId());
params.put("personName", qry.getPersonName());
if (qry.getTimeRange() != null && qry.getTimeRange().size() == 2) {
params.put("startTime", qry.getTimeRange().get(0));
params.put("endTime", qry.getTimeRange().get(1));
}
params.put("pageIndex", qry.getPageIndex());
params.put("pageSize", qry.getPageSize());
params.put("offset", (qry.getPageIndex() - 1) * qry.getPageSize());
return params;
}
private Map<String, Object> buildVehicleInOutParams(VehicleInOutRecordQry qry) {
Map<String, Object> params = new HashMap<>();
params.put("closedAreaId", qry.getClosedAreaId());
params.put("vehiclePlateNumber", qry.getVehiclePlateNumber());
if (qry.getVehicleArrivalTime() != null && qry.getVehicleArrivalTime().size() == 2) {
params.put("arrivalStartTime", qry.getVehicleArrivalTime().get(0));
params.put("arrivalEndTime", qry.getVehicleArrivalTime().get(1));
}
if (qry.getVehicleDepartureTime() != null && qry.getVehicleDepartureTime().size() == 2) {
params.put("departureStartTime", qry.getVehicleDepartureTime().get(0));
params.put("departureEndTime", qry.getVehicleDepartureTime().get(1));
}
params.put("pageIndex", qry.getPageIndex());
params.put("pageSize", qry.getPageSize());
params.put("offset", (qry.getPageIndex() - 1) * qry.getPageSize());
return params;
}
} }

View File

@ -8,6 +8,8 @@ import com.zcloud.primeport.dto.ClosedAreaCorpStatCmd;
import com.zcloud.primeport.dto.ClosedAreaCountCmd; import com.zcloud.primeport.dto.ClosedAreaCountCmd;
import com.zcloud.primeport.dto.ClosedAreaPageQry; import com.zcloud.primeport.dto.ClosedAreaPageQry;
import com.zcloud.primeport.dto.ClosedAreaUpdateCmd; import com.zcloud.primeport.dto.ClosedAreaUpdateCmd;
import com.zcloud.primeport.dto.PersonInOutRecordQry;
import com.zcloud.primeport.dto.VehicleInOutRecordQry;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCO;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCorpStatCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCorpStatCO;
import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO; import com.zcloud.primeport.dto.clientobject.ClosedAreaCountCO;
@ -36,4 +38,8 @@ public interface ClosedAreaServiceI {
MultiResponse<ClosedAreaCO> listTree(ClosedAreaPageQry qry); MultiResponse<ClosedAreaCO> listTree(ClosedAreaPageQry qry);
MultiResponse<ClosedAreaCO> listAllByhgAuthArea(String hgAuthArea); MultiResponse<ClosedAreaCO> listAllByhgAuthArea(String hgAuthArea);
PageResponse personInOutPage(PersonInOutRecordQry qry);
PageResponse vehicleInOutPage(VehicleInOutRecordQry qry);
} }

View File

@ -0,0 +1,30 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
*
*
* @Author Codex
* @Date 2026-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("人员进出记录查询参数")
public class PersonInOutRecordQry extends PageQuery {
@ApiModelProperty(value = "封闭区域ID", name = "closedAreaId", required = true)
private Long closedAreaId;
@ApiModelProperty(value = "人员姓名(模糊查询)", name = "personName")
private String personName;
@ApiModelProperty(value = "时间范围格式yyyy-MM-dd", name = "timeRange")
private List<String> timeRange;
}

View File

@ -0,0 +1,33 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
*
*
* @Author Codex
* @Date 2026-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("车辆进出记录查询参数")
public class VehicleInOutRecordQry extends PageQuery {
@ApiModelProperty(value = "封闭区域ID", name = "closedAreaId", required = true)
private Long closedAreaId;
@ApiModelProperty(value = "车牌号(模糊查询)", name = "vehiclePlateNumber")
private String vehiclePlateNumber;
@ApiModelProperty(value = "进场时间范围格式yyyy-MM-dd", name = "vehicleArrivalTime")
private List<String> vehicleArrivalTime;
@ApiModelProperty(value = "出场时间范围格式yyyy-MM-dd", name = "vehicleDepartureTime")
private List<String> vehicleDepartureTime;
}

View File

@ -2,6 +2,8 @@ package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO; import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -16,65 +18,66 @@ import java.time.LocalDateTime;
@Data @Data
@TableName("hk_access_record") @TableName("hk_access_record")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel("人员进出记录")
public class HkAccessRecordDO extends BaseDO { public class HkAccessRecordDO extends BaseDO {
/** 海康事件ID幂等键 */ @ApiModelProperty(value = "海康事件ID幂等键", name = "hkEventId")
private String hkEventId; private String hkEventId;
/** 海康人员IDpersonId */ @ApiModelProperty(value = "海康人员ID", name = "personId")
private String personId; private String personId;
/** 人员姓名快照 */ @ApiModelProperty(value = "人员姓名", name = "personName")
private String personName; private String personName;
/** 证件号码(身份证) */ @ApiModelProperty(value = "证件号码(身份证)", name = "certificateNo")
private String certificateNo; private String certificateNo;
/** 手机号 */ @ApiModelProperty(value = "手机号", name = "phoneNo")
private String phoneNo; private String phoneNo;
/** 海康组织编码 */ @ApiModelProperty(value = "海康组织编码", name = "orgIndexCode")
private String orgIndexCode; private String orgIndexCode;
/** 海康组织路径名称 */ @ApiModelProperty(value = "海康组织路径名称", name = "orgPathName")
private String orgPathName; private String orgPathName;
/** 门禁点编码indexCode */ @ApiModelProperty(value = "门禁点编码", name = "doorIndexCode")
private String doorIndexCode; private String doorIndexCode;
/** 门禁点名称 */ @ApiModelProperty(value = "门禁点名称", name = "doorName")
private String doorName; private String doorName;
/** 门禁点所属区域编码 */ @ApiModelProperty(value = "门禁点所属区域编码", name = "doorRegionIndexCode")
private String doorRegionIndexCode; private String doorRegionIndexCode;
/** 进出方向1-进2-出 */ @ApiModelProperty(value = "进出方向1-进2-出)", name = "enterOrExit", allowableValues = "1,2")
private Integer enterOrExit; private Integer enterOrExit;
/** 开门结果1-成功0-失败 */ @ApiModelProperty(value = "开门结果1-成功0-失败)", name = "openResult", allowableValues = "0,1")
private Integer openResult; private Integer openResult;
/** 开门方式 */ @ApiModelProperty(value = "开门方式", name = "openType")
private Integer openType; private Integer openType;
/** 卡号 */ @ApiModelProperty(value = "卡号", name = "cardNo")
private String cardNo; private String cardNo;
/** 事件发生时间(通行时间) */ @ApiModelProperty(value = "事件发生时间(通行时间)", name = "eventTime")
private LocalDateTime eventTime; private LocalDateTime eventTime;
/** 记录在海康平台的入库时间 */ @ApiModelProperty(value = "海康平台入库时间", name = "hkCreateTime")
private LocalDateTime hkCreateTime; private LocalDateTime hkCreateTime;
/** 通行抓拍图片地址 */ @ApiModelProperty(value = "通行抓拍图片地址", name = "recordImageUrl")
private String recordImageUrl; private String recordImageUrl;
/** 数据来源PULL-拉取PUSH-推送 */ @ApiModelProperty(value = "数据来源PULL-拉取PUSH-推送)", name = "sourceType", allowableValues = "PULL,PUSH")
private String sourceType; private String sourceType;
/** 海康原始事件JSON */ @ApiModelProperty(value = "海康原始事件JSON", name = "rawData")
private String rawData; private String rawData;
/** 最近同步时间 */ @ApiModelProperty(value = "最近同步时间", name = "lastSyncTime")
private LocalDateTime lastSyncTime; private LocalDateTime lastSyncTime;
} }

View File

@ -2,6 +2,8 @@ package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO; import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -16,59 +18,60 @@ import java.time.LocalDateTime;
@Data @Data
@TableName("hk_vehicle_access_record") @TableName("hk_vehicle_access_record")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel("车辆进出记录")
public class HkVehicleAccessRecordDO extends BaseDO { public class HkVehicleAccessRecordDO extends BaseDO {
/** 海康事件ID幂等键 */ @ApiModelProperty(value = "海康事件ID幂等键", name = "hkEventId")
private String hkEventId; private String hkEventId;
/** 车牌号 */ @ApiModelProperty(value = "车牌号", name = "plateNo")
private String plateNo; private String plateNo;
/** 车牌颜色0-蓝1-黄2-白3-黑 */ @ApiModelProperty(value = "车牌颜色0-蓝1-黄2-白3-黑)", name = "plateColor", allowableValues = "0,1,2,3")
private Integer plateColor; private Integer plateColor;
/** 车辆类型 */ @ApiModelProperty(value = "车辆类型", name = "carType")
private Integer carType; private Integer carType;
/** 车辆类型名称 */ @ApiModelProperty(value = "车辆类型名称", name = "carTypeName")
private String carTypeName; private String carTypeName;
/** 停车场系统编码 */ @ApiModelProperty(value = "停车场系统编码", name = "parkSyscode")
private String parkSyscode; private String parkSyscode;
/** 停车场名称 */ @ApiModelProperty(value = "停车场名称", name = "parkName")
private String parkName; private String parkName;
/** 通道编码门禁点indexCode */ @ApiModelProperty(value = "通道编码", name = "laneIndexCode")
private String laneIndexCode; private String laneIndexCode;
/** 通道名称 */ @ApiModelProperty(value = "通道名称", name = "laneName")
private String laneName; private String laneName;
/** 出入口编码 */ @ApiModelProperty(value = "出入口编码", name = "entranceIndexCode")
private String entranceIndexCode; private String entranceIndexCode;
/** 出入口名称 */ @ApiModelProperty(value = "出入口名称", name = "entranceName")
private String entranceName; private String entranceName;
/** 进出方向1-进2-出 */ @ApiModelProperty(value = "进出方向1-进2-出)", name = "enterOrExit", allowableValues = "1,2")
private Integer enterOrExit; private Integer enterOrExit;
/** 事件发生时间(通行时间) */ @ApiModelProperty(value = "事件发生时间(通行时间)", name = "eventTime")
private LocalDateTime eventTime; private LocalDateTime eventTime;
/** 记录在海康平台的入库时间 */ @ApiModelProperty(value = "海康平台入库时间", name = "hkCreateTime")
private LocalDateTime hkCreateTime; private LocalDateTime hkCreateTime;
/** 通行抓拍图片地址 */ @ApiModelProperty(value = "通行抓拍图片地址", name = "recordImageUrl")
private String recordImageUrl; private String recordImageUrl;
/** 数据来源PULL-拉取PUSH-推送 */ @ApiModelProperty(value = "数据来源PULL-拉取PUSH-推送)", name = "sourceType", allowableValues = "PULL,PUSH")
private String sourceType; private String sourceType;
/** 海康原始事件JSON */ @ApiModelProperty(value = "海康原始事件JSON", name = "rawData")
private String rawData; private String rawData;
/** 最近同步时间 */ @ApiModelProperty(value = "最近同步时间", name = "lastSyncTime")
private LocalDateTime lastSyncTime; private LocalDateTime lastSyncTime;
} }

View File

@ -6,6 +6,8 @@ import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCorpStatDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaCorpStatDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
import com.zcloud.primeport.persistence.dataobject.HkAccessRecordDO;
import com.zcloud.primeport.persistence.dataobject.HkVehicleAccessRecordDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -33,5 +35,13 @@ public interface ClosedAreaMapper extends BaseMapper<ClosedAreaDO> {
List<ClosedAreaDO> getCountByHgAuthArea(); List<ClosedAreaDO> getCountByHgAuthArea();
IPage<ClosedAreaDO> listPage(IPage<ClosedAreaDO> iPage, @Param("params") Map<String, Object> params); IPage<ClosedAreaDO> listPage(IPage<ClosedAreaDO> iPage, @Param("params") Map<String, Object> params);
List<HkAccessRecordDO> listPersonInOutRecord(@Param("params") Map<String, Object> params);
List<HkVehicleAccessRecordDO> listVehicleInOutRecord(@Param("params") Map<String, Object> params);
long countPersonInOutRecord(@Param("params") Map<String, Object> params);
long countVehicleInOutRecord(@Param("params") Map<String, Object> params);
} }

View File

@ -3,6 +3,8 @@ package com.zcloud.primeport.persistence.repository;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCorpStatDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaCorpStatDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
import com.zcloud.primeport.persistence.dataobject.HkAccessRecordDO;
import com.zcloud.primeport.persistence.dataobject.HkVehicleAccessRecordDO;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository; import com.jjb.saas.framework.repository.repo.BaseRepository;
@ -22,5 +24,13 @@ public interface ClosedAreaRepository extends BaseRepository<ClosedAreaDO> {
ClosedAreaCorpStatDO corpStat(Map<String, Object> params); ClosedAreaCorpStatDO corpStat(Map<String, Object> params);
List<ClosedAreaDO> getCountByHgAuthArea(); List<ClosedAreaDO> getCountByHgAuthArea();
List<HkAccessRecordDO> listPersonInOutRecord(Map<String, Object> params);
List<HkVehicleAccessRecordDO> listVehicleInOutRecord(Map<String, Object> params);
long countPersonInOutRecord(Map<String, Object> params);
long countVehicleInOutRecord(Map<String, Object> params);
} }

View File

@ -3,6 +3,8 @@ package com.zcloud.primeport.persistence.repository.impl;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCorpStatDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaCorpStatDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO; import com.zcloud.primeport.persistence.dataobject.ClosedAreaDO;
import com.zcloud.primeport.persistence.dataobject.HkAccessRecordDO;
import com.zcloud.primeport.persistence.dataobject.HkVehicleAccessRecordDO;
import com.zcloud.primeport.persistence.mapper.ClosedAreaMapper; import com.zcloud.primeport.persistence.mapper.ClosedAreaMapper;
import com.zcloud.primeport.persistence.repository.ClosedAreaRepository; import com.zcloud.primeport.persistence.repository.ClosedAreaRepository;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
@ -52,5 +54,25 @@ public class ClosedAreaRepositoryImpl extends BaseRepositoryImpl<ClosedAreaMappe
public List<ClosedAreaDO> getCountByHgAuthArea() { public List<ClosedAreaDO> getCountByHgAuthArea() {
return closedAreaMapper.getCountByHgAuthArea(); return closedAreaMapper.getCountByHgAuthArea();
} }
@Override
public List<HkAccessRecordDO> listPersonInOutRecord(Map<String, Object> params) {
return closedAreaMapper.listPersonInOutRecord(params);
}
@Override
public List<HkVehicleAccessRecordDO> listVehicleInOutRecord(Map<String, Object> params) {
return closedAreaMapper.listVehicleInOutRecord(params);
}
@Override
public long countPersonInOutRecord(Map<String, Object> params) {
return closedAreaMapper.countPersonInOutRecord(params);
}
@Override
public long countVehicleInOutRecord(Map<String, Object> params) {
return closedAreaMapper.countVehicleInOutRecord(params);
}
} }

View File

@ -119,5 +119,89 @@
</if> </if>
</select> </select>
<!-- 封闭区域人员进出记录(含子区域递归查询) -->
<sql id="personInOutBaseQuery">
WITH RECURSIVE area_tree AS (
SELECT id FROM closed_area WHERE id = #{params.closedAreaId} AND delete_enum = 'FALSE'
UNION ALL
SELECT ca.id FROM closed_area ca INNER JOIN area_tree at ON ca.parent_id = at.id WHERE ca.delete_enum = 'FALSE'
)
SELECT har.*
FROM hk_access_record har
INNER JOIN mkmj_gate mg ON har.door_index_code = mg.hk_index_code AND mg.delete_enum = 'FALSE'
INNER JOIN mkmj m ON mg.mkmj_id = m.id AND m.delete_enum = 'FALSE'
INNER JOIN area_tree at ON m.closed_area_id = at.id
WHERE har.delete_enum = 'FALSE'
<if test="params.personName != null and params.personName != ''">
AND har.person_name LIKE CONCAT('%', #{params.personName}, '%')
</if>
<if test="params.startTime != null and params.startTime != ''">
AND har.event_time &gt;= CONCAT(#{params.startTime}, ' 00:00:00')
</if>
<if test="params.endTime != null and params.endTime != ''">
AND har.event_time &lt;= CONCAT(#{params.endTime}, ' 23:59:59')
</if>
</sql>
<select id="listPersonInOutRecord" resultType="com.zcloud.primeport.persistence.dataobject.HkAccessRecordDO">
<include refid="personInOutBaseQuery"/>
ORDER BY har.event_time DESC
<if test="params.pageSize != null">
LIMIT #{params.offset}, #{params.pageSize}
</if>
</select>
<select id="countPersonInOutRecord" resultType="long">
SELECT COUNT(1)
FROM (
<include refid="personInOutBaseQuery"/>
) tmp
</select>
<!-- 封闭区域车辆进出记录(含子区域递归查询) -->
<sql id="vehicleInOutBaseQuery">
WITH RECURSIVE area_tree AS (
SELECT id FROM closed_area WHERE id = #{params.closedAreaId} AND delete_enum = 'FALSE'
UNION ALL
SELECT ca.id FROM closed_area ca INNER JOIN area_tree at ON ca.parent_id = at.id WHERE ca.delete_enum = 'FALSE'
)
SELECT hvar.*
FROM hk_vehicle_access_record hvar
INNER JOIN mkmj_gate mg ON hvar.lane_index_code = mg.hk_index_code AND mg.delete_enum = 'FALSE'
INNER JOIN mkmj m ON mg.mkmj_id = m.id AND m.delete_enum = 'FALSE'
INNER JOIN area_tree at ON m.closed_area_id = at.id
WHERE hvar.delete_enum = 'FALSE'
<if test="params.vehiclePlateNumber != null and params.vehiclePlateNumber != ''">
AND hvar.plate_no LIKE CONCAT('%', #{params.vehiclePlateNumber}, '%')
</if>
<if test="params.arrivalStartTime != null and params.arrivalStartTime != ''">
AND hvar.event_time &gt;= CONCAT(#{params.arrivalStartTime}, ' 00:00:00')
</if>
<if test="params.arrivalEndTime != null and params.arrivalEndTime != ''">
AND hvar.event_time &lt;= CONCAT(#{params.arrivalEndTime}, ' 23:59:59')
</if>
<if test="params.departureStartTime != null and params.departureStartTime != ''">
AND hvar.event_time &gt;= CONCAT(#{params.departureStartTime}, ' 00:00:00')
</if>
<if test="params.departureEndTime != null and params.departureEndTime != ''">
AND hvar.event_time &lt;= CONCAT(#{params.departureEndTime}, ' 23:59:59')
</if>
</sql>
<select id="listVehicleInOutRecord" resultType="com.zcloud.primeport.persistence.dataobject.HkVehicleAccessRecordDO">
<include refid="vehicleInOutBaseQuery"/>
ORDER BY hvar.event_time DESC
<if test="params.pageSize != null">
LIMIT #{params.offset}, #{params.pageSize}
</if>
</select>
<select id="countVehicleInOutRecord" resultType="long">
SELECT COUNT(1)
FROM (
<include refid="vehicleInOutBaseQuery"/>
) tmp
</select>
</mapper> </mapper>