diff --git a/web-adapter/src/main/java/com/zcloud/primeport/web/VehicleApplyController.java b/web-adapter/src/main/java/com/zcloud/primeport/web/VehicleApplyController.java index d0d8ef9..6126369 100644 --- a/web-adapter/src/main/java/com/zcloud/primeport/web/VehicleApplyController.java +++ b/web-adapter/src/main/java/com/zcloud/primeport/web/VehicleApplyController.java @@ -11,6 +11,7 @@ import com.zcloud.primeport.api.VehicleApplyServiceI; import com.zcloud.primeport.domain.model.VehicleApplyE; import com.zcloud.primeport.dto.*; import com.zcloud.primeport.dto.clientobject.FgsVehicleCountCo; +import com.zcloud.primeport.dto.clientobject.VehicleAccessRecordCO; import com.zcloud.primeport.dto.clientobject.VehicleApplyCO; import com.zcloud.primeport.dto.clientobject.VehicleAuditCO; import com.zcloud.primeport.dto.clientobject.XgfPersonApplyCO; @@ -70,6 +71,12 @@ public class VehicleApplyController { return vehicleApplyService.listPage(qry); } + @ApiOperation("车辆进出记录分页列表") + @PostMapping("/vehicleAccessRecordList") + public PageResponse vehicleAccessRecordList(@Validated @RequestBody VehicleAccessRecordPageQry qry) { + return vehicleApplyService.vehicleAccessRecordListPage(qry); + } + @ApiOperation("股份、相关方、临时车辆审批-详情") @GetMapping("/{id}") public SingleResponse getInfoById(@PathVariable("id") Long id) { @@ -124,5 +131,7 @@ public class VehicleApplyController { vehicleApplyService.xgfCarAuthorization(cmd); return Response.buildSuccess(); } -} + + +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/primeport/command/convertor/MkmjSwipeCardRecordCoConvertor.java b/web-app/src/main/java/com/zcloud/primeport/command/convertor/MkmjSwipeCardRecordCoConvertor.java index 13f26ba..923be91 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/convertor/MkmjSwipeCardRecordCoConvertor.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/convertor/MkmjSwipeCardRecordCoConvertor.java @@ -1,9 +1,12 @@ package com.zcloud.primeport.command.convertor; import com.zcloud.primeport.dto.clientobject.MkmjSwipeCardRecordCO; +import com.zcloud.primeport.persistence.dataobject.DaHuaAccessRecordDO; import com.zcloud.primeport.persistence.dataobject.MkmjSwipeCardRecordDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import java.time.format.DateTimeFormatter; import java.util.List; @@ -13,7 +16,7 @@ import java.util.List; * @Author dearLin * @Date 2026-04-22 17:04:00 */ -@Mapper(componentModel = "spring") +@Mapper(componentModel = "spring", imports = {DateTimeFormatter.class}) public interface MkmjSwipeCardRecordCoConvertor { /** * @param mkmjSwipeCardRecordDOs @@ -22,5 +25,29 @@ public interface MkmjSwipeCardRecordCoConvertor { List converDOsToCOs(List mkmjSwipeCardRecordDOs); MkmjSwipeCardRecordCO converDOToCO(MkmjSwipeCardRecordDO mkmjSwipeCardRecordDO); -} + List converDaHuaDOsToCOs(List dahuaAccessRecordDOs); + + @Mapping(target = "swingTime", expression = "java(source.getSwingTime() != null ? source.getSwingTime().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\")) : null)") + @Mapping(target = "channelName", source = "channelName") + @Mapping(target = "deptName", source = "dahuaDepartmentName") + @Mapping(target = "acsChannelCode", source = "channelCode") + @Mapping(target = "acsChannelName", source = "channelName") + @Mapping(target = "deviceName", source = "deviceName") + @Mapping(target = "deviceCode", source = "deviceCode") + @Mapping(target = "personCode", source = "personCode") + @Mapping(target = "personName", source = "personName") + @Mapping(target = "personId", source = "personId") + @Mapping(target = "paperNumber", source = "paperNumber") + @Mapping(target = "cardNumber", source = "cardNumber") + @Mapping(target = "cardType", source = "cardType") + @Mapping(target = "cardStatus", source = "cardStatus") + @Mapping(target = "maskState", source = "maskState") + @Mapping(target = "openResult", source = "openResult") + @Mapping(target = "recordImage1", source = "recordImageUrl") + @Mapping(target = "id", source = "id") + @Mapping(target = "orgName", source = "dahuaDepartmentName") + @Mapping(target = "deptId", source = "dahuaDepartmentId") + @Mapping(target = "extendId", source = "mkmjId") + MkmjSwipeCardRecordCO converDaHuaDOToCO(DaHuaAccessRecordDO source); +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/primeport/command/convertor/VehicleAccessRecordCoConvertor.java b/web-app/src/main/java/com/zcloud/primeport/command/convertor/VehicleAccessRecordCoConvertor.java new file mode 100644 index 0000000..6b2d244 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/primeport/command/convertor/VehicleAccessRecordCoConvertor.java @@ -0,0 +1,16 @@ +package com.zcloud.primeport.command.convertor; + +import com.zcloud.primeport.dto.clientobject.VehicleAccessRecordCO; +import com.zcloud.primeport.persistence.dataobject.DaHuaVehicleAccessRecordDO; +import org.mapstruct.Mapper; + +import java.util.List; + + +@Mapper(componentModel = "spring") +public interface VehicleAccessRecordCoConvertor { + + List converDOsToCOs(List vehicleAccessRecordDOs); + + VehicleAccessRecordCO converDOToCO(DaHuaVehicleAccessRecordDO vehicleAccessRecordDO); +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/primeport/command/query/MkmjSwipeCardRecordQueryExe.java b/web-app/src/main/java/com/zcloud/primeport/command/query/MkmjSwipeCardRecordQueryExe.java index 26ce619..4585bc3 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/query/MkmjSwipeCardRecordQueryExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/query/MkmjSwipeCardRecordQueryExe.java @@ -3,8 +3,8 @@ package com.zcloud.primeport.command.query; import com.zcloud.primeport.command.convertor.MkmjSwipeCardRecordCoConvertor; import com.zcloud.primeport.dto.MkmjSwipeCardRecordPageQry; import com.zcloud.primeport.dto.clientobject.MkmjSwipeCardRecordCO; -import com.zcloud.primeport.persistence.dataobject.MkmjSwipeCardRecordDO; -import com.zcloud.primeport.persistence.repository.MkmjSwipeCardRecordRepository; +import com.zcloud.primeport.persistence.dataobject.DaHuaAccessRecordDO; +import com.zcloud.primeport.persistence.repository.DaHuaAccessRecordRepository; import com.zcloud.gbscommon.utils.PageQueryHelper; import com.alibaba.cola.dto.PageResponse; import lombok.AllArgsConstructor; @@ -23,7 +23,7 @@ import java.util.Map; @Component @AllArgsConstructor public class MkmjSwipeCardRecordQueryExe { - private final MkmjSwipeCardRecordRepository mkmjSwipeCardRecordRepository; + private final DaHuaAccessRecordRepository daHuaAccessRecordRepository; private final MkmjSwipeCardRecordCoConvertor mkmjSwipeCardRecordCoConvertor; /** @@ -33,7 +33,7 @@ public class MkmjSwipeCardRecordQueryExe { * @return */ public MkmjSwipeCardRecordCO queryById(Long id) { - return mkmjSwipeCardRecordCoConvertor.converDOToCO(mkmjSwipeCardRecordRepository.getById(id)); + return mkmjSwipeCardRecordCoConvertor.converDaHuaDOToCO(daHuaAccessRecordRepository.getById(id)); } /** @@ -44,9 +44,8 @@ public class MkmjSwipeCardRecordQueryExe { */ public PageResponse execute(MkmjSwipeCardRecordPageQry mkmjSwipeCardRecordPageQry) { Map params = PageQueryHelper.toHashMap(mkmjSwipeCardRecordPageQry); - PageResponse pageResponse = mkmjSwipeCardRecordRepository.listPage(params); - List examCenterCOS = mkmjSwipeCardRecordCoConvertor.converDOsToCOs(pageResponse.getData()); + PageResponse pageResponse = daHuaAccessRecordRepository.swipeCardListPage(params); + List examCenterCOS = mkmjSwipeCardRecordCoConvertor.converDaHuaDOsToCOs(pageResponse.getData()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); } -} - +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/primeport/command/query/VehicleApplyQueryExe.java b/web-app/src/main/java/com/zcloud/primeport/command/query/VehicleApplyQueryExe.java index 6992859..6f9b506 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/query/VehicleApplyQueryExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/query/VehicleApplyQueryExe.java @@ -6,15 +6,20 @@ import com.alibaba.cola.dto.SingleResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.gbscommon.utils.PageQueryHelper; +import com.zcloud.primeport.command.convertor.VehicleAccessRecordCoConvertor; import com.zcloud.primeport.command.convertor.VehicleApplyCoConvertor; +import com.zcloud.primeport.dto.VehicleAccessRecordPageQry; import com.zcloud.primeport.dto.VehicleApplyPageQry; import com.zcloud.primeport.dto.clientobject.AppCountCO; import com.zcloud.primeport.dto.clientobject.FgsVehicleCountCo; +import com.zcloud.primeport.dto.clientobject.VehicleAccessRecordCO; import com.zcloud.primeport.dto.clientobject.VehicleApplyCO; import com.zcloud.primeport.persistence.dataobject.AppCountDTO; +import com.zcloud.primeport.persistence.dataobject.DaHuaVehicleAccessRecordDO; import com.zcloud.primeport.persistence.dataobject.FgsVehicleCountDto; import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO; import com.zcloud.primeport.persistence.dataobject.VehicleAuditDO; +import com.zcloud.primeport.persistence.repository.DaHuaVehicleAccessRecordRepository; import com.zcloud.primeport.persistence.repository.VehicleApplyRepository; import com.zcloud.primeport.persistence.repository.VehicleAuditRepository; import lombok.AllArgsConstructor; @@ -39,6 +44,8 @@ public class VehicleApplyQueryExe { private final VehicleApplyRepository vehicleApplyRepository; private final VehicleAuditRepository vehicleAuditRepository; private final VehicleApplyCoConvertor vehicleApplyCoConvertor; + private final DaHuaVehicleAccessRecordRepository daHuaVehicleAccessRecordRepository; + private final VehicleAccessRecordCoConvertor vehicleAccessRecordCoConvertor; /** * 分页 @@ -103,5 +110,11 @@ public class VehicleApplyQueryExe { List appCountDTO = vehicleApplyRepository.getAppCount(parmas); return MultiResponse.of(vehicleApplyCoConvertor.converAppCountDTOsToAppCountCOs(appCountDTO)); } -} + public PageResponse vehicleAccessRecordListPage(VehicleAccessRecordPageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + PageResponse pageResponse = daHuaVehicleAccessRecordRepository.vehicleAccessRecordListPage(params); + List cos = vehicleAccessRecordCoConvertor.converDOsToCOs(pageResponse.getData()); + return PageResponse.of(cos, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); + } +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java b/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java index 60a0725..542ff12 100644 --- a/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java @@ -17,6 +17,7 @@ import com.zcloud.gbscommon.dahua.cmd.DaHuaCarAddCmd; import com.zcloud.primeport.dto.*; import com.zcloud.primeport.dto.clientobject.AppCountCO; import com.zcloud.primeport.dto.clientobject.FgsVehicleCountCo; +import com.zcloud.primeport.dto.clientobject.VehicleAccessRecordCO; import com.zcloud.primeport.dto.clientobject.VehicleApplyCO; import com.zcloud.primeport.dto.clientobject.VehicleAuditCO; import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO; @@ -190,4 +191,9 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI { public MultiResponse getAppCount() { return vehicleApplyQueryExe.getAppCount(); } + + @Override + public PageResponse vehicleAccessRecordListPage(VehicleAccessRecordPageQry qry) { + return vehicleApplyQueryExe.vehicleAccessRecordListPage(qry); + } } \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/primeport/api/VehicleApplyServiceI.java b/web-client/src/main/java/com/zcloud/primeport/api/VehicleApplyServiceI.java index 5a3ffd8..6aa12f9 100644 --- a/web-client/src/main/java/com/zcloud/primeport/api/VehicleApplyServiceI.java +++ b/web-client/src/main/java/com/zcloud/primeport/api/VehicleApplyServiceI.java @@ -7,6 +7,7 @@ import com.zcloud.primeport.domain.model.VehicleApplyE; import com.zcloud.primeport.dto.*; import com.zcloud.primeport.dto.clientobject.AppCountCO; import com.zcloud.primeport.dto.clientobject.FgsVehicleCountCo; +import com.zcloud.primeport.dto.clientobject.VehicleAccessRecordCO; import com.zcloud.primeport.dto.clientobject.VehicleApplyCO; import com.zcloud.primeport.dto.clientobject.VehicleAuditCO; @@ -50,5 +51,6 @@ public interface VehicleApplyServiceI { Map checkLicenceNoBlack(String licenceNo); MultiResponse getAppCount(); -} + PageResponse vehicleAccessRecordListPage(VehicleAccessRecordPageQry qry); +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/VehicleAccessRecordPageQry.java b/web-client/src/main/java/com/zcloud/primeport/dto/VehicleAccessRecordPageQry.java new file mode 100644 index 0000000..b469fa0 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/primeport/dto/VehicleAccessRecordPageQry.java @@ -0,0 +1,35 @@ +package com.zcloud.primeport.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.List; + + +@Data +public class VehicleAccessRecordPageQry extends PageQuery { + + @ApiModelProperty(value = "车牌号", name = "vehiclePlateNumber", required = true) + @NotBlank(message = "车牌号不能为空") + private String vehiclePlateNumber; + + @ApiModelProperty(value = "进港时间范围数组 [开始日期, 结束日期],对应 enter_time", name = "time") + private List time; + + @ApiModelProperty(value = "出场时间范围数组 [开始日期, 结束日期],对应 exit_time", name = "vehicleDepartureTime") + private List vehicleDepartureTime; + + @ApiModelProperty(value = "进场开始时间 yyyy-MM-dd HH:mm:ss", name = "startVehicleArrivalTime") + private String startVehicleArrivalTime; + + @ApiModelProperty(value = "进场结束时间 yyyy-MM-dd HH:mm:ss", name = "endVehicleArrivalTime") + private String endVehicleArrivalTime; + + @ApiModelProperty(value = "出场开始时间 yyyy-MM-dd HH:mm:ss", name = "startVehicleDepartureTime") + private String startVehicleDepartureTime; + + @ApiModelProperty(value = "出场结束时间 yyyy-MM-dd HH:mm:ss", name = "endVehicleDepartureTime") + private String endVehicleDepartureTime; +} \ No newline at end of file diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/VehicleAccessRecordCO.java b/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/VehicleAccessRecordCO.java new file mode 100644 index 0000000..dee9a7d --- /dev/null +++ b/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/VehicleAccessRecordCO.java @@ -0,0 +1,76 @@ +package com.zcloud.primeport.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + + +@Data +public class VehicleAccessRecordCO extends ClientObject { + private Long id; + + @ApiModelProperty(value = "大华访问记录ID") + private String dahuaAccessId; + + @ApiModelProperty(value = "企业ID") + private Long corpId; + + @ApiModelProperty(value = "企业名称") + private String corpName; + + @ApiModelProperty(value = "港区 1东港,2西港") + private Integer portArea; + + @ApiModelProperty(value = "大华部门ID") + private Long dahuaDepartmentId; + + @ApiModelProperty(value = "大华部门名称") + private String dahuaDepartmentName; + + @ApiModelProperty(value = "停车场编码") + private String parkingLotCode; + + @ApiModelProperty(value = "停车场名称") + private String parkingLotName; + + @ApiModelProperty(value = "车辆类型") + private Integer carType; + + @ApiModelProperty(value = "车辆类型名称") + private String carTypeName; + + @ApiModelProperty(value = "车牌号(进场)") + private String carNum; + + @ApiModelProperty(value = "车牌号(出场)") + private String exitCarNum; + + @ApiModelProperty(value = "进场通道编码") + private String enterSluiceChannelCode; + + @ApiModelProperty(value = "进场通道名称") + private String enterSluiceChannelName; + + @ApiModelProperty(value = "进场时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime enterTime; + + @ApiModelProperty(value = "进场图片") + private String enterImageUrl; + + @ApiModelProperty(value = "出场通道编码") + private String exitSluiceChannelCode; + + @ApiModelProperty(value = "出场通道名称") + private String exitSluiceChannelName; + + @ApiModelProperty(value = "出场时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime exitTime; + + @ApiModelProperty(value = "出场图片") + private String exitImageUrl; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaAccessRecordRepository.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaAccessRecordRepository.java index c74ccd5..9e77b64 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaAccessRecordRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaAccessRecordRepository.java @@ -16,4 +16,6 @@ public interface DaHuaAccessRecordRepository extends BaseRepository params); PageResponse pageDashboardRecord(Map params); -} + + PageResponse swipeCardListPage(Map params); +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaVehicleAccessRecordRepository.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaVehicleAccessRecordRepository.java index cc460ab..1b2db00 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaVehicleAccessRecordRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/DaHuaVehicleAccessRecordRepository.java @@ -1,9 +1,11 @@ package com.zcloud.primeport.persistence.repository; +import com.alibaba.cola.dto.PageResponse; import com.jjb.saas.framework.repository.repo.BaseRepository; import com.zcloud.primeport.persistence.dataobject.DaHuaVehicleAccessRecordDO; import java.time.LocalDateTime; +import java.util.Map; public interface DaHuaVehicleAccessRecordRepository extends BaseRepository { @@ -12,4 +14,6 @@ public interface DaHuaVehicleAccessRecordRepository extends BaseRepository vehicleAccessRecordListPage(Map params); +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaAccessRecordRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaAccessRecordRepositoryImpl.java index 2e8ca05..f7b7b8a 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaAccessRecordRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaAccessRecordRepositoryImpl.java @@ -1,18 +1,23 @@ package com.zcloud.primeport.persistence.repository.impl; import com.alibaba.cola.dto.PageResponse; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; +import com.zcloud.gbscommon.utils.Query; import com.zcloud.primeport.persistence.dataobject.DaHuaAccessRecordDO; import com.zcloud.primeport.persistence.dataobject.DashboardAccessRecordDO; import com.zcloud.primeport.persistence.dataobject.DashboardAccessStatDO; import com.zcloud.primeport.persistence.mapper.DaHuaAccessRecordMapper; import com.zcloud.primeport.persistence.repository.DaHuaAccessRecordRepository; +import jodd.util.Base64; import org.springframework.stereotype.Repository; +import org.springframework.util.StringUtils; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Map; @Repository @@ -39,4 +44,33 @@ public class DaHuaAccessRecordRepositoryImpl IPage result = baseMapper.pageDashboardRecord(page, params); return PageHelper.pageToResponse(result, result.getRecords()); } -} + + @Override + public PageResponse swipeCardListPage(Map params) { + IPage iPage = new Query().getPage(params); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("delete_enum", "false"); + if (params.get("cardNo") != null && !StringUtils.isEmpty(params.get("cardNo").toString())) { + String cardNo = params.get("cardNo").toString(); + try { + cardNo = Base64.decodeToString(cardNo); + } catch (Exception ignored) { + } + queryWrapper.eq("paper_number", cardNo); + } + if (params.get("likeDeviceName") != null && !StringUtils.isEmpty(params.get("likeDeviceName").toString())) { + queryWrapper.like("channel_name", params.get("likeDeviceName")); + } + if (params.get("swingTimeStart") != null && !StringUtils.isEmpty(params.get("swingTimeStart").toString())) { + String swingTimeStart = (String) params.get("swingTimeStart"); + queryWrapper.ge("dahua_create_time", LocalDateTime.parse(swingTimeStart, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } + if (params.get("swingTimeEnd") != null && !StringUtils.isEmpty(params.get("swingTimeEnd").toString())) { + String swingTimeEnd = (String) params.get("swingTimeEnd"); + queryWrapper.le("dahua_create_time", LocalDateTime.parse(swingTimeEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } + queryWrapper.orderByDesc("dahua_create_time"); + IPage result = baseMapper.selectPage(iPage, queryWrapper); + return PageHelper.pageToResponse(result, result.getRecords()); + } +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaVehicleAccessRecordRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaVehicleAccessRecordRepositoryImpl.java index 042809c..14b6897 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaVehicleAccessRecordRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/DaHuaVehicleAccessRecordRepositoryImpl.java @@ -1,18 +1,31 @@ package com.zcloud.primeport.persistence.repository.impl; +import com.alibaba.cola.dto.PageResponse; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; +import com.zcloud.gbscommon.utils.Query; import com.zcloud.primeport.persistence.dataobject.DaHuaVehicleAccessRecordDO; import com.zcloud.primeport.persistence.mapper.DaHuaVehicleAccessRecordMapper; import com.zcloud.primeport.persistence.repository.DaHuaVehicleAccessRecordRepository; import org.springframework.stereotype.Repository; +import org.springframework.util.StringUtils; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; @Repository public class DaHuaVehicleAccessRecordRepositoryImpl extends BaseRepositoryImpl implements DaHuaVehicleAccessRecordRepository { + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + @Override public LocalDateTime findSyncCheckpoint() { return baseMapper.findSyncCheckpoint(); @@ -27,4 +40,88 @@ public class DaHuaVehicleAccessRecordRepositoryImpl public void upsert(DaHuaVehicleAccessRecordDO record) { baseMapper.upsert(record); } -} + + @Override + @SuppressWarnings("unchecked") + public PageResponse vehicleAccessRecordListPage(Map params) { + IPage iPage = new Query().getPage(params); + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if (params.get("vehiclePlateNumber") != null && !StringUtils.isEmpty(params.get("vehiclePlateNumber").toString())) { + queryWrapper.eq("car_num", params.get("vehiclePlateNumber")); + } + + String startArrival = null; + String endArrival = null; + String startDeparture = null; + String endDeparture = null; + + if (params.get("startVehicleArrivalTime") != null && !StringUtils.isEmpty(params.get("startVehicleArrivalTime").toString())) { + startArrival = params.get("startVehicleArrivalTime").toString(); + } + if (params.get("endVehicleArrivalTime") != null && !StringUtils.isEmpty(params.get("endVehicleArrivalTime").toString())) { + endArrival = params.get("endVehicleArrivalTime").toString(); + } + if (params.get("startVehicleDepartureTime") != null && !StringUtils.isEmpty(params.get("startVehicleDepartureTime").toString())) { + startDeparture = params.get("startVehicleDepartureTime").toString(); + } + if (params.get("endVehicleDepartureTime") != null && !StringUtils.isEmpty(params.get("endVehicleDepartureTime").toString())) { + endDeparture = params.get("endVehicleDepartureTime").toString(); + } + + if (params.get("time") != null) { + List timeRange = (List) params.get("time"); + if (timeRange.size() >= 2) { + if (startArrival == null && !StringUtils.isEmpty(timeRange.get(0))) { + startArrival = timeRange.get(0) + " 00:00:00"; + } + if (endArrival == null && !StringUtils.isEmpty(timeRange.get(1))) { + endArrival = timeRange.get(1) + " 23:59:59"; + } + } + } + + if (params.get("vehicleDepartureTime") != null) { + List depRange = (List) params.get("vehicleDepartureTime"); + if (depRange.size() >= 2) { + if (startDeparture == null && !StringUtils.isEmpty(depRange.get(0))) { + startDeparture = depRange.get(0) + " 00:00:00"; + } + if (endDeparture == null && !StringUtils.isEmpty(depRange.get(1))) { + endDeparture = depRange.get(1) + " 23:59:59"; + } + } + } + + final LocalDateTime sa = startArrival == null ? null : LocalDateTime.parse(startArrival, DATETIME_FORMATTER); + final LocalDateTime ea = endArrival == null ? null : LocalDateTime.parse(endArrival, DATETIME_FORMATTER); + final LocalDateTime sd = startDeparture == null ? null : LocalDateTime.parse(startDeparture, DATETIME_FORMATTER); + final LocalDateTime ed = endDeparture == null ? null : LocalDateTime.parse(endDeparture, DATETIME_FORMATTER); + + boolean hasEnter = sa != null || ea != null; + boolean hasExit = sd != null || ed != null; + + if (hasEnter && hasExit) { + queryWrapper.and(wrapper -> wrapper + .and(w -> { + if (sa != null) w.ge("enter_time", sa); + if (ea != null) w.le("enter_time", ea); + }) + .or(w -> { + if (sd != null) w.ge("exit_time", sd); + if (ed != null) w.le("exit_time", ed); + }) + ); + } else if (hasEnter) { + if (sa != null) queryWrapper.ge("enter_time", sa); + if (ea != null) queryWrapper.le("enter_time", ea); + } else if (hasExit) { + if (sd != null) queryWrapper.ge("exit_time", sd); + if (ed != null) queryWrapper.le("exit_time", ed); + } + + queryWrapper.orderByDesc("enter_time"); + IPage result = baseMapper.selectPage(iPage, queryWrapper); + return PageHelper.pageToResponse(result, result.getRecords()); + } +} \ No newline at end of file