From 00279cd6dc99899c16fbcc6aae54baf0c89c1507 Mon Sep 17 00:00:00 2001 From: lishiwei <3230787218@qq.com> Date: Fri, 28 Aug 2026 13:35:58 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E6=96=B0=E5=A2=9E=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E5=BD=92=E5=B1=9E=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B0=81=E9=97=AD=E5=8C=BA=E5=9F=9F=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E8=BF=9B=E5=87=BA=E8=AE=B0=E5=BD=95=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../close/ClosedAreaCarApplyController.java | 6 + .../ClosedAreaPersonApplyUpdateExe.java | 18 +- .../query/ClosedAreaCarApplyQueryExe.java | 7 + .../query/ClosedAreaPersonApplyQueryExe.java | 1 + .../ClosedAreaCarApplyServiceImpl.java | 5 + .../service/ClosedAreaServiceImpl.java | 10 +- .../api/ClosedAreaCarApplyServiceI.java | 2 + .../dto/ClosedAreaCarApplyPageQry.java | 4 +- .../primeport/dto/PersonInOutRecordQry.java | 21 +- .../dataobject/HkAccessRecordDO.java | 2 +- .../mapper/ClosedAreaCarApplyMapper.java | 6 +- .../ClosedAreaCarApplyRepository.java | 6 +- .../ClosedAreaCarApplyRepositoryImpl.java | 17 +- .../mapper/ClosedAreaCarApplyMapper.xml | 65 ++++- .../resources/mapper/ClosedAreaMapper.xml | 225 +++++++++++++++--- .../mapper/ClosedAreaPersonApplyMapper.xml | 15 +- 16 files changed, 341 insertions(+), 69 deletions(-) diff --git a/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaCarApplyController.java b/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaCarApplyController.java index f02092a..af6808f 100644 --- a/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaCarApplyController.java +++ b/web-adapter/src/main/java/com/zcloud/primeport/web/close/ClosedAreaCarApplyController.java @@ -46,6 +46,12 @@ public class ClosedAreaCarApplyController { return closedAreaCarApplyService.listPage(qry); } + @ApiOperation("根据车辆归属查询封闭区域现有车辆") + @GetMapping("/getCarByCarBelongType") + public PageResponse getCarByCarBelongType(ClosedAreaCarApplyPageQry qry) { + return closedAreaCarApplyService.getCarByCarBelongType(qry); + } + @ApiOperation("详情") @GetMapping("/{id}") public SingleResponse getInfoById(@PathVariable("id") Long id) { diff --git a/web-app/src/main/java/com/zcloud/primeport/command/ClosedAreaPersonApplyUpdateExe.java b/web-app/src/main/java/com/zcloud/primeport/command/ClosedAreaPersonApplyUpdateExe.java index 55e2dae..2fa596c 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/ClosedAreaPersonApplyUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/ClosedAreaPersonApplyUpdateExe.java @@ -113,14 +113,18 @@ public class ClosedAreaPersonApplyUpdateExe { areaFgsPersonAreaGateway.removeByFgspersonAuthId(cmd.getUserId()); ArrayList objects = new ArrayList<>(); List areaList = cmd.getAreaList(); - for (ClosedAreaPersonApplyAuthCmd.FgsPersonArea fgsPersonArea : areaList) { - ClosedAreaFgsPersonAreaE closedAreaFgsPersonAreaE = new ClosedAreaFgsPersonAreaE(); - closedAreaFgsPersonAreaE.setClosedAreaId(fgsPersonArea.getClosedAreaId()); - closedAreaFgsPersonAreaE.setClosedAreaName(fgsPersonArea.getClosedAreaName()); - closedAreaFgsPersonAreaE.setFgsPersonAuthId(fgsPersonArea.getFgsPersonAuthId()); - objects.add(closedAreaFgsPersonAreaE); + if (areaList != null) { + for (ClosedAreaPersonApplyAuthCmd.FgsPersonArea fgsPersonArea : areaList) { + ClosedAreaFgsPersonAreaE closedAreaFgsPersonAreaE = new ClosedAreaFgsPersonAreaE(); + closedAreaFgsPersonAreaE.setClosedAreaId(fgsPersonArea.getClosedAreaId()); + closedAreaFgsPersonAreaE.setClosedAreaName(fgsPersonArea.getClosedAreaName()); + closedAreaFgsPersonAreaE.setFgsPersonAuthId(cmd.getUserId()); + objects.add(closedAreaFgsPersonAreaE); + } + } + if (!objects.isEmpty()) { + areaFgsPersonAreaGateway.saveBatch(objects); } - areaFgsPersonAreaGateway.saveBatch(objects); // 开启门禁权限时,查一级大华是否有已有权限,不覆盖 if (cmd.getMkmjPermission() != null && cmd.getMkmjPermission().equals(1)) { // 获取人员身份证号 diff --git a/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaCarApplyQueryExe.java b/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaCarApplyQueryExe.java index db32c90..be0c389 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaCarApplyQueryExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaCarApplyQueryExe.java @@ -62,5 +62,12 @@ public class ClosedAreaCarApplyQueryExe { } return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); } + + public PageResponse getCarByCarBelongType(ClosedAreaCarApplyPageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + PageResponse pageResponse = closedAreaCarApplyRepository.getCarByCarBelongType(params); + List result = closedAreaCarApplyCoConvertor.converDOsToCOs(pageResponse.getData()); + return PageResponse.of(result, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); + } } diff --git a/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaPersonApplyQueryExe.java b/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaPersonApplyQueryExe.java index 4258727..ac5bf3c 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaPersonApplyQueryExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/query/ClosedAreaPersonApplyQueryExe.java @@ -108,6 +108,7 @@ public class ClosedAreaPersonApplyQueryExe { ClosedAreaFgsPersonAuthDO closedAreaFgsPersonAuthDO = closedAreaFgsPersonAuthRepository.getAuthorizationPersonInfo(id); QueryWrapper closedAreaFgsPersonAreaDOQueryWrapper = new QueryWrapper<>(); closedAreaFgsPersonAreaDOQueryWrapper.eq("fgs_person_auth_id",id); + closedAreaFgsPersonAreaDOQueryWrapper.eq("delete_enum","FALSE"); List list = closedAreaFgsPersonAreaRepository.list(closedAreaFgsPersonAreaDOQueryWrapper); ClosedAreaPersonApplyCO closedAreaPersonApplyCO = new ClosedAreaPersonApplyCO(); closedAreaPersonApplyCO.setApplyPersonUserId(id); diff --git a/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaCarApplyServiceImpl.java b/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaCarApplyServiceImpl.java index bded5f9..56d3226 100644 --- a/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaCarApplyServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaCarApplyServiceImpl.java @@ -44,6 +44,11 @@ public class ClosedAreaCarApplyServiceImpl implements ClosedAreaCarApplyServiceI return closedAreaCarApplyQueryExe.execute(qry); } + @Override + public PageResponse getCarByCarBelongType(ClosedAreaCarApplyPageQry qry) { + return closedAreaCarApplyQueryExe.getCarByCarBelongType(qry); + } + @Override public SingleResponse add(ClosedAreaCarApplyAddCmd cmd) { diff --git a/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java b/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java index db577c7..379c771 100644 --- a/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/primeport/service/ClosedAreaServiceImpl.java @@ -149,10 +149,14 @@ public class ClosedAreaServiceImpl implements ClosedAreaServiceI { Map params = new HashMap<>(); params.put("closedAreaId", qry.getClosedAreaId()); params.put("personName", qry.getPersonName()); - if (qry.getStartTime() != null) { - params.put("startTime", qry.getStartTime()); - params.put("endTime", qry.getEndTime()); + params.put("deptId", qry.getDeptId()); + params.put("personPhone", qry.getPersonPhone()); + params.put("personIdCard", qry.getPersonIdCard()); + if (qry.getTimeRange() != null && qry.getTimeRange().size() == 2) { + params.put("startTime", qry.getTimeRange().get(0)); + params.put("endTime", qry.getTimeRange().get(1)); } + params.put("doorName", qry.getDoorName()); params.put("pageIndex", qry.getPageIndex()); params.put("pageSize", qry.getPageSize()); params.put("offset", (qry.getPageIndex() - 1) * qry.getPageSize()); diff --git a/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaCarApplyServiceI.java b/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaCarApplyServiceI.java index bc5f90f..c6f76ba 100644 --- a/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaCarApplyServiceI.java +++ b/web-client/src/main/java/com/zcloud/primeport/api/ClosedAreaCarApplyServiceI.java @@ -18,6 +18,8 @@ public interface ClosedAreaCarApplyServiceI { PageResponse listPage(ClosedAreaCarApplyPageQry qry); + PageResponse getCarByCarBelongType(ClosedAreaCarApplyPageQry qry); + SingleResponse add(ClosedAreaCarApplyAddCmd cmd); void edit(ClosedAreaCarApplyUpdateCmd cmd); diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/ClosedAreaCarApplyPageQry.java b/web-client/src/main/java/com/zcloud/primeport/dto/ClosedAreaCarApplyPageQry.java index e7204ca..de324dc 100644 --- a/web-client/src/main/java/com/zcloud/primeport/dto/ClosedAreaCarApplyPageQry.java +++ b/web-client/src/main/java/com/zcloud/primeport/dto/ClosedAreaCarApplyPageQry.java @@ -24,8 +24,8 @@ public class ClosedAreaCarApplyPageQry extends PageQuery { * - `le`: 小于等于比较查询 * - `ne`: 不等比较查询,对应SQL的!=操作符 */ - @ApiModelProperty(value = "车牌号", name = "licenceLo") - private String licenceLo; + @ApiModelProperty(value = "车牌号", name = "licenceNo") + private String licenceNo; @ApiModelProperty(value = "申请人姓名", name = "applyPersonUserName") private String applyPersonUserName; @ApiModelProperty(value = "审核状态(1:审核中;2审核通过; 3:审核驳回)", name = "auditFlag") diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/PersonInOutRecordQry.java b/web-client/src/main/java/com/zcloud/primeport/dto/PersonInOutRecordQry.java index dc0a9ef..2608a30 100644 --- a/web-client/src/main/java/com/zcloud/primeport/dto/PersonInOutRecordQry.java +++ b/web-client/src/main/java/com/zcloud/primeport/dto/PersonInOutRecordQry.java @@ -1,6 +1,7 @@ package com.zcloud.primeport.dto; import com.alibaba.cola.dto.PageQuery; +import com.fasterxml.jackson.annotation.JsonAlias; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -23,11 +24,23 @@ public class PersonInOutRecordQry extends PageQuery { private Long closedAreaId; @ApiModelProperty(value = "人员姓名(模糊查询)", name = "personName") + @JsonAlias("name") private String personName; - @ApiModelProperty(value = "开始时间(格式:yyyy-MM-dd)", name = "startTime") - private String startTime; + @ApiModelProperty(value = "部门ID(全局人员记录查询时由页面传入)", name = "deptId") + private Long deptId; - @ApiModelProperty(value = "结束时间(格式:yyyy-MM-dd)", name = "endTime") - private String endTime; + @ApiModelProperty(value = "人员手机号(可选,用于平台人员辅助校验;海康进出事件不提供该字段)", name = "personPhone") + @JsonAlias("phone") + private String personPhone; + + @ApiModelProperty(value = "人员身份证号Base64(可选;与海康事件 certNo 关联,建议页面可传时一并传入)", name = "personIdCard") + @JsonAlias("userCard") + private String personIdCard; + + @ApiModelProperty(value = "时间范围(格式:yyyy-MM-dd)", name = "timeRange") + private List timeRange; + + @ApiModelProperty(value = "口门名称", name = "doorName") + private String doorName; } diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/HkAccessRecordDO.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/HkAccessRecordDO.java index c9a2504..65eacc3 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/HkAccessRecordDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/HkAccessRecordDO.java @@ -52,7 +52,7 @@ public class HkAccessRecordDO extends BaseDO { @ApiModelProperty(value = "门禁点所属区域编码", name = "doorRegionIndexCode") private String doorRegionIndexCode; - @ApiModelProperty(value = "进出方向(1-进,0-出,-1-未知)", name = "enterOrExit", allowableValues = "1,0,-1") + @ApiModelProperty(value = "进出方向(1-进,2-出,-1-未知)", name = "enterOrExit", allowableValues = "1,2,-1") private Integer enterOrExit; @ApiModelProperty(value = "开门结果(1-成功,0-失败)", name = "openResult", allowableValues = "0,1") diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaCarApplyMapper.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaCarApplyMapper.java index a4f044a..7fa7d04 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaCarApplyMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/ClosedAreaCarApplyMapper.java @@ -28,14 +28,16 @@ public interface ClosedAreaCarApplyMapper extends BaseMapper listPage(Page> page, @Param("params") Map params, String menuPerms); + IPage getCarByCarBelongType(Page> page, @Param("params") Map params); + Integer countDashboardApproval(@Param("params") Map params); IPage screenList(Page> page, @Param("params") Map params); @InterceptorIgnore(tenantLine = "true") - List getFgsCarToDay(@Param("licenceNo") String licenceNo); + List getFgsCarToDay(@Param("licenceNo") String licenceNo, @Param("applyId") Long applyId); @InterceptorIgnore(tenantLine = "true") - List dockTmpCarLevelTwo(@Param("licenceNo") String licenceNo); + List dockTmpCarLevelTwo(@Param("licenceNo") String licenceNo, @Param("applyId") Long applyId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaCarApplyRepository.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaCarApplyRepository.java index d1945e4..be8bba9 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaCarApplyRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/ClosedAreaCarApplyRepository.java @@ -17,12 +17,14 @@ import java.util.Map; public interface ClosedAreaCarApplyRepository extends BaseRepository { PageResponse listPage(Map params); + PageResponse getCarByCarBelongType(Map params); + Integer countDashboardApproval(Map params); PageResponse screenList(Map params); - List getFgsCarToDay(String licenceNo); + List getFgsCarToDay(String licenceNo, Long applyId); - List dockTmpCarLevelTwo(String licenceNo); + List dockTmpCarLevelTwo(String licenceNo, Long applyId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaCarApplyRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaCarApplyRepositoryImpl.java index d67753f..e75aeae 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaCarApplyRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/repository/impl/ClosedAreaCarApplyRepositoryImpl.java @@ -41,6 +41,15 @@ public class ClosedAreaCarApplyRepositoryImpl extends BaseRepositoryImpl getCarByCarBelongType(Map params) { + Page> page = new Page<>(Integer.parseInt(params.get("pageIndex").toString()), + Integer.parseInt(params.get("pageSize").toString())); + page.setOptimizeJoinOfCountSql(false); + IPage result = closedAreaCarApplyMapper.getCarByCarBelongType(page, params); + return PageHelper.pageToResponse(result, result.getRecords()); + } + @Override public Integer countDashboardApproval(Map params) { return closedAreaCarApplyMapper.countDashboardApproval(params); @@ -56,13 +65,13 @@ public class ClosedAreaCarApplyRepositoryImpl extends BaseRepositoryImpl getFgsCarToDay(String licenceNo) { - return closedAreaCarApplyMapper.getFgsCarToDay(licenceNo); + public List getFgsCarToDay(String licenceNo, Long applyId) { + return closedAreaCarApplyMapper.getFgsCarToDay(licenceNo, applyId); } @Override - public List dockTmpCarLevelTwo(String licenceNo) { - return closedAreaCarApplyMapper.dockTmpCarLevelTwo(licenceNo); + public List dockTmpCarLevelTwo(String licenceNo, Long applyId) { + return closedAreaCarApplyMapper.dockTmpCarLevelTwo(licenceNo, applyId); } } diff --git a/web-infrastructure/src/main/resources/mapper/ClosedAreaCarApplyMapper.xml b/web-infrastructure/src/main/resources/mapper/ClosedAreaCarApplyMapper.xml index dfa8409..4604eeb 100644 --- a/web-infrastructure/src/main/resources/mapper/ClosedAreaCarApplyMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/ClosedAreaCarApplyMapper.xml @@ -50,6 +50,34 @@ order by c.id desc + - diff --git a/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml b/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml index e565497..f4a1d6d 100644 --- a/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml @@ -108,22 +108,144 @@ c.id + - - 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' - - AND har.person_name LIKE CONCAT('%', #{params.personName}, '%') - + AND har.event_time >= CONCAT(#{params.startTime}, ' 00:00:00') @@ -177,6 +282,64 @@ + + + + + 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' + + AND har.person_name LIKE CONCAT('%', #{params.personName}, '%') + + + + + SELECT har.* + FROM hk_access_record har + INNER JOIN `user` u ON u.user_id_card = har.certificate_no AND u.delete_enum = 'FALSE' + WHERE har.delete_enum = 'FALSE' + + + AND u.department_id = #{params.deptId} + + + AND u.user_id_card = #{params.personIdCard} + + + AND 1 = 0 + + + + AND u.`name` LIKE CONCAT('%', #{params.personName}, '%') + + + AND u.phone = #{params.personPhone} + + + AND u.user_id_card = #{params.personIdCard} + + + AND har.event_time >= CONCAT(#{params.startTime}, ' 00:00:00') + + + AND har.event_time <= CONCAT(#{params.endTime}, ' 23:59:59') + + + AND har.door_name LIKE CONCAT('%', #{params.doorName}, '%') + + + + + SELECT capa.id, + ca.jurisdictional_corp_id, + ca.jurisdictional_corp_name, GROUP_CONCAT( DISTINCT mg.hk_index_code ) hk_index_code, capa.visit_start_time, capa.visit_end_time, @@ -198,6 +203,8 @@ capa.apply_person_user_name user_name FROM closed_area_person_apply capa + + INNER JOIN closed_area ca ON capa.closed_area_id = ca.id AND ca.delete_enum = 'FALSE' LEFT JOIN mkmj_gate mg ON capa.level_two_mkmj_id = mg.mkmj_id AND mg.delete_enum = 'FALSE' AND mg.gate_type = 'HGKM_MKMJ_GATE_TYPE_PERSON' @@ -206,8 +213,8 @@ capa.delete_enum = 'FALSE' AND capa.person_belong_type = 4 AND capa.audit_flag = 2 - AND capa.visit_end_time >= DATE_FORMAT( now(), '%Y-%m-%d' ) - AND capa.visit_start_time <= DATE_FORMAT( now(), '%Y-%m-%d' ) + AND DATE(capa.visit_end_time) >= DATE(UTC_TIMESTAMP() + INTERVAL 8 HOUR) + AND DATE(capa.visit_start_time) <= DATE(UTC_TIMESTAMP() + INTERVAL 8 HOUR) and capa.id = #{applyId}